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

How about something like this for PersonName simpleType:

   <xs:simpleType name="Family-name">
       <xs:restriction base="xs:string">
           <xs:minLength value="3" />
           <xs:maxLength value="201" />
           <xs:pattern value="[a-zA-Z' \.\-]+\s+[A-Z]\s+[a-zA-Z' \.\-]+" />
       </xs:restriction>
   </xs:simpleType>

The length range [3-201] is reached using the addition of ranges of
individual types : [1-100], [1-1], [1-100].
The pattern is almost an concatenation of the individual regexes that you
are using for the 3 simpleTypes with following modifications ... the hyphen
was not escaped in the regex, it should be, else it would signify range...
added \s to allow for space(s) between middle name character and the either
side of it.


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
>
>


-- 
Best Regards,
Satya Prakash Tripathi

Received on Thursday, 24 February 2011 14:20:06 UTC