2016-11-14 116 views
1

我有一串字符串,需要使用XSLT將其解析爲XML。例如:XSLT中的XPath 3.0 XML解析函數

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

當我嘗試解析此使用FN:解析的XML片段(使用撒克遜PE 9.6.0.5),兩個錯誤拋出:

  1. 實體名稱必須緊跟在實體參考中的'&'之後。
  2. FODC0006:parse-xml-fragment()的第一個參數不是格式良好且名稱空間良好的XML片段。

如果我從輸入文本中刪除&實體,則它會正確解析。但是,如果實體在輸入中被轉義,爲什麼會導致XML解析失敗?

+0

能否請你添加一個最小的,但完整的片段,會導致這個錯誤?如果它是純XPath,那麼我不明白爲什麼字符串會有任何轉義的標記,如果它在XML或XSLT中,那麼顯然你會有一個'&'傳遞給XML解析器,並且XML不允許,您需要將其作爲'&'或內部XML作爲'& amp;'轉義。 –

回答

2

如果您想解析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> 
+0

就是這樣 - 我需要確保'&'實體(在XML內部)被轉換爲'& amp;'。 – tat