2016-01-13 66 views
0

在我的XML中有多個節點, CAT1,CAT2,CAT3,...,CAT(N)。我想顯示它們的值,但它是動態的,並基於NUMOFCATS。嘗試訪問每個中的多個節點

爲,我想

for(i=0;i<NUMOFCATS;i++){ 
    String string = CAT; 
    append the value of i to string; //so if i=0 then string=CAT0 
    <xsl:value-of select="$string" /> 
} 

所以那麼結果將顯示

CAT0 
CAT1 
... 
CAT(NUMOFCATS) 

編輯的值的一些僞代碼:加入一些示例XML

<root> 
    <BIRD>ignore</BIRD> 
    <CAT1>fluffy</CAT1> 
    <CAT2>snuggles</CAT2> 
    <NUMOFPETS>2</NUMOFPETS> 
    <DOG1>wolfy</DOG1> 
    <DOG2>puppy</DOG2> 
</root> 

XSLT

<xsl:for-each select="root/*"> 
    <fo:table-row height="8pt"> 
     <fo:table-cell border-color="black" border-width="1pt" 
      border-style="solid"> 
      <fo:block text-indent="5pt"> 
       <xsl:if test="substring(local-name(),1,3) = 'CAT'"> 
        <fo:inline color="red"> 
         <xsl:value-of select="." /> 
        </fo:inline> 
       </xsl:if> 
      </fo:block> 
     </fo:table-cell> 
     <fo:table-cell border-color="black" border-width="1pt" 
      border-style="solid"> 
      <fo:block text-indent="5pt"> 
       <xsl:if test="substring(local-name(),1,3) = 'DOG'"> 
        <fo:inline color="red"> 
         <xsl:value-of select="." /> 
        </fo:inline> 
       </xsl:if> 
      </fo:block> 
     </fo:table-cell> 
    </fo:table-row> 
</xsl:for-each> 

結果 一個表

fluffy  wolfy 
snuggles  puppy 

和IM使用XSLT 1.0

編輯:試圖澄清我的問題比較好,對不起,我通常是壞在問問題。

在此先感謝您的幫助。

+0

也請出示您所期望的輸出(_actual_輸出,因爲這個樣本文件是輸入)。謝謝。 –

+0

你的問題不清楚。請提供一個輸入和預期輸出的例子,並解釋轉換背後的邏輯。 ---同樣說明如果使用XSLT 1.0或2.0。 –

回答

0

的Xml

<cats> 
    <cat0>Hello</cat0> 
    <cat1>World</cat1> 
    <dog0>Ignore</dog0> 
</cats> 

XSLT

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> 
    <xsl:template match="/"> 
    <xsl:for-each select="/cats/*"> 
     <xsl:if test="substring(local-name(), 1, 3) = 'cat'"> 
     <xsl:element name="result"> 
      <xsl:value-of select="local-name()"/> 
      <xsl:value-of select="."/> 
     </xsl:element> 
     </xsl:if> 
    </xsl:for-each> 
    </xsl:template> 
</xsl:stylesheet> 

結果

<result>cat0Hello</result> 
<result>cat1World</result> 
+0

經過一些修改,最終完美工作,稍微慢一點然後我想,但它給了我想要的東西。謝謝。 – Dstjohniii

+0

沒問題。如果速度至關重要,那麼我會建議重構您的XML,以使模式不是動態的。 – Horba