1

我有一个字符串序列,我需要使用 XSLT 将其解析为 XML。例如:

<span>Foo</span> & <span>bar</span> have been tagged.

当我尝试使用 fn:parse-xml-fragment (使用 Saxon-PE 9.6.0.5)解析它时,会引发两个错误:

  1. 实体名称必须紧跟实体引用中的“&”。
  2. FODC0006:parse-xml-fragment() 的第一个参数不是格式正确且名称空间格式正确的 XML 片段。

如果我&从输入文本中删除实体,那么它会正确解析。但是,如果实体在输入中被转义,为什么会导致 XML 解析失败?

4

1 回答 1

3

如果您想解析 XML,那么使用 XML 需要转义一个 & 符号&,我相信在纯 XPath 上下文中您可以做到parse-xml-fragment('&')。如果您的输入在 XML 中转义,那么您当然需要将 & 符号转义为&

<data>&lt;span&gt;Foo&lt;/span&gt; &amp;amp; &lt;span&gt;bar&lt;/span&gt; have been tagged.</data>

或者

<data><![CDATA[<span>Foo</span> &amp; <span>bar</span> have been tagged.]]></data>
于 2016-11-14T19:15:54.437 回答