OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

relax-ng message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]


Subject: Request of Clarification: include and combine



Followings are my current understanding. Is there any false statement?


* The combine attribute is allowed for <define>s under a <grammar>, but
  not allowed for <define>s under a grammar-level <include>.

* Nothing but "choice" and "interleave" are allowed as values of the
  combine attribute.

* It is an error to have <define name="foo"> under an <include>, if "foo"
  is not defined in the included file. (?)
  
  In other words, the following grammar is an error.
  
  A.rng
  <grammar>
    <define name="foo"> ... </define>
    <include href="B.rng">
      <define name="foo"> ... </define>
    </include>
  </grammar>
  
  B.rng
  <grammar/>
  
  I guess this is hard to implement ...
  
  
* It is an error to declare the same pattern twice in the same file,
  regardless of the use of the combine attribute. (?)
  
  In other words, the following grammar is an error.
  
  <grammar>
    <define name="foo"> ... </define>
    <define name="foo" combine="choice"> ... </define>
  </grammar>
  
  Why is this an error?

* It is an error to declare the same pattern with different combine
  methods.
  
  In other words, the following grammar has an error.
  
  A.rng:
  <grammar>
    <define name="foo"> ... </define>
  <?grammar>
  
  B.rng
  <grammar>
    <include href="A.rng"/>
    <define name="foo" combine="choice"> ... </define>
  </grammar>
  
  C.rng
  <grammar>
    <include href="B.rng"/>
    <define name="foo" combine="interleave"> ... </define>
  </grammar>


* However, it is *NOT* an error to use a different combine method, once
  it is redefined.
  
  In other words, the following grammar is OK:
  
  A.rng:
  <grammar>
    <define name="foo"> ... </define>
  <?grammar>
  
  B.rng
  <grammar>
    <include href="A.rng"/>
    <define name="foo" combine="choice"> ... </define>
  </grammar>
  
  C.rng
  <grammar>
    <include href="B.rng">
      <define name="foo"> ... </define>
    </include>
  </grammar>
  
  D.rng
  <grammar>
    <include href="C.rng"/>
    <define name="foo" combine="interleave"> ... </define>
  </grammar>

* It is an error to have two <define>s, both without @combine, and share
  the same name.
  
  In other words, the following is an error.

  A.rng:
  <grammar>
    <define name="foo"> ... </define>
  <?grammar>
  
  B.rng
  <grammar>
    <include href="A.rng"/>
    <define name="foo"> ... </define>
  </grammar>

* It is *NOT* an error for all <define>s with the same name to have
  @combine.

  A.rng:
  <grammar>
    <define name="foo" combine="choice"> ... </define>
  <?grammar>
  
  B.rng
  <grammar>
    <include href="A.rng"/>
    <define name="foo" combine="choice"> ... </define>
  </grammar>



--
Kohsuke KAWAGUCHI                          +1 650 786 0721
Sun Microsystems                   kohsuke.kawaguchi@eng.sun.com



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]


Powered by eList eXpress LLC