据我所知,XPath表达式" /"应将节点上下文设置为根节点的子轴。这是xml:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<test-case name="test-case-1">
<object-under-test category="template" name="text-align"/>
<parameters>
<input name="text">text</input>
<input name="min-lenght">8</input>
<input name="align">left</input>
<output name="result"/>
</parameters>
<criteria>
<criterion class="equal" to="'text '"/>
</criteria>
</test-case>
</xsl:stylesheet>
这是xsl:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<test>
<xsl:apply-templates/>
</test>
</xsl:template>
</xsl:stylesheet>
<xsl:apply-templates>
的默认匹配模式是什么?
为什么我得到所有标签的值作为输出?
这是输出:
<?xml version="1.0" encoding="UTF-8"?>
<test>text 8 left</test>
答案 0 :(得分:4)
据我所知,XPath表达式&#34; /&#34;应该设置节点上下文 到根节点的子轴。
不,它将上下文设置为/
根节点本身。
<xsl:apply-templates>
的默认匹配模式是什么?
&#34; 如果没有select
属性,xsl:apply-templates
指令将处理当前节点的所有子节点。&#34;
http://www.w3.org/TR/xslt/#section-Applying-Template-Rules
为什么我将所有标签的值作为输出?
这是因为当样式表没有与您应用模板的节点相匹配的模板时应用的built-in template rules。简而言之,内置模板会将所有后代文本节点复制到输出中。