- ベストアンサー
DTDで、空要素をエラーしたい
<title></title>のような形のXMLをDTDでエラーにしたいのですが、可能でしょうか? DTDで、 <!ELEMENT title (#PCDATA)> だと、エラーなくスルーしてしまいます。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
関連するQ&A
- DTDの要素型宣言について
今DTDの事を少しだけ勉強したのですが、少し疑問に思うことがありました。 documentを元にします。 DTDはまず<!ELEMENT document ()>と宣言すると習いました。その時、()の中に、…例えばtitle、body…などの要素を出現させる順に書かなくてはいけないのはわかりましたが、以下のように書かれていて分からなくなりました。 <!ELEMENT document (title, body)> <!ELEMENT title (#PCDATA)> <!ELEMENT body (chapter)> <!ELEMENT section (#PCDATA)> …… この場合はじめに宣言していた要素はtitleとbodyだけなのに、sectionも宣言していいのはなんででしょうか? documentで先に宣言しないといけない要素に決まりはあるのですか? よろしくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- DTDの記述
こんにちは。 DTDの記述方法で悩んでいます。 以下のようなXMLをDTDで規定したいのですが、可能でしょうか。 <Elem></Elem> <Elem>ABC</Elem> <Elem> <Child>ABC</Child> <Child>DEF</Child> <Child>GHI</Child> </Elem> つまり、 <!ELEMENT Elem (#PCDATA)> と、 <!ELEMENT Elem (Child*)> を同時に規定したいのです。 <!ELEMENT Elem (#PCDATA|Child*)> だと、エラーになってしまいました。 また、 <!ELEMENT Elem (#PCDATA|Child)*> では、 <Elem> ABC <Child>GHI</Child> </Elem> といった場合も有効になってしまいます。このケースは除外したいのです。 こういった場合の記述はどうしたらいいのでしょうか。 あるいはDTDでの記述は無理なのでしょうか。
- ベストアンサー
- XML
- XMLをDTDで検証しようとしたらエラー、何が悪いのかさっぱり(--#;)
◎Thread.xml <?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE Thread SYSTEM "mybbs.dtd"> <Thread> <Response> <Name>暇人</Name> <Mail>暇人</Mail> <WebSite>http://www.yahoo.co.jp</WebSite> <Content> <h1>テスト</h1> <p>テスト</p> </Content> </Response> <Response> <Name>暇人2003</Name> <Mail>tomoyukibug@yahoo.co.jp</Mail> <WebSite>http://www.yahoo.co.jp</WebSite> <Content> <h1>テスト2</h1> <p>テスト2</p> </Content> </Response> </Thread> ◎mybbs.dtd <!ENTITY % xhtml-math-svg SYSTEM "xhtml-math-svg.dtd"> %xhtml-math-svg; <!ELEMENT Thread (Response)+> <!ELEMENT Content %body.content;> <!ELEMENT Email "( #PCDATA )" > <!ELEMENT WebSite "( #PCDATA )" > <!ELEMENT Name "( #PCDATA )" > <!ELEMENT Response (Name,Email,WebSite,Content)> 率直に聞きます。 自分のプログラム(文字数制限に付き、ソース公開不可、するなら補足で)がエラーが出るんですが、何が間違っているんでしょう? エラー内容:これは無効なコンテンツモデルです
- ベストアンサー
- その他(プログラミング・開発)
- DTDについて
いつもお世話になっております。 以下のインスタンスに対して妥当なXML文書となるDTDはどれかという問題で、(1)は正解で(2)は不正解となっているのですが、自分は(2)がなぜ不正解なのかわかりません。正解じゃないの?と思っています。 お分かりになる方、お知恵を拝借できないでしょうか。よろしくお願いします。 (1)と(2)で違うのはinformationの子要素の出現回数が*か+かの違いです。 (インスタンス) <information><product>PC</product>と<product>モニタ</product>で<price>200000</price>円です。</information> (1) <?xml version="1.0"?> <!DOCTYPE information[ <!ELEMENT information (#PCDATA | product | price)*> <!ELEMENT product (#PCDATA)> <!ELEMENT price (#PCDATA)> ]> (2) <?xml version="1.0"?> <!DOCTYPE information[ <!ELEMENT information (#PCDATA | product | price)+> <!ELEMENT product (#PCDATA)> <!ELEMENT price (#PCDATA)> ]>
- ベストアンサー
- XML
- 外部サブセットについて
以下がxmlファイルです。 --------------------------------------------- <?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE 製品一覧 SYSTEM "s1.dtd"> <製品一覧> <タイトル>製品リスト</タイトル> <製品> <名前>シューズ</名前> <単価>10000</単価> <カテゴリ>靴</カテゴリ> <カテゴリ>カジュアル</カテゴリ> <補足>注文は1 ダース単位</補足> </製品> <製品> <名前>サンダル</名前> <単価>5000</単価> <カテゴリ>靴</カテゴリ> </製品> </製品一覧> --------------------------------------------- 上記のxml文書に文書型宣言を記述して、作成したDTDを外部サブセットとして適用して下さい。とのことです。 私が書いた外部サブセット(s1.dtd) --------------------------------------------- <?xml version="1.0" encoding="Shift_JIS"?> <!ELEMENT 製品一覧 (製品*)> <!ELEMENT 製品 (タイトル,名前,単価,カテゴリ,補足)> <!ELEMENT タイトル (#PCDATA)> <!ELEMENT 名前 (#PCDATA)> <!ELEMENT 単価 (#PCDATA)> <!ELEMENT カテゴリ (#PCDATA)> <!ELEMENT 補足 (#PCDATA)> --------------------------------------------- この外部サブセットではダメでした。 勉強する気は、あるのですが、教科書見てもわからず、先生に聞いても理解出来ず、友達もさっぱりわかってないみたいで... ヒントでも何でもお待ちしております。m(._.)m
- ベストアンサー
- XML
- [DTD]CDATA【要素】
HTML 4 DTDより <!ENTITY % Script "CDATA" -- script expression --> <!ENTITY % StyleSheet "CDATA" -- style sheet data --> <!ELEMENT STYLE - - %StyleSheet -- style info --> <!ELEMENT SCRIPT - - %Script; -- script statements --> だそうです。 さて、実際のHTMLのDTDには登場していませんが, これをベースに俺は勝手に STYLE要素とSCRIPT要素に子としてCDATA【要素】を取るDTDを作ることにしました。 ・・・・どうしたらいいのでしょう? #マーク区間使えよ、って話はおいておきます
- 締切済み
- HTML
- DTD作成について
以下のXMLをDTDに使用としています。 B以降の設定の方法が分かりません。 よろしくお願い致します。 XML - <Aブロック> - <A a番号="01" b="xxxx" c="x"> <B 番号="1" d="xxxx" /> <B 番号="2" d="xxxx" /> <B 番号="3" d="xxxx" /> </A> DTD <!ELEMENT Aブロック (A*)> <!ELEMENT A EMPTY> <!ATTLIST A a CDATA #REQUIRED> <!ATTLIST A b CDATA #REQUIRED> <!ATTLIST A c CDATA #REQUIRED>
- ベストアンサー
- XML
お礼
ありがとうございます。 あきらめます。