RE: [xsl] order in the xml prolog

Subject: RE: [xsl] order in the xml prolog
From: "Trevor Nicholls" <trevor@xxxxxxxxxxxxxxxxxx>
Date: Wed, 21 Nov 2007 04:39:48 +1300
Thank you for confirming this.

Obviously the <?xml-stylesheet> PI is included in the file so that users can
display the documents ad hoc in a browser - and unfortunately one particular
browser refused to display the styled content if the PI did not precede the
DTD. I'm pleased to be able to say that it is the browser's problem...

Cheers
Trevor

-----Original Message-----
From: Michael Kay [mailto:mike@xxxxxxxxxxxx] 
Sent: Wednesday, 21 November 2007 4:16 a.m.
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: RE: [xsl] order in the xml prolog

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