XPath未使用local-name()函数选择XML子元素

XPath未使用local-name()函数选择XML子元素,xml,xpath,Xml,Xpath,我在看W3学校网站上的一个例子,他们能够通过对价格元素施加条件来显示标题元素的值 不带名称空间的XPATH表达式 /bookstore/book[price>35]/title /*[local-name()='bookstore']/*[local-name()='book'[local-name()='author' and text()='Giada De Laurentiis']]/*[local-name()='price'] 然而,当我通过对author元素施加条件将同一个

我在看W3学校网站上的一个例子,他们能够通过对价格元素施加条件来显示标题元素的值

不带名称空间的XPATH表达式

/bookstore/book[price>35]/title
/*[local-name()='bookstore']/*[local-name()='book'[local-name()='author' and text()='Giada De Laurentiis']]/*[local-name()='price']
然而,当我通过对author元素施加条件将同一个xml更改为具有名称空间并显示price元素值时,我看到了异常。下面是带有名称空间的XPATH表达式

/bookstore/book[price>35]/title
/*[local-name()='bookstore']/*[local-name()='book'[local-name()='author' and text()='Giada De Laurentiis']]/*[local-name()='price']
它例外地失败了

Exception in thread "main" javax.xml.transform.TransformerException: ERROR! Unknown op code: 21
    at com.sun.org.apache.xpath.internal.compiler.Compiler.error(Unknown Source)
    at com.sun.org.apache.xpath.internal.compiler.OpMap.getFirstPredicateOpPos(Unknown Source)
    at com.sun.org.apache.xpath.internal.axes.WalkerFactory.analyzePredicate(Unknown Source)
您能告诉我XPATH表达式的名称空间有什么问题吗

带名称空间的XML


日常意大利语
吉娅达·德·劳伦蒂斯
2005
30
哈利·波特
J K.罗琳
2005
29.99
XQuery启动
詹姆斯·麦戈文
2003
49.99

你真的不应该以这种方式绕过名称空间,但是如果你坚持的话,这里有一个基于
local-name()
的XPath,为了可读性而换行,用于为
书籍
选择
价格
元素,该书的
作者是
书店
元素中的
Giada De Laurentiis”

/*[local-name()='bookstore']
/*[local-name()='book' and *[local-name()='author' and .='Giada De Laurentiis']]
/*[local-name()='price']