ヌルノードを削除する必要がありますが、特定の属性「DELETE」の値としてスペースを持つノードを保持する必要があります。私はXSLに慣れていません...ヌル値は削除できますが、スペースの値は保持できますか?XSL - ヌルタグの削除とスペースの保持
これは、好ましくは、アクション「DELETE」を持つノードのみです。たとえば、アクションが「DELETE」の場合、他のノード名が何であるかに関係なく(変更されるため)、ヌル値の子ノードを削除する必要があります。これが不可能な場合は、XMLファイル全体からヌル値を取り除くために解決します。このコードは以下のとおりです。ただし、スペースは保持されず、属性「DELETE」だけではありません。以下の例。
<?xml version="1.0" encoding="utf-8"?>
<test xmlns:n0="http://mynamespace">
<Value Action="DELETE">
<Example1> </Example1>
<Test2 />
<Example3></Example3>
</Value>
<Value Action="UPDATE">
<space> </space>
<null />
<null2></null2>
</Value>
</test>
期待される結果:
<?xml version="1.0" encoding="utf-8"?>
<test xmlns:n0="http://mynamespace">
<Value Action="DELETE">
<Example1> </Example1>
</Value>
<Value Action="UPDATE">
<space> </space>
<null />
<null2></null2>
</Value>
</test>
がすべてNULL削除:XSL下記参照、
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:strip-space elements="*"/>
<xsl:template match="*">
<xsl:if test=". != '' or ./@* != ''">
<xsl:element name="{local-name()}">
<xsl:apply-templates select="@* | node()" />
</xsl:element>
</xsl:if>
</xsl:template>
<xsl:template match="@*">
<xsl:attribute name="{local-name()}">
<xsl:value-of select="." />
</xsl:attribute>
</xsl:template>
<xsl:template match="text() | comment() | processing-instruction()">
<xsl:copy />
</xsl:template>
</xsl:stylesheet>
私は私の質問を更新しました。ありがとう。 – Toya
質問が編集されました。 – Toya