仍然不太确定这个xpath <* [local-name()= \'date \'] / @ * [name()= \'today \'或name()= \'tomorrow \']>可以找到什么

时间:2017-08-25 10:46:19

标签: xml xpath

请原谅我提出这个愚蠢的问题,但我不太明白 - / @ * [name()= \'today \'或name()= \'明天\'] 表示以下xpath

&#xA;&#xA;

&lt; * [local-name()= \'date \'] / @ * [name() = \'今天\'或name()= \'明天\']&gt;

&#xA;&#xA;

我对 name之前的星号感到困惑()= 。我知道本地名称前的星号是指定前缀/命名空间,但星号在属性前面做了什么?

&#xA;&#xA;

提前非常感谢!

&#xA;

1 个答案:

答案 0 :(得分:2)

表达式@*[name()=\'today\' or name()=\'tomorrow\']选择名称()为“今天”的所有属性。或者明天&#39;。对于未加前缀的属性,属性的name()为NAME;对于带前缀的属性,属性的名称()为PREFIX:NAME;因此,该表达式测试是否存在名为&#39;今天&#39;的无命名空间属性。或者&#39;明天&#39;:在XPath 2.0中你最好把它写成(@today|@tomorrow)

当应用于属性时,name()="X"local-name()="X"之间的区别在于第一种情况仅匹配无命名空间属性,而第二种情况也将匹配,例如,名为Y:X