ns0
BizTalk btm がメッセージをマップするたびに、プレフィックスが追加されます。これはまだ有効な xml であるため問題にはなりませんが、レガシーまたは不完全な xml パーサーを使用してパートナーにメッセージを送信する場合に問題になる可能性があります。
btm をビジュアル マップから map に変更ns0
することで、プレフィックスを削除し、代わりに出力メッセージで既定の名前空間を作成できます。ns0
.xslt
たとえば、マップを xslt に変換したら、xslt を次のように変更します。
<?xml version="1.0" encoding="utf-16"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
exclude-result-prefixes="msxsl s0"
version="1.0"
xmlns:ns0="http://targetns"
xmlns:s0="http://sourcens"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<xsl:output omit-xml-declaration="yes" method="xml" version="1.0" />
<xsl:template match="/">
<xsl:apply-templates select="s0:FromRoot" />
</xsl:template>
<xsl:template match="s0:FromRoot">
<ns0:ToRoot>
<xsl:for-each select="s0:FromElement">
<ns0:ToElement>
<xsl:value-of select="text()"/>
</ns0:ToElement>
</xsl:for-each>
</ns0:ToRoot>
</xsl:template>
</xsl:stylesheet>
に:
<?xml version="1.0" encoding="utf-16"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:var="http://schemas.microsoft.com/BizTalk/2003/var"
exclude-result-prefixes="msxsl s0"
version="1.0"
xmlns="http://targetns"
xmlns:s0="http://sourcens"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<xsl:output omit-xml-declaration="yes" method="xml" version="1.0" />
<xsl:template match="/">
<xsl:apply-templates select="s0:FromRoot" />
</xsl:template>
<xsl:template match="s0:FromRoot">
<ToRoot>
<xsl:for-each select="s0:FromElement">
<ToElement>
<xsl:value-of select="text()"/>
</ToElement>
</xsl:for-each>
</ToRoot>
</xsl:template>
</xsl:stylesheet>
つまり、デフォルトの xmlns を変更してから、ns0 プレフィックスを自動的に削除します。
より一般的なソリューションも可能です (たとえば、ここでの Firras の回答に似ています)。これは、要素からすべてのプレフィックスを削除する送信ポート マップとして配置するなどに役立ちます。ただし、出力メッセージに複数の xmlns がある場合は注意が必要です。