尝试访问每个节点中的多个节点
Trying to access multiple nodes in a for each
在我的 XML 中有多个节点 ex。 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>
结果
table 和
fluffy wolfy
snuggles puppy
我正在使用 XSLT 1.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>
在我的 XML 中有多个节点 ex。 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>
结果 table 和
fluffy wolfy
snuggles puppy
我正在使用 XSLT 1.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>