2017-03-29 94 views
-1

我已經一個問題應用模板,考慮我的XML會是這樣, 輸入代碼在這裏XSLT應用模板調節

<card> 
    <pre/> 
<main>  
    <step1/> 
    <step1/> 
    <panels> 
    <panel/> 
    <panel/> 
    </panels> 
    <step1/> 
<main> 
</card> 

在main所有步驟1將1和增量開始進一步現在當面板來了,它應該把每個面板作爲一個步驟,它會開始爲3.,4.下一步將是5.

問題是,如果我在mainfunc應用step1的模板,它正在申請所有的step1。所以在面板之後的第1步也將首先出現。我想要爲第1步到第3步應用temaplates。然後應用面板,然後應用最後一步.step1計數並不總是相同的,但它們不同。

目前香港專業教育學院這樣的事情,

<xsl:template match="mainfunc"> 
    <xsl:apply-templates select="step1"/> 
    <xsl:if test="contains($wcType,'P')"> 
    <xsl:apply-templates select="panels"/> 
    </xsl:if> 
..... 

如何修改序列以應用模板,也編號面板爲3

+0

你可以展示你的輸出期望在這種情況下,明確「編號」應該如何工作。謝謝! –

+0

編號是好的,對於面板,它將像,步驟\t Abi

+0

我唯一擔心的是如何按照步驟的順序調用模板,然後執行下一步和麪板,然後執行步驟 – Abi

回答

0

這是一個有點猜的,因爲我不完全清楚你想做的事,但我認爲你可以做什麼,這是什麼...

<xsl:apply-templates select="step1|panels[contains($wcType,'P')]"/> 

|符號是工會運營商和節點WIL聯盟l按文件順序選擇。所以,它會選擇第一個step1,然後是panels,然後是下一個step1

例如,這個XSLT ...

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
    <xsl:output method="xml" indent="yes" /> 

    <xsl:variable name="wcType" select="'Pie'" /> 

    <xsl:template match="main"> 
     <xsl:apply-templates select="step1|panels[contains($wcType,'P')]"/> 
    </xsl:template> 

    <xsl:template match="step1|panel"> 
     <xsl:copy> 
      <xsl:number count="step1|panel" level="any" /> 
     </xsl:copy> 
    </xsl:template> 
</xsl:stylesheet> 

當應用到這個XML ...

<card> 
    <main>  
    <step1/> 
    <step1/> 
    <panels> 
     <panel/> 
     <panel/> 
    </panels> 
    <step1/> 
    </main> 
</card> 

以下是輸出

<step1>1</step1> 
<step1>2</step1> 
    <panel>3</panel> 
    <panel>4</panel> 
<step1>5</step1> 
+0

step1模板的編號我已經給出了像,在我給出的面板模板中, ,現在順序很好,它調用了1. step1 2. step1 1.panel 2.panel 3.step1,現在編號不正確pleaese幫助面板將在面板父標記中,所以我使用了計算面板 – Abi

+0

非常感謝Tim。它幫助了很多! – Abi

+0

如果您需要編號方面的幫助,您應該真正編輯您的問題以顯示編號的預期輸出,因爲代碼在評論中很難閱讀。謝謝。 –