Синтаксис XSL с двойным знаком доллара "$$" - PullRequest
0 голосов
/ 02 ноября 2010

Я просматривал документ xsl и не уверен, что означает @ domain $ ne $. Можете ли вы помочь?

 <xsl:for-each select="./HEADER/META
                          [(./VALUE[not(text()='')]) and
                           (./@domain$ne$'PPPI_PROCESS_ORDER') and
                           (./@domain$ne$'PPPI_PROCESS_ORDER_TEXT') and
                           (./@domain$ne$'PPPI_MATERIAL') and 
                           (./@domain$ne$'PPPI_MATERIAL_SHORT_TEXT')]"

Ответы [ 3 ]

2 голосов
/ 02 ноября 2010

Как уже отмечали другие, это недопустимый XPath (или XSLT).

Однако в XPath 2.0 есть оператор ne, что означает «не равно». Это похоже на !=, но применяется к отдельным атомарным значениям вместо наборов узлов (экзистенциальное сравнение).

Очень похоже, что ne - это то, что предназначено, но знаки $ следует заменить пробелами.

<xsl:for-each select="./HEADER/META
                      [(./VALUE[not(text()='')]) and
                       (./@domain ne 'PPPI_PROCESS_ORDER') and
                       (./@domain ne 'PPPI_PROCESS_ORDER_TEXT') and
                       (./@domain ne 'PPPI_MATERIAL') and 
                       (./@domain ne 'PPPI_MATERIAL_SHORT_TEXT')]">

Интересно, что случилось с ней, когда ne окружили $.

Есть несколько других вещей, которые вы могли бы сделать, чтобы сделать код менее многословным, но это не предмет вашего вопроса.

0 голосов
/ 02 ноября 2010

Это синтаксически недопустимый XPath (и XSLT).

Вот реакция одного процессора XSLT 1.0 (Saxon 6.5.4):

SAXON 6.5.4 from Michael Kay
Java version 1.6.0_21
Error at xsl:for-each on line 10 of file:/(Untitled):
  Error in expression ./HEADER/META                           [(./VALUE[not(text()='')]) and                            (./@domain$ne$'PPPI_PROCESS_ORDER') and                            (./@domain$ne$'PPPI_PROCESS_ORDER_TEXT') and                            (./@domain$ne$'PPPI_MATERIAL') and                            (./@domain$ne$'PPPI_MATERIAL_SHORT_TEXT')]: expected ")", found "$"
Transformation failed: Failed to compile stylesheet. 1 error detected.
Press any key to continue . . .
0 голосов
/ 02 ноября 2010

Ничего не найдено, но $ часто используется для представления переменной, но в этом случае он выглядит как разделитель, «похоже, @domain не равен« PPPI_PROCESS_ORDER », но я не могу найти ничего поддерживающего это.

Какие данные они соответствуют или должны соответствовать.

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