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

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

Received on Thursday, 24 February 2011 10:49:40 UTC