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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.