

値がない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で質問しましょう!
似たような質問が見つかりました
- HTML・CSS 疑似要素で背景画像に指定したSVG画像の色変更 2 2023/01/30 22:45
- XML XML同じ名前の要素を自動で集約するツール 1 2022/04/11 09:21
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- アプリ Android studio 初心者 Hello Android!しか表示されない 1 2023/08/01 08:47
- WordPress(ワードプレス) ワードプレスにて .xmlファイルの使い方をご存知の方、よろしくお願いいたします。 2 2022/09/30 00:55
- その他(IT・Webサービス) 見たことのない形式で日付が表示されているのでそれを解析してほしい 3 2023/01/23 16:53
- XML iPhoneでXMLファイルを開くにはどうしたら良いのでしょうか? 1 2022/09/05 18:00
- Visual Basic(VBA) vbaの構文の修正相談(xmlファイルを順に開いてコピペ作業) 1 2023/04/22 01:18
- アプリ おすすめのパスワード管理アプリを教えてください。(iOSとWindows対応) 4 2023/01/19 02:08
- XML Windowsで見かけるxmlファイルってどういうものですか? 1 2022/06/03 14:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
空かスペースを認識させること...
-
タグの有無の判定
-
CPUの考え方を教えてください ...
-
東芝のDynabookなのですがアン...
-
ルート要素ノードが2個ある場合?
-
XMLデータを整形して、ブラウザ...
-
C言語:文字列の並び替え
-
Excel-VBAでXMLの複数ノードの...
-
concat関数内でのシングルクォ...
-
XML、XSLTの適応エラー(IEから...
-
バッチファイルでテキストファ...
-
XMLファイル内のデータ(値)を変...
-
XML同じ名前の要素を自動で集約...
-
TreeViewの再表示のちらつきを...
-
双方向リストの関数
-
C#でTreeViewのCheckBoxのサイ...
-
C#で使用中のファイルに別のフ...
-
昔Winnyってありましたけど、あ...
-
あせんうぶり言語
-
XMLとRDFの違い
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
タグの有無の判定
-
XSLで、XMLの空タグを制御したい。
-
XMLをXSLを使いHTMLに変換した...
-
XMLとXSLTでリンクを張る方法
-
XSL中の改行、タブを無効にした...
-
ノードの並び替え
-
xmlのテキストにリンクを張りた...
-
XSLTのtemplateタグで複数の名...
-
XSLでノードの順番取得
-
xslでの最小値、最大値の取得
-
XSLTにてタグ名を取得する方法
-
重複するものを消したい
-
xmlから吐き出したhtmlデータの...
-
XSLTで固定長データファイルを...
-
<xsl:apply-templates />単独
-
簡単なことだと思うんですが・・・
-
XSLTがブラウザで表示されません。
-
スタイルシートを使用したXM...
-
XSL内でJavaScriptを記述し、Ja...
-
XML,XSL,JavaScriptの連携
おすすめ情報