как использовать или заявление в xsl: apply-templates select attribute? - PullRequest
2 голосов
/ 28 июля 2011

Я хочу сопоставить два выражения, используя оператор 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>

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

Ответы [ 2 ]

1 голос
/ 28 июля 2011

Вы можете использовать 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)"/>
1 голос
/ 28 июля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...