Re: [xsl] XML Namespaces and <xsl:output> don´t work

Subject: Re: [xsl] XML Namespaces and <xsl:output> don´t work
From: Martin Heiden <martin.heiden@xxxxxxxxxxxxx>
Date: Thu, 16 Oct 2008 00:15:47 +0200
Alejandro,

you can control the doctype and the xml declaration by configuring the
cocoon serializer. Take a look at:

http://cocoon.apache.org/2.1/userdocs/xhtml-serializer.html

if you are using cocoon 2.2 read

http://cocoon.apache.org/2.2/core-modules/core/2.2/1259_1_1.html

as well.

The configuration didn't change from 2.1 to 2.2 but you should do it in
another place.

good luck

  Martin.

Alejandro schrieb:
> Thank you, David
> 
> 
> ***********
> 
> <xsl:text disable-output-escaping="yes"><![CDATA[<!DOCTYPE html PUBL
> 
> don't do that!
> 
> use doctype-system and doctype-public on xsl:output.
> 
> *****
> 
> xsl:output dont4t work.
> 
> <xsl:output method="xml" media-type="text/html;charset=ISO-8859-1"
> indent="yes" encoding="ISO-8859-1" omit-xml-declaration="yes"
> doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
>   
> doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"; />
> 
> 
> <xsl:text disable-output-escaping="yes"><![CDATA[<!DOCTYPE html PUBLIC
> "-//W3C//DTD XHTML 1.0 Transitional//EN"
> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>]]></xsl:text>
> 
> 
> If i remove:
> 
>     <xsl:text disable-output-escaping="yes"><![CDATA[<!DOCTYPE html PUBL
> 
> then DocType declaration not appear and then the browser enter in quirks
> mode
> 
> 
> <html xmlns="http://www.w3.org/1999/xhtml"; lang="es" xml:lang="es">
> <head>
> <title>Biblioteca Insular</title>
> <meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type"/>
> <link href="css/BIB-INS-external.css" type="text/css" rel="stylesheet"/>
> <script xmlns="" type="text/javascript"
> src="js/BINS-funciones.js"></script>
> ....
> 
> 
> 
> 
> 
> 
> in the xmap file (JBOSS)
> 
> ...
> 
> <?xml version="1.0"?>
> 
> <map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0";>
> 
> <!-- =========================== Components
> ================================ -->
> 
> <map:components>
> 
> <map:matchers default="wildcard"/>
> 
> <map:selectors default="browser"/>
> 
> <map:generators default="persistant"/>
> 
> <map:transformers default="eadmin"/>
> 
> <map:readers default="resource"/>
> 
> <map:serializers default="html"/>
> 
> <map:actions default="eadm-action"/>
> 
> </map:components>
> 
> <map:views>
> 
>    <map:view name="ent" from-position="last">
> 
>        <map:serialize type="html"/>
> 
>    </map:view>
> 
>    <map:view from-position="last" name="links">
> 
>        <map:serialize type="links"/>
> 
>    </map:view>
> 
> </map:views>
> 
> <!-- =========================== Pipelines
> ================================= -->
> 
> <map:pipelines>
> 
> <map:pipeline>
> 
> 
> 
> <!-- HOME -->
> 
> <map:match pattern="home.bin">
> 
> <map:aggregate element="listado">
> 
> <map:part element="menus" src="cocoon:/menuXMLNavegacion.bin"/>
> 
> <map:part element="busqueda" src="cocoon://home-principal.bin"/>
> 
> ....
> 
> </map:aggregate>
> 
> <map:transform src="xsl/binsular/home.xsl">
> 
> <map:parameter name="use-request-parameters" value="true"/>
> 
> </map:transform>
> 
> <map:serialize type="html"/>   ****
> 
> </map:match>
> 
> ....
> 
> </map:pipeline>
> 
> </map:pipelines>
> 
> </map:sitemap>
> 
> 
> 
> I i put **** <map:serialize type="xml"/>  then xsl:output work, and
> Doctype is added but the result is xml, don4t html
> 
> what can i do?
> 
> best regards,
> Alex
> 
> 
> ----- Mensaje original ----- De: "David Carlisle" <davidc@xxxxxxxxx>
> Para: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
> Enviado: miircoles, 15 de octubre de 2008 17:36
> Asunto: Re: [xsl] XML Namespaces and <xsl:output> don4t work
> 
> 
>>
>>
>>> <!-- WHY xmlns=""  -->
>>
>> because you have generated an element h1 in no namespace so that has to
>> have  xmlns=" because it is in a different namespace than its parent.
>>
>> What you should do is generate a h1 in the xhtmml namespace
>> http://www.w3.org/1999/xhtml
>> then no xmlns will be added.
>>
>> easiest way to do this is to put
>>
>> xmlns="http://www.w3.org/1999/xhtml";
>>
>> onto all your xsl:stylesheet elements.
>>
>>
>> In the stylesheet don't put the xmlns just on html
>> <html xmlns="http://www.w3.org/1999/xhtml";
>> as that only makes the elements in that template be xhtml, all other
>> elements generated are in no-namespace.
>> move that declaration to the top of the stylesheet (all the stylesheets)
>> so that all elements are in the right namespace.
>>
>>> <xsl:text disable-output-escaping="yes"><![CDATA[<!DOCTYPE html PUBL
>>
>> don't do that!
>>
>> use doctype-system and doctype-public on xsl:output.
>>
>> (almost) never use disable-output-escaping="yes".
>>
>>
>> David
>>
>> ________________________________________________________________________
>> The Numerical Algorithms Group Ltd is a company registered in England
>> and Wales with company number 1249803. The registered office is:
>> Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom.
>>
>> This e-mail has been scanned for all viruses by Star. The service is
>> powered by MessageLabs.
>> ________________________________________________________________________

Current Thread