Click to See Complete Forum and Search --> : External dtd in xml - ERROR


debonair86
02-18-2010, 10:23 AM
Hi to everybody,
I'm trying for hours to find the error below but i can't.
I have an XML with the following code:

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE actors SYSTEM "actors.dtd">

<ACTORS>
<STAGENAME>George Abbott</STAGENAME>
<WORKSTART>1928</WORKSTART>
<FAMILYNAME>Abbott</FAMILYNAME>
<FIRSTNAME>George</FIRSTNAME>
<GENDER>M</GENDER>
<DATEOFBIRTH>1887</DATEOFBIRTH>
<DATEOFDEATH>1995</DATEOFDEATH>
<ROLETYPE>playwright, producer</ROLETYPE>
<ORIGIN>American</ORIGIN>
<NOTES> </NOTES>

<STAGENAME>Dan Ackroyd</STAGENAME>
<WORKSTART>1979</WORKSTART>
<FAMILYNAME>Ackroyd</FAMILYNAME>
<FIRSTNAME>Dan</FIRSTNAME>
<GENDER>M</GENDER>
<DATEOFBIRTH></DATEOFBIRTH>
<DATEOFDEATH></DATEOFDEATH>
<ROLETYPE>comic</ROLETYPE>
<ORIGIN>American</ORIGIN>
<NOTES> </NOTES>


<STAGENAME>Isabelle Adjani</STAGENAME>
<WORKSTART>1971</WORKSTART>
<FAMILYNAME>Adjani</FAMILYNAME>
<FIRSTNAME>Isabelle </FIRSTNAME>
<GENDER>F</GENDER>
<DATEOFBIRTH>1955</DATEOFBIRTH>
<DATEOFDEATH></DATEOFDEATH>
<ROLETYPE>lead</ROLETYPE>
<ORIGIN>French</ORIGIN>
<NOTES> </NOTES>


<STAGENAME>Ben Affleck</STAGENAME>
<WORKSTART>1997</WORKSTART>
<FAMILYNAME>Affleck</FAMILYNAME>
<FIRSTNAME>Ben</FIRSTNAME>
<GENDER>M</GENDER>
<DATEOFBIRTH></DATEOFBIRTH>
<DATEOFDEATH></DATEOFDEATH>
<ROLETYPE>lead</ROLETYPE>
<ORIGIN>American </ORIGIN>
<NOTES></NOTES>


<STAGENAME>Muhammed Ali</STAGENAME>
<WORKSTART>1977</WORKSTART>
<FAMILYNAME>Clay</FAMILYNAME>
<FIRSTNAME>Cassius</FIRSTNAME>
<GENDER>M</GENDER>
<DATEOFBIRTH>1942</DATEOFBIRTH>
<DATEOFDEATH></DATEOFDEATH>
<ROLETYPE>unknown</ROLETYPE>
<ORIGIN>Black-American</ORIGIN>
<NOTES> ALSO: Boxing champion</NOTES>


<STAGENAME>Woody Allen</STAGENAME>
<WORKSTART>1965</WORKSTART>
<FAMILYNAME>Konigsberg</FAMILYNAME>
<FIRSTNAME>Allen Stewart</FIRSTNAME>
<GENDER>M</GENDER>
<DATEOFBIRTH>1935</DATEOFBIRTH>
<DATEOFDEATH></DATEOFDEATH>
<ROLETYPE>confused innocent</ROLETYPE>
<ORIGIN>American</ORIGIN>
<NOTES></NOTES>



<STAGENAME>Pedro Almodovar</STAGENAME>
<WORKSTART> </WORKSTART>
<FAMILYNAME>Almodovar</FAMILYNAME>
<FIRSTNAME>Pedro</FIRSTNAME>
<GENDER>M</GENDER>
<DATEOFBIRTH> </DATEOFBIRTH>
<DATEOFDEATH> </DATEOFDEATH>
<ROLETYPE>wild</ROLETYPE>
<ORIGIN>Spanish</ORIGIN>
<NOTES>MAINLY: Director</NOTES>


<STAGENAME>Maya Angelou</STAGENAME>
<WORKSTART>1993</WORKSTART>
<FAMILYNAME>Angelou</FAMILYNAME>
<FIRSTNAME>Maya</FIRSTNAME>
<GENDER>F</GENDER>
<DATEOFBIRTH>1929</DATEOFBIRTH>
<DATEOFDEATH> </DATEOFDEATH>
<ROLETYPE>poet</ROLETYPE>
<ORIGIN>American</ORIGIN>
<NOTES> </NOTES>


<STAGENAME>Louis Armstrong</STAGENAME>
<WORKSTART>1936</WORKSTART>
<FAMILYNAME>Armstrong</FAMILYNAME>
<FIRSTNAME>Louis Satchmo</FIRSTNAME>
<GENDER>M</GENDER>
<DATEOFBIRTH>1900</DATEOFBIRTH>
<DATEOFDEATH>1971</DATEOFDEATH>
<ROLETYPE>black jazz musician</ROLETYPE>
<ORIGIN>American</ORIGIN>
<NOTES> </NOTES>


<STAGENAME>Dan Aykroyd</STAGENAME>
<WORKSTART>1980</WORKSTART>
<FAMILYNAME>Aykroyd</FAMILYNAME>
<FIRSTNAME>Dan</FIRSTNAME>
<GENDER>M</GENDER>
<DATEOFBIRTH> </DATEOFBIRTH>
<DATEOFDEATH> </DATEOFDEATH>
<ROLETYPE>comic lead</ROLETYPE>
<ORIGIN>American</ORIGIN>
<NOTES> </NOTES>


<STAGENAME>Drew Barrymore</STAGENAME>
<WORKSTART>1982</WORKSTART>
<FAMILYNAME>Barrymore</FAMILYNAME>
<FIRSTNAME>Drew</FIRSTNAME>
<GENDER>F</GENDER>
<DATEOFBIRTH>1976</DATEOFBIRTH>
<DATEOFDEATH> </DATEOFDEATH>
<ROLETYPE>determined child</ROLETYPE>
<ORIGIN>American</ORIGIN>
<NOTES> </NOTES>


<STAGENAME>Alan Bates</STAGENAME>
<WORKSTART>1959</WORKSTART>
<FAMILYNAME>Bates</FAMILYNAME>
<FIRSTNAME>Alan</FIRSTNAME>
<GENDER>M</GENDER>
<DATEOFBIRTH>1934</DATEOFBIRTH>
<DATEOFDEATH> </DATEOFDEATH>
<ROLETYPE>thoughtful tough</ROLETYPE>
<ORIGIN>British</ORIGIN>
<NOTES> </NOTES>


<STAGENAME>Harry Belafonte</STAGENAME>
<WORKSTART>1053</WORKSTART>
<FAMILYNAME>Belafonte</FAMILYNAME>
<FIRSTNAME>Harry</FIRSTNAME>
<GENDER>M</GENDER>
<DATEOFBIRTH>1927</DATEOFBIRTH>
<DATEOFDEATH> </DATEOFDEATH>
<ROLETYPE>ballad singer</ROLETYPE>
<ORIGIN>American</ORIGIN>
<NOTES> </NOTES>


<STAGENAME>JeanPaul Belmondo</STAGENAME>
<WORKSTART>1958</WORKSTART>
<FAMILYNAME>Belmondo</FAMILYNAME>
<FIRSTNAME>Jean</FIRSTNAME>
<GENDER>M</GENDER>
<DATEOFBIRTH>1933</DATEOFBIRTH>
<DATEOFDEATH> </DATEOFDEATH>
<ROLETYPE>interesting but unhandsome lead</ROLETYPE>
<ORIGIN>French</ORIGIN>
<NOTES> </NOTES>


<STAGENAME>Ingrid Bergman</STAGENAME>
<WORKSTART>1934</WORKSTART>
<FAMILYNAME>Bergman</FAMILYNAME>
<FIRSTNAME>Ingrid</FIRSTNAME>
<GENDER>F</GENDER>
<DATEOFBIRTH>1915</DATEOFBIRTH>
<DATEOFDEATH>1982</DATEOFDEATH>
<ROLETYPE>innocent, strong beauty</ROLETYPE>
<ORIGIN>Swedish</ORIGIN>
<NOTES> </NOTES>



<STAGENAME>Irving Berlin</STAGENAME>
<WORKSTART>1943</WORKSTART>
<FAMILYNAME>Baline</FAMILYNAME>
<FIRSTNAME>Israel</FIRSTNAME>
<GENDER>M</GENDER>
<DATEOFBIRTH>1888</DATEOFBIRTH>
<DATEOFDEATH>1989</DATEOFDEATH>
<ROLETYPE>singer</ROLETYPE>
<ORIGIN>American</ORIGIN>
<NOTES>ALSO: composer</NOTES>

</ACTORS>

and I made a dtd like this:

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE ACTORS [
<!ELEMENT ACTORS (STAGENAME,WORKSTART?,FAMILYNAME,FIRSTNAME,GENDER,DATEOFBIRTH?,DATEOFDEATH?,ROLETYPE,ORIGIN,NOTES)*>

<!ELEMENT STAGENAME (#PCDATA)>
<!ELEMENT WORKSTART (#PCDATA)>
<!ELEMENT FAMILYNAME (#PCDATA)>
<!ELEMENT FIRSTNAME (#PCDATA)>
<!ELEMENT GENDER (#PCDATA)>
<!ELEMENT DATEOFBIRTH (#PCDATA)>
<!ELEMENT DATEOFDEATH (#PCDATA)>
<!ELEMENT ROLETYPE (#PCDATA)>
<!ELEMENT ORIGIN (#PCDATA)>
<!ELEMENT NOTES (#PCDATA)>

<!ATTLIST NOTES MAINLY CDATA #IMPLIED>
<!ATTLIST NOTES ALSO CDATA #IMPLIED>
]>
But something goes wrong and i cant find it, can anybody help me?
Thaks a lot!

sortybook
02-19-2010, 04:57 AM
Obviously u dont need a DOCTYPE declaration into your DTD file.

debonair86
02-19-2010, 05:24 AM
It's ok, yes I correct this. Can I ask you something? Secondly I want the WORKSTART, DATEOFBIRTH and DATEOFDEATH to be implied and the ORIGIN to have the default value French. So I change the dtd like this:
<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE ACTORS [
<!ELEMENT ACTORS (ACTOR)*>
<!ELEMENT ACTOR (STAGENAME,WORKSTART,FAMILYNAME,FIRSTNAME,GENDER,DATEOFBIRTH,DATEOFDEATH,ROLETYPE,ORIGIN,NOTES)>

<!ELEMENT STAGENAME (#PCDATA)>
<!ELEMENT WORKSTART (#PCDATA)>
<!ELEMENT FAMILYNAME (#PCDATA)>
<!ELEMENT FIRSTNAME (#PCDATA)>
<!ELEMENT GENDER (#PCDATA)>
<!ELEMENT DATEOFBIRTH (#PCDATA)>
<!ELEMENT DATEOFDEATH (#PCDATA)>
<!ELEMENT ROLETYPE (#PCDATA)>
<!ELEMENT ORIGIN (#PCDATA)>
<!ELEMENT NOTES (#PCDATA)>

<!ATTLIST ACTOR WORKSTART CDATA #IMPLIED>
<!ATTLIST ACTOR DATEOFBIRTH CDATA #IMPLIED>
<!ATTLIST ACTOR DATEOFDEATH CDATA #IMPLIED>
<!ATTLIST ACTOR ORIGIN CDATA #FIXED "American">
]>
In the validation, seems to be no error BUT when I change the Origin to French, for example, the xml parser allow me and no errors appears. This is false isn't it? It must not allow any changes in the Origin, isn't it true?

debonair86
02-19-2010, 05:26 AM
I made I a mistake I want the origin to have the default value American! Sorry :rolleyes:

sortybook
02-19-2010, 07:36 AM
that depends if u need a FIXED or Default value. Usually default value means that u have a REQUIRED att