blob: bb242357ba785b563bbfc7998a7434875ff89c4b [file] [log] [blame]
# =============================================================
# 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 ======================