

値がない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ランキング
-
XMLをXSLを使いHTMLに変換した...
-
XSLTで固定長データファイルを...
-
XSLで、XMLの空タグを制御したい。
-
重複するものを消したい
-
XSLTにてタグ名を取得する方法
-
ルート要素ノードが2個ある場合?
-
CPUの考え方を教えてください ...
-
TreeVIewのノード名を編集する...
-
.xml の .html での表示について
-
このエラー、何とかなりません...
-
METAタグのNAME、CONTENT属性の...
-
MSXMLを使ってノードを削除した...
-
XPathで途中に名前空間が設定さ...
-
Visual Basic .NET の識別子は...
-
XMLデータを整形して、ブラウザ...
-
インターネットって、どうやっ...
-
SNMP リンクダウンとノードダ...
-
C#でTreeViewのCheckBoxのサイ...
-
同じタグ名の項目取得
-
HTTPステータス 404 - There is...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
タグの有無の判定
-
xmlのテキストにリンクを張りた...
-
XSLで、XMLの空タグを制御したい。
-
文字列の取得
-
XSLでXMLデータをタブ区切りデ...
-
スタイルシートを使用したXM...
-
htmlに変換されない
-
xml→htmlへの変換&ページ分割...
-
XML → table (XSLで)
-
XMLをXSLを使いHTMLに変換した...
-
XSLTで固定長データファイルを...
-
XSLT変換について
-
XSLスタイルシートを2つ当てる...
-
XSLT
-
XSLTで直下のテキストのみ取得...
-
XSL中の改行、タブを無効にした...
-
XSLTにてタグ名を取得する方法
-
ノードの並び替え
-
javascriptでのxsltの利用に関...
-
xml による表示のしかたについて
おすすめ情報