Как написать в строке, если условие в xslt - PullRequest
0 голосов
/ 10 октября 2019

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

<xsl:template match="node">
  <entry type="{if (ancestor::table[@frame='all']) then 'all_rules' else 'header_single{if ($out) then concat('_',$out) else ''}'}">
     <body/>
  </entry>
</xsl:template>

Ошибка:

{...hen concat('_',$out) else '...}: Unexpected token name "_" beyond end of expression

Спасибо.

1 Ответ

0 голосов
/ 10 октября 2019

Использование { ... } для хранения выражений является функцией XSLT, а не XPath, поэтому вы не можете использовать ее в выражении XPath.

Если вы хотите вложить if -выражения, подобные этому, то вам нужно сделать это в конструкциях XPath, и я считаю, что это означает использование concat() в этом случае:

if (ancestor::table[@frame='all']) 
then 'all_rules' 
else concat(
    'header_single',
    if ($out) then concat('_',$out) else ''
)

Конечно, вам нужно использовать достаточно высокую версию XSLT, чтобы это работало. Это не будет работать в XSLT 1.0, поскольку он поддерживает только XPath 1.0, который не имеет if- выражений.

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