как использовать оператор or в xsl: apply-templates select attribute?



Я хочу сопоставить два выражения с помощью оператора OR в xsl: apply-templates select.я хочу проверить следующие условия...



<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>


Но я не знаю, как мне это удается. Пожалуйста, направьте меня, чтобы выйти из этой проблемы...
576   2  

2 ответов:

Я не знаю о 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.

Вы можете использовать or, и это действительно правильно использовать его в этом контексте, потому что вы не хотите, чтобы тестовые узлы:

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

| (union ) является незаменимым только , Если вам нужно выбрать узлы тестирования (w:t и еще w: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)"/>

Comments

    Ничего не найдено.