这个XPath表达式在XSLT模板规则中匹配的是什么? * | /

时间:2012-03-09 14:04:33

标签: xslt xpath

根据我对XSLT的理解,我无法弄清楚它与什么匹配。

<xsl:template match="*|/">

1 个答案:

答案 0 :(得分:2)

XPath匹配是相对于匹配的XML中的“当前节点”(即当前位置)。

*匹配当前节点的所有子元素,而/匹配根 - 而只匹配根 - 无论当前节点是什么。

另请注意,root不是XML的根元素,它实际上是它上面的一个级别 - 根元素是根的子元素。

如果你有这个XSLT:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:template match="/|*">
      <item name="{name()}">
        <xsl:apply-templates/>
      </item>
    </xsl:template>

</xsl:stylesheet>

并将其应用于此XML:

<rootElement>
  <subElement1/>
  <subElement2/>
</rootElement>

你明白了:

<item name="">
  <item name="rootElement">
    <item name="subElement1" />
    <item name="subElement2" />
  </item>
</item>

第一个<item name="">对应/的匹配(不是元素,因此没有名称),其他是*的匹配。