# =============================================================

# HEADER

# =============================================================

# MODULE:    DITA DITA Programming Domain

# VERSION:   1.1

# DATE:      June 2006

#

# =============================================================

# =============================================================

# PUBLIC DOCUMENT TYPE DEFINITION

# TYPICAL INVOCATION

#

# Refer to this file by the following public identifier or an 
#       appropriate system identifier 
# PUBLIC "-//OASIS//ELEMENTS DITA Programming Domain//EN"
#       Delivered as file "programmingDomain.mod"

# =============================================================

# SYSTEM:     Darwin Information Typing Architecture (DITA)

#

# PURPOSE:    Declaring the elements and specialization

# attributes for the Programming Domain

#

# ORIGINAL CREATION DATE:

# March 2001

#

# (C) Copyright OASIS Open 2005, 2006.

# (C) Copyright IBM Corporation 2001, 2004.

# All Rights Reserved.

#

# UPDATES:

# 2005.11.15 RDA: Updated these comments to match template

# 2005.11.15 RDA: Corrected Long Names for syntax groups,

# codeph, and kwd

# 2005.11.15 RDA: Corrected the "Delivered as" system ID

# 2006.06.07 RDA: Make universal attributes universal

# (DITA 1.1 proposal #12)

# =============================================================

# =============================================================

# ELEMENT NAME ENTITIES

# =============================================================

namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"

codeph = codeph.element
delim = delim.element
kwd = kwd.element
oper = oper.element
option = option.element
parmname = parmname.element
sep = sep.element
synph = synph.element
var = var.element
pd = pd.element
plentry = plentry.element
pt = pt.element
fragment = fragment.element
fragref = fragref.element
groupchoice = groupchoice.element
groupcomp = groupcomp.element
groupseq = groupseq.element
repsep = repsep.element
synblk = synblk.element
synnote = synnote.element
synnoteref = synnoteref.element
# =============================================================

# ELEMENT DECLARATIONS

# =============================================================

# LONG NAME: Universal Attributes Local
# Importance

# Povide an alternative set of univ-atts that 
# allows importance to be redefined locally
univ-atts-no-importance =
  id-atts,
  filter-atts,
  attribute rev { text }?,
  attribute status { "new" | "changed" | "deleted" | "unchanged" }?,
  localization-atts
# LONG NAME: Code Phrase
codeph.element =
  element codeph {
    codeph.attlist,
    (text | basic.ph.notm | data.elements.incl | foreign.unknown.incl)*
  }
codeph.attlist &=
  univ-atts,
  attribute outputclass { text }?
# LONG NAME: Code Block
codeblock.element =
  element codeblock {
    codeblock.attlist,
    (text
     | basic.ph.notm
     | txt.incl
     | data.elements.incl
     | foreign.unknown.incl)*
  }
codeblock.attlist &=
  display-atts,
  attribute spectitle { text }?,
  [ a:defaultValue = "preserve" ] attribute xml:space { "preserve" }?,
  univ-atts,
  attribute outputclass { text }?
# LONG NAME: Option
option.element = element option { option.attlist, text }
option.attlist &=
  attribute keyref { text }?,
  univ-atts,
  attribute outputclass { text }?
# LONG NAME: Variable
var.element = element var { var.attlist, words.cnt* }
var.attlist &=
  attribute importance { "optional" | "required" | "default" }?,
  univ-atts-no-importance,
  attribute outputclass { text }?
# LONG NAME: Parameter Name
parmname.element = element parmname { parmname.attlist, text }
parmname.attlist &=
  attribute keyref { text }?,
  univ-atts,
  attribute outputclass { text }?
# LONG NAME: Syntax Phrase
synph.element =
  element synph {
    synph.attlist,
    (text
     | codeph
     | option
     | parmname
     | var
     | kwd
     | oper
     | delim
     | sep
     | synph)*
  }
synph.attlist &=
  univ-atts,
  attribute outputclass { text }?
# LONG NAME: Operator
oper.element = element oper { oper.attlist, words.cnt* }
oper.attlist &=
  attribute importance { "optional" | "required" | "default" }?,
  univ-atts-no-importance,
  attribute outputclass { text }?
# LONG NAME: Delimiter
delim.element = element delim { delim.attlist, words.cnt* }
delim.attlist &=
  attribute importance { "optional" | "required" }?,
  univ-atts-no-importance,
  attribute outputclass { text }?
# LONG NAME: Separator
sep.element = element sep { sep.attlist, words.cnt* }
sep.attlist &=
  attribute importance { "optional" | "required" }?,
  univ-atts-no-importance,
  attribute outputclass { text }?
# LONG NAME: API Name
apiname.element = element apiname { apiname.attlist, text }
apiname.attlist &=
  attribute keyref { text }?,
  univ-atts,
  attribute outputclass { text }?
# LONG NAME: Parameter List
parml.element = element parml { parml.attlist, plentry+ }
parml.attlist &=
  attribute compact { "yes" | "no" }?,
  attribute spectitle { text }?,
  univ-atts,
  attribute outputclass { text }?
# LONG NAME: Parameter List Entry
plentry.element = element plentry { plentry.attlist, pt+, pd+ }
plentry.attlist &=
  univ-atts,
  attribute outputclass { text }?
# LONG NAME: Parameter Term
pt.element = element pt { pt.attlist, term.cnt* }
pt.attlist &=
  attribute keyref { text }?,
  univ-atts,
  attribute outputclass { text }?
# LONG NAME: Parameter Description
pd.element = element pd { pd.attlist, defn.cnt* }
pd.attlist &=
  univ-atts,
  attribute outputclass { text }?
# LONG NAME: Syntax Diagram
syntaxdiagram.element =
  element syntaxdiagram {
    syntaxdiagram.attlist,
    title?,
    (groupseq
     | groupchoice
     | groupcomp
     | fragref
     | fragment
     | synblk
     | synnote
     | synnoteref)*
  }
syntaxdiagram.attlist &=
  display-atts,
  univ-atts,
  attribute outputclass { text }?
# LONG NAME: Syntax Block
synblk.element =
  element synblk {
    synblk.attlist,
    title?,
    (groupseq
     | groupchoice
     | groupcomp
     | fragref
     | fragment
     | synnote
     | synnoteref)*
  }
synblk.attlist &=
  univ-atts,
  attribute outputclass { text }?
# LONG NAME: Sequence Group
groupseq.element =
  element groupseq {
    groupseq.attlist,
    title?,
    repsep?,
    (groupseq
     | groupchoice
     | groupcomp
     | fragref
     | kwd
     | var
     | delim
     | oper
     | sep
     | synnote
     | synnoteref)*
  }
groupseq.attlist &=
  attribute importance { "optional" | "required" | "default" }?,
  univ-atts-no-importance,
  attribute outputclass { text }?
# LONG NAME: Choice Group
groupchoice.element =
  element groupchoice {
    groupchoice.attlist,
    title?,
    repsep?,
    (groupseq
     | groupchoice
     | groupcomp
     | fragref
     | kwd
     | var
     | delim
     | oper
     | sep
     | synnote
     | synnoteref)*
  }
groupchoice.attlist &=
  attribute importance { "optional" | "required" | "default" }?,
  univ-atts-no-importance,
  attribute outputclass { text }?
# LONG NAME: Composite group
groupcomp.element =
  element groupcomp {
    groupcomp.attlist,
    title?,
    repsep?,
    (groupseq
     | groupchoice
     | groupcomp
     | fragref
     | kwd
     | var
     | delim
     | oper
     | sep
     | synnote
     | synnoteref)*
  }
groupcomp.attlist &=
  attribute importance { "optional" | "required" | "default" }?,
  univ-atts-no-importance,
  attribute outputclass { text }?
# LONG NAME: Fragment
fragment.element =
  element fragment {
    fragment.attlist,
    title?,
    (groupseq
     | groupchoice
     | groupcomp
     | fragref
     | synnote
     | synnoteref)*
  }
fragment.attlist &=
  univ-atts,
  attribute outputclass { text }?
# LONG NAME: Fragment Reference
fragref.element = element fragref { fragref.attlist, xrefph.cnt* }
# xref
fragref.attlist &=
  attribute href { text }?,
  attribute importance { "optional" | "required" }?,
  univ-atts-no-importance,
  attribute outputclass { text }?
# LONG NAME: Syntax Diagram Note
synnote.element =
  element synnote { synnote.attlist, (text | basic.ph)* }
synnote.attlist &=
  attribute callout { text }?,
  univ-atts,
  attribute outputclass { text }?
# LONG NAME: Syntax Note Reference
synnoteref.element = element synnoteref { synnoteref.attlist, empty }
synnoteref.attlist &=
  attribute href { text }?,
  univ-atts,
  attribute outputclass { text }?
# LONG NAME: Repeat Separator
repsep.element = element repsep { repsep.attlist, words.cnt* }
repsep.attlist &=
  attribute importance { "optional" | "required" }?,
  univ-atts-no-importance,
  attribute outputclass { text }?
# LONG NAME: Syntax Keyword
kwd.element = element kwd { kwd.attlist, text }
kwd.attlist &=
  attribute keyref { text }?,
  attribute importance { "optional" | "required" | "default" }?,
  univ-atts-no-importance,
  attribute outputclass { text }?
# =============================================================

# SPECIALIZATION ATTRIBUTE DECLARATIONS

# =============================================================
apiname.attlist &=
  global-atts,
  [ a:defaultValue = "+ topic/keyword pr-d/apiname " ]
  attribute class { text }?
codeblock.attlist &=
  global-atts,
  [ a:defaultValue = "+ topic/pre pr-d/codeblock " ]
  attribute class { text }?
codeph.attlist &=
  global-atts,
  [ a:defaultValue = "+ topic/ph pr-d/codeph " ]
  attribute class { text }?
delim.attlist &=
  global-atts,
  [ a:defaultValue = "+ topic/ph pr-d/delim " ]
  attribute class { text }?
fragment.attlist &=
  global-atts,
  [ a:defaultValue = "+ topic/figgroup pr-d/fragment " ]
  attribute class { text }?
fragref.attlist &=
  global-atts,
  [ a:defaultValue = "+ topic/xref pr-d/fragref " ]
  attribute class { text }?
groupchoice.attlist &=
  global-atts,
  [ a:defaultValue = "+ topic/figgroup pr-d/groupchoice " ]
  attribute class { text }?
groupcomp.attlist &=
  global-atts,
  [ a:defaultValue = "+ topic/figgroup pr-d/groupcomp " ]
  attribute class { text }?
groupseq.attlist &=
  global-atts,
  [ a:defaultValue = "+ topic/figgroup pr-d/groupseq " ]
  attribute class { text }?
kwd.attlist &=
  global-atts,
  [ a:defaultValue = "+ topic/keyword pr-d/kwd " ]
  attribute class { text }?
oper.attlist &=
  global-atts,
  [ a:defaultValue = "+ topic/ph pr-d/oper " ] attribute class { text }?
option.attlist &=
  global-atts,
  [ a:defaultValue = "+ topic/keyword pr-d/option " ]
  attribute class { text }?
parml.attlist &=
  global-atts,
  [ a:defaultValue = "+ topic/dl pr-d/parml " ]
  attribute class { text }?
parmname.attlist &=
  global-atts,
  [ a:defaultValue = "+ topic/keyword pr-d/parmname " ]
  attribute class { text }?
pd.attlist &=
  global-atts,
  [ a:defaultValue = "+ topic/dd pr-d/pd " ] attribute class { text }?
plentry.attlist &=
  global-atts,
  [ a:defaultValue = "+ topic/dlentry pr-d/plentry " ]
  attribute class { text }?
pt.attlist &=
  global-atts,
  [ a:defaultValue = "+ topic/dt pr-d/pt " ] attribute class { text }?
repsep.attlist &=
  global-atts,
  [ a:defaultValue = "+ topic/ph pr-d/repsep " ]
  attribute class { text }?
sep.attlist &=
  global-atts,
  [ a:defaultValue = "+ topic/ph pr-d/sep " ] attribute class { text }?
synblk.attlist &=
  global-atts,
  [ a:defaultValue = "+ topic/figgroup pr-d/synblk " ]
  attribute class { text }?
synnote.attlist &=
  global-atts,
  [ a:defaultValue = "+ topic/fn pr-d/synnote " ]
  attribute class { text }?
synnoteref.attlist &=
  global-atts,
  [ a:defaultValue = "+ topic/xref pr-d/synnoteref " ]
  attribute class { text }?
synph.attlist &=
  global-atts,
  [ a:defaultValue = "+ topic/ph pr-d/synph " ]
  attribute class { text }?
syntaxdiagram.attlist &=
  global-atts,
  [ a:defaultValue = "+ topic/fig pr-d/syntaxdiagram " ]
  attribute class { text }?
var.attlist &=
  global-atts,
  [ a:defaultValue = "+ topic/ph pr-d/var " ] attribute class { text }?
# ================== End Programming Domain  ======================
