У меня есть XML от клиента, где я не могу быть уверен в пространстве имен.Мне нужно заменить значение некоторого атрибута.Вот пример входного XML:
<?xml version="1.0" encoding="UTF-8"?>
<NetworkSection xmlns:ovf="http://com/deployment/1.0">
<Network ovf:name="bridged"/>
</NetworkSection>
Я хочу получить XML следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<NetworkSection xmlns:ovf="http://com/deployment/1.0">
<Network ovf:name="VM network"/>
</NetworkSection>
Вот XSL, который я пытаюсь использовать:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="utf-8"/>
<xsl:template match="NetworkSection/Network/@*[local-name()='name']">
<xsl:attribute name='name'>VM Network</xsl:attribute>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Проблема в том, что я теряю пространство имен атрибута.Я не могу определить пространство имен в моем XSL, поскольку оно может различаться в разных входных XML-файлах, я просто хочу изменить значение атрибута.
Можно ли выполнить такую замену без указания пространства имен в XSL?Заранее спасибо.