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

Subject: Re: [xsl] XML Namespaces and <xsl:output> don´t work
From: "Alejandro" <alexcontini@xxxxxxxx>
Date: Wed, 15 Oct 2008 19:57:29 +0100
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