2016-01-13 29 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