如何在xsl中使用或声明:apply-templates select属性?

时间:2011-07-28 06:43:36

标签: xml xpath xslt

我想在xsl中使用OR语句匹配两个表达式:apply-templates select.i想要检查以下条件......

<xsl:apply-templates select="//w:body/w:p[w:r[w:t]] or //w:body/w:p[w:r[w:pict]]">

 // My Functionality

</xsl:apply-templates>

但我不知道我是怎么做到的。请指导我摆脱这个问题...

2 个答案:

答案 0 :(得分:1)

我不了解XSLT 2.0,但在XSLT 1.0中<xsl:apply-templates select="//w:body/w:p[w:r[w:t]] or //w:body/w:p[w:r[w:pict]]">无效查询。使用|代替or

答案 1 :(得分:1)

您可以使用or,在此上下文中使用它是非常正确的,因为您不需要测试节点:

<xsl:apply-templates select="
  //w:body
    /w:p
    [w:r/w:t or w:r/w:pict]">

| union )仅适用于,如果您需要选择测试节点w:tw:pict):

<xsl:apply-templates select="
  //w:body/w:p/w:r/w:t
  |
  //w:body/w:p/w:r/w:pict">

XPath 2.0允许您更简洁地编写:

<xsl:apply-templates select="
  //w:body/w:p/w:r/(w:t|w:pict)"/>