<!--
    JX-model3-ext.dtd: the extened version of JX-model3.dtd

        Jun 19, 2004 (C) Katsuhisa Maruyama <maru@jtool.org>
-->

<!ELEMENT File          (Package|Import|Class|Intf|op|comment|sp|nl|Ances|FqnMap)*>
<!ELEMENT Package       (QName|kw|op|comment|sp|nl)*>
<!ELEMENT Import        (QName|kw|op|comment|sp|nl)*>
<!ELEMENT Class         (Type|Expr|ImplOpt|ExtdOpt|Members|ident|kw|op|comment|sp|nl)*>
<!ELEMENT Intf          (ExtdOpt|Members|ident|kw|op|comment|sp|nl)*>
<!ELEMENT ImplOpt       (Type|op|comment|sp|nl)*>
<!ELEMENT ExtdOpt       (Type|op|comment|sp|nl)*>
<!ELEMENT ThrwOpt       (Type|op|comment|sp|nl)*>
<!ELEMENT Members       (Class|Intf|Ctor|Method|SInit|Field|op|comment|sp|nl)*>

<!ELEMENT Method        (Type|Param|ThrwOpt|Stmt|ident|kw|op|comment|sp|nl)*>
<!ELEMENT Ctor          (Param|ThrwOpt|Stmt|ident|kw|op|comment|sp|nl)*>
<!ELEMENT SInit         (Stmt|kw|comment|sp|nl)*>
<!ELEMENT Field         (Type|Expr|ident|kw|op|comment|sp|nl)*>
<!ELEMENT Local         (Type|Expr|ident|kw|op|comment|sp|nl)*>
<!ELEMENT Param         (Type|ident|kw|op|comment|sp|nl)*>
<!ELEMENT QName         (ident|op|comment|sp|nl)*>
<!ELEMENT Type          (ident|kw|op|comment|sp|nl)*>
<!ELEMENT Stmt          (Type|Stmt|Local|Class|Intf|Expr|Label|ident|kw|op|comment|sp|nl)*>
<!ELEMENT Expr          (Expr|Type|Class|ident|literal|kw|op|comment|sp|nl)*>
<!ELEMENT Label         (Expr|ident|kw|op|comment|sp|nl)*>

<!ELEMENT ident         (#PCDATA)>
<!ELEMENT literal       (#PCDATA)>
<!ELEMENT kw            (#PCDATA)>
<!ELEMENT op            (#PCDATA)>

<!ELEMENT comment       (#PCDATA)>
<!ELEMENT sp            (#PCDATA)>
<!ELEMENT nl            (#PCDATA)>

<!ELEMENT FqnMap        EMPTY>
<!ELEMENT Ances         EMPTY>

<!ATTLIST File          id              ID              #REQUIRED>
<!ATTLIST File          path            NMTOKEN         #IMPLIED>
<!ATTLIST File          name            NMTOKEN         #IMPLIED>
<!ATTLIST File          sort            NMTOKEN         #IMPLIED>
<!ATTLIST File          newline         NMTOKEN         #IMPLIED>
<!ATTLIST File          classpath       NMTOKEN         #IMPLIED>

<!ATTLIST Package       id              ID              #REQUIRED>
<!ATTLIST Package       qname           NMTOKEN         #IMPLIED>

<!ATTLIST Import        id              ID              #REQUIRED>
<!ATTLIST Import        qname           NMTOKEN         #IMPLIED>

<!ATTLIST Class         id              ID              #REQUIRED>
<!ATTLIST Class         fqn             NMTOKEN         #IMPLIED>
<!ATTLIST Class         access          NMTOKEN         #IMPLIED>
<!ATTLIST Class         final           (yes|no)        #IMPLIED>
<!ATTLIST Class         abstract        (yes|no)        #IMPLIED>
<!ATTLIST Class         static          (yes|no)        #IMPLIED>
<!ATTLIST Class         strictfp        (yes|no)        #IMPLIED>

<!ATTLIST Intf          id              ID              #REQUIRED>
<!ATTLIST Intf          fqn             NMTOKEN         #IMPLIED>
<!ATTLIST Intf          access          NMTOKEN         #IMPLIED>
<!ATTLIST Intf          final           (yes|no)        #IMPLIED>
<!ATTLIST Intf          abstract        (yes|no)        #IMPLIED>
<!ATTLIST Intf          static          (yes|no)        #IMPLIED>
<!ATTLIST Intf          strictfp        (yes|no)        #IMPLIED>

<!ATTLIST ImplOpt       id              ID              #REQUIRED>
<!ATTLIST ImplOpt       typefirst       IDREF           #IMPLIED>
<!ATTLIST ImplOpt       fqn             NMTOKEN         #IMPLIED>

<!ATTLIST ExtdOpt       id              ID              #REQUIRED>
<!ATTLIST ExtdOpt       typefirst       IDREF           #IMPLIED>
<!ATTLIST ExtdOpt       fqn             NMTOKEN         #IMPLIED>

<!ATTLIST ThrwOpt       id              ID              #REQUIRED>
<!ATTLIST ThrwOpt       typefirst       IDREF           #IMPLIED>
<!ATTLIST ThrwOpt       fqn             NMTOKEN         #IMPLIED>

<!ATTLIST Method        id              ID              #REQUIRED>
<!ATTLIST Method        typefirst       IDREF           #IMPLIED>
<!ATTLIST Method        access          NMTOKEN         #IMPLIED>
<!ATTLIST Method        final           (yes|no)        #IMPLIED>
<!ATTLIST Method        abstract        (yes|no)        #IMPLIED>
<!ATTLIST Method        static          (yes|no)        #IMPLIED>
<!ATTLIST Method        synchro         (yes|no)        #IMPLIED>
<!ATTLIST Method        native          (yes|no)        #IMPLIED>
<!ATTLIST Method        strictfp        (yes|no)        #IMPLIED>
<!ATTLIST Method        fqn             NMTOKEN         #IMPLIED>

<!ATTLIST Ctor          id              ID              #REQUIRED>
<!ATTLIST Ctor          access          NMTOKEN         #IMPLIED>
<!ATTLIST Ctor          fqn             NMTOKEN         #IMPLIED>

<!ATTLIST SInit         id              ID              #REQUIRED>

<!ATTLIST Field         id              ID              #REQUIRED>
<!ATTLIST Field         typefirst       IDREF           #IMPLIED>
<!ATTLIST Field         omitted         (yes|no)        #IMPLIED>
<!ATTLIST Field         access          NMTOKEN         #IMPLIED>
<!ATTLIST Field         final           (yes|no)        #IMPLIED>
<!ATTLIST Field         static          (yes|no)        #IMPLIED>
<!ATTLIST Field         volatile        (yes|no)        #IMPLIED>
<!ATTLIST Field         transient       (yes|no)        #IMPLIED>
<!ATTLIST Field         fqn             NMTOKEN         #IMPLIED>

<!ATTLIST Local         id              ID              #REQUIRED>
<!ATTLIST Local         typefirst       IDREF           #IMPLIED>
<!ATTLIST Local         omitted         (yes|no)        #IMPLIED>
<!ATTLIST Local         final           (yes|no)        #IMPLIED>
<!ATTLIST Local         volatile        (yes|no)        #IMPLIED>
<!ATTLIST Local         fqn             NMTOKEN         #IMPLIED>

<!ATTLIST Param         id              ID              #REQUIRED>
<!ATTLIST Param         typefirst       IDREF           #IMPLIED>
<!ATTLIST Param         final           (yes|no)        #IMPLIED>
<!ATTLIST Param         fqn             NMTOKEN         #IMPLIED>

<!ATTLIST QName         id              ID              #REQUIRED>

<!ATTLIST Type          id              ID              #REQUIRED>
<!ATTLIST Type          fqn             NMTOKEN         #IMPLIED>
<!ATTLIST Type          sort            NMTOKEN         #IMPLIED>
<!ATTLIST Type          typenext        IDREF           #IMPLIED>
<!ATTLIST Type          qname           IDREF           #IMPLIED>

<!ATTLIST Stmt          id              ID              #REQUIRED>
<!ATTLIST Stmt          sort            NMTOKEN         #IMPLIED>

<!ATTLIST Label         id              ID              #REQUIRED>

<!ATTLIST Expr          id              ID              #REQUIRED>
<!ATTLIST Expr          sort            NMTOKEN         #IMPLIED>
<!ATTLIST Expr          read            (yes|no)        #IMPLIED>
<!ATTLIST Expr          write           (yes|no)        #IMPLIED>
<!ATTLIST Expr          typefirst       IDREF           #IMPLIED>

<!ATTLIST ident         id              ID              #IMPLIED>
<!ATTLIST ident         defid           IDREF           #IMPLIED>
<!ATTLIST ident         fqn             NMTOKEN         #IMPLIED>
<!ATTLIST ident         ref             NMTOKEN         #IMPLIED>

<!ATTLIST literal       id              ID              #IMPLIED>
<!ATTLIST literal       sort            NMTOKEN         #IMPLIED>

<!ATTLIST comment       id              ID              #IMPLIED>
<!ATTLIST comment       sort            NMTOKEN         #IMPLIED>

<!ATTLIST nl            line            NMTOKEN         #IMPLIED>
<!ATTLIST nl            offset          NMTOKEN         #IMPLIED>

<!ATTLIST FqnMap        fqn             NMTOKEN         #REQUIRED>
<!ATTLIST FqnMap        path            NMTOKEN         #REQUIRED>
<!ATTLIST FqnMap        jar             NMTOKEN         #IMPLIED>

<!ATTLIST Ances         distance        NMTOKEN                 #REQUIRED>
<!ATTLIST Ances         name            NMTOKEN                 #REQUIRED>
<!ATTLIST Ances         sort            (CLASS|INTERFACE)       #IMPLIED>

