2012-04-02 4 views
0

Это мое выражение XPathXPath - сравнение значений из разных документов

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

Узел ITEM в $ XMLDESCRIPTION имеет атрибут CODE, и я хочу, чтобы проверить в $ XML, если есть «элемент» с Описание/@ код, который соответствует @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.

+0

Я думаю, вам нужно предоставить образец XML и объяснить, какой узел/атрибут вы хотите выкопать с помощью XML. Трудно сказать по вашему вопросу выше того, чего вы пытаетесь достичь. –

+0

Я добавил несколько xml, чтобы уточнить свою проблему. – BBQ

+0

Также добавьте некоторый код XSLT. Это может быть гораздо более простой способ сделать то, что вы хотите сделать. – Tomalak

ответ

1

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

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

Я забыл упомянуть, что я использую динамическую таблицу (вроде цикла) в стивиле. Я не слишком хорошо знаком с чистым XSLT, и я не могу сказать, что это будет выглядеть в XSLT. Я использовал текущий()/@ CODE в своей динамической таблице, и это сработало, спасибо. – BBQ

0

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

/myElements/element/Description[@code] 
Смежные вопросы