function - XPATH匹配函数问题——有效但无效

标签 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+')]我得到了正确的节点,但没有得到文本属性本身

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

...而//@Text给我文本属性。谁能帮我理解为什么?我想获取 Text 属性值并使用字符串函数解析它们。最终结果应如下所示:

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

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

最佳答案

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

您可以使用此 XPath:

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

或者这个XPath:

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

关于function - XPATH匹配函数问题——有效但无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6812528/

相关文章:

awk - 使用 awk 提取多个字符串

function - 如何动态查找 Clojure 函数的元数据?

python - 阿克曼函数理解

c++ - 将对象传递给函数不会导致构造函数调用

c# - 使用C#在XDocument中获取同一级别上的所有XML属性值

angularjs - 在基于 angularjs 构建的应用程序中查找元素的 xpath

php - PHP验证YouTube脚本

c - 如何在宏中使用 __func__

python - 为什么 lxml 找不到 Chrome 检查器给出的 xpath?

javascript - 检查 var 中是否有 "cheese"或 "cake"?