[
Lists Home |
Date Index |
Thread Index
]
Hi Kris,
> Unfortunately, the "FirstName = AlphaString" example doesn't work.
> Does anyone know a way of achieving what I'm trying to do? Is it
> even possible with RelaxNG?
RELAX NG doesn't support the construction of datatype hierarchies.
When you do:
AlphaString = xsd:string {
pattern = "[a-zA-Z]*"
}
you are associating the name 'AlphaString' with a pattern that matches
strings made up of lower and uppercase ASCII letters. This isn't the
same as creating a new datatype called AlphaString.
In RELAX NG, datatypes come from a datatype library, and if you want
to create a new datatype, you have to create a new datatype library to
contain it. Currently that means coding it in your favourite
programming language, using the datatype library interface defined at
http://relaxng.sourceforge.net, registering that library with your
favourite RELAX NG validator and referring to it from your schema.
Alternatively, I was going to point you to ooRelaxNG at
http://www.asahi-net.or.jp/~eb2m-mrt/oo.html but I see that it doesn't
support simple type hierarchies (as XML Schema would call them). I
think that you could probably adapt the general principal -- create a
schema using a modified version of RELAX NG in which the datatype
hierarchy is made explicit, and then transform that schema into a
proper RELAX NG schema.
Cheers,
Jeni
---
Jeni Tennison
http://www.jenitennison.com/
|