Re: How to define a value space that is a cross-product of simpleType value spaces?

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. <costello@mitre.org> 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

Received on Friday, 25 February 2011 07:23:41 UTC