- ベストアンサー
値の空ノードの削除
「1」のXMLを「2」に変換したいのですが、xsltの記載方法をお教えください。 「1」 <?xml version="1.0" encoding="utf-8"?> <root> <aaa_cd id="XXX"> <aaa_name>XXX</car_gd_cd> <bbb_cd /> <bbb_cd>Y1</bbb_cd> <bbb_cd /> <bbb_cd>Y2</bbb_cd> <bbb_cd /> </aaa_cd> </root> ↓ 「2」 <?xml version="1.0" encoding="utf-8"?> <root> <aaa_cd id="XXX"> <aaa_name>XXX</car_gd_cd> <bbb_cd>Y1</bbb_cd> <bbb_cd>Y2</bbb_cd> </aaa_cd> </root>
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
<aaa_name>XXX</car_gd_cd>は<aaa_name>XXX</aaa_name>として <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="xml"/> <xsl:template match="@*|node()"> <xsl:if test=".!=''"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:if> </xsl:template> </xsl:stylesheet>
その他の回答 (1)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
<?xml version="1.0" encoding="SHIFT_JIS" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > <xsl:output method="xml" omit-xml-declaration="no" encoding="UTF-8" indent="yes" version="1.0"/> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> <xsl:template match="bbb_cd[string-length(text())=0]"> </xsl:template> </xsl:stylesheet>
お礼
おぉ~、一発解決! なるほど、ありがとうございました。