Xml 为什么<;xsl:apply templates/>;输出所有祖先标记的值

Xml 为什么<;xsl:apply templates/>;输出所有祖先标记的值,xml,xslt,Xml,Xslt,据我所知,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"/> <paramet

据我所知,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>

文本
8.
左边
这是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>

的默认匹配模式是什么? 为什么要将所有标记的值作为输出

这是输出:

<?xml version="1.0" encoding="UTF-8"?>
<test>text 8 left</test>

文本8左
据我所知,XPath表达式“/”应该设置节点上下文 到根节点的子轴

否,它将上下文设置为
/
根节点本身

的默认匹配模式是什么

如果没有
select
属性,则
xsl:apply templates
指令将处理当前节点的所有子节点

为什么要将所有标记的值作为输出

这是因为当您的样式表没有与您已应用模板的节点相匹配的模板时,会应用这些模板。简而言之,内置模板将所有子体文本节点复制到输出

据我所知,XPath表达式“/”应该设置节点上下文 到根节点的子轴

否,它将上下文设置为
/
根节点本身

的默认匹配模式是什么

如果没有
select
属性,则
xsl:apply templates
指令将处理当前节点的所有子节点

为什么要将所有标记的值作为输出


这是因为当您的样式表没有与您已应用模板的节点相匹配的模板时,会应用这些模板。简而言之,内置模板将所有子体文本节点复制到输出。

如果使用正确的术语,您将来的问题将更容易理解。您使用“标记”表示“元素”,使用“祖先”表示“后代”,使用“XPath表达式”表示“匹配模式”,使用“节点上下文”表示“上下文节点”,使用“子轴”表示什么都没有:上下文节点是一个节点,而不是一个轴。如果使用正确的术语,您将来的问题将更容易理解。您使用“标记”表示“元素”,“祖先”表示“后代”,“XPath表达式”表示“匹配模式”,“节点上下文”表示“上下文节点”,而“子轴”表示什么都没有:上下文节点是节点,而不是轴。