2016-09-14 20 views
0

xmlファイルの属性を持たない空要素を削除するためのXSLコードを作成しました。空の要素に属性がある場合、その要素を削除したくありません。 例:<ABC xyz="true"/>これは空の要素ですが属性があるため、この要素は削除しません。 MNOの特定の要素についてのみ など:<ABC><MNO def="hello"></ABC>、この要素MNOを削除します。助けてくださいXSL変換 - 特定の要素の空要素を削除する

XSLコードは、以下の共有:私が正しく理解していれば

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions" > 
<xsl:strip-space elements="*"/> 
<xsl:output method="xml" indent="yes" encoding="UTF-8"/> 
    <xsl:template match="node() | @*"> 
    <xsl:copy> 
    <xsl:apply-templates select="node() | @* "/> 
    </xsl:copy> 
</xsl:template> 
    <xsl:template match="*[not(.//@*) and not(normalize-space())]" /> 
    <xsl:template match="*/text()[not(normalize-space())]" /> 
</xsl:stylesheet> 
+0

属性のないすべての空の要素を削除できました。上記のとおり、私は削除したいMNOを取り除くことができません – jsanjayce

+0

あなたの要件を明確にすることはできますか?質問では、あなたは "この要素MNOを削除したくありません。"と言っていますが、あなたのコメントでは削除したいと言います。また、削除したい(または削除したくない)特定の要素、またはそのような要素のリストだけでしょうか?ありがとう! –

+0

ありがとうございます@TimCありがとうございます。私は空であるが、属性を持つ特定の要素MNOだけを削除したいと思います。私はそのような特性を持つ他の要素(MNOを除く)を取り除きたいとは思わない。 – jsanjayce

答えて

1

が、あなたはそれを考慮しているためpriorityが必要とされている

<xsl:template match="MNO[not(normalize-space())]" priority="2" /> 

あなたのXSLTには、この他のテンプレートを追加する必要があります同じ優先順位で同じものにマッチする2つのテンプレートを持つとエラーになります。

+0

ありがとうTimC !!多くの助けを借りて – jsanjayce

関連する問題