Print

Print


Hello,
 
The IBM XML parser had some problems with the teixlite.dtd.
 
The following shows examples of the lines which made the parser stumble
and compares the lines with the XML recommendation.
 
1) Attribute values are declared without quotation marks (q.m.). Here is
an example:
 
<!ATTLIST bibl
    [...]
      default (YES | NO) NO
    [...]>
 
The last NO is the default declaration of the attribut 'default'.
default declaration hat the notation
DefaultDecl ::= '#REQUIRED' | '#IMPLIED' | (('#FIXED' S)? AttValue)
 
In this case we have an AttValue (attibut value), which has the notation:
AttValue ::= '"' ([^<&"] | Reference)* '"' |  "'" ([^<&'] | Reference)* "'"
 
This says, that every attribut value has to be in single or double q.m.
So the IBM parser seems to be correct, when he complains about missing q.m.
other examples:
<!ATTLIST lg
    [...]
    org (composite | uniform) "uniform"
    sample (initial | medial | final | unknown | complete) "complete"
    [...]>
 
2)  unknown default declarations
 
Example:
 
<!ATTLIST div
    [...]
    type CDATA #CURRENT
    [...]>
 
default declaration can have the value #REQUIRED, #IMPLIED, #FIXED
#CURRENT is not an option.
 
 
3) Use of unsupported attribut types
p.e. NUMBER, NAME
<!ATTLIST table
    [...]
    rows NUMBER #IMPLIED
    cols NUMBER #IMPLIED
    [...]>
 
<!ATTLIST tagUsage
    [...]
    gi NAME #REQUIRED
    [...]>
 
NUMBER,  NAMES  and NAME were allowed attribut types in SGML but are not
supported in XML
 
Here is the text from the xml recommendation:
AttType ::= StringType | TokenizedType | EnumeratedType
StringType ::= 'CDATA'
TokenizedType ::= 'ID' | 'IDREF' | 'IDREFS' | 'ENTITY' | 'ENTITIES' | 'NMTOKEN'
 |
 
                         'NMTOKENS'
EnumeratedType ::= NotationType | Enumeration
 
4) wrong element declaration
 
<!ELEMENT formula CDATA >
has to be something like
<!ELEMENT formula (#PCDATA) >
 
As far as I understand things the parser seems to be right.
 
Hope this helps,
Fotis Jannidis
 
PS: Which XML parser did the editors use to check the teixlite.dtd?