[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] Preserving inline DTD


Subject: Re: [xsl] Preserving inline DTD
From: Graydon <graydon@xxxxxxxxx>
Date: Mon, 27 Jan 2014 18:56:01 -0500

On Mon, Jan 27, 2014 at 03:35:33PM -0800, Martin Holmes scripsit:
> On 14-01-27 03:33 PM, David Carlisle wrote:
> >On 27/01/2014 23:26, Piotr Fusik wrote:
> >>How do I make xsltproc preserve the DTD that is in the input XML ?
> >
> >Unless it has a non-standard extension (which I don't recall is the
> >case) then this is not possible. Standard XSLT can not do this as the
> >DTD is expanded out by the XML parser and not reported to XSLT which
> >just sees a tree of element text and attribute nodes.
> 
> Couldn't the XSLT re-read the source document as text, using the
> document() function, and recover the DTD section with string
> manipulation?

document() will insist on parsing the document, so I don't think so, no.  

If you have unparsed-text() (which xsltproc won't because it's XSLT 1.0)
you can do that to get the contents of the DOCTYPE declaration.

If it will always be the same DTD, or you know what DTD it will be at
run time, you can get the xsl:output to create a DOCTYPE declaration in
the result document by setting the doctype-public and possibly
doctype-system attributes on xsl:output to the values you want, which
might have been what the original question was about.

-- Graydon


Current Thread
Keywords