問題があります。XSLTを使用して名前空間要素を追加する方法
要素レスポンスはネームスペースなしでなければなりません(ルート要素が定義されています)。
入力XSLT:
<xsl:stylesheet
xpath-default-namespace="http://www.iata.org/IATA/EDIST"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:h="http://www.iata.org/IATA/EDIST"
version="1.0"
>
<xsl:template match="h:Response[not(h:OrderViewProcessing)]">
<Response xmlns="http://www.iata.org/IATA/EDIST">
<OrderViewProcessing>
<MarketingMessages>
<MarketingMessage>
<Text>
Error text
</Text>
</MarketingMessage>
</MarketingMessages>
</OrderViewProcessing>
<xsl:apply-templates/>
</Response>
</xsl:template>
</xsl:stylesheet>
出力XML:
<Response xmlns:h="http://www.iata.org/IATA/EDIST"
namespace="http://www.iata.org/IATA/EDIST">
<OrderViewProcessing>
<MarketingMessages>
<MarketingMessage>
<Text>
Error Text
</Text>
</MarketingMessage>
</MarketingMessages>
</OrderViewProcessing>
</Response>
私はXMLのような必要があります:あなたはXSLTで= "http://www.iata.org/IATA/EDIST" のxmlnsを削除した場合
<Response>
<OrderViewProcessing>
<MarketingMessages>
<MarketingMessage>
<Text>
Error Text
</Text>
</MarketingMessage>
</MarketingMessages>
</OrderViewProcessing>
</Response>
、その後のxmlns = XMLの ""は空になります。
更新
この方法で解決この問題:おそらく
<xsl:template match="h:Response[not(h:OrderViewProcessing)]">
<xsl:element name="Response" namespace="http://www.iata.org/IATA/EDIST">
<xsl:element name="OrderViewProcessing" namespace="http://www.iata.org/IATA/EDIST">
<xsl:element name="MarketingMessages" namespace="http://www.iata.org/IATA/EDIST">
<xsl:element name="MarketingMessage" namespace="http://www.iata.org/IATA/EDIST">
<xsl:element name="Text" namespace="http://www.iata.org/IATA/EDIST">
Error text
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:element>
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
、解決策は、より良いでなければなりません。
'apim'という接頭辞はあなたのXSLTにはないので、入力XMLから来なければなりません。それぞれの名前空間がどこから来るのか、与えられた要素がどのコンテキストにあるのかを調べるには、入力XMLを見る必要があります。 –