• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:XSLで、XMLの空タグを制御したい。)

XSLでXMLの空タグを制御する方法

このQ&Aのポイント
  • XSLでXMLの空タグを制御する方法について説明します。
  • XSLを使用して、値がないXML文書の空タグを制御する方法について詳しく説明します。
  • XSLを使って、<exsample />のような形式の空タグを<exsample></exsample>と出力する方法について説明します。

質問者が選んだベストアンサー

  • ベストアンサー
  • dscripty
  • ベストアンサー率51% (166/325)
回答No.1

output method="xml" だと <element></element> は <element/> と等価だから xslt からは制御はできないよ? そういう出力を強制するオプションを持つ処理系を使うとか。 無理やりやるとしたら xsl:comment かな? 処理系によるけど。。。 ■ 検証用ファイル [q7574909.xml] <?xml version="1.0" encoding="UTF-8"?> <root>   <textnode>text</textnode>   <commentnode><!--comment--></commentnode>   <emptynode /> </root> [q7574909.xsl] <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0"     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" encoding="UTF-8"/> <xsl:template match="/">   <xsl:apply-templates select="node()"/> </xsl:template> <xsl:template match="@*"><xsl:copy/></xsl:template> <xsl:template match="node()">   <xsl:copy>     <xsl:choose>       <xsl:when test="0!=count(node())">         <xsl:apply-templates select="@*|node()"/>       </xsl:when>       <xsl:otherwise><xsl:comment></xsl:comment></xsl:otherwise>     </xsl:choose>   </xsl:copy> </xsl:template> </xsl:stylesheet> ■ 結果(Xalan) C:\xalan-j_2_7_1>java -cp xalan.jar;serializer.jar;xml-apis.jar;xercesImpl.jar org.apache.xalan.xslt.Process -IN q7574909.xml -XSL q7574909.xsl <?xml version="1.0" encoding="UTF-8"?><root>   <textnode>text</textnode>   <commentnode><!--comment--></commentnode>   <emptynode><!----></emptynode> </root> C:\xalan-j_2_7_1> ■ 結果(xsltproc) $ xsltproc q7574909.xsl q7574909.xml <?xml version="1.0" encoding="UTF-8"?> <root>   <textnode>text</textnode>   <commentnode><!--comment--></commentnode>   <emptynode></emptynode> </root> $

jpenpal
質問者

お礼

回答いただきありがとうございます。こういうやり方もあるんですね。 例もいただいて直観的でした。ありがとうございます!