Re: How to define a value space that is a cross-product of simpleType value spaces?
Mukul Gandhi <[email protected]>
| Newsgroups | gmane.text.xml.schema.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi Roger,
This seems to be possible with XML Schema 1.1 assertions. Here's an
example please,
<xs:simpleType name="Person-name">
<xs:restriction base="xs:string">
<xs:assertion test="(string-length(tokenize($value,'\s')[1]) =
(1 to 100)) and matches(tokenize($value,'\s')[1], 'REG-EX_1')" />
<xs:assertion test="(string-length(tokenize($value,'\s')[2]) =
1) and matches(tokenize($value,'\s')[2], 'REG-EX_2')" />
<xs:assertion test="(string-length(tokenize($value,'\s')[3]) =
(1 to 100)) and matches(tokenize($value,'\s')[3], 'REG-EX_3')" />
</xs:restriction>
</xs:simpleType>
On Thu, Feb 24, 2011 at 4:19 PM, Costello, Roger L. <[email protected]> wrote:
> Hi Folks,
>
> Suppose this is the value space for "family name" values:
>
> length: 1 - 100 characters
> consists of the characters: a-z, A-Z, space, hyphen, period, and apostrophe
>
> That value space is implemented using this simpleType:
>
> <xs:simpleType name="Family-name">
> <xs:restriction base="xs:string">
> <xs:minLength value="1" />
> <xs:maxLength value="100" />
> <xs:pattern value="[a-zA-Z' \.-]+" />
> </xs:restriction>
> </xs:simpleType>
>
>
> Suppose this is the value space for "middle initial" values:
>
> length: 1 character
> consists of the characters: A-Z
>
> That value space is implemented using this simpleType:
>
> <xs:simpleType name="Middle-initial">
> <xs:restriction base="xs:string">
> <xs:length value="1" />
> <xs:pattern value="[A-Z]+" />
> </xs:restriction>
> </xs:simpleType>
>
>
> Suppose this is the value space for "given name" values:
>
> length: 1 - 100 characters
> consists of the characters: a-z, A-Z, space, hyphen, period, and apostrophe
>
> That value space is implemented using this simpleType:
>
> <xs:simpleType name="Given-name">
> <xs:restriction base="xs:string">
> <xs:minLength value="1" />
> <xs:maxLength value="100" />
> <xs:pattern value="[a-zA-Z' \.-]+" />
> </xs:restriction>
> </xs:simpleType>
>
>
> Now there are 3 user-defined value spaces. Let me denote them by F, M, G, respectively. (F = Family, M = Middle, G = Given)
>
> I would like to aggregate them to create a "person name" value space. This is the value space for person name:
>
> Person-name is the cross product: G x M x F
>
> Here is an example of a value in the Person-name value space:
>
> ("Roger", "L", "Costello")
>
> How do I implement the Person-name value space?
>
> /Roger
--
Regards,
Mukul Gandhi