尝试访问每个

时间:2016-01-13 17:19:34

标签: xml xslt xslt-1.0 xsl-fo

在我的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

我正在使用XSLT 1.0

编辑:试图更好地澄清我的问题,对不起,我通常不善于提问。

提前感谢您的帮助。

1 个答案:

答案 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>