代码之家  ›  专栏  ›  技术社区  ›  Purrell

XPATH查询中的html 4.0实体

  •  3
  • Purrell  · 技术社区  · 15 年前

    //h3[text()='Foo › Bar']
    

    不匹配:

    <h3>Foo &rsaquo; Bar</h3>
    

    2 回复  |  直到 15 年前
        1
  •  5
  •   Pavel Minaev    15 年前

    XPath没有定义任何特殊的转义序列。当XPath在XSLT中使用时(例如在XSLT文档元素的属性中),转义序列由读取样式表的XML处理器处理。如果通过库在非XML上下文(例如,来自Java或C#或其他语言)中使用XPath,并且XPath查询是该语言中的字符串文本,那么除了该语言本身通常进行的转义处理之外,您将不会得到任何转义处理。

    如果这是C#或Java,那么应该可以:

    String xpath = "//h3[text()='Foo \u8250 Bar']";
    ...
    

    顺便说一句,它在XSLT中也不起作用,因为XSLT使用XML,而XML不定义字符实体 &rsaquo; &lt; , &gt; , &quot; &apos; &amp; &#x8250;

        2
  •  1
  •   Quentin    15 年前

    XPath specification :

    XPath操作XML文档的抽象逻辑结构,而不是其表面语法

    因此,除非您在解析该实体的语言(可能是XSLT和包含该实体的DTD(如果可能的话,我远非XSLT专家))中使用查询(而不是“to query”),否则我不会期望它工作。

    使用由使用XPath的任何语言识别的文字字符或转义序列。