• ベストアンサー

XSLTの置換(?)

XSLT初心者です。 例えば、 -XML------------- <data>○○○○○<color>●●●●●</color>○○○○○○○○○○○○</data> ---------------- があったとして、それを、 -HTML------------- <p>○○○○○<font color="red">●●●●●</font>○○○○○○○○○○○○</p> ---------------- のようなHTMLへ変換するためのXSLTは どのように記述すればよいのでしょうか? 初歩的な質問なのかも知れないのですが、 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#20377
noname#20377
回答No.1

==============hoge.xml=============== <?xml version="1.0" encoding="Shift_JIS"?> <data>○○○○○<color>●●●●●</color>○○○○○○○○○○○○</data> ==============hogehoge.xsl=============== <?xml version="1.0" encoding="Shift_JIS"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="data"> <p><xsl:apply-templates /></p> </xsl:template> <xsl:template match="color"> <font> <xsl:attribute name="color">red</xsl:attribute> <xsl:value-of select="." /> </font> </xsl:template> </xsl:stylesheet> ========hogerake.xml================= <?xml version="1.0" encoding="UTF-16"?><p>○○○○○<font color="red">●●●●●</font>○○○○○○○○○○○○</p>

その他の回答 (4)

noname#20377
noname#20377
回答No.5

>これだと、全体のDTDってことになると思うのですが、 これを、このタグのみって限定することは えーっと。えーっと。えーっと。言っていることが把握できないな・・・・ ●出来上がったXHTMLの一部分の要素に対し、包含関係の制約をつける じゃなくて ●XHTML文書全体に対し、使える要素をDTD内で宣言されている要素のうちいくつかに制限する ってことだよね・・・・ XHTMLでDOCTYPE宣言を書き換えて良いのか僕は自信が持てない。可能であるにしても(ないならXML文書として扱う)DTD自体を改めて作り直す必要があると思う まぁXHTML 1.1のDTDは読み慣れれば結構簡単なので 変更の方法も楽だと思うけど。IGNOREしまくりw。

w0a15455
質問者

補足

出来上がったXMLの一部の要素内でXHTMLを使いたい。 ということです。 例えば、 <data> <item> <comment>この中は、XHTMLで記述</comment> </item> </data> って感じです。これの、DTDで困っています。 説明ヘタですいません。 よろしくお願いします。

noname#20377
noname#20377
回答No.4

言い忘れてた補足。 日本語はjpじゃなくてja http://www.kanzaki.com/docs/html/lang.html

w0a15455
質問者

お礼

了解です。 jaでしたね。ボンミスです。

noname#20377
noname#20377
回答No.3

>みたいに、宣言するということでしょうか? それでOK >DTD宣言 質問者様は自分で調べてくれそうだからヒントで xsl:outputを調べてみよう!(この要素はxsl:stylesheet直下にしかおけない。) http://www6.airnet.ne.jp/manyo/xml/xslt/step22.html

w0a15455
質問者

お礼

ありがとうございます。 XMLなら、これ <xsl:output method="xml" encoding="UTF-8" doctype-system="sample.dtd" /> HTMLなら、これ <xsl:output method="html" encoding="Shift_JIS" doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" /> を宣言すれば、良いってことだと思うのですが、 これだと、全体のDTDってことになると思うのですが、 これを、このタグのみって限定することは 出来るのでしょうか? 理解が違っているかもしれませんが、よろしくお願いします。

noname#20377
noname#20377
回答No.2

#1です。いうかどうか迷ったけど 補足要求もかねて ●まるごとp要素で置き換えたけどそれでいいのか? ちなみに 本格的にXHTMLとするなら 「名前空間http://www.w3.org/1999/xhtmlの宣言が必要」

w0a15455
質問者

お礼

ありがとうございます。 >ちなみに >本格的にXHTMLとするなら >「名前空間http://www.w3.org/1999/xhtmlの宣言が必>要」 > ここですが、まさにおっしゃるとおりです。実は、<data>タグ内は、XHTMLにしようと思っています。 教えて頂いたことを、参考にすると、 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="jp" lang="jp"> みたいに、宣言するということでしょうか? そうすると、DTD宣言はどうすればいいのか? という疑問も出てきました。 この辺りをご教授いただければありがたいです。 よろしくお願いします。