С учетом источника XML
<Content>
</Content>
и преобразования:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"
office:version="1.0"
xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0">
<xsl:output indent="yes" encoding="UTF-8"/>
<xsl:template match="Content">
<xsl:element name="office:document">
<xsl:attribute name="office:version">1.2</xsl:attribute>
<xsl:attribute name="office:mimetype">application/vnd.oasis.opendocument.text</xsl:attribute>
<xsl:element name="office:body">
<xsl:element name="office:text">
<xsl:element name="text:p">Hello world.
</xsl:element>
<xsl:element name="text:p">Goodbye world.
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
Результат
<office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
office:version="1.2"
office:mimetype="application/vnd.oasis.opendocument.text">
<office:body>
<office:text>
<text:p xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0">Hello world.
</text:p>
<text:p xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0">Goodbye world.
</text:p>
</office:text>
</office:body>
</office:document>
Пространство имен для элементов абзаца повторяется.Я хочу, чтобы он применялся к корневому элементу, чтобы избежать этого, как это принято в odf-файлах.
Но если я добавлю пространства имен к корневому элементу, XSL будет включать избыточные объявления пространства имен для электронной таблицы и корневого элемента.элементы.Если я затем удалю пространства имен из элемента таблицы стилей, я не смогу добавить буквальные результирующие элементы в эти пространства имен.
Я прочитал в 4-й публикации Кея справочную информацию p473 «Избегание дублирования объявлений пространства имен - это полностью работасериализатор XSLT .. "Но я не могу использовать эту информацию для получения требуемого результата.