2017-07-27 14 views
0

xsi:nil=“true”を理解できない統合ブローカーを通過するメッセージを取得するには、次の変換を行う必要があります。私は<abc></abc>のようなものを持っている文字列は<abc xsi:nil=“true”/>と同じではないが、私はオプションがないことを知っている。xsi:nil = "true"をオープンタグとクローズタグに置き換えます。

私の入力XML:

<PART> 
<LENGTH_UOM xsi:nil="1"/> 
      <WIDTH xsi:nil="1"/> 
</PART> 

期待される成果:

<PART> 
    <LENGTH_UOM><LENGTH_UOM> 
    <WIDTH></WIDTH> 
</PART> 

私はあなたの提案をお聞かせください。すべてxsi:nilの属性を削除するには

+0

すべての要素のすべての属性を取り除こうとしていますか? –

答えて

1

xsi:nilに一致する空のテンプレートでアイデンティティテンプレートを兼ね備えています。

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://xsi.com">  
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> 

    <xsl:template match="node()|@*">     <!-- identity template --> 
    <xsl:copy> 
     <xsl:apply-templates select="node()|@*" /> 
    </xsl:copy> 
    </xsl:template> 

    <xsl:template match="@xsi:nil" />    <!-- empty template --> 

</xsl:stylesheet> 

あなただけの値が代わりに次の空のテンプレートを使用trueあるそれらを削除する場合。 マーティンHonnenは(答えのコメントで)と述べている開閉タグトピックI suggest reading this SO questionに関する

<xsl:template match="@xsi:nil[.='1' or .='true']" /> 

:私は空の要素は次のようにマークアップされているかどうか怖い

かXMLで重要なことではなく、通常はXSLTプロセッサで制御できるものではありません。

関連する問題