bugfix> xml > 投稿

私のコードの下に空の値があるXMLノードを削除しようとしています

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsl:template match="node()|@*" >
    <xsl:copy>
         <xsl:apply-templates select="@*[.!='']" />
         <xsl:apply-templates select="node()" />
    </xsl:copy>
</xsl:template>

入力:
<Test><id value=""></id><name value="Test"></name></Test>

出力:
<Test><id /><name value="Test" /></Test>

期待される出力:
<Test><name value="Test" /></Test>

ここで <id\> タグを削除する必要があります。不足している場所を提案してください。 上記の問題を解決するのを手伝ってください。

回答 1 件
  • あなたのスクリプトはそのようなものだけをスキップします空の属性、包含全体ではありません 素子。

    スキップしたい場合要素全体 少なくとも1つの空の属性、 そのような要素に一致する空のテンプレートを使用します。

    <xsl:template match="*[@* = '']"/>
    
    

    そして普通のアイデンティティーテンプレート

    これらの「削除された」要素の場所に残っている空の行を省略するには、 <xsl:strip-space elements="*"/> を追加できます  あなたのスクリプトに。

あなたの答え