xslt中的默认模板之一是:
<xsl:template match="*|/">
<xsl:apply-templates/>
</xsl:template>
为什么匹配模式包含根节点“ /”的表达式?星号“ *”是否已捕获文档中的所有节点?
我试图将其省略,没有区别。跟随xslt
<xsl:stylesheet
version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xhtml" indent="yes"/>
<xsl:template match="*">
<xsl:value-of select="./name()"/>
<xsl:apply-templates/>
</xsl:template>
</xsl:stylesheet>
及以下xml
<?xml version="1.0" encoding="UTF-8"?>
<a>
<b>
</b>
</a>
产生输出:
<?xml version="1.0" encoding="UTF-8"?>a
b
因此,根节点a被捕获了。
答案 0 :(得分:0)
由于位置路径的默认轴为child
,因此*|/
只是child::*|/
的缩写。 child::*
与文档的根节点不匹配,仅与它的子节点不匹配。