我不确切知道xpath表达式的原因:
//h3[text()='Foo › Bar']
不匹配:
<h3>Foo › Bar</h3>
这看起来是对的吗?如何查询该标记?
答案 0 :(得分:4)
XPath没有定义任何特殊的转义序列。当在XSLT中使用XPath时(例如,在XSLT文档的元素的属性中),转义序列由读取样式表的XML处理器处理。如果您通过库在非XML上下文中使用XPath(例如,从Java或C#或其他语言),并且您的XPath查询是该语言的字符串文字,除了语言本身之外,您将不会获得任何转义处理通常会。
如果这是C#或Java,这应该有效:
String xpath = "//h3[text()='Foo \u8250 Bar']";
...
作为旁注,它在XSLT中也不起作用,因为XSLT使用XML,它没有定义字符实体›
- 它只定义<
,>
,"
,'
和&
。您必须使用艐
,或者在XSLT样式表的DOCTYPE声明中自己定义字符实体。
答案 1 :(得分:1)
XPath操作XML文档的抽象逻辑结构,而不是表面语法
...所以除非你在里面使用查询(而不是“查询”)一种解析该实体的语言(也许XSLT带有包含该实体的DTD(如果可能的话,我远离XSLT)专家)),我不希望它起作用。
使用您使用XPath的任何语言识别的文字字符或转义序列。