Copyright © 1992, 1997 International Organization for Standardization. All rights reserved.

This electronic document is for use during development and review of International Standards. Official printed copies of International Standards can be purchased from the ISO and the national standards organization of your country.

Next ClausePrevious Clause  

homeParent clauseNext major clausePrevious major clauseNext clause at this levelPrevious clause at this level


7 Location address module

7.10 Coordinate locations

Subclauses:


Coordinate locations are element forms that address sequences of nodes in lists or trees by a corresponding number of dimension specifications.

See 6.8 Coordinate Specifications for more information about about coordinate and dimension specifications.

7.10.1 Node locations

Node locations are coordinate locations in which the quantum is a node in a node list or tree. A node has the ability to be viewed both as a member of a node list and as the root of a tree (either a subnode tree or, if the node has a children property, the root of a content tree). This ability gives rise to four types of node location address:

  1. A "list location address" (listloc) addresses one or more nodes selected from a node list. Its location source is a node list.

  2. A "tree location address" (treeloc) addresses a single node of a tree in the classical manner by selecting an ancestor node at each level. Its location source is a node list, each node in the list viewed as the root of a tree.

  3. A "path location address" (pathloc) addresses a node list comprising one or more nodes selected from a tree, by viewing the tree as a matrix. Its location source is a node list, each node in the list viewed as the root of a tree.

  4. A "relative location address" (relloc) addresses a node list comprising one or more nodes selected from a tree by virtue of their relationship to a given starting node. Its location source is a node list, each node in the list viewed as the root of a tree.

7.10.1.1 Node lists

The fundamental organizational structure for nodes in groves is a node list. HyTime addresses nodes in a node list by treating the node list as a single-axis coordinate space where the nodes are the quanta. Sequences of nodes are addressed by a corresponding number of dimension specifications. The result of resolving any location address is always a node list (possibly empty).

NOTE 184 The largest node list that can be addressed is determined by the value of the highest quantum count limit specified by the HyTime architecture use declaration (see 6.3 HyTime support declarations).

7.10.1.2 List location address

The element form list location address (listloc) is a coordinate location address that addresses nodes selected from a node list provided by its location source. Its location source is a node list, viewed as a list.

                    <!-- List Location Address -->
<![ %listloc; [
<!element
   listloc        -- List location address --
                  -- Clause: 7.10.1.2 --
                  -- Locates nodes in a node list --
   - O
   (%dimlist;)*

-- Attributes [base]: overrun --
-- Attributes [locs]: locsrc, impsrc --
-- OptionalAttributes [locs]: multloc, referatt, spanloc, treetype --
-- CommonAttributes [GenArc]: dafe, dvlatt, etfullnm, id,
   ireftype, lextype, opacity --
-- CommonAttributes [base]: activity, conloc, dtxtatt, valueref --
-- CommonAttributes [locs]: refctl, refloc, reftype, rflocspn --
>
<!entity % locsrc "INCLUDE">
<!entity % impsrc "INCLUDE">
<!entity % overrun "INCLUDE">
]]><!-- listloc -->

7.10.1.3 Tree combination

When the location source for a tree or path address is a node list, each node in the list is normally taken as the root of an independent tree, with the location address applied to each tree in turn. The result is a single node list consisting of the nodes selected from each tree in the order the tree roots occurred in the location source node list. However, the attribute form treecom can be used with a multiple location source to view the node list as members of a single tree with a common (imaginary) parent node, thereby combining the multiple source trees into one. The results are then the same as for a non-multiple source: a single node in the case of treeloc, and a node list in the case of pathloc. This allows tree-based location addresses to select a single tree from a multiple location source.

NOTE 185 As the root level is included in the tree addressing, a particular root node can be selected when multiple source trees are combined.

The attribute tree combination (treecom) specifies whether multiple source trees are combined ("treecom") or not ("ntreecom").

                 <!-- Tree Combination Attributes -->
<![ %treecom; [
<!attlist
-- treecom --     -- Tree combination attributes --
                  -- Clause: 7.10.1.3 --
   (pathloc,treeloc)

   treecom        -- Tree combination --
                  -- Combine multiple source trees --
      (ntreecom|treecom)
      ntreecom
>
]]><!-- treecom -->

7.10.1.4 Tree location address

The element form tree location address (treeloc) addresses a single node of a tree in the classical manner by selecting a node from an addressable range at each level, starting at the root. The tree addressed is either a content tree or subnode tree, depending on the value of the treetype attribute (see 7.5 Tree type).

The nodes are selected by single axis markers applied to successive addressable ranges. Each marker acts as the first marker of a dimension specification; the second marker is not specified and is an implied "1". Therefore, each marker selects a single node from the addressable range.

The addressable range of the root level (unless there are multiple roots) is a single node. The addressable range of the second level is the children (or subnodes) of the root node. It is addressed by a single axis marker that locates a node within it. Lower levels of the tree are addressed by the recursive application of successive axis markers to the children (or subnodes) of the last selected node.

The list of axis markers used to address nodes in a tree is a "tree position specification" (treepos).

NOTE 186 For example, in a document with the following structure:

<!--                     tree position -->
<book>                   <!-- 1        -->
  <body>                 <!-- 1 1      -->
    <chapter>            <!-- 1 1 1    -->
      <para></para>      <!-- 1 1 1 1  -->
      <para></para>      <!-- 1 1 1 2  -->
    </chapter>
  </body>
  <annex>                <!-- 1 2      -->
    <figure></figure>    <!-- 1 2 1    -->
    <figure></figure>    <!-- 1 2 2    -->
    <figure></figure>    <!-- 1 2 3    -->
  </annex>
</book>
the third "figure" element can be identified with respect to the "book" as the root, by the following tree location specification:
<treeloc>1 2 3</treeloc>
where "1" selects the book (the root), "2" selects the annex (the second child of the root), and "3" selects the third figure (the third child of the annex).

                    <!-- Tree Location Address -->
<![ %treeloc; [
<!element
   treeloc        -- Tree location address --
                  -- Clause: 7.10.1.4 --
                  -- Locates nodes in a tree by classical method --
   - O
   (%marklist;)*  -- Constraint: resolved axis markers are interpreted
                     as a single list of dimension specifications,
                     marker1 only; implied marker2 is 1. --

-- Attributes [base]: overrun --
-- Attributes [locs]: locsrc, impsrc --
-- OptionalAttributes [locs]: multloc, referatt, spanloc, treecom,
   treetype --
-- CommonAttributes [GenArc]: dafe, dvlatt, etfullnm, id,
   ireftype, lextype, opacity --
-- CommonAttributes [base]: activity, conloc, dtxtatt, valueref --
-- CommonAttributes [locs]: refctl, refloc, reftype, rflocspn --
>
<!entity % locsrc "INCLUDE">
<!entity % impsrc "INCLUDE">
<!entity % overrun "INCLUDE">
]]><!-- treeloc -->

7.10.1.5 Path location address

The element form path location address (pathloc) is a coordinate location address that addresses a tree as though it were a matrix in which the matrix rows are the levels of the tree and the matrix columns are the paths. Path location address requires support of the "pathloc" option and "multloc" option in addition to the options and modules required for all coordinate locations.

In HyTime, a path of a tree is the sequence of nodes comprising the ancestry of a given leaf, including the root node from which the leaf is descended. The tree is viewed as a "path list" consisting of all of the paths, ordered in the left-list pre-order of their leaves.

NOTE 187 Each leaf appears in exactly one path. A node that is not a leaf appears in as many paths as there are leaves descended from it.

The path list is addressed by pairs of dimension specifications, contained in the dimension specification list.

  1. The first dimension specification of the pair selects paths. Its addressable range is the path list.

  2. The second dimension specification selects nodes within each of the selected paths concurrently. Each path is a separate addressable range whose first quantum is a root node and whose last quantum is a leaf. The dimension specification must must avoid overrunning the shortest path unless "trunc" is specified for the overrun attribute of the pathloc.

NOTE 188 In terms of the analogy to a matrix, the first dimspec of a pair selects one or more consecutive columns (paths to leaves), while the second selects one or more rows in the selected columns.

NOTE 189 For example, to select:

  1. All leaves.

    <dimspec>1 -1</dimspec>
    <dimspec>-1 1</dimspec>

  2. All children and grandchildren of the roots.

    <dimspec>1 -1</dimspec>
    <dimspec>2 2</dimspec>

  3. All grandchildren of the first child (that is, the earliest child of the first root in a pre-order traversal), assuming that exactly 3 leaves descend from that child and that the leaves are its grandchildren or descendants of its grandchildren.

    <dimspec>1 3</dimspec>
    <dimspec>4 1</dimspec>

  4. All nodes except the roots and their children

    <dimspec>1 -1</dimspec>
    <dimspec>3 -1</dimspec>

NOTE 190 In the "book" example in 7.10.1.4 Tree location address, the third figure could be located by specifying a pathloc for the last leaf of the tree, as follows:

<dimspec>-1 1</dimspec>   <!-- Last path -->
<dimspec>-1 1</dimspec>   <!-- Last leaf -->

The selected nodes are formed into a node list in the order they would be visited in a left-list pre-order traversal of the tree. If the multloc attribute "set" is specified, each node appears only once in the node list, even though it may have been selected from multiple paths in which it occurred.

NOTE 191 The dimension specification list can be produced by a marker function that locates nodes anywhere in the tree. For example, in an SGML grove, it could test generic identifiers to locate all nodes that are "chapter title" elements.

                    <!-- Path Location Address -->
<![ %pathloc; [
<!element
   pathloc        -- Path location address --
                  -- Clause: 7.10.1.5 --
                  -- Locates nodes in a tree viewed as a path list --
   - O
   (%dimlist;)*   -- Constraint: resolved axis markers are interpreted
                     as a single list of pairs of dimension
                     specifications. --

-- Attributes [base]: overrun --
-- Attributes [locs]: locsrc, impsrc --
-- OptionalAttributes [locs]: multloc, referatt, spanloc, treecom,
   treetype --
-- CommonAttributes [GenArc]: dafe, dvlatt, etfullnm, id,
   ireftype, lextype, opacity --
-- CommonAttributes [base]: activity, conloc, dtxtatt, valueref --
-- CommonAttributes [locs]: refctl, refloc, reftype, rflocspn --
>
<!entity % locsrc "INCLUDE">
<!entity % impsrc "INCLUDE">
<!entity % overrun "INCLUDE">
]]><!-- pathloc -->

7.10.1.6 Relative location address

The element form relative location address (relloc) is a coordinate location address that addresses nodes of a tree in terms of their relationship to another node.

The attribute starting node (strtnode) addresses the node whose relatives are to be addressed. The location source addresses the root of the tree in which the starting node occurs. It is an RHE if the starting node does not occur in the tree rooted at the location source. If the location source is a node list with more than one node, each node is taken to be the root of an independent tree. The attribute no starting node (nostart) indicates whether it should be considered an error if a tree is addressed as a location source for which no starting node is addressed (error) or whether the tree should be ignored (ignore). If the strtnode attribute is omitted, the nodes in the location source are used as the starting nodes.

The attribute relationship to starting node (relation) specifies an addressable range of the tree from which nodes are selected.

The content of the relloc is a dimension specification that selects nodes from the node list specified by the relation attribute. The following list states, for each allowable relation, the name and the addressable range it represents. The nodes in the addressable range and the nodes selected are always listed in the order of left-list pre-order traversal of the tree.

anc

Ancestor: the ancestral nodes from the location source to the parent of the starting node.

NOTE 192 Examples: (1 1)=root (-1 1)=parent

esib

Elder sibling: the elder (left side) siblings of the starting node

NOTE 193 Examples: (1 1)=oldest esib (-1 1)=youngest esib

ysib

Younger sibling: the younger (right side) siblings.

NOTE 194 Examples: (1 1)=oldest ysib (-1 1)=youngest ysib

parent

Equivalent to "anc" with a dimension specification of (-1 1). Actual dimension specification must be empty.

children

The children of the starting node.

NOTE 195 Examples: (1 1)=first child, (-1 1)=last child

precedng

All nodes in the tree that occur before the starting node.

followng

All nodes in the tree that occur after the starting node.

                  <!-- Relative Location Address -->
<![ %relloc; [
<!element
   relloc         -- Relative location address --
                  -- Clause: 7.10.1.6 --
                  -- Locates nodes in a tree relative to a starting
                     node --
   - O
   (%dimlist;)*   -- Constraint: resolved axis markers are interpreted
                     as a single list of dimension specifications. --

-- Attributes [base]: overrun --
-- Attributes [locs]: locsrc, impsrc, relloc --
-- OptionalAttributes [locs]: multloc, referatt, spanloc, treetype --
-- CommonAttributes [GenArc]: dafe, dvlatt, etfullnm, id,
   ireftype, lextype, opacity --
-- CommonAttributes [base]: activity, conloc, dtxtatt, valueref --
-- CommonAttributes [locs]: refctl, refloc, reftype, rflocspn --
>
<!attlist
   relloc         -- Relative location address --
                  -- Clause: 7.10.1.6 --

   strtnode       -- Starting node(s) --
                  -- Starting node(s) whose relatives are to be addressed --
      CDATA       -- Reference --
      #IMPLIED    -- Default: root(s) of location source tree(s) --

   nostart        -- No start --
                  -- Expected system behavior if no starting node is addressed
                     for location source. --
      NAME        -- Lextype: ("ERROR"|"IGNORE") --
      ERROR

   relation       -- Relationship to starting node --
      (anc|children|esib|followng|parent|precedng|ysib)
      parent
>
<!entity % locsrc "INCLUDE">
<!entity % impsrc "INCLUDE">
<!entity % overrun "INCLUDE">
]]><!-- relloc -->

7.10.2 Data location address

The element form data location address (dataloc) addresses character data that has been tokenized by a data tokenizer grove construction process using the lexical type name or HyLex match string specified by the filter attribute of the dataloc element form. The dataloc form uses a coordinate specification to select tokens from the full list of tokens derived from the location source. (See A.4.4.2 Data tokenizer (DATATOK) grove construction for a description of data tokenizer grove constructors and groves.)

NOTE 196 In other words, a dataloc is equivalent to applying a list location address to the list of tokens created by a data tokenizer grove construction process and then either returning the nodes containing the tokens or returning the list of data character nodes that are the source of the tokens. The complete location ladder to which dataloc is equivalent is shown below.

NOTE 197 The plain text grove construction process can be used to create a grove from unstructured character data to which a dataloc or data tokenizer grove construction process can be applied. This could be done either by creating an explicit grovedef element or by associating the plain text grove construction process with a data entity containing the text to be tokenized and then naming the entity as the location source of the data location address.

The data tokenizer notation for the dataloc form may be either the HyTime data tokenizer notation (HyDatTok) or the HyTime lexical tokenizer notation (HyLexTok). Both HyDatTok and HyLexTok are derived from the data tokenizer grove construction (datatok) notation form (see A.4.4.2 Data tokenizer (DATATOK) grove construction). When the data tokenizer notation is HyDatTok, only the lexical types defined below may be used as values for the filter attribute. When the data tokenizer notation is HyLexTok, any HyLex expression may be used as a filter value. The HyLexTok notation's notation derivation source (superdcn) is the HyTime lexical model (HyLex) notation (see A.2.3 HyTime lexical model notation (HyLex)). The datatok notation provides the semantics of grove construction for both HyDatTok and HyLexTok, while the HyLex notation provides the syntax for the match token specification for HyLexTok.

The attribute tokenization filter (filter) specifies the match expression the data tokenizer process will use to recognize tokens in the location source.

NOTE 198 A lexical type name, such as any of the values allowed for HyDatTok, is a valid HyLexTok match expression.

The following lexical types are defined in the HyTime lexical type definition document specifically for use with the dataloc element form and should be supported by systems that support the dataloc form but do not support lexical typing. In each of these types, the term "character" means any of the following node types: datachar, sdata, extdata, and subdoc. These node types are all treated as characters semantically.

str

Unnormalized string: each character in the location source is a token.

norm

Normalized text: all characters except RS, RE, and SEPCHAR (white space).

NOTE 199 Note that, in the reference concrete syntax, "Charles' and Linda's Abyssinians" is four normalized tokens.

word

Word tokens: all name characters.

NOTE 200 Note that, in the reference concrete syntax, "Charles' and Linda's Abyssinians" is five word tokens.

NAME

SGML name: NAME constructed according to ISO 8879.

sint

Signed integer: digit string, optionally preceded by hyphen or plus.

UTCdate

UTC date: Valid date in UTC yyyy-mm-dd format.

UTCtime

UTC time: Valid time in UTC hh:mm:ss.decimal format.

UTC

UTC date and time: pairs of DATE and TIME tokens, DATE first.

line

Each token consists of the characters occurring between RS/RE pairs, between a tag close and a RE, or between an RS and a tag open.

The attribute tokens or data (tokordat) specifies whether the data location address returns the token string nodes in the data tokenizer grove (tokens) or the data characters in the location source corresponding to the tokens (data). The default is to return the data.

                  <!-- HyTime Lexical Tokenizer -->
<![ %HyLexTok; [
<!notation
   HyLexTok       -- HyTime Lexical Tokenizer --
                  -- A data tokenizer grove constructor using the
                     HyLex syntax. --
                  -- Clause: 7.10.2 --

   PUBLIC "ISO/IEC 10744:1997//NOTATION HyTime Lexical Tokenizer//EN"

-- Attributes [locs]: HyLexTok --
-- CommonAttributes [GenArc]: altreps, included, superdcn --
-- CommonAttributes [base]: bosdatt --
-- CommonAttributes [locs]: egrvplan --
>
<!attlist #NOTATION
   HyLexTok       -- HyTime Lexical Tokenizer --
                  -- Clause: 7.10.2 --

   HyBase    NAME     #FIXED datatok
   superdcn  NAME     #FIXED HyLex

-- Attributes from datatok notation --
   catsrc    CDATA    #IMPLIED
   cattoken  CDATA    #IMPLIED
   catres    CDATA    #IMPLIED
   boundary  (sodeod|sodiec|isceod|isciec|inmodel) isciec
   maxtoksz  NUMBER   #IMPLIED

-- Attributes from HyLex notation --
   norm     (norm|unorm) norm
>
<!attlist
-- dlhylex --     -- HyLex attributes for dataloc and datatok --
                  -- Clause: 7.10.2 --
   (dataloc,datatok)

-- Attributes from HyLex notation --
   norm     (norm|unorm) norm
>
<!entity % HyLex "INCLUDE">
]]><!-- HyLexTok -->
               <!-- Data Tokenizer Grove Definition -->
<![ %datatok; [
<!notation
   HyDatTok       -- HyTime Data Tokenizer --
                  -- A simple data tokenizer grove constructor. --
                  -- Clause: 7.10.2 --
                  -- Lextype: ("LINE"|"NAME"|"NORM"|"SINT"|"STR"|
                               "UTC"|"UTCDATE"|"UTCTIME"|"WORD") --

   PUBLIC "ISO/IEC 10744:1997//NOTATION HyTime Data Tokenizer//EN"

-- Attributes [locs]: HyDatTok --
-- CommonAttributes [GenArc]: altreps, included, superdcn --
-- CommonAttributes [base]: bosdatt --
-- CommonAttributes [locs]: egrvplan --
>
<!attlist #NOTATION
   HyDatTok       -- HyTime Data Tokenizer --
                  -- Clause: 7.10.2 --

   HyBase    NAME     #FIXED datatok

-- Attributes from datatok form --
   catsrc    CDATA    #IMPLIED
   cattoken  CDATA    #IMPLIED
   catres    CDATA    #IMPLIED
   boundary  (sodeod|sodiec|isceod|isciec|inmodel) isciec
   maxtoksz  NUMBER   #IMPLIED
>
<![ %HyLexTok; [
   <!entity % ddattok "HyLexTok">
]]>
<!entity %
   ddattok        -- Default data tokenizer notation --
                  -- Clause: 7.10.2 --

   "HyDatTok"
>
<!element
   datatok        -- Data tokenizer grove definition --
                  -- Clause: 7.10.2 --
                  -- Generates a datatok grove from data in another
                     grove. --
   - O
   (#PCDATA)

-- Attributes [locs]: datatok --
-- OptionalAttributes [locs]: dlhylex --
-- CommonAttributes [GenArc]: dafe, dvlatt, etfullnm, id,
   ireftype, lextype, opacity --
-- CommonAttributes [base]: activity, conloc, dtxtatt, valueref --
-- CommonAttributes [locs]: refctl, refloc, reftype, rflocspn --
>
<!attlist
   datatok        -- Data location address --
                  -- Clause: 7.10.2 --

   HyBase   NAME     #FIXED agrovdef

-- Attributes from agrovdef --
   grovesrc CDATA    #REQUIRED
   grovecon NOTATION (HyDatTok|HyLexTok) #FIXED %ddattok;

-- Attributes from datatok notation form (via DAFE) --
   catsrc    CDATA    #IMPLIED
   cattoken  CDATA    #IMPLIED
   catres    CDATA    #IMPLIED
   boundary  (sodeod|sodiec|isceod|isciec|inmodel) isciec
   maxtoksz  NUMBER   #IMPLIED
>
]]><!-- datatok -->
                    <!-- Data Location Address -->
<![ %dataloc; [
<!element
   dataloc        -- Data location address --
                  -- Clause: 7.10.2 --
                  -- Locates string and token data objects in data --
   - O
   (%dimlist;)*   -- Constraint: interpreted as a single list of
                     dimension specifications --

-- Attributes [base]: overrun --
-- Attributes [locs]: dataloc, locsrc, impsrc --
-- OptionalAttributes [locs]: dlhylex, multloc, referatt, spanloc,
   treetype --
-- CommonAttributes [GenArc]: dafe, dvlatt, etfullnm, id,
   ireftype, lextype, opacity --
-- CommonAttributes [base]: activity, conloc, dtxtatt, valueref --
-- CommonAttributes [locs]: refctl, refloc, reftype, rflocspn --
>
<!attlist
   dataloc        -- Data location address --
                  -- Clause: 7.10.2 --

   HyBase   NAME     #FIXED datatok
   HyBnames CDATA    #FIXED "HyBase #DEFAULT
                             #ARCCONT filter
                             grovesrc locsrc"

   filter         -- Tokenization filter --
      CDATA       -- Constraint: If no data tokenizer notation
                     specified, filter must be a single lexical type
                     name. --
      "str"

   tokordat        -- Result to return: tokens or source data? --
      (data|tokens)
      data

-- Attributes from datatok form --
   catsrc    CDATA    #IMPLIED
   cattoken  CDATA    #IMPLIED
   catres    CDATA    #IMPLIED
   boundary  (sodeod|sodiec|isceod|isciec|inmodel) isciec
   maxtoksz  NUMBER   #IMPLIED
>
<!entity % locsrc "INCLUDE">
<!entity % impsrc "INCLUDE">
<!entity % overrun "INCLUDE">
]]><!-- dataloc -->

NOTE 201 Any data location address can be replaced by a location ladder that uses an explicit grove definition to associate a data tokenization grove construction process with source data to be tokenized, as shown below (see A.4.4.2 Data tokenizer (DATATOK) grove construction). The "datatok" element is an auxiliary grove definition (agrovdef) element that uses the dataloc's location source as the grove source for the grove constructor and the dataloc's filter attribute value for the datatok's tokenization filter (mapped to an attribute using the DAFE facility's NotNames attribute; see A.5.3 Data Attributes for Elements (DAFE)). The content and relevant location-addressing attributes of the dataloc become the content and attributes of the listloc that addresses the tokens created by the data tokenizer.

The location ladder shown below works as follows:

  1. The datatok element produces the data tokenizer grove by tokenizing the data content of the grove's source text (which corresponds to the location source of the dataloc).

  2. The first proploc element addresses all the tokenstr nodes in the data tokenizer grove, which make up the content of the strings property of the tokenized root (tokroot) node.

  3. The listloc element selects tokenized string (tokenstr) nodes from the list returned by the proploc. The coordinate address used by the listloc corresponds to the coordinate address specified by the dataloc. If the value of the dataloc's tokordat attribute is "tokens", this is the list returned by the dataloc.

  4. The second proploc element addresses the source properties of the tokenstr nodes returned by the listloc element. The result is a list of data character nodes from the original source text nodes corresponding to the characters of the tokens selected by the listloc. If the value of the dataloc's tokordat attribute is "data", this is the list returned by the dataloc.

<!DOCTYPE DatalocDef [

<?IS10744 ArcBase HyTime>
<!NOTATION HyTime
   PUBLIC "ISO/IEC 10744:1997//NOTATION AFDR ARCBASE
           Hypermedia/Time-based Structuring Language (HyTime)//EN"
>
<!ATTLIST #NOTATION HyTime
   ArcDocF  NAME     #FIXED HyDoc
   ArcDataF NAME     #FIXED HyBrid
   ArcDTD   CDATA    #FIXED "HyTime"
   ArcQuant CDATA    #FIXED "NAMELEN 9"
   ArcOpt   CDATA    #FIXED "locs"
   locs     CDATA    #FIXED "proploc nmsploc pgrovdef"
>
<!NOTATION SGML
   PUBLIC "ISO 8879:1986//NOTATION Standard Generalized Markup Language//EN"
>
<!ENTITY HyTime
   PUBLIC "ISO/IEC 10744:1997//DTD AFDR Meta-DTD
           Hypermedia/Time-based Structuring Language (HyTime)//EN"
   CDATA SGML
>

<!ENTITY %
   dtokatt        -- Data tokenizer attributes --
                  -- Derived from the data tokenizer grove
                     construction notation in the Property Set
                     Definition Requirements annex. --

   "catsrc   CDATA    #IMPLIED
    cattoken CDATA    #IMPLIED
    catres   CDATA    #IMPLIED
    boundary (sodeod|sodiec|isceod|isciec|inmodel) sodeod
    notation NOTATION (datatok) #FIXED datatok"
>

<!NOTATION datatok
   PUBLIC "ISO/IEC 10744:1997//NOTATION
           Datatok Grove Construction Process//EN"
>
<!ATTLIST #NOTATION datatok
   %dtokatt;
>

<!ELEMENT datalocdef
   O O (datatok,(proploc|listloc)*)
>

<!ELEMENT datatok
   - O EMPTY
>
<!ATTLIST datatok
   id       ID       #REQUIRED
   grovesrc IDREFS   #REQUIRED
   filter   CDATA    "str"

-- Data tokenizer attributes will be interpreted as data tokenizer
   grove construction attributes via DAFE facility rules. --
   %dtokatt;

   grovecon NOTATION (datatok) datatok
   HyTime   NAME     #FIXED agrovdef
   NotNames CDATA    #FIXED "#NOTCONT filter"
>

<!ELEMENT proploc - O  (#PCDATA)
>
<!ATTLIST proploc
   ID       ID       #REQUIRED
   locsrc   IDREF    #REQUIRED
   HyTime   NAME     #FIXED "proploc"
>
<!ELEMENT listloc - O  (#PCDATA)
>
<!ATTLIST listloc
   ID       ID       #REQUIRED
   locsrc   IDREF    #REQUIRED
   HyTime   NAME     #FIXED "listloc"
>

]>
<datatok
   id       = datatok-grove
   grovesrc = source-nodes -- Replace with location source of dataloc --
   filter   = word
>
<proploc
   locsrc   = datatok-grove
   id       = strings-property
   >STRINGS
</proploc>
<listloc
   locsrc   = strings-property
   id       = token-nodes
   >1 -1   <!-- Acts the same as dimspecs from dataloc -->
</listloc>
<proploc
   locsrc   = token-nodes
   id       = token-data
   >SOURCE
</proploc>

Next ClausePrevious Clause  

Copyright © 1992, 1997 International Organization for Standardization. All rights reserved.

This electronic document is for use during development and review of International Standards. Official printed copies of International Standards can be purchased from the ISO and the national standards organization of your country.


HTML generated from the original SGML source using a DSSSL style specification and the SGML output back-end of the JADE DSSSL engine.