我正在使用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" />
我不应该获得每个节点中匹配的所有属性吗?
答案 0 :(得分:1)
您的XPath正在选择具有所需属性的元素。如果要选择与模式匹配的@Text
,则需要调整XPath以选择属性而不是元素。
您可以使用此XPath:
//*[matches(@Text, '\d+-\d+')]/@Text
或者这个XPath:
//*/@Text[matches(., '\d+-\d+')]