<!--===================================================================

    Property Set Definition Document Type

    This DTD is derived directly (and literally) from the property set
    definition architecture defined in clause A.2, Property Set Definition
    Requirements of ISO/IEC 10744:1997 (Second Edition).

    ====================================================================-->
<!--
        NOTICE OF INTELLECTUAL PROPERTY RIGHTS


-->


<!--===============================================
       Propset Architecture Use Declarations
    ===============================================-->

  <?ArcBase PropSet>

  <!NOTATION SGML PUBLIC
             "ISO 8879:1986//NOTATION
             Standard Generalized Markup Language//EN">

  <!-- Entity containing Property Set meta-DTD: -->
  <!ENTITY Propset.Meta-DTD
           PUBLIC "ISO/IEC 10744:1997//DTD Property Set
                   Definition Requirements//EN" CDATA SGML>

  <!-- Declaration of Property Set architecture notation: -->
  <!NOTATION Propset PUBLIC
             "ISO/IEC 10744:1997//NOTATION AFDR ARCBASE
             Property Set Definition Architecture//EN"
             --
             A base architecture used in conformance with the
             Architectural Form Definition Requirements of
             International Standard ISO/IEC 10744.
             -->
  <!ATTLIST #NOTATION Propset
      ArcFormA NAME  #FIXED "Propset"
      ArcDTD   CDATA #FIXED "Propset.Meta-DTD"
      ArcDoc   NAME  #FIXED "Manual"
      ArcAuto  NAME  #FIXED "arcauto"
  >

                       <!-- Component Names -->
<!ENTITY % rcsnm   "
                   rcsnm    -- Name in RCS --
                            -- Constraint: unique in component name
                               space --
                            NAME     #REQUIRED
">
<!ENTITY % appnm   "
                   appnm    -- Application name --
                            -- Constraint: unique in component name
                               space --
                            CDATA    #IMPLIED  -- Default: rcsnm --
">
<!ENTITY % fullnm  "
                   fullnm   -- Full name --
                            -- Constraint: unique in component name
                               space --
                            CDATA    #IMPLIED  -- Default: appnm --
">

<!-- Property Set Definition -->

<!element propset  -- Property set definition --
                   - O      ((desc|note)*,
                             (classdef|normdef)*,
                             psmodule*) >
<!attlist propset  nsd      -- Notation specification document --
                            -- Constraint: must be specified for
                               primary property sets; may not be
                               specified for auxiliary property sets --
                            -- Lextype(NOTATION) --
                            NAME     #IMPLIED
                   gcsd     -- Grove construction specification document --
                            -- Constraint: must be specified for
                               auxiliary property sets --
                            -- Lextype(NOTATION) --
                            NAME     #IMPLIED  -- Default: nsd --
                   clausnot -- Clause notation --
                            -- Lextype(NOTATION) --
                            NAME     #IMPLIED  -- Default: notation
                                                  described in C.2.2.1.2 --
>                  <!-- Specification and Clause -->
<!ENTITY % sd      "
                   sd       -- Specification document --
                            -- Lextype(NOTATION) --
                            NAME     #IMPLIED  -- Default: primary
                                                  property set's notation
                                                  specification document;
                                                  auxiliary property set's
                                                  grove construction
                                                  specification document. --
                   clause   -- Clause of specification document --
                            -- Constraint: in notation specified by clausnot --
                            CDATA    #IMPLIED
                   clausnot -- Clause notation --
                            -- Lextype(NOTATION) --
                            NAME     #IMPLIED  -- Default: propset:clausnot --
">                    <!-- Descriptive Elements -->
<!element desc     -- Description of property set component --
                   - O (#PCDATA)>
<!element note     -- Explanatory note --
                   - O (#PCDATA)>

                   <!-- Property Set Module -->
<!element psmodule -- Property set module --
                   - O ((desc|note)*,
                        (classdef|propdef|normdef)*) >
<!attlist psmodule %rcsnm;  -- Name in RCS --
                   %fullnm; -- Full name --
                   dependon -- Modules depended on --
                            -- Constraint: RCS names of modules
                               defined in this property set --
                            NAMES    #IMPLIED  -- Default: none --
                   default        -- Member of default grove plan --
                      (default|ndefault)
                      ndefault
>                      <!-- Class Definition -->
<!element classdef -- Class definition --
                   - O      ((desc|note)*, propdef*) >
<!attlist classdef rcsnm    -- Name in RCS --
                            -- Constraint: unique in component name
                               space --
                            ID       #REQUIRED
                   %appnm;  -- Application name --
                   %fullnm; -- Full name --
                   %sd;     -- Specification document and clause --
                   conprop  -- Content property: children or data --
                            -- Constraint: RCS name of nodal property of class
                               with noderel=subnode, char property, or string --
                            NAME     #IMPLIED  -- Default: no content
                                                  property --
                   prune    -- Prune content tree? --
                            -- Constraint: can only be nprune if the
                               set of allow classes of the content
                               property is guaranteed to be a subset
                               of that of parent's content property --
                            (prune|nprune)
                                     prune
                   dsepprop -- Data separator property --
                            -- Constraint: RCS name of char or string
                               property of class --
                            NAME     #IMPLIED  -- Default: none --
                   mayadd   -- DSSSL transformation: needn't be grounded --
                            (mayadd|mayntadd)
                                     mayntadd
                   default        -- Member of default grove plan --
                      (default|ndefault)
                      #IMPLIED  -- Default: inherited from containing psmodule
                                   element, if any; otherwise required in every
                                   grove plan. --

>                     <!-- Property Definition -->
<!element propdef  -- Property definition --
                   - O      ((desc|note)*,when?,enumdef*) >
<!attlist propdef  cn       -- Provider of property (class name) --
                            -- Constraint: must be specified if
                               propdef occurs outside of a classdef --
                            -- Constraint: RCS name of class in property set --
                            IDREF    #IMPLIED  -- Default: containing
                                                  classdef --
                   %rcsnm;  -- Name in RCS --
                   %appnm;  -- Application name --
                   %fullnm; -- Full name --
                   %sd;     -- Specification document and clause --
                   datatype -- Datatype of property value --
                            (node|nodelist|nmndlist|enum|char|string|strlist|
                             integer|intlist|boolean|compname|cnmlist)
                                     #REQUIRED
                   noderel  -- Node relationship --
                            -- Constraint: required if datatype is
                               nodal --
                            (subnode|irefnode|urefnode)
                                     #IMPLIED  -- Default: not nodal --
                   ac       -- Allowed classes --
                            -- Constraint: required if datatype is nodal,
                               unless noderel=urefnode --
                            -- Constraint: RCS names of classes defined in
                               property set --
                            IDREFS   #IMPLIED  -- Default: not nodal
                                                  or if noderel=urefnode, any
                                                  class in any property set --
                   acnmprop -- Allowed class name properties --
                            -- Constraint: if datatype is nmndlist, one
                               property RCS name for each allowed class; must
                               be either all string properties or all node
                               properties of their respective classes --
                            NAMES    #IMPLIED  -- Default: not
                                                  nmndlist --
                   strnorm  -- String normalization rule --
                            -- Constraint: only if datatype is string
                               or strlist --
                            -- Constraint: RCS name of normdef defined in
                               property set --
                            NAME     #IMPLIED  -- Default: none --
                   vrfytype -- Verify type --
                            (derived|optional|other)
                                     other
                   default        -- Member of default grove plan --
                      (default|ndefault)
                      #IMPLIED  -- Default: inherited from containing classdef or
                                   psmodule element, if any; otherwise required in
                                   every grove plan. --
>
<!ELEMENT when     -- Condition precedent for a non-null value to be
                      exhibited --
                   - O      (#PCDATA) ><!element enumdef  -- Enumerated value definition --
                   - O      (desc|note)* >
<!attlist enumdef  %rcsnm;  -- Name in RCS --
                   %appnm;  -- Application name --
                   %fullnm; -- Full name --
>                <!-- Normalization Rule Definition -->
<!element normdef  -- Normalization rule definition --
                   - O      (desc|note)* >
<!attlist normdef  %rcsnm;  -- Name in RCS --
                   %sd;     -- Specification document and clause --
>