External referenced DTD in XML

11,028

You have duplicate DOCTYPE declarations. If you want to reference an external DTD:

test.xml

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE email SYSTEM "test.dtd">
<email>
<von>[email protected]</von>
<zu>[email protected]</zu>
<titel>Hello</titel>
<text>Dear John....;-).</text>
<prior type="schnell"/>
</email>

test.dtd

<!ELEMENT email (von,zu,titel,text,prior)>
<!ELEMENT von (#PCDATA)>
<!ELEMENT zu (#PCDATA)>
<!ELEMENT titel (#PCDATA)>
<!ELEMENT text (#PCDATA)>
<!ELEMENT prior EMPTY>
<!ATTLIST prior type CDATA #REQUIRED >

If you want your DTD as part of the XML file (internal subset):

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE email [
<!ELEMENT email (von,zu,titel,text,prior)>
<!ELEMENT von (#PCDATA)>
<!ELEMENT zu (#PCDATA)>
<!ELEMENT titel (#PCDATA)>
<!ELEMENT text (#PCDATA)>
<!ELEMENT prior EMPTY>
<!ATTLIST prior type CDATA #REQUIRED >
]>
<email>
<von>[email protected]</von>
<zu>[email protected]</zu>
<titel>Hello</titel>
<text>Dear John....;-).</text>
<prior type="schnell"/>
</email>

NOTE: You're also missing an ELEMENT declaration for your prior element.

Share:
11,028
user547995
Author by

user547995

Updated on June 26, 2022

Comments

  • user547995
    user547995 almost 2 years

    test.xml:

    <?xml version='1.0' encoding='UTF-8'?>
    <!DOCTYPE email SYSTEM "test.dtd">
    <email>
    <von>[email protected]</von>
    <zu>[email protected]</zu>
    <titel>Hello</titel>
    <text>Dear John....;-).</text>
    <prior type="schnell"/>
    </email>
    

    test.dtd:

    <?xml version='1.0' encoding='UTF-8'?>
    <!DOCTYPE email [
    <!ELEMENT email (von,zu,titel,text,prior)>
    <!ELEMENT von (#PCDATA)>
    <!ELEMENT zu (#PCDATA)>
    <!ELEMENT titel (#PCDATA)>
    <!ELEMENT text (#PCDATA)>
    <!ATTLIST prior type CDATA #REQUIRED >
    ]>
    

    Error Code in test.dtd

    The markup declarations contained or pointed to by the document type declaration must be well-formed. [2]

    Please help!!