如何在使用XSLT(2.0)轉換XML時保留實體引用?在我嘗試過的所有處理器中,默認情況下都會解析實體。我可以使用xsl:character-map
來處理字符實體,但是文本實體呢?在使用XSLT轉換XML時保留實體引用?
例如,該XML:
<!DOCTYPE doc [
<!ENTITY so "stackoverflow">
<!ENTITY question "How can I preserve the entity reference when transforming with XSLT??">
]>
<doc>
<text>Hello &so;!</text>
<text>&question;</text>
</doc>
與下面的XSLT變換:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
產生以下輸出:
<doc>
<text>Hello stackoverflow!</text>
<text>How can I preserve the entity reference when transforming with XSLT??</text>
</doc>
輸出應看起來像輸入(減去現在的文檔類型聲明):
<doc>
<text>Hello &so;!</text>
<text>&question;</text>
</doc>
我希望,我沒有更換所有&符號與&
替換所有&
預先處理的輸入與&
(如&question;
),然後處理後的輸出。
也許這是處理器特定的?我正在使用撒克遜9.
謝謝!
好問題,+1。所請求的處理幾乎不可能用XSLT完成,我不會經常推薦使用我的答案。 – 2011-05-13 03:12:37