我正在学习如何使用XML编程,并且在进行练习时遇到了一些我不知道如何处理的错误。 在此先感谢您的帮助。
filmographie.dtd
<!ELEMENT films (film)+>
<!ELEMENT film (titre, visa, nationalite, pays, genres, exploitation,
realisateur, duree, acteurs, scenario)>
<!ELEMENT titre (#PCDATA)>
<!ELEMENT visa (#PCDATA)>
<!ELEMENT nationalite (#PCDATA)>
<!ELEMENT pays (nom)*>
<!ELEMENT nom (#PCDATA)>
<!ELEMENT genres (genre)+>
<!ELEMENT genre (#PCDATA)>
<!ELEMENT exploitation (date_de_sortie, nombre_entrees, nombre_salles)>
<!ELEMENT date_de_sortie (#PCDATA)>
<!ELEMENT nombre_entrees (#PCDATA)>
<!ELEMENT nombre_salles (#PCDATA)>
<!ELEMENT realisateur (#PCDATA)>
<!ELEMENT duree (heures, minutes)>
<!ELEMENT heures (#PCDATA)>
<!ELEMENT minutes (#PCDATA)>
<!ELEMENT acteurs (acteur+)>
<!ELEMENT acteur (#PCDATA)>
<!ATTLIST heures unite CDATA 'h'>
<!ATTLIST minutes unite CDATA 'mn' >
<!ELEMENT scenario (#PCDATA) >
filmographie.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE filmographie SYSTEM "filmographie.dtd" >
<films>
<film>
<titre>King Kong</titre>
<visa>114089</visa>
<nationalite>Americain</nationalite>
<pays>
<nom>France</nom>
</pays>
<genres>
<genre></genre>
</genres>
<exploitation>
<date_de_sortie>2005_12_14</date_de_sortie>
<nombre_entrees>2838759</nombre_entrees>
<nombre_salles>547</nombre_salles>
</exploitation>
<realisateur>Peter Jackson</realisateur>
<duree>
<heures unite="h">3</heures>
<minutes unite="mn">8</minutes>
</duree>
<acteurs>
<acteur>Peter Jackson</acteur>
<acteur>Naomi Watts</acteur>
</acteurs>
<scenario></scenario>
</film>
<film>
<titre>My Hero Academia</titre>
<visa>568 789</visa>
<nationalite>Japonais</nationalite>
<pays>
<nom>Japon</nom>
</pays>
<genres>
<genre>Animation</genre>
<genre>Action</genre>
<genre>Comedie</genre>
</genres>
<exploitation>
<date_de_sortie>2019_01_22</date_de_sortie>
<nombre_entrees>1 896 754</nombre_entrees>
<nombre_salles>148</nombre_salles>
</exploitation>
<realisateur>Kenji Nagasaki</realisateur>
<duree>
<heures unite="h">1</heures>
<minutes unite="mn">35</minutes>
</duree>
<scenario></scenario>
</film>
<film>
<titre>Le Dernier Maitre de l"air</titre>
<visa>147 589</visa>
<nationalite>Americain</nationalite>
<pays>
<nom>Amerique</nom>
<nom>Japon</nom>
</pays>
<genres>
<genre>Aventure</genre>
<genre>Action</genre>
<genre>Famille</genre>
<genre>Fantastique</genre>
</genres>
<exploitation>
<date_de_sortie>2010_08_28</date_de_sortie>
<nombre_entrees>2 358 698</nombre_entrees>
<nombre_salles>285</nombre_salles>
</exploitation>
<realisateur>Night Shyamalan</realisateur>
<duree>
<heures unite="h">1</heures>
<minutes unite="mn">43</minutes>
</duree>
<acteurs>
<acteur>Noah Ringer</acteur>
<acteur>Nicola Peltz</acteur>
</acteurs>
<scenario></scenario>
</film>
</films>
这是我得到的错误:
文档根元素“电影”必须与DOCTYPE根“ filmographie”匹配。
和
“电影”元素类型的内容必须匹配“(滴定,签证,民族,薪酬,流派,开发,文物,杜蕾,演员,场景)”。
答案 0 :(得分:0)
问题在于,根据DTD,第二个film
元素不包含<acteurs>
元素。
因此,您必须具备各种可能性:
<acteurs>
元素中添加一个带有适当子元素的film
元素。将DTD更改为
<!ELEMENT films (film)+>
<!ELEMENT film (titre, visa, nationalite, pays, genres, exploitation,
realisateur, duree, acteurs?, scenario)>
<!ELEMENT titre (#PCDATA)>
<!ELEMENT visa (#PCDATA)>
<!ELEMENT nationalite (#PCDATA)>
<!ELEMENT pays (nom)*>
<!ELEMENT nom (#PCDATA)>
<!ELEMENT genres (genre)+>
<!ELEMENT genre (#PCDATA)>
<!ELEMENT exploitation (date_de_sortie, nombre_entrees, nombre_salles)>
<!ELEMENT date_de_sortie (#PCDATA)>
<!ELEMENT nombre_entrees (#PCDATA)>
<!ELEMENT nombre_salles (#PCDATA)>
<!ELEMENT realisateur (#PCDATA)>
<!ELEMENT duree (heures, minutes)>
<!ELEMENT heures (#PCDATA)>
<!ELEMENT minutes (#PCDATA)>
<!ELEMENT acteurs (acteur+)>
<!ELEMENT acteur (#PCDATA)>
<!ATTLIST heures unite CDATA 'h'>
<!ATTLIST minutes unite CDATA 'mn' >
<!ELEMENT scenario (#PCDATA) >
此DTD修改了一件事:它确实将可选的运算符?
添加到acteurs
声明中的film
元素中。所以新定义是
<!ELEMENT film (titre, visa, nationalite, pays, genres, exploitation, realisateur, duree, acteurs?, scenario)>
那确实可以解决您的问题,而解决问题的方法实质上是添加一个字符。