请原谅我提出这个愚蠢的问题,但我不太明白 - / @ * [name()= \'today \'或name()= \'明天\']
表示以下xpath
< * [local-name()= \'date \'] / @ * [name() = \'今天\'或name()= \'明天\']>
我对 name之前的星号感到困惑()= 代码>。我知道本地名称前的星号是指定前缀/命名空间,但星号在属性前面做了什么?
提前非常感谢!

答案 0 :(得分:2)
表达式@*[name()=\'today\' or name()=\'tomorrow\']
选择名称()为“今天”的所有属性。或者明天'。对于未加前缀的属性,属性的name()为NAME;对于带前缀的属性,属性的名称()为PREFIX:NAME;因此,该表达式测试是否存在名为'今天'的无命名空间属性。或者'明天':在XPath 2.0中你最好把它写成(@today|@tomorrow)
。
当应用于属性时,name()="X"
和local-name()="X"
之间的区别在于第一种情况仅匹配无命名空间属性,而第二种情况也将匹配,例如,名为Y:X