XSLT模板中的轴匹配

时间:2014-12-19 08:53:44

标签: xslt xpath axes

我想要一个像这样的模板匹配:

<xsl:template match="//content[parent::(@type='async')]">
 <table>
  <thead>
   <xsl:apply-templates select="row[@type='header']" />
  </thead>
  <tbody>
   <xsl:apply-templates select="/row[@type='data']" />
  </tbody>
 </table>
</xsl:template>

使用此XML:

<document type="async">
 <content>
  <!-- Some rows with types -->
 </content>
</document>

我的问题是<xsl:template match="//content[parent::(@type='async')]">,我该如何使用?

1 个答案:

答案 0 :(得分:2)

以这种方式:

//content[parent::*/@type='async']

可以缩短为:

//content[../@type='async']

这是另一个:

//*[@type='async']/content

注意
一般来说,如果您知道元素的名称(在这种情况下为*),尤其是{{1},则最好明确并避免使用document表示法。 }符号,如果你知道确切的路径。

具体来说,在匹配模式中,前导//是多余的,因为如果(并且仅当)模式在遍历输入树的过程中匹配时,将自动应用模板。