При использовании таблицы стилей XSLT для преобразования XML-файла, содержащего встроенный XHTML (с использованием пространств имен), в чистый XHTML, у меня остаются избыточные определения пространств имен для элементов, которые изначально были XHTML. Простой тестовый пример:
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>
Вывод:
<?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>
Можно ли предотвратить добавление избыточных пространств имен (и префикса) к элементу <i>
? (Для справки, я использую xsltproc
с libxml2-2.7.3
и libxslt-1.1.24
на Cygwin.)