我的样式表明确覆盖了这个隐式规则:
<xsl:template match="*|/">
<xsl:apply-templates/>
</xsl:template>
但隐含规则仍在处理中。
以下是 input.xml 文件:
<catalog>
<empty-element>
<nested-empty-element/>
</empty-element>
<title>Empire Burlesque</title>
<list>
<list-itme>
<bullet>This is bullet</bullet>
</list-itme>
</list>
<artist>Bob Dylan</artist>
<artist>All Pacino</artist>
</catalog>
这是样式表:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<root>
<xsl:apply-templates select="catalog"/>
</root>
</xsl:template>
<xsl:template match="catalog">
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="*"/>
</xsl:stylesheet>
我得到以下输出:
<root>Empire BurlesqueThis is bulletBob DylanAll Pacino</root>
我期待的输出是:
<root/>
我已经明确声明了一个模板<xsl:template match="*"/>
,它告诉处理器不要处理除catalog
之外的其他元素。
为什么在上面的情况下处理嵌套元素&gt;
答案 0 :(得分:3)
为什么要处理嵌套元素
它们未经处理。但是这个:
<xsl:template match="catalog">
<xsl:value-of select="."/>
</xsl:template>
返回catalog
节点的字符串值 - 和:
元素节点的字符串值是的串联 字符串 - 元素节点的所有文本节点后代的值 文件订单。