我有这样的XML:无法获得正确的XSLT输出
<?xml version="1.0" encoding="UTF-8"?>
<Section>
<Chapter>
<nametable>
<namerow>
<namecell stuff="1">
<entity>A</entity>
</namecell>
<namecell stuff="2">
<entity>B</entity>
</namecell>
</namerow>
</nametable>
</Chapter>
</Section>
我的XSLT是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:apply-templates select="Section/Chapter//nametable"/>
</xsl:template>
<xsl:template match="nametable">
<xsl:for-each select="./namerow">
<xsl:value-of select="./namecell/@stuff"/>
<xsl:value-of select="./namecell" />
</xsl:for-each>
</xsl:template>
<xsl:template match="text()"/>
</xsl:stylesheet>
奇是我得到的输出顺序1 2 AB,我以为我会得到1 A 2 B.
不知道为什么?
TIA,
约翰
哦!这里是答案:) +1 – 2012-02-24 04:44:32
Dimitri:这是什么 真的吗? –
JohnX
2012-02-24 04:48:53
@JohnX:' '作为文本节点输出每个'namecell'的每个'stuff'属性和'entity'子元素的字符串值当前节点的子节点。在这里我使用Xpath * union *运算符'|'。在位置步骤中的这种联合只能在XPath 2.0中使用 - 在XPath 1.0中语法上是非法的。 –
2012-02-24 05:04:31