Re: RNG schema plans

> > But you do not have to enumerate what has to be skipped; you can
> > rely on wild cards such as
> > 
> > anyForeignElement = element * - ds:* {
> >   mixed { anyAttribute*, anyForeignElement* } }
> 
> I suppose that suggests you're better off with that approach.

What I'm doing is the mixture of two: validation and skipping.
When the algorithm is specified a part of the spec and permissible
children are known, a pair of a value of @Algorithm and 
a content model  is provided.  When the algorithm is not known,
any pair of @Algorithm and children is allowed.  These two kinds 
of pairs are COMBINED. 

For exmaple, xmldsig-core-schema.rnc has

ds_CanonicalizationMethodType =
  attribute Algorithm { 
    xsd:anyURI "http://www.w3.org/TR/2001/REC-xml-c14n-20010315" }
  | attribute Algorithm { 
    xsd:anyURI "http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments" }
  | attribute Algorithm { 
    xsd:anyURI "http://www.w3.org/2006/12/xml-c14n11" }
  | attribute Algorithm { 
    xsd:anyURI "http://www.w3.org/2006/12/xml-c14n11#WithComments" }

while allowAnyForeign.rnc has

ds_CanonicalizationMethodType |= 
  attribute Algorithm { xsd:anyURI },
  anyForeignElement*

They are combined.  "|=" means combination by union.

Note that elements of the ds namespace are not allowed, when the 
value of the Algorithm attribute is not one of the four specific ones 
shown in the first definition.

My work would have been easier if I had relied on the latter definition 
only.  But that approach would make validation loose and RELAX NG 
schemas less informative and useful.

I would like to be as specific as possible in the first type of
definitions.  That's why I'm asking.

Cheers,
Makoto

Received on Thursday, 21 January 2010 01:16:12 UTC