- ベストアンサー
XSLでXMLの空タグを制御する方法
- XSLでXMLの空タグを制御する方法について説明します。
- XSLを使用して、値がないXML文書の空タグを制御する方法について詳しく説明します。
- XSLを使って、<exsample />のような形式の空タグを<exsample></exsample>と出力する方法について説明します。
- みんなの回答 (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> $
お礼
回答いただきありがとうございます。こういうやり方もあるんですね。 例もいただいて直観的でした。ありがとうございます!