質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

Q&A

1回答

2071閲覧

XMLのDTDのエラーがわからない

kazu020202

総合スコア2

XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

0グッド

1クリップ

投稿2020/06/03 13:53

編集2020/06/03 13:55

私が作成した文書ですがXML文書ですがXML自体は整形式であり妥当性はありますがDTDエラーを吐きます。どうすればよいですか。
エラーは「A string literal was expcted, but no opining quote character was found」と出ています。
妥当性検証をするとエラーがでます。
``

コード <?xml version="1.0" encoding="UTF-8" ?> <!--データ--> <!DOCTYPE All[ <!ELEMENT All (student+)> <!ELEMENT student (name, seibetu, qualification)> <!ATTLIST student school (委校|見校|亜校)CDATA  #REDUIRED> <!ELEMENT name (#PCDATA)> <!ELEMENT seibetu (#PCDATA)> <!ELEMENT qualification (#PCDATA | em)*> ]> <All> <student school="亜校"> <name>一ノ瀬和孝</name> <seibetu>男</seibetu> <qualification>J検</qualification> </student> <student school="県校"> <name>二階堂彩</name> <seibetu>女</seibetu> <qualification>基本情報<em>応用情報</em></qualification> </student> <student school="委校"> <name>三鷹俊太郎</name> <seibetu>男</seibetu> <qualification>基本情報</qualification> </student> <student school="委校">> <name>四谷守</name> <seibetu>男</seibetu> <qualification></qualification> </student> <student school="委校">> <name>五木弘之</name> <seibetu>男</seibetu> <qualification>英検<em>TOEIC</em><em>簿記</em></qualification> </student> </All>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

xmllint で妥当性検証してみました。
原因はいくつかの typo と小さな文法ミスだと思います。
以下では便宜上 XML と DTD とを分けています。

ファイル構成

$ exa index.dtd index.xml

ファイル内容

index.dtd:

dtd

1<!ELEMENT All (student+)> 2 3<!ELEMENT student (name, seibetu, qualification)> 4<!ATTLIST student school (委校|県校|亜校) #REQUIRED> 5 6<!ELEMENT name (#PCDATA)> 7<!ELEMENT seibetu (#PCDATA)> 8<!ELEMENT qualification (#PCDATA|em)*> 9<!ELEMENT em (#PCDATA)>

index.xml:

xml

1<?xml version="1.0" encoding="UTF-8" ?> 2<!DOCTYPE All SYSTEM "index.dtd"> 3<All> 4 <student school="亜校"> 5 <name>一ノ瀬和孝</name> 6 <seibetu></seibetu> 7 <qualification>J検</qualification> 8 </student> 9 <student school="県校"> 10 <name>二階堂彩</name> 11 <seibetu></seibetu> 12 <qualification>基本情報<em>応用情報</em></qualification> 13 </student> 14 <student school="委校"> 15 <name>三鷹俊太郎</name> 16 <seibetu></seibetu> 17 <qualification>基本情報</qualification> 18 </student> 19 <student school="委校"> 20 <name>四谷守</name> 21 <seibetu></seibetu> 22 <qualification></qualification> 23 </student> 24 <student school="委校"> 25 <name>五木弘之</name> 26 <seibetu></seibetu> 27 <qualification>英検<em>TOEIC</em><em>簿記</em></qualification> 28 </student> 29</All>

修正点

XML において

  • 閉じタグの部分で >> と重複していた部分を > に修正

DTD において

  • 全角空白を削除
  • em についての規則を追加
  • student 要素の school 属性で に修正
  • ATTLIST の文法修正(w3schoolsが明快です)

実行

$ xmllint --valid index.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE All SYSTEM "index.dtd"> <All> <student school="亜校"> <name>一ノ瀬和孝</name> <seibetu>男</seibetu> <qualification>J検</qualification> </student> <student school="県校"> <name>二階堂彩</name> <seibetu>女</seibetu> <qualification>基本情報<em>応用情報</em></qualification> </student> <student school="委校"> <name>三鷹俊太郎</name> <seibetu>男</seibetu> <qualification>基本情報</qualification> </student> <student school="委校"> <name>四谷守</name> <seibetu>男</seibetu> <qualification/> </student> <student school="委校"> <name>五木弘之</name> <seibetu>男</seibetu> <qualification>英検<em>TOEIC</em><em>簿記</em></qualification> </student> </All>

投稿2020/07/11 01:48

gemmaro

総合スコア358

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問