- PR -

DTDについて

投稿者投稿内容
wiz
会議室デビュー日: 2001/10/11
投稿数: 6
投稿日時: 2001-10-11 20:06
はじめまして
DTDの役割について漠然としか掴めていないので、もう少し詳しく知りたいと思います。

例えば、ある会社で、独自にDTDを定義し、それをもとに、
会社(システム)独自のXML文書を作成することになったとします。

この際、XMLを文法的にチェックするものとしてDTDがあるのだと思いますが、
その”チェック”は何らかのソフトウェアに独自DTDを流し込み、自動的に
作成したXMLをチェックすることができるのでしょうか、それともXML作成者は
単純に渡されたDTDを元に(見ながら)、XMLを作成していくだけ
(仕様書のようにしか使わない)なのでしょうか。

DTDを必要としない”整形式のXML文書”というもあり、
ちょっとDTDの存在意義ついて混乱してしまっています。

ご教授願います。
ふうた
大ベテラン
会議室デビュー日: 2001/08/23
投稿数: 198
お住まい・勤務地: 岡山
投稿日時: 2001-10-11 21:09
>その”チェック”は何らかのソフトウェアに独自DTDを流し込み、自動的に
>作成したXMLをチェックすることができるのでしょうか

できます。ここでいう何らかのソフトウェアはXMLパーサと呼ばれるものです。
XMLパーサは「妥当性の検証」をする/しない の設定ができます。
hiro
会議室デビュー日: 2001/10/12
投稿数: 13
お住まい・勤務地: 東京
投稿日時: 2001-10-12 11:08
始めまして Mizさん ふうたさん 途中で割り込んでしまって申し訳ありません。
私はXMLの勉強中の初心者です。ちょっと疑問があったので書込みをさせて
いただきます。皆さんよろしくお願いします。

XMLパーサでDTDをチェックするのは分かりました^^

そこで疑問なのですがMSのXMLパーサはXSLの構文が
間違っているとエラーになりますがこれはXSLというタグセットをDTDが
チェックしているのでしょうか?
それともXSLTプロセッサーがチェックしているのでしょうか?

IEはXMLパーサとしてXML技術を提供してますがそのXMLパーサというのは
XSLTプロセッサー+XMLパーサ−と考えてよろしいでしょうか?

凄く疑問になってしまいました。つまらないご質問かも知れませんが
皆さんよろしくお願いします。 
井上孝司
ぬし
会議室デビュー日: 2001/09/08
投稿数: 668
お住まい・勤務地: 東京都
投稿日時: 2001-10-12 11:41
マイクロソフトの XML プロセッサは、MSXML.DLL も MSXML3.DLL も、
XSLT プロセッサの機能を併せ持っています。ただし、MSXML.DLL は
ドラフト版 XSLT、MSXML3.DLL は勧告版 XSLT に対応しているという
違いがあります。
つまり「一人二役」なので、たまたま MSXML の場合は XSLT のエラー
もチェックできるというわけです。すべての XML プロセッサが XSLT
を処理できるというわけではない点に注意してください。
_________________
www.kojii.net
hiro
会議室デビュー日: 2001/10/12
投稿数: 13
お住まい・勤務地: 東京
投稿日時: 2001-10-12 12:21
 inoppeさん どうもありがとうございました。納得しました^^。

つまりXMLプロセッサーは 各XMLプロセッサー事に動きが違うと
考えてよいのでしょうか? つまり アプリケーションを作成するに当たり
例えば WINDOWSで作成するので XMLプロセッサーは マイクロソフト
のにしようとか WINDOWSでもJavaを使用するのでSunのXML
プロセッサーを使うとか ODBC見たいに仕様は凄い似てるけど内部動作は
微妙に違うようになってしまうっという風になってしまうと考えて問題ないでしょうか?

素人ですいません。皆様よろしくお願いします。
wiz
会議室デビュー日: 2001/10/11
投稿数: 6
投稿日時: 2001-10-12 13:17
みなさんご返答ありがとうございます。割り込みになってしまいすいません。

DTDで定義された文法で書かれたXML文書をXMLパーサでチェックできる
ということは理解できました。

そこでMSXMLパーサに関して、ふと疑問に思いました、
マイクロソフトのXMLパーサは、独自DTDに基づいて作成されたXML文書
のチェックが行えるのでしょうか。
確かに、IEで、整形式のXML文書を表示することが出来、また、
その構文が間違っているとエラーになりますが、独自で作成したDTDにのっとって
構文チェックをしたいというときには、どのようにして、XMLパーサにそのDTDを
解釈させるのでしょうか。
MSXML(IE)には外部DTDを読み込むような機能がなさそうなのですが。

ご存知の方の意見をお伺いしたいです。
井上孝司
ぬし
会議室デビュー日: 2001/09/08
投稿数: 668
お住まい・勤務地: 東京都
投稿日時: 2001-10-12 16:00
>hiroさん

どの XML プロセッサも、XML 1.0 の仕様に則って作られているという点では
同一です。ただ、MSXML なら COM ベース、Xerces なら Java ベース、とい
うような違いはあるので、XML プロセッサをアプリケーション側から呼び出す
方法には違いが出てきます。
また、アプリケーションと XML 文書のインターフェイスとして DOM か SAX、
あるいはその両方が使える、というような違いは、XML プロセッサごとにあり
ます。MSXML/MSXML3 の場合、DOM/SAX 両対応です。

こんな説明でよろしかったでしょうか。
_________________
www.kojii.net
ふうた
大ベテラン
会議室デビュー日: 2001/08/23
投稿数: 198
お住まい・勤務地: 岡山
投稿日時: 2001-10-12 16:08
>そこで疑問なのですがMSのXMLパーサはXSLの構文が
>間違っているとエラーになりますがこれはXSLというタグセットをDTDが
>チェックしているのでしょうか?

ここだけ補足。これは、XSLに以下の記述があると思いますがその記述によって
これは、XSLだからXSLのタグとしてチェックをしていると思います。
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

MSXML(←3ではない)のころは、この辺りがまだあまり決まってなくて、違う書き方
になっているようです。
(XSLのタグ自体も違っているところがあると思います。即ち、チェックの仕方が違う。)

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