【问题标题】:How to fix these XML errors?如何修复这些 XML 错误?
【发布时间】:2019-09-27 07:04:26
【问题描述】:

我正在学习如何使用 XML 进行编程,并且在进行练习时遇到了我不知道如何处理的错误。 提前感谢那些会帮助我的人。

电影.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>       

这是我得到的错误:

文档根元素“films”,必须匹配 DOCTYPE 根“filmographie”。

元素类型“电影”的内容必须匹配“(titre,visa,nationalite,pays,genres,exploitation,realisateur,duree,acteurs,scenario)”。

【问题讨论】:

    标签: xml dtd


    【解决方案1】:

    问题在于,根据 DTD,您的第二个 film 元素不包含 &lt;acteurs&gt; 元素。

    所以你有可能:

    1. 将带有适当子元素的&lt;acteurs&gt; 元素添加到第二个film 元素。
    2. 将您的 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 修改了一件事:它确实将可选运算符 ? 添加到 film 声明中的 acteurs 元素。所以新的定义是

      <!ELEMENT film (titre, visa, nationalite, pays, genres, exploitation, realisateur, duree, acteurs?, scenario)>
      

    这确实解决了您的问题,而解决问题的方法基本上就是添加一个字符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-23
      • 2018-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-01
      • 2021-05-06
      相关资源
      最近更新 更多