- PR -

特定のタグのエスケープを無効にする方法

1
投稿者投稿内容
koko
会議室デビュー日: 2004/04/22
投稿数: 3
投稿日時: 2004-04-22 17:42
はじめまして。kokoと申します。
XMLの構造を変更させてXMLに出力するXSLを作成しようと
しているのですが、一つ解決できないことがあり
みなさまのお知恵をお借りしたく、投稿させていただきます。

質問の内容ですが、
通常XSLでXML中のエスケープされてしまう特定のタグを、
エスケープされない状態で変換したいのですが方法がわかりません。
つまり、通常XSLTで要素の内容を取り出すとき、<や&などは
disable-output-escaping="yes" を使用しない限り
すべてエスケープされてしまいます。それを特定のタグに相当する
ものだけ無効にしたいのです。

例えば次のようなXMLがあるとします。

input.xml
<Document>
<title>問題その1</title>
<para>1の二乗は2より小さい</para>
<equation>1&lt;sup&gt;2&lt;/sup&gt;&lt;2</equation>
</Document>

これを

output.xml
<Document>
<title>問題その1</title>
<para>1の二乗は2より小さい</para>
<equation>1<sup>2</sup>&lt;2</equation>
</Document>

という結果を得たいのです。

後でエディタやユーティリティを通して変換せずに
XSLだけで解決させる方法はないものでしょうか?
何卒ご教示くださいますよう、宜しくお願い申し上げます。
michi
会議室デビュー日: 2004/01/17
投稿数: 6
お住まい・勤務地: Tokyo
投稿日時: 2004-04-23 11:17
初めまして。michiと申します。

XMLにおいて&lt;/sup&gt;&lt;と記述したのであれば、
XSLのxsl:outputでmethod="html"を指定すると、
&lt;/sup&gt;は<sup>と表示されます。
あとは、&lt;をそのまま表示させたいのであれば、
&lt;/sup&gt;&lt;を、&lt;/sup&gt;&amp;lt;と書けば、そのまま表示されます。
1

スキルアップ/キャリアアップ(JOB@IT)