<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE thing PUBLIC "XXX//DTD XML DTD for things//EN" "C:\work\thing.dtd" [<!ENTITY abreve "ă"><!ENTITY agr "α"><!ENTITY amacr "ā"><!ENTITY bgr "β">]>
<thing>
[...]
</thing>
我使用此 XSLT 以另一种不相关的方式更改文档,效果很好:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/asset" priority="10">
[...]
<output method="xml" omit-xml-declaration="no" indent="no" encoding="UTF-8" doctype-public="XXX//DTD XML DTD for things//EN" doctype-system="C:\work\thing.dtd"/>
[...]
但是输出没有给出 ENTITY 项,只是这样:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE thing PUBLIC "XXX//DTD XML DTD for things//EN" "C:\work\thing.dtd">
<thing>
[...]
</thing>
如果需要,解决方案可以从文件中读取 ENTITY 内容,但不是必须这样做,因为它在所有实例中都是相同的,因此它可以重新提供 ENTITY 内容。
谢谢。