[xsl] Preserving inline DTD

Subject: [xsl] Preserving inline DTD
From: Piotr Fusik <pfusik@xxxxx>
Date: Tue, 28 Jan 2014 00:26:27 +0100
Hello,

How do I make xsltproc preserve the DTD that is in the input XML ?

Example: coder.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE codermap [
<!ELEMENT codermap (coder)*>
<!ELEMENT coder (#PCDATA)>
<!ATTLIST coder magick CDATA #REQUIRED>
<!ATTLIST coder name CDATA #REQUIRED>
]>
<codermap>
  <coder magick="FOO" name="FOO" />
</codermap>

coder.xsl:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
version="1.0">
	<xsl:output method="xml" indent="yes" />
	<xsl:template match="@*|node()">
		<xsl:copy>
			<xsl:apply-templates select="@*|node()"/>
		</xsl:copy>
	</xsl:template>
	<xsl:template match="/codermap">
		<xsl:copy>
			<xsl:apply-templates select="@*|node()"/>
			<coder magick="BAR" name="BAR" />
		</xsl:copy>
	</xsl:template>
</xsl:stylesheet>

When invoked as:
xsltproc coder.xsl coder.xml
the DTD is lost:
<?xml version="1.0"?>
<codermap>
  <coder magick="FOO" name="FOO"/>
<coder magick="BAR" name="BAR"/></codermap>

Thank you,
Piotr

Current Thread