XPath - сравнивает значения из разных документов - PullRequest
0 голосов
/ 02 апреля 2012

Это мое XPath выражение

$XMLDESCRIPTION/myItems/ITEM[@TYPE="ok" and boolean($XML/myElements/element[ends-with(Description/@code, string(@CODE))])]

Узел ITEM в $ XMLDESCRIPTION имеет атрибут CODE, и я хочу проверить в $ XML, есть ли «элемент» с кодом Description / @, который соответствует @CODE из $ XMLDESCRIPTION

Вопрос в том, как получить доступ к атрибуту @CODE в части $ XML моего фильтра?

дополнительная информация:

  1. Я работаю в контексте XSLT (я использую stylevision)
  2. Выражение работает нормально, если я наберу фиксированное значение в части «заканчивается» вместо строки (@CODE)

XML Это мой фрагмент $ XMLDESCRIPTION

<myItems>
    <ITEM CODE="003423" TYPE="ok">Hello</ITEM>
    <ITEM CODE="003123" TYPE="ok">hello12</ITEM>
    <ITEM CODE="003223" TYPE="notok">Hellollo</ITEM>
    <ITEM CODE="005423" TYPE="notok">Hellolol</ITEM>
    <ITEM CODE="003424" TYPE="ok">HellossSSSDDFFSQSSQDFQSDF</ITEM>
    <ITEM CODE="003442" TYPE="ok">Helloee</ITEM>
    <ITEM CODE="003342" TYPE="ok">Hellodd</ITEM>
    <ITEM CODE="008900" TYPE="ok">Helloee</ITEM>
    <ITEM CODE="003888" TYPE="inprogress">Helloaa</ITEM>
</myItems>

это фрагмент моего $ XML-документа

<myElements>
    <element><Description code="009999">myinformation</Description></element>
    <element><Description code="008888">myinformation</Description></element>
    <element><Description code="003424">myinformation</Description></element>
    <element><Description code="002222">myinformation</Description></element>
    <element><Description code="003333">myinformation</Description></element>
    <element><Description code="005555">myinformation</Description></element>
</myElements>

С этими двумя примерами xml мой результат должен быть "HellossSSSDDFFSQSSQDFQSDF", потому что это единственный элемент, который имеет существующий узел описания с кодом "003424" в $ XML, так что это единственный контент элемента ITEM, который должен получить xpath.

Ответы [ 2 ]

1 голос
/ 02 апреля 2012

Я почти уверен, что вам не хватает функции current().

$XMLDESCRIPTION/myItems/ITEM[
  @TYPE="ok" 
  and $XML/myElements/element/Description[
    ends-with(@code, current()/@CODE)
  ]
]
0 голосов
/ 02 апреля 2012

Этот XPath должен извлечь атрибут кода из документа $ XML: -

/myElements/element/Description[@code]
...