2004年11月28日(日)更新 |
■同じ意味でもXMLデータの書き方が違うことがある
さらら: ねぇ。前回、たけちが言っていたXMLデータの正規化ってなに? たけち: うん。前回はXML署名対象要素と署名要素の関係についてざっと見たね。そのときに署名の対象となるXMLデータは、そのまま使うんじゃなくって、XMLデータの正規化をしてから署名をするって言ったね。 さらら: えぇ、それってどういうことなのかしら? |
たけち: さららは、XMLデータは同じ意味でも書き方が違う場合があるってことは知っているよね。 さらら: えっ、あっ。。。そっか。たとえば、空要素に二つの書き方があるようなこと? たけち: そうそう。noteという名前の空要素は次のどちらの書き方でも良いよね。 <note></note> または <note /> さらら: そうだったわね。 たけち: それから、次のようなXMLデータは、みんな同じ意味だよね。 |
(1) | <poet>柿本人麻呂</poet> |
(2) | <poet >柿本人麻呂</poet> |
(3) | <poet > 柿本人麻呂</poet > |
■Canonical XML
さらら: 開始タグや終了タグ内の余分な空白や改行はあっても無くっても同じ意味だということね。でも、こういうことってよくあることなのかしら。 たけち: XMLデータを生成するアプリケーションを使ってなんらかのメッセージや、注文データを作るとするよね。そうしたとき、アプリケーションによっては、XMLデータの記述方法が異なる場合があるかもしれないね。 さらら: でも、意味が変わっているわけではないのよね。 たけち: そうだね。だから、XML署名の場合には、XMLデータを一定の決まった書き方に変更するんだ。これをXMLデータの正規化と呼んでいるんだよ。 たけち: XMLデータの正規化については、2001年3月にW3Cの勧告になった「Canonical XML Version 1.0」というのがあるんだよ。 さらら: Canonical XMLって、「正規のXML」っていう意味なのね。 |
■XMLデータの正規化の主な事がら
たけち: Canonical XMLでは、XMLデータをどのようにして正規化するのかを次に載せておくね。 さらら: はい。
さらら: そっか。。。文字コードが違っても、意味は変わらないはずだわね。ところで、「空白を正規化する」ってなにをするの? たけち: あっ、空白を正規化って、次のようなことをするんだよ。
さらら: そうなの。 たけち: ここで、簡単な正規化の例を載せておくね。 |
XMLデータ | |
---|---|
正規化前 |
<?xml version="1.0"?> <manyo > <poem poet="額田王" no="0018" > 三輪山をしかも隠すか雲だにも心あらなも隠さふべしや </poem> <note /> </manyo> |
正規化後 |
<manyo> <poem no="0018" poet="額田王"> 三輪山をしかも隠すか雲だにも心あらなも隠さふべしや </poem> <note></note> </manyo> |
さらら: だいたいの雰囲気はわかったわ。 たけち: 「XMLデータの正規化」についてはこれくらいにして、次回からはXML署名の要素についてみていこうかな。 さらら: そうね。よろしくおねがいします。 →続きます。 (^ ^; |
■(注) いくつかの正規化の例がCanonical XMLに載っていますのでご参照ください。 |