

値がないXML文書に、
<exsample />
こう書かれてしまうものを、
<exsample></exsample>
このように出力したいのですが、出来ずでした。
以下は、私のやり方です。
■ XSL
<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xalan="http://xml.apache.org/xslt">
<xsl:output method="xml" encoding="Shift_JIS" indent="yes" xalan:indent-amount="4"/>
<xsl:template match="/">
<xsl:copy-of select="."/>
</xsl:template>
</xsl:stylesheet>
■ XML
<?xml version="1.0" encoding="Shift_JIS"?>
<root>
<section>
<category>
<exsample1>value</exsample1>
<exsample />
</category>
</section>
</root>
ご教授、よろしくお願いいたします。
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>
$
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
XSLT変換について
-
xmlのテキストにリンクを張りた...
-
XSLで、XMLの空タグを制御したい。
-
xslでの最小値、最大値の取得
-
XML、XSLTの適応エラー(IEから...
-
CPUの考え方を教えてください ...
-
東芝のDynabookなのですがアン...
-
XMLファイル内のデータ(値)を変...
-
特殊記号が勝手にエスケープさ...
-
複数のマックPCによる数値計算...
-
SNMP リンクダウンとノードダ...
-
ノードとは
-
XSLT
-
vbsのDOMDocumentで要素のText...
-
ツリービューのノードをダブル...
-
C言語の単方向リストについて
-
動的な構造体配列の初期化
-
TreeViewに重複する値をセット
-
質問
-
4バイトを10進数に変換する方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
タグの有無の判定
-
xmlのテキストにリンクを張りた...
-
XSL中の改行、タブを無効にした...
-
XSLでXMLデータをタブ区切りデ...
-
XSL内でJavaScriptを記述し、Ja...
-
XMLとXSLTでリンクを張る方法
-
空かスペースを認識させること...
-
XSLで、XMLの空タグを制御したい。
-
xmlから吐き出したhtmlデータの...
-
xsl:sortを子要素で
-
自動的にリンクを貼る・・・
-
xmlからの表示
-
2stepをくりかえす方法を教えて...
-
XMLからcsvへの変換
-
タグを置き換える
-
XMLのHTMLへの変換 (初心者)
-
スマートなxsltの記述方法
-
XSLスタイルシートについて
-
XSLTで固定長データファイルを...
-
htmlに変換されない
おすすめ情報