Cuando uso una hoja de estilos XSLT para transformar un archivo XML que contiene XHTML incrustado (usando espacios de nombres) en XHTML puro, me quedan definiciones de espacio de nombres redundantes en los elementos que originalmente eran XHTML. caso de prueba sencilla:¿Cómo puedo evitar estos espacios de nombres redundantes de una hoja de estilos XSLT?
XML:
<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xml" href="fbb.xsl"?>
<foo xmlns="urn:foo:bar:baz" xmlns:html="http://www.w3.org/1999/xhtml">
<bar>
<baz>Some <html:i>example</html:i> text.</baz>
</bar>
</foo>
XSL:
<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="1.0" xmlns="http://www.w3.org/1999/xhtml" xmlns:fbb="urn:foo:bar:baz" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" exclude-result-prefixes="fbb">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/fbb:foo">
<html>
<head>
<title>Example</title>
</head>
<body>
<p>
<xsl:copy-of select="fbb:bar/fbb:baz/node()"/>
</p>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Salida:
<?xml version="1.0"?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Example</title>
</head>
<body>
<p>Some <html:i xmlns="urn:foo:bar:baz" xmlns:html="http://www.w3.org/1999/xhtml">example</html:i> text.</p>
</body>
</html>
¿Es posible evitar que los espacios de nombres redundantes (y prefijo) se agreguen al elemento <i>
? (Como referencia, estoy usando xsltproc
con libxml2-2.7.3
y libxslt-1.1.24
en Cygwin.)
Hmm ... mi copia de xsltproc en realidad da un error de "espacio de nombre indefinido" para las listas separadas por comas. Una lista separada por espacios que incluye "#default" no parece cambiar su comportamiento, e incluir "#all" nuevamente produce "espacio de nombre indefinido". –
libxslt solo es compatible con XSLT 1.0 y #default y #todos son XSLT 2.0. – jelovirt