XPath - 比较不同文档中的值

时间:2012-04-02 08:19:00

标签: xml xslt xpath xpath-2.0

这是我的XPath表达式

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

$ XMLDESCRIPTION中的ITEM节点有一个名为CODE的属性,我想检查$ XML是否有一个“元素”,其中的Description / @代码与来自$ XMLDESCRIPTION的@CODE相匹配

问题是:如何访问过滤器的$ XML部分中的@CODE属性?

额外信息:

  1. 我正在使用XSLT上下文(我使用stylevision)
  2. 如果输入a,表达式可以正常工作 “ends-with”部分中的固定值而不是字符串(@CODE)
  3. 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”,因为这是唯一一个在$ XML中具有代码“003424”的现有描述节点的元素,因此这是xpath应该获得的唯一ITEM元素的内容。 p>

2 个答案:

答案 0 :(得分:1)

我很确定你错过了current()功能。

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

答案 1 :(得分:0)

这个XPath应该从$ XML文档中挖出code属性: -

/myElements/element/Description[@code]