2010-11-01 3 views
0

Я прохожу через документ 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

@ user494111: Это выражение XPath должно вызывать синтаксическую ошибку. – 2010-11-01 22:30:46

+1

Это недопустимый синтаксис XPath. –

+0

XML не может иметь $ sign имя элемента или имя атрибута .. так что вышеупомянутый xpath звучит бессмысленно. @ User494111, данных, которые вы предоставили в качестве информации, недостаточно. –

ответ

2

Как уже отмечалось, что не является действительным 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 s был окружен $.

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

+0

Благодарим вас за ответ. Я попросил разработчика SAP рассмотреть этот документ преобразования. Я склонялся к «не равным», но не знал, какова цель двойных знаков $$. – user494111

+0

Как и в последующем, код оказался довольно старым и устаревшим. – user494111

0

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

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

+0

Это выражение XPath должно выдать синтаксическую ошибку. В XPath 1.0 оператор «не равен» равен '! ='. Но вы должны заметить, что сравнение наборов узлов - это существующее сравнение. – 2010-11-01 22:39:31

+0

Как я уже писал, я не могу найти с ним никакого совпадения, орех предложил, чтобы это был некий оператор. Моя мысль состояла в том, чтобы проверить фактические данные в реальной ситуации, чтобы увидеть, дают ли ne или eq разные результаты или если оба дают ошибку. В любом случае у нас будет больше возможностей;) –

0

Это не является синтаксически допустимым 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 . . . 
Смежные вопросы