Попытка сопоставить более одного класса в XSLT - PullRequest
2 голосов
/ 24 февраля 2011

Я очень плохо знаком с XSLT и пытаюсь отформатировать текст для PDF, и мне нужно сопоставить и скрыть несколько элементов.

Я сейчас использую:

<xsl:template match="*[@outputclass='LC ACaseName']">

для соответствия:

<p outputclass="LC ACaseName"> 

и все работает просто отлично.

Что мне теперь нужно сделать, так это 4 или 5 совпадений

<p outputclass="<somestring>">

и примените к ним тот же стиль. Я мог бы просто дублировать вышеприведенную строку, подставляя каждый раз разные имена выходных классов, но это лениво, и я знаю, что должен быть правильный способ сделать это, чему я должен научиться.

Я надеюсь, что предоставил достаточно информации здесь. Если я что-то пропустил, пожалуйста, скажите.

спасибо,

Хедли Филлипс

Ответы [ 2 ]

3 голосов
/ 24 февраля 2011

В предикате можно указать несколько условий:

<xsl:template match="*[@outputclass='test' or @outputclass='blah']">
2 голосов
/ 24 февраля 2011

Я не могу найти дубликат ...

В XSLT / XPath 1.0:

<xsl:template match="*[contains(
                          '|LC ACaseName|other class|',
                          concat('|',@outputclass,'|')
                       )
                     ]"> 
    <!-- Content Template --> 
<xsl:template> 

В XSLT / XPath 2.0:

<xsl:template match="*[@outputclass = ('LC ACaseName','other class')]"> 
    <!-- Content Template --> 
<xsl:template> 

Примечание : для решения XSLT / XPath 1.0 необходим разделитель, не являющийся частью какого-либо содержимого элемента.

...