- ベストアンサー
XMLファイルの属性リスト宣言
- XMLファイルの属性リスト宣言について解説します。
- XMLファイルの属性リスト宣言の例として、製品番号、名前、SKUの属性と要素について説明します。
- また、製品番号はID型、名前は文字データの要素であること、SKUは倉庫と単価の属性を持つことを示します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>#1 はずれ。 http://www.w3.org/TR/xml/#elemdecls 'empty'は認められない。正しくは'EMPTY' >質問文 <!ELEMENT 名前 (#CDATA)*> 同様に、#CDATAではなく#PCDATAが正しく、、 #PCDATA単独の時は*を付けないのが正しい。 http://www.w3.org/TR/xml/#attdecls >The Name in the AttlistDecl rule is the type of an element. >The Name in the AttDef rule is the name of the attribute. ということで、一つの属性リスト宣言中に出てくる要素名の回数は1回。 それに続いて属性名と属性値の型、デフォルト値と続きます。 したがって <!ATTLIST SKU 倉庫 NMTOKENS #REQUIRED 単価 CDATA #REQUIRED > あるいは <!ATTLIST SKU 倉庫 NMTOKENS #REQUIRED> <!ATTLIST SKU 単価 CDATA #REQUIRED> が正しいです。 ここまでを総合すると、 ===============外部DTD(Q5484519-1.dtd)=============== <?xml version="1.0" encoding="UTF-8"?> <!ELEMENT 製品管理 (製品)*> <!ATTLIST 製品 製品番号 ID #REQUIRED> <!ELEMENT 製品 (名前|SKU)*> <!ELEMENT 名前 (#PCDATA)> <!ELEMENT SKU EMPTY> <!ATTLIST SKU 倉庫 NMTOKENS #REQUIRED 単価 CDATA #REQUIRED > ===================XMLそのもの(Q5484519-2.xml)================= <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE 製品管理 SYSTEM "Q5484519-1.dtd"> <製品管理> <製品 製品番号="001"> <名前>シューズ</名前> <SKU 倉庫="ABC" 単価="10000" /> </製品> </製品管理> となります。なお、文字符号化方式とファイル名はこちらの都合で弄っています。 ================ 説明については やさしく読むXML 1.0勧告 http://www.atmarkit.co.jp/fxml/indexes/index_col.html#xe13 や、その序盤で出てくる EBNFの記事で学んでください。 http://www.atmarkit.co.jp/fxml/ddd/ddd004/ddd004-bnf.html ================= ただ…個人的には スキーマを作るメモのつもりでインスタンスを書くならともかく、 スキーマの無いXMLのインスタンスからスキーマを書け、というのは嫌いだ。 ひょっとしたら <!ELEMENT 製品管理 (製品)> かもしれないのを、根拠も無く、複数の製品要素が登場する、と決め付けているから。
その他の回答 (2)
- himajin100000
- ベストアンサー率54% (1660/3060)
あ。良く考えたら問題がおかしい気がする。ちょっと課題出している人に聞いてくれる? >【Values of type ID MUST match the Name production.】 A name MUST NOT appear more than once in an XML document as a value of this type; i.e., ID values MUST uniquely identify the elements which bear them. #IEがエラー吐かなかった
- Tacosan
- ベストアンサー率23% (3656/15482)
とりあえず <!ELEMENT SKU entity> は <!ELEMENT SKU empty> でしょうね.
お礼
回答ありがとうございます。
お礼
回答ありがとうございます。