<xsl:apply-templates />
和<xsl:apply-templates select="." />
之间有什么区别?我认为select="."
没有必要,但根据我的使用情况,我会得到不同的结果。
很抱歉,如果这是重复。我试过搜索这个问题但找不到任何东西。
答案 0 :(得分:18)
有什么区别
<xsl:apply-templates />
和<xsl:apply-templates select="." />
第一条指示:
<xsl:apply-templates />
是的缩写:
<xsl:apply-templates select="child::node()" />
第二条指令:
<xsl:apply-templates select="." />
是:
的简写<xsl:apply-templates select="self::node()" />
正如我们所见,不仅这两个指令不同(前者将模板应用于所有子节点,后者将模板应用于当前节点),但后者是危险的< / strong>并且经常会导致无休止的循环!
答案 1 :(得分:4)
您是否正在考虑
之间的区别<xsl:apply-templates />
和
<xsl:apply-templates select="*" />
?我问的原因是<xsl:apply-templates select="." />
非常罕见,而<xsl:apply-templates select="*" />
非常常见。
在这两种选择中进行选择时,select="*"
通常是不必要的,但存在差异:
<xsl:apply-templates />
没有
选择将处理所有子项
节点。这包括评论,
处理说明,大多数
值得注意的是,文本节点,以及
儿童元素。<xsl:apply-templates select="*" />
只会选择孩子
元素节点。因此,如果输入XML可以包含除元素之外的子节点,并且您不想处理这些节点,那么<xsl:apply-templates select="*" />
就是您想要的。