Here's my first draft :
https://github.com/stain/ro-combine-archive/blob/master/src/main/xsd/combine.xsd
Feel free to put in pull requests!
It validates the example from page 8 in the spec (using Eclipse's XML editor):
https://github.com/stain/ro-combine-archive/blob/master/src/main/xsd/combine-example.xml
Assumptions:
Attributes are unqualified (otherwise the empty namespace examples
would not work).
I did not set 'location' or 'format' to xsd:anyURI (which I feel would
be more appropriate), because the current spec says they are
xsd:string.
It is mainly trying to build a structural schema for generating Jaxb
bindings, not so much focusing on validation.
I found it much much harder to build a validation-capable restricted
schema that follows the specification, say for restrictions on only a
single master attribute or for ./manifest.xml to be present. (And
presumably for that manifest.xml to not be a master?). One of the
reasons for this is that they are all using the same 'content'
element, and they can (presumably) be in any order. XSD is quite
formal, but expressing such things becomes quite tricky while at the
same time complying with 'unique particle constraints'.
It might be possible in a less obtrusive way using something like:
<xsd:unique name="locationUniq">
<xsd:selector xpath="./content" />
<xsd:field xpath="@location" />
</xsd:unique>
(Note: I did not add this - the spec does not require 'location' to be unique)
> --
> You received this message because you are subscribed to the Google Groups
> "COMBINE archive" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to
combine-archi...@googlegroups.com.
> Visit this group at
http://groups.google.com/group/combine-archive.
> For more options, visit
https://groups.google.com/d/optout.