0

这是我的 XPath 表达式

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

$XMLDESCRIPTION 中的 ITEM 节点有一个名为 CODE 的属性,如果有一个带有与 $XMLDESCRIPTION 中的@CODE 匹配的描述/@code 的“元素”,我想检查 $XML

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

额外信息:

  1. 我在 XSLT 上下文中工作(我使用 stylevision)
  2. 如果我在“ends-with”部分而不是 string(@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”,因为这是唯一在 $XML 中具有现有描述节点且代码为“003424”的元素,因此这是 xpath 应该获得的唯一 ITEM 元素的内容。

4

2 回答 2

1

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

$XMLDESCRIPTION/myItems/ITEM[
  @TYPE="ok" 
  and $XML/myElements/element/Description[
    ends-with(@code, current()/@CODE)
  ]
]
于 2012-04-02T09:29:12.803 回答
0

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

/myElements/element/Description[@code]
于 2012-04-02T09:20:30.990 回答