Re: [xsl] Declaring entities in output XML DOCTYPE

Subject: Re: [xsl] Declaring entities in output XML DOCTYPE
From: David Carlisle <davidc@xxxxxxxxx>
Date: Tue, 21 Dec 2010 17:03:48 +0000
On 21/12/2010 16:29, Peter Desjardins wrote:
*****************************

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE targetset SYSTEM "http://docbook.sourceforge.net/release/xsl/current/common/targetdatabase.dtd"; [ <!ENTITY MyDoc SYSTEM "MyDoc.db"> ]> <targetset> <sitemap> <dir> <document targetdoc="MyDoc" baseuri="MyDoc.htm">&MyDoc;</document> </dir> </sitemap> </targetset>



the only way to write an internal subset without using processor extensions is to write all of

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE targetset
SYSTEM "http://docbook.sourceforge.net/release/xsl/current/commontargetdatabase.dtd";
[> <!ENTITY MyDoc SYSTEM "MyDoc.db">
]>


as text using disable-output-escaping, or (better) character maps.

A better (for xslt) solution is to specify an external dtd subset say

<!DOCTYPE targetset SYSTEM "mydocbook.dtd">

which you can specify using xsl:output, then you can write mydocbook.dtd using xsl:result-document text method, so it looks like


<!ENTITY % dbk SYSTEM "http://docbook.sourceforge.net/release/xsl/current/commontargetdatabase.dtd";>
%dbk;
<!ENTITY MyDoc SYSTEM "MyDoc.db">
....



David


Current Thread