[all pages:] introduction message / location / muli format dtd xantlr tdom ops paisley metajava umod option auxiliaries d2d downloads & licenses people bibliography APPENDICES:: white papers white papers 2 white papers 3 project struct proposal cygwin tips SOURCE:option.dtd SOURCE:dtd.umod DOC:deliverables.ddf DOC-DE:deliverables.ddf DOC:mtdocpage.ddf DOC-DE:mtdocpage.ddf SOURCE:basic.dd2 SOURCE:xslt.dd2


go one page back go to start go to start go one page ahead
SOURCE:option.dtd bandm meta_tools DOC:deliverables.ddf

APPENDIX: The umod Model Definiton File for the Structure of our DTD (Document Type Definition) Model



The following text shows the model definition following the umod syntaxof our implementation of the "document type definition" object, as explained in dtd:

MODEL DTD =
DOC
   Model for w3c xml dtds, written in umod, cf. the 
   <a href='{@docRoot}/../usage/dtd.html'>user documentation</a>.
$$

EXT simpleMessage  	=  eu.bandm.tools.message.SimpleMessage
EXT meassageReceiver	=  eu.bandm.tools.message.MessageReceiver

EXT xmlDocumentIdentifier = eu.bandm.tools.message.XMLDocumentIdentifier 
EXT location = eu.bandm.tools.message.Location
                <eu.bandm.tools.message.XMLDocumentIdentifier>

VISITOR 0 Visitor MULTIPHASE ; 
VISITOR 0 SinglePathVisitor ; 
VISITOR 0 Dump IS PRINTER ; 
VISITOR 0 CoRewriter IS COREWRITER ; 
VISITOR 0 Rewriter IS REWRITER ; 

TOPLEVEL CLASS
Dtd
  locations     SEQ OPT location
  documentId    OPT xmlDocumentIdentifier  ! C       1/0 ;
  textDecl	OPT TextDecl		!       V 0/0 ;
  markup	SEQ MarkupDecl		!       V 0/1 ;

  entityUsage   string <-> string 

  FORMAT "'<!-- XML 1.1 DTD '|(documentId?);' -->'"
         "/(textDecl?)/markup[/]"  

<<JAVA
  public static Dtd parse(java.io.Reader in, 
	                  eu.bandm.tools.message.XMLDocumentIdentifier id,
			  java.io.File base,			       
			  boolean lateError,
			  eu.bandm.tools.message.MessageReceiver
			   <? super eu.bandm.tools.message.SimpleMessage
			    <XMLDocumentIdentifier>>  msg){
    final Dtd result = TunedDTDParser.parse(in, id, base, lateError, msg);
    return result ; 
  }
$$


TOPLEVEL CLASS
MarkupDecl
| Attlist
| Comment
| Element
| Entity
| Notation
| PI
| TextDecl

EntityValue
EntityContext
AttDef
AttType
| AttTypeConstant
| AttTypeAbbrev
| Enumerated
//| NotationAtt FIXME MISSING
DefaultDecl
| DefaultDeclConstant
| AttValue
ContentModel
| ContentModelConstant
| Mixed
| CP  ABSTRACT
| | Singleton
| | Seq
| | Choice
| | Abbrev
NmToken


EXTEND CLASS 
MarkupDecl
    location    OPT location            ! C  	99/0 ; 
    locations   SEQ OPT location
| Attlist
    element	string			! C 0/0 99/1 ;
    FORMAT  "'<!ATTLIST 'element/atts[/]'>'"
    atts	SEQ AttDef		!   		V 0/0 ;

| Comment
    text	string			! C 0/0 99/1	;
    FORMAT      "'<!--'$text text'-->'"

| Element
    name	string			! C 0/0 99/1 ;
    content	ContentModel		! C 0/1 99/2	V 0/0 ;

    FORMAT      "('<!ELEMENT' name )|16>(" 
                "(($is Abbrev content)'('content')'"
                "?($is Singleton content)'('content')'"
                "?content))|' >'"

| Entity
    parameter	bool			! C 0/0 99/1;
    name	string			! C 0/1 99/2;
    value	EntityValue		! C 0/2 99/3  V 0/0 ;
    FORMAT "('<!ENTITY'|' '|$switch parameter{true:'%'} 2>name); ;2>value;'>'"

| Notation
    name	string			! C 0/0 99/1 ;
    id		xmlDocumentIdentifier   ! C 0/1 99/2 ;
    FORMAT "'<!NOTATION' name 2>id"

| PI
    target	string			! C 0/0 99/1 ;
    text	string			! C 0/1 99/2 ;
    FORMAT      "('<?'target; ;2>($text text)'?>')?('<?'target'?>')"

| TextDecl
    version	string			! C 0/0 99/1 ;
    encoding	OPT string		! C 0/1 99/2 ;
    FORMAT "'<?xml'; ;2>(('version'| |'='| |'\"'version'\"'); ;"
                        "('encoding'| |'='| |'\"'encoding'\"')?);'?>'"

EntityValue
  id	        OPT xmlDocumentIdentifier ! C 0/0 ;
  definition	string			  ! C 0/1 1/0 2/0 ;
  replacement	OPT string		  ! C 0/2 1/1 ;
  FORMAT "id?$java 'eu.bandm.tools.format.Format.quoteDTDstyle'($text definition)" 
AttDef
  location      OPT location            ! C      99/0 ;
  locations     SEQ OPT location
  name		string			! C 0/0  99/1 ;
  type		AttType			! C 0/1  99/2  V 0/0 ;
  value		DefaultDecl		! C 0/2  99/3  V 0/1 ;
  FORMAT "$tabular{10>name,30>type,50>value}"

  
AttType ABSTRACT ALGEBRAIC
  JAVA public static final AttType CDATA = new AttTypeConstant("CDATA") ; $$
  JAVA public static final AttType ID = new AttTypeConstant("ID") ; $$
  JAVA public static final AttType IDREF = new AttTypeConstant("IDREF") ; $$
  JAVA public static final AttType IDREFS = new AttTypeConstant("IDREFS") ; $$
  JAVA public static final AttType ENTITY = new AttTypeConstant("ENTITY") ; $$
  JAVA public static final AttType ENTITIES = new AttTypeConstant("ENTITIES") ; $$
  JAVA public static final AttType NMTOKEN = new AttTypeConstant("NMTOKEN") ; $$
  JAVA public static final AttType NMTOKENS = new AttTypeConstant("NMTOKENS") ; $$

| AttTypeConstant
    label	string			! C 0/0 ;
    FORMAT "label"

| AttTypeAbbrev
    label	string			! C 0/0 ;
    FORMAT "'&'label';'"

| Enumerated 
    tokens	SEQ string		! C 0/0 ;
    FORMAT      "tokens['('|' | ';')']"

//| NotationAtt
//    names	SEQ string

DefaultDecl
  JAVA 
  public static final DefaultDecl REQUIRED = new DefaultDeclConstant("REQUIRED") ; 
  public static final DefaultDecl IMPLIED = new DefaultDeclConstant("IMPLIED") ; $$

| DefaultDeclConstant
    label	string			! C 0/0 ;
    FORMAT "'#'label"
| AttValue
    fixed	bool			! C 0/0 ;
    value	string			! C 0/1 ;

    FORMAT 
// ALT PRE 20170428;
//  "$switch fixed{true:'#FIXED  '}$java'eu.bandm.tools.format.Format.quoteDTDstyle'(value)"
// ATTENTION neu 20170428: "escapeToJava" is now under "append", not under "block"
 "$switch fixed{true:'#FIXED  '}($java'eu.bandm.tools.format.Format.quoteDTDstyle'(value))"

ContentModel ALGEBRAIC
  JAVA public static final ContentModel EMPTY = new Empty("EMPTY") ; $$
  JAVA public static final ContentModel ANY = new Any("ANY") ; $$

| ContentModelConstant
    label	string			! C 0/0 ;
    FORMAT "label"
| | Empty
    FORMAT "'EMPTY'" // FIXME CHECK
| | Any
    FORMAT "'ANY'"   // FIXME CHECK

| Mixed
    names	SEQ string		! C 0/0 ;
    FORMAT "names['(#PCDATA | '|' | ',' )*'/'(#PCDATA)']" 

| CP // ABSTRACT
    modifier	int = "NONE"		! C 0/0 ;  // DEFAULT JAVA NONE $$
    JAVA public static final int NONE = 0 ; $$
    JAVA public static final int OPTIONAL = 1 ; $$
    JAVA public static final int STAR = 2 ; $$
    JAVA public static final int PLUS = 3 ; $$

    JAVA public static int combine(int modifier1, int modifier2) {
        if(modifier1 == NONE)
          return modifier2 ;
        if(modifier2 == NONE)
          return modifier1 ;
        if(modifier1 == modifier2)
          return modifier1 ;
        return STAR ;
      } $$
    JAVA public CP modify(int modifier) { throw new AbstractMethodError() ; } $$

| | Singleton
      name	string			! C 0/1 1/0 ;
      TOSTRING  JAVA return "s~"+name ; $$
      FORMAT    "name$switch modifier{1:'?',2:'*',3:'+'}" // TEST IT FIXME
      JAVA public CP modify(int modifier) {
          return new Singleton(combine(this.modifier, modifier), name) ;
        } $$

| | Seq
      elems	SEQ CP		! C 0/1 1/0 V 0/0 ;
      JAVA public CP modify(int modifier) {
          return new Seq(combine(this.modifier, modifier), elems) ;
        } $$
      FORMAT "elems['('|', ',')']$switch modifier{1:'?',2:'*',3:'+'}"

| | Choice
      alts	SEQ CP		! C 0/1 1/0 V 0/0 ;
      JAVA public CP modify(int modifier) {
          return new Choice(combine(this.modifier, modifier), alts) ;
        } $$
      FORMAT "alts['('|' | ',')']$switch modifier{1:'?',2:'*',3:'+'}"

| | Abbrev
      name	string			! C 0/1 1/0 ;
      body	CP			! C 0/2 1/1 V 0/0 ;
      FORMAT "('(%'name';)'$switch $mode{1:'[[='body']]'}"
                          "$switch modifier{0:$throw,1:'?',2:'*',3:'+'})"
             "?('%'name';'$switch $mode{1:'[[='body']]'})"

      JAVA public CP modify(int modifier) {
          return new Abbrev(combine(this.modifier, modifier), 
	                    name, body.modify(modifier)) ;
        } $$

NmToken // FIXME REQUIRED !?!?

      text		string			! C 0/0 ;
      FORMAT "text"

END MODEL

//eof



[all pages:] introduction message / location / muli format dtd xantlr tdom ops paisley metajava umod option auxiliaries d2d downloads & licenses people bibliography APPENDICES:: white papers white papers 2 white papers 3 project struct proposal cygwin tips SOURCE:option.dtd SOURCE:dtd.umod DOC:deliverables.ddf DOC-DE:deliverables.ddf DOC:mtdocpage.ddf DOC-DE:mtdocpage.ddf SOURCE:basic.dd2 SOURCE:xslt.dd2


go one page back go to start go to start go one page ahead
SOURCE:option.dtd bandm meta_tools DOC:deliverables.ddf

made    2018-12-30_11h03   by    lepper   on    linux-q699.site        Valid XHTML 1.0 Transitional Valid CSS 2.1

produced with eu.bandm.metatools.d2d    and    XSLT    FYI view page d2d source text