0

应用此 XSLT 时:

<xsl:template match="e">
  <xsl:value-of select="@name"/>
</xsl:template>

到这个 xml:

   <root>
     <e name="1"/>
     <la>
      <e name="bla"/>
     </la> 
   </root>

我得到“1”和“bla”。

  1. 为什么会这样?
  2. 如何确保 XSLT 仅应用于 root 的直接子级?
4

2 回答 2

1

你试过了match="root/e"吗?如果要匹配某个上下文中的节点,则需要在规则中提供上下文,否则所有具有匹配节点名称的节点都适用于该规则。

于 2013-05-22T07:07:35.250 回答
0

你也可以使用类似的东西:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:template match="root">
    <xsl:apply-templates select="child::e"/>
  </xsl:template>

  <xsl:template match="e">
    <xsl:value-of select="@name"/>
  </xsl:template>

</xsl:stylesheet>
于 2013-05-13T12:44:11.020 回答