代码之家  ›  专栏  ›  技术社区  ›  ladybug

XML和DTD的验证

  •  0
  • ladybug  · 技术社区  · 7 年前

    我的XML和DTD有问题,我无法理解它是什么。 通常,我的xml格式良好:

    <?xml version='1.0' encoding='UTF-8' standalone="no"?>
    <!DOCTYPE corpus SYSTEM "POUR.dtd">
    
    <corpus>
      <position type="pour">
        <discours auteur="Aécio Neves" id="1" date="25/08/2016" lieu="Senado 
      Federal">blablabla</discours>
      </position>
    </corpus>
    

    <?xml version='1.0' encoding='UTF-8'?>
    
    <!ELEMENT corpus (discours)+>
    <!ELEMENT discours (auteur, date, lieu)>
    <!ATTLIST discours id CDATA #REQUIRED>
    <!ELEMENT auteur (#CDATA)>
    <!ELEMENT date (#CDATA)>
    <!ELEMENT lieu (#CDATA)>
    

    我的验证:xmllint POUR。xml—dtdvalid POUR。dtd—noout

    错误:

    POUR.dtd:7: parser error : ContentDecl : Name or '(' expected
    <!ELEMENT auteur (#CDATA)>
                  ^
    POUR.dtd:7: parser error : expected '>'
    <!ELEMENT auteur (#CDATA)>
                  ^
    POUR.dtd:7: parser error : Content error in the external subset
    <!ELEMENT auteur (#CDATA)>
    

    有人能帮我吗?谢谢!:-)

    1 回复  |  直到 7 年前
        1
  •  0
  •   kumesana    7 年前

    你有很多问题。我专注于你看到的那个。

    <!ELEMENT auteur (whatever here)>
    

    您正在声明一个元素<导演>。要声明仅包含文本的元素,需要声明内容#PCDATA:

    <!ELEMENT auteur (#PCDATA)>