Calendar
SunMonTueWedThuFriSat
  12345
6789101112
13141516171819
20212223242526
2728293031  
<< August 2017 >>
Recommend
New Entries
Archives
Categories
Recent comment
Recent trackback
Profile
Links
Sponsored Links
Mobile
qrcode
Admin
無料ブログ作成サービス JUGEM
Seach this site
2009.12.11 Friday
スポンサーサイト

一定期間更新がないため広告を表示しています

| スポンサードリンク | - | | - | - | pookmark |
2009.09.03 Thursday
いまさらですが、XMLのお勉強(2)
いや、まったく仕様書ばかりは斜め読みはダメなもんです。
マニュアルなんかもたいがいは斜め読みでことたりるのですが、特にあまり慣れていないものだとしっかり確認しながら読まないとダメってことですね。
というのは、先日ふと思いつきから使おうと思っていたXMLのエンティティの件ですが、いろいろ調べた結果、思うように使えないことがわかりました。

XMLにはエンティティという使い方があります。
DTDというXMLを定義するところで、設定してやると、テキストを置換してくれるのです。
たとえば、

<!DOCTYPE negi [
<!ENTITY ciao "HELLO WORLD!">
]>
<negi>
&ciao;
</negi>

とすると、このciaoのとことを「HELLO WORLD!」に書き換えてくれるのです。

中の人にはなぜこれが「!」ときたかと言うと、ゲームサイトや、製品管理システムなどで、インターフェイスのフォームをエンティティで書いておけば、DTDを外部ファイルとして読み込ませるだけで、その中身を置換できるからです。これまで、PHPでテンプレートを読み込んで文字列置換をしてはき出す、というのをやっていたのが、データはデータだけのファイル、スクリプトはスクリプトだけ、インターフェイスはインターフェイスだけ、とファイルを分けることができる!と思ったのです。

でも、そうはいきませんでした。

先日の「いまさらですが、XMLのお勉強」で書いたインチキHTMLはXMLの書き方として間違っていたのですが、そもそも、HTMLとして使うXML(このことをXHTMLというらしい)には、独自のエンティティ宣言は書き込めそうにありません。

とういうのも、冒頭部のDTD宣言部は同じなのですが、XHTMLの場合、「公開識別子」を使ってDTDを指定していて、この公開識別子を使ったDTDの場合、内部エンティティを別途設定することはできなようなのです。

もっとも、内部エンティティとして書き足す場合は、XML本文に書き足さないといけないので、本来目指していたような使い道もできませんでしたが。

中の人はなんとなくCSSの定義のように、どんどん定義していけば、後から付け足されるくらいにおもっていたのですが、どうもXMLではそういう使い方はできないようです。

とはいうものの、置くが深そうなXMLです。
何かと役立つ技術が埋もれていそうなので、本のほうも斜め読みではなく、きっちり読もうと思います。
ただ図書館の返却期限が近づいていますので、じっくり読んでもいられないのですが。。。



| ねぎうぉっち中の人 | コンテンツ制作 | 00:34 | comments(0) | trackbacks(0) | pookmark |
2009.12.11 Friday
スポンサーサイト
| スポンサードリンク | - | 00:34 | - | - | pookmark |
Comment









Trackback
URL : http://negiwatch.jugem.jp/trackback/38