RE: [xsl] order in the xml prolog

Subject: RE: [xsl] order in the xml prolog
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Tue, 20 Nov 2007 15:16:02 -0000
I was mildly surprised to discover that comments and PIs are allowed before
the DOCTYPE declaration.

The DOCTYPE declaration is newly created by the serializer, it is not a copy
of the DOCTYPE declaration in your source document. It will always precede
any nodes that are present in the result tree. There's no way to control
this. I can't imagine any circumstances where you really need to generate
comments and PIs before the DOCTYPE declaration.

Michael Kay
http://www.saxonica.com/
 

> -----Original Message-----
> From: Trevor Nicholls [mailto:trevor@xxxxxxxxxxxxxxxxxx] 
> Sent: 20 November 2007 14:46
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] order in the xml prolog
> 
> I have a modified identity transform which is translating a 
> few element names, and it's performing that task admirably. 
> However the output XML has also switched the order of 
> elements in the xml prolog.
> 
> Two questions:
> 1) Does it really matter?
> 2) How do I modify the identity template to get the original order?
> 
> I am able to use either Saxon or xsltproc (libxml). Both 
> transpose the PI and the DTD.
> 
> Input xml:
> 
>   <?xml version="1.0" encoding="UTF-8"?>
>   <?xml-stylesheet href="../../utils/doc2html.xsl" type="text/xsl"?>
>   <!DOCTYPE document SYSTEM "../../utils/docs.dtd">
>   <document>
>     <title id="Lab156">Boxes</title>
>     <include srcfile="boxes_intro.xml"/>
>     <include srcfile="boxes_items.xml"/>
>   </document>
> 
> xsl:
> 
>   <?xml version="1.0" encoding="UTF-8"?>
>   <xsl:stylesheet version="1.0"
>     xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
>   <xsl:output doctype-system="../../utils/docs.dtd"
>     method="xml" encoding="UTF-8" />
> 
>   <xsl:preserve-space elements="*" />
> 
>   <!-- identity -->
>   <xsl:template match="node()|@*">
>     <xsl:copy>
>       <xsl:apply-templates select="@*|node()" />
>     </xsl:copy>
>   </xsl:template>
> 
>   <!-- translate various code elements into a standard set -->
>   <!-- skipped -->
> 
>   </xsl:stylesheet>
> 
> Output xml:
> 
>   <?xml version="1.0" encoding="UTF-8"?>
>   <!DOCTYPE document SYSTEM "../../utils/docs.dtd">
>   <?xml-stylesheet href="../../utils/doc2html.xsl" type="text/xsl"?>
>   <document>
>     <title id="Lab156">Boxes</title>
>     <include srcfile="boxes_intro.xml"/>
>     <include srcfile="boxes_items.xml"/>
>   </document>
> 
> 
> 
> Cheers
> Trevor Nicholls

Current Thread