2015-09-04 34 views
1

我在我的XML文件中有一個實體,並使用樣式表進行變換,但無法變換xml文件中使用的實體。瀏覽器將錯誤顯示爲未定義的實體。我想用xslt來轉換它。XSLT:在XML中使用的變換實體

我想轉換實體和ampcopy;

請幫助我!

XML文件:

<article> 
<main> 
<content>&copy; by StactOverFlow</content> 
</main> 
</article> 
+0

你的答案可能在這裏找到? http://stackoverflow.com/questions/6508860/how-do-i-define-html-entity-references-inside-a-valid-xml-document – Luke

+0

我試過,但它不工作,實際上我想添加它xslt不在xml中! – dasanb

+0

你試過什麼?用'©'代替'©',還是在doctype中定義實體? – Luke

回答

2

我試過,但它不工作,其實我想它添加在XSLT不是XML!

瀏覽器顯示該錯誤作爲未定義的實體。我想用xslt來轉換它。

如果你的XML文檔中包含的實體像&copy;,和這些實體的定義是不能從源文件,那麼你的運氣了,因爲這使得你的XML文檔無效。

唯一命名實體可以在沒有在DTD中使用(內聯或引用)是&lt;&gt&amp;&apos;&quot;。任何其他實體必須是數字實體引用,如&#169;,或者必須在DTD部分中定義。

XSLT(無論在瀏覽器還是脫機中使用)在拒絕XML輸入文檔時是正確的。如果你想防止這種情況發生,你將需要用另一種工具來修復你的無效XML,這種工具不是將XML文檔作爲XML(因爲它不是)而是作爲文本處理。你可以簡單地用這種處理添加DTD定義,即添加線條像這樣的DTD:

<!ENTITY copy "&#169;"> 

或搜索命名實體並替換它們爲各自的Unicode字符或數字實體(從XML的角度來看,只要編碼是正確的,兩者之間沒有區別)。