Хотите добавить объявление Xmlns только корень, и я использую этот XML:XSLT XMLNS на корню только
<Message>
</Message>
и XSLT:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<xsl:element name="Element1" namespace="http://www.blablabla.com">
<xsl:element name="Element2">
<xsl:element name="Element3">Hmm</xsl:element>
</xsl:element>
<xsl:element name="Element4">
</xsl:element>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
Результат является:
<Element1 xmlns="http://www.blablabla.com">
<Element2 xmlns="">
<Element3>Hmm</Element3>
</Element2>
<Element4 xmlns=""/>
</Element1>
Я хочу только Element1 иметь xmlns не Element2, 4 или другие.
Я могу сделать так, но это означает, что писать для каждого элемента имя переменной:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:variable name="vNS"
select="'http://www.blablabla'"/>
<xsl:template match="/">
<xsl:element name="Element1" namespace="{$vNS}">
<xsl:element name="Element2" namespace="{$vNS}">
<xsl:element name="Element3" namespace="{$vNS}">Hmm</xsl:element>
</xsl:element>
<xsl:element name="Element4" namespace="{$vNS}">
</xsl:element>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
Как это сделать? Спасибо.
Спасибо за ответ. Я немного изменил свой код. ' xml version =" 1.0 "encoding =" UTF-8 "?> Хмм XSL: шаблон> ' –
Вы изменили объявление пространства имен в таблице стилей на пространство имен по умолчанию 'xmlns =" http://www.blablabla.com "'. Это означает, что все элементы без префикса пространства имен будут частью этого пространства имен по умолчанию. Это совсем не так, как ваш вопрос о том, как задать только пространство имен для первого элемента. Просто отметить ... –
Еще только первый элемент имеет xmlns. Если я запускаю мой код это то, что я получаю: ' Хм ' –