Я пытаюсь удалить пустые узлы, но не все из них, например, у меня есть метки:Удалить пустые узлы
1.<abc></abc> - it should be delete
2.<cde/> - it should not be delete.
3.<fgh/> - it SHOULD be delete.
Таким образом, я хотел бы, чтобы удалить пустые узлы в пункте 2 (явное имя «CDE»)
Иными словами: когда тег типа 'cde' и тег равен нулю, тогда удалите. : D
Возможно ли это?
Я нашел код, который удалит все пустые узлы:
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="*[descendant::text() or descendant-or-self::*/@*[string()]]">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="@*[string()]">
<xsl:copy/>
</xsl:template>
</xsl:stylesheet>
EDIT:
XML выглядит следующим образом:
<system/>
<smth></smth>
<smth2>?</smth2>
<smth3>?</smth3>
<smth4></smth4>
<smth4></smth4>
<smth5/>
XML может содержать много тегов, как - SO я удалили их динамически. Некоторые теги, которые выглядят как Я ХОЧУ удалить. Но в этом XML должен остаться.
Так выход XML должно выглядеть:
<system/>
<smth2>?</smth2>
<smth3>?</smth3>
I found the solution: http://xsltransform.net/nc4NzRx/3. :)
Ваши требования кажутся противоречащими. –
Почему? Я просто DONT хочу удалить явный тег. В этом случае имя: CDE. – bazylwro
Но ваши вопросы говорят «2. - его не следует удалять». а затем позже: «Я хотел бы удалить пустые узлы в точке 2 (явное имя« CDE »), поэтому первое цитируемое предложение противоречит второму цитированному. –