我的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>
我也做了我的DTD:
<?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)>
任何人都可以帮助我吗?谢谢! : - )
答案 0 :(得分:0)
你有很多问题。我专注于你所看到的那个。
使用
<!ELEMENT auteur (whatever here)>
您要声明一个元素&lt; auteur&gt;。要声明仅包含文本的元素,您需要声明内容#PCDATA:
<!ELEMENT auteur (#PCDATA)>
但是,您的XML不包含&lt; auteur&gt;元件。 auteur是元素&lt; discours&gt;的属性。因此,声明它的正确方法是将其添加到ATTLIST中声明的属性列表中。在那里,由于它是一个属性,正确的类型是CDATA。