XML 和 DTD 的验证
Validation of an XML and DTD
我的 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)>
有人可以帮助我吗?谢谢! :-)
你有很多问题。我专注于你看到的那个。
有
<!ELEMENT auteur (whatever here)>
您正在声明一个元素 。声明一个只包含文本的元素,需要声明内容#PCDATA:
<!ELEMENT auteur (#PCDATA)>
但是您的 XML 不包含 元素。 auteur 是元素 的一个属性。因此声明它的正确方法是将它添加到 ATTLIST 中声明的属性列表中。在那里,因为它是一个属性,所以要指示的正确类型是 CDATA。
我的 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)>
有人可以帮助我吗?谢谢! :-)
你有很多问题。我专注于你看到的那个。
有
<!ELEMENT auteur (whatever here)>
您正在声明一个元素
<!ELEMENT auteur (#PCDATA)>
但是您的 XML 不包含