#?SuikaWikiConfig/2.0

ModuleSet:
  @Name: Markup Language for IETF RFCs
  @Version: (RFC 2629)
  @Description:
    This is a XML based markup language for IETF RFC documents.
  @ID: rfc2629
  @BaseURI:
    http://suika.fam.cx/gate/cvs/*checkout*/markup/rfc/dtd/2629/
  
  @Namespace:
    @@Name:
      urn:x-suika-fam-cx:markup:ietf:rfc:2629:
    @@DefaultPrefix: rfc
    @@UsePrefix: -1
  
  @Copyright: Wakaba <w@suika.fam.cx>
  @RCSDate: $Date: 2004/01/13 11:13:48 $

Datatype:
  @Type:
    @@Name: NUMBER
    @@XMLType: CDATA
    # NMTOKEN
    @@Description: [0-9]+
  @Type:
    @@Name: NUMBERS
    @@XMLType: CDATA
    @@Description: [NUMBER *("," NUMBER)]
  
  @Type:
    @@Name: DAY
    @@XMLType: CDATA
    # NMTOKEN
    @@Description: "1" / "2" / ... / "31"
  @Type:
    @@Name: MONTH
    @@XMLType: CDATA
    #  (January|February|March|April|May|June|July
    #  |August|September|October|November|December)
    @@Description: 'January' / 'February' / ... / 'December'
  @Type:
    @@Name: YEAR
    @@XMLType: CDATA
    # NMTOKEN
    @@Description: 4DIGIT
  
  @Type:
    @@Name:
      :URI
    @@XMLType: CDATA
    @@Description: URI Reference
  
  @Type:
    @@Name: ATEXT
    @@XMLType: CDATA
    @@Description: [U+0020-U+007E]+ (attribute value)
  @Type:
    @@Name: CTEXT
    @@XMLType: #PCDATA
    @@Description: [U+0020-U+007E]+ (content of element)
  @Type:
    @@Name: TEXT
    @@XMLType: #PCDATA
    @@Description: *CHAR (content of mixed context element)
  
  @Type:
    @@Name: country
    @@XMLType: #PCDATA
    @@Description: should be a two-letter code from ISO 3166
  
  @Type:
    @@Name: list-style
    @@XMLType: CDATA
    # (numbers|symbols|hanging|empty)
  
  @Type:
    @@Name: series-name
    @@XMLType: CDATA
    @@Description: 'RFC' / ...
  
  @Type:
    @@Name: truefalse
    @@XMLType: (true|false)

Attribute:
  @Attribute:
    @@Name: anchor
    
    @@Attribute:
      @@@Name: "anchor"
      @@@Type: "ID"
      @@@Description: Cross-referencing with the xref element
  
  @Attribute:
    @@Name: abbrev
    
    @@Attribute:
      @@@Name: "abbrev"
      @@@Type: ATEXT
  
  @Attribute:
    @@Name: section-title
    
    @@Attribute:
      @@@Name: "title"
      @@@Type: ATEXT
      @@@Default: #REQUIRED
  
  @Attribute:
    @@Name: target-uri
    
    @@Attribute:
      @@@Name: "target"
      @@@Type:
       :URI

Module:
  @Name: Block Structual
  @ID: blkstruct
  
  @Element:
    @@Name: section
    @@Content:
      ($:Block.mix)*
    
    @@Attribute:
      @@@ref: anchor
      @@@ref: section-title
    @@Description:
      A section of the document
  
  @Element:
    @@Name: t
    @@Content:
      (
        $TEXT.datatype
      | $list
      | $:Inline.mix
      | vspace
        $blockcontent
        $t-figure
      )*
    
    @@Attribute:
      @@@Attribute:
        @@@@Name: "hangText"
        @@@@Type: ATEXT
  
  @Element:
    @@Name: vspace
    @@Content: "EMPTY"
    
    @@Attribute:
      @@@Attribute:
        @@@@Name: "blankLines"
        @@@@Type: NUMBER
        @@@@Default: "0"
        @@@@Description:
          A physical linebreak is specified by "0".
  
  @Element:
    @@Name: abstract
    @@Content: (t)+
  
  @Element:
    @@Name: note
    @@Content: (t)+
    
    @@Attribute:
      @@@Attribute:
        @@@@Name: "title"
        @@@@Type: ATEXT
        @@@@Default: #REQUIRED
    @@Description:
      In general, the note element contains text from the IESG
  
  @Element:
    @@Name: list
    @@Content: (t)+
    
    @@Attribute:
      @@@Attribute: 
        @@@@Name: "style"
        @@@@Type: list-style
#        @@@@Default: "empty"
        @@@@Description:
          Default value is inherited from parent list, if any, or "empty".
          (DTD shown in RFC 2629 is incorrect.)

Module:
  @Name: Figures
  @ID: figure
  
  @Description:
    This module provides markup to support figure embedding.
  
  @Element:
    @@Name: figure
    @@Content: 
      (
        preamble?,
        artwork,
        postamble?
      )
    @@Attribute:
      @@@ref: anchor
      @@@Attribute:
        @@@@Name: "title"
        @@@@Type: ATEXT
        @@@@Default: ""
  
  @Element:
    @@Name: preamble
    @@Content:
      (
        $TEXT.datatype
      | $:Inline.mix
        $blockcontent
      )*
  
  @Element:
    @@Name: postamble
    @@Content:
      (
        $TEXT.datatype
      | $:Inline.mix
        $blockcontent
      )*
  
  @Element:
    @@Name: artwork
    @@Content: ($TEXT.datatype)*
    @@Attribute:
      @@@Attribute:
        @@@@Name:
          "xml:space"
        @@@@Type: "(default|preserve)"
        @@@@Default: "preserve"
    @@Description: Contains "ASCII artwork"

Module:
  @Name: Metainformational
  @ID: metainfo
  
  @Description:
    This module provides markup to describe information about document or person.
  
  @Element:
    @@Name: title
    @@Content: $metaterm.content
    @@Attribute:
      @@@ref: abbrev
    @@Description:
      The title of the document
      \
      abbrev should also be provided if the title is more than 42 characters
  
  @Element:
    @@Name: author
    @@Content:
      (
        organization,
        address?
      )
    @@Attribute:
      @@@Attribute:
        @@@@Name: "initials"
        @@@@Type: ATEXT
      @@@Attribute:
        @@@@Name: "surname"
        @@@@Type: ATEXT
      @@@Attribute:
        @@@@Name: "fullname"
        @@@@Type: ATEXT
    @@Description:
      A document author
      \
      Attributes initials, surname and fullname must be present 
      if the author is a person
  
  @Element:
    @@Name: organization
    @@Content: $metaterm.content
    @@Attribute:
      @@@ref: abbrev
  
  @Element:
    @@Name: address
    @@Content:
      (
        postal?,
        phone?,
        facsimile?,
        email?,
        uri?
      )
  
  @Element:
    @@Name: postal
    @@Content:
      (
        street+,
       (
         city
       | region
       | code
       | country
       )*
      )
    @@Description:
      At most one of each the city, region, code, and country
      elements may be present
  
  @Element:
    @@Name: street
    @@Content: $metaterm.content
  @Element:
    @@Name: city
    @@Content: $metaterm.content
  @Element:
    @@Name: region
    @@Content: $metaterm.content
    @@Description: State or province
  @Element:
    @@Name: code
    @@Content: $metaterm.content
    @@Description: Zipcode or postal code
  @Element:
    @@Name: country
    @@Content: ($country.datatype)
    @@Description:
      The value should be a two-letter code from ISO 3166
  
  @Element:
    @@Name: phone
    @@Content: $metaterm.content
  @Element:
    @@Name: facsimile
    @@Content: $metaterm.content
  @Element:
    @@Name: email
    @@Content: $metaterm.content
  @Element:
    @@Name: uri
    @@Content: $metaterm.content
  
  @Element:
    @@Name: date
    @@Content: "EMPTY"
    @@Attribute:
      @@@Attribute:
        @@@@Name: "day"
        @@@@Type: DAY
      @@@Attribute:
        @@@@Name: "month"
        @@@@Type: MONTH
        @@@@Default: #REQUIRED
      @@@Attribute:
        @@@@Name: "year"
        @@@@Type: YEAR
        @@@@Default: #REQUIRED
    @@Description:
      The publication date of the document
  
  @Element:
    @@Name: area
    @@Content: $metaterm.content
    @@Description:
      A general category for the document (e.g., one of "Applications",
      "General", "Internet", "Management", "Operations", "Routing",
      "Security", "Transport", or "User")
  @Element:
    @@Name: workgroup
    @@Content: $metaterm.content
    @@Description:
      The IETF working groups that produced the document
  
  @Element:
    @@Name: keyword
    @@Content: $metaterm.content
    @@Description: Useful search terms
  
  @Element:
    @@Name: seriesInfo
    @@Content: "EMPTY"
    @@Attribute:
      @@@Attribute:
        @@@@Name: "name"
        @@@@Type: series-name
        @@@@Default: #REQUIRED
        @@@@Description: The document series
      @@@Attribute:
        @@@@Name: "value"
        @@@@Type: ATEXT
        @@@@Default: #REQUIRED
        @@@@Description: Series entry
  
Module:
  @Name: Reference
  @ID: reference
  
  @Description:
    This module provides markup to support referring or hyperlinking.
  
  @Element:
    @@Name: references
    @@Content: (reference+)
    @@Description:
      The document's bibliography
  
  @Element:
    @@Name: reference
    @@Content: 
      (
        front,
        seriesInfo*
      )
    @@Attribute:
      @@@ref: anchor
      @@@ref: target-uri
  
  @Element:
    @@Name: xref
    @@Content: ($CTEXT.datatype)*
    @@Attribute:
      @@@Attribute:
        @@@@Name: "target"
        @@@@Type: "IDREF"
        @@@@Default: #REQUIRED
      @@@Attribute:
        @@@@Name: "pageno"
        @@@@Type: truefalse
        @@@@Default: "false"
    @@Description: Cross-reference sections, figures, tables, and references
  @Element:
    @@Name: eref
    @@Content: ($CTEXT.datatype)*
    @@Attribute:
      @@@Attribute:
        @@@@Name: "target"
        @@@@Type:
          :URI
        @@@@Default: #REQUIRED
    @@Description: Reference external documents
  
  @Element:
    @@Name: iref
    @@Content: "EMPTY"
    @@Attribute:
      @@@Attribute:
        @@@@Name: "item"
        @@@@Type: ATEXT
        @@@@Default: #REQUIRED
        @@@@Description: The primary key the information is stored under
      @@@Attribute:
        @@@@Name: "subitem"
        @@@@Type: ATEXT
        @@@@Default: ""
        @@@@Description: The secondary key
    @@Description: Indexing of text

Module:
  @ID: struct
  
  @Element:
    @@Name: rfc
    @@Content:
      (
        front,
        middle,
        back?
      )
    @@Attribute:
      @@@Attribute:
        @@@@Name: "number"
        @@@@Type: NUMBER
      @@@Attribute:
        @@@@Name: "obsoletes"
        @@@@Type: NUMBERS
        @@@@Default: ""
      @@@Attribute:
        @@@@Name: "updates"
        @@@@Type: NUMBERS
        @@@@Default: ""
      @@@Attribute:
        @@@@Name: "category"
        @@@@Type: "(std|bcp|info|exp|historic)"
        @@@@Default: "info"
      @@@Attribute:
        @@@@Name: "seriesNo"
        @@@@Type: NUMBER
      @@@Attribute:
        @@@@Name: "ipr"
        @@@@Type: "(full2026|noDerivativeWorks2026|none)"
      @@@Attribute:
        @@@@Name: "docName"
        @@@@Type: ATEXT
        @@@@Description:
          The document (not file) name associated with this Internet-Draft
  
  @Element:
    @@Name: front
    @@Content:
      (
        $front-title,
        author+,
        date,
        area*,
        workgroup*,
        keyword*,
        abstract?,
        note*
      )
  
  @Element:
    @@Name: middle
    @@Content: (section)+
  
  @Element:
    @@Name: back
    @@Content:
      (
        references*,
        section*
      )
