XSL - cabecera en xsl para xhtml estricto

 
Vista:

cabecera en xsl para xhtml estricto

Publicado por Rafa (1 intervención) el 10/10/2006 09:57:30
Hola, estoy intentando pasar una web de html 4.0 a xhtml estricto para lo cual cambio en las cabeceras del xsl:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="4.0" encoding="ISO-8859-1" indent="no"/>

por:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" xmlns:xhtml="http://www.w3.org/1999/xhtml" version="1.0">
<xsl:output method="xml" encoding="ISO-8859-1" indent="no" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/>

el problema es que me descuadra toda la estructura de la pagina haciendo cosas como metiendo elementos dentro de los div tal y como:

<div xmlns="http://www.w3.org/1999/xhtml" xmlns:xhtml="http://www.w3.org/1999/xhtml" id="cabecera">

alguna idea?

gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Solución para la migración de HTML 4.0 a XHTML estricto

Publicado por Alejandro (227 intervenciones) el 05/07/2023 22:08:13
El problema que estás experimentando al cambiar las cabeceras del XSL y migrar de HTML 4.0 a XHTML estricto se debe a cómo se maneja el espacio de nombres en XML. Al añadir los atributos `xmlns` en los elementos, estás estableciendo un espacio de nombres predeterminado para esos elementos y sus descendientes. Esto puede provocar que la estructura de la página se desconfigure, ya que los elementos que se encuentren dentro del espacio de nombres se considerarán diferentes a los elementos sin espacio de nombres.

Para solucionar este problema, debes ajustar las plantillas y selectores en tu XSL para tener en cuenta los cambios en el espacio de nombres. Aquí tienes algunas sugerencias:

1. Asegúrate de utilizar los prefijos de espacio de nombres adecuados en tu XSL. Por ejemplo, puedes usar el prefijo "xhtml" para el espacio de nombres "http://www.w3.org/1999/xhtml". Asegúrate de declarar este prefijo en la cabecera del XSL:

1
2
3
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:xhtml="http://www.w3.org/1999/xhtml"
                version="1.0">

2. Al seleccionar elementos en tu XSL, utiliza los prefijos de espacio de nombres correspondientes. Por ejemplo, si deseas seleccionar el elemento `div` dentro del espacio de nombres XHTML, puedes hacerlo de la siguiente manera:

1
2
3
<xsl:template match="xhtml:div">
  <!-- Tu código aquí -->
</xsl:template>

3. Asegúrate de utilizar los prefijos de espacio de nombres al generar elementos en la salida del XSL. Por ejemplo, si deseas generar un elemento `div` dentro del espacio de nombres XHTML, puedes hacerlo de la siguiente manera:

1
2
3
<xsl:element name="xhtml:div">
  <!-- Tu código aquí -->
</xsl:element>

Al ajustar tu XSL de esta manera, deberías poder mantener la estructura de la página y evitar que los elementos se mezclen incorrectamente. Asegúrate de revisar y ajustar todas las plantillas y selectores en tu XSL para que utilicen los prefijos de espacio de nombres adecuados.

Recuerda que estos son solo ejemplos y es posible que necesites realizar ajustes adicionales en tu XSL para adaptarlo a tu estructura y necesidades específicas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar