我有一个字符串序列,我需要使用XSLT将其解析为XML。例如:
<span>Foo</span> & <span>bar</span> have been tagged.
当我尝试使用fn:parse-xml-fragment(使用Saxon-PE 9.6.0.5)解析这个时,抛出两个错误:
- 实体名称必须紧跟在实体引用中的'&'后面。
- FODC0006: parse-xml-fragment()的第一个参数不是一个格式良好且名称空间格式良好的XML片段。
如果我从输入文本中删除&
实体,那么它将正确解析。但是,如果实体在输入中进行了转义,为什么会导致XML解析失败呢?
如果您想解析XML,那么使用XML需要将与符号转义为&
,我确信在纯XPath上下文中您可以执行parse-xml-fragment('&')
。如果你的输入是在XML中转义的,那么你当然需要转义一个&符号,如&amp;
:
<data><span>Foo</span> &amp; <span>bar</span> have been tagged.</data>
或
<data><![CDATA[<span>Foo</span> & <span>bar</span> have been tagged.]]></data>