RE: [xsl] Including <?xml ...> in the result tree

Subject: RE: [xsl] Including <?xml ...> in the result tree
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Mon, 30 Jan 2006 01:29:39 -0000
In both cases, the relevant construct is not part of the result tree, so
it's created during serialization rather than during transformation. (If you
look at the data model, you'll see that neither the XML declaration nor the
DOCTYPE declaration appear as nodes in the tree).

You generate all of this with attributes of xsl:output: method="xml",
version="1.0", encoding="UTF-8", doctype-system and doctype-public.

The only thing an XML declaration and a processing instruction have in
common is that they both start with "<?".

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

> -----Original Message-----
> From: Sebastian Tennant [mailto:sebyte@xxxxxxxxxxxxxxx] 
> Sent: 30 January 2006 01:15
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] Including <?xml ...> in the result tree
> 
> Hi all,
> 
> I want to output an XHTML doc with the following prologue:
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <!DOCTYPE html 
>      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
>     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
> 
> However an xsl template including the following:
> 
>   <xsl:processing-instruction name="xml">
>     version="1.0" encoding="UTF-8"
>   </xsl:processing-instruction>
>   <![CDATA[
>     <?xml version="1.0" encoding="UTF-8"?>
>     <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
>                  
> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>]]>
> 
> produces the following error in xalan:
> 
>   XSLT Error: A processing instruction name cannot be 'xml'
> 
> and the cdata section is output as &lt;!DOCTYPE... etc.
> 
> How best should this be achieved?
> 
> TIA
> 
> sdt

Current Thread