XPATH匹配功能问题 - 工作但不起作用

时间:2011-07-25 06:38:58

标签: function xpath match xpath-2.0

我正在使用Eclipse运行XSL 2.0(XPATH 2.0),我有以下来源:

<testTop>
    <Level1 id="abc" Text="from 1-2"/>
    <Level1 id="pqr" Text="from 3-44" />
    <Level1 id="xyz" Text="from 49-101" />
</testTop>

当我在Eclipse中测试以下表达式时,//*[matches(@Text, '\d+-\d+')]我得到了正确的节点,但没有自己的Text属性

Level1 ID=abc
Level1 ID=pqr
Level1 ID=xyz

...而//@Text给了我Text属性。谁能帮我理解为什么?我想获取Text属性值并使用字符串函数解析它们。最终的结果应该看起来像这样:

<output originalText="from 1-2" value1="1" value2="2" />

我不应该获得每个节点中匹配的所有属性吗?

1 个答案:

答案 0 :(得分:1)

您的XPath正在选择具有所需属性的元素。如果要选择与模式匹配的@Text,则需要调整XPath以选择属性而不是元素。

您可以使用此XPath:

//*[matches(@Text, '\d+-\d+')]/@Text

或者这个XPath:

//*/@Text[matches(., '\d+-\d+')]