XML/XML Schema/Useful Simple Type
Содержание
- 1 British postal codes
- 2 Canadian addresses require the name of a province, plus a postal code
- 3 Canadian postal codes are two fixed-length (3-character) codes separated by a single space
- 4 Constrain our dotted-quad to use 3-digit numbers in the range 0 to 255
- 5 Define xml schema for a styled letter
- 6 Domain Names
- 7 extended datatype for the US addresses:
- 8 Five-digit ZIP codes
- 9 Gender code based on xs:nonNegativeInteger
- 10 IP Addresses
- 11 IPv6 addresses are easier to describe using a simple regex
- 12 Mexican postal codes are simple five-digit numbers, with the first two digits representing a region, followed by three digits for zone and locality
- 13 Ocean states
- 14 Our addresses in Great Britain
- 15 Schema for address
- 16 Simple type for length Units
- 17 Simple type for temperature
- 18 Simple type for weight unit
- 19 SSN type with pattern
- 20 telephone numbers
- 21 Uniform Resource Identifiers
- 22 URI schema
- 23 Use simple strings for these various parts of a person"s name
- 24 US postal address
- 25 Zip code
British postal codes
<source lang="xml">
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.wbex.ru" xmlns="http://www.wbex.ru" elementFormDefault="qualified"> <xs:simpleType name="gbr_Postcode" > <xs:restriction base="xs:string" > <xs:pattern value="(([A-Z]{2}[0-9]{2})|([A-Z][0-9])| ([A-Z][0-9]{2})|([A-Z]{2}[0-9])) ([0-9][A-Z]{2})"/> </xs:restriction> </xs:simpleType>
</xs:schema>
</source>
Canadian addresses require the name of a province, plus a postal code
<source lang="xml">
File: Schema.xsd <?xml version="1.0" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="Address"> <xs:sequence> <xs:element name="Name" type="xs:string" /> <xs:element name="Street" type="xs:string" minOccurs="1" maxOccurs="3" /> <xs:element name="City" type="xs:string" /> </xs:sequence> </xs:complexType> <xs:element name="MailAddress" type="Address" /> <xs:element name="BillAddress" type="Address" /> <xs:simpleType name="CAN_PostalCode"> <xs:restriction base="xs:string"> <xs:pattern value="[A-Z]{1}[0-9]{1}[A-Z]{1} [0-9]{1}[A-Z]{1}[0-9]{1}" /> </xs:restriction> </xs:simpleType> <xs:complexType name="CAN_Address"> <xs:complexContent> <xs:extension base="Address"> <xs:sequence> <xs:element name="Province" type="xs:string" /> <xs:element name="PostalCode" type="CAN_PostalCode" /> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType>
</xs:schema> File: Data.xml <?xml version="1.0" ?> <MailAddress xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="Schema.xsd" xsi:type="CAN_Address"> <Name>name</Name> <Street>8185 Way</Street> <City>Vancouver</City> <Province>BC</Province> <PostalCode>A1A 1A1</PostalCode>
</MailAddress>
</source>
Canadian postal codes are two fixed-length (3-character) codes separated by a single space
<source lang="xml">
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.wbex.ru" xmlns="http://www.wbex.ru" elementFormDefault="qualified"> <xs:simpleType name="can_PostalCode" > <xs:restriction base="xs:string" > <xs:length value="7" /> <xs:pattern value="[A-Z][0-9][A-Z] [0-9][A-Z][0-9]" /> </xs:restriction> </xs:simpleType>
</xs:schema>
</source>
Constrain our dotted-quad to use 3-digit numbers in the range 0 to 255
<source lang="xml">
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.wbex.ru" xmlns="http://www.wbex.ru" elementFormDefault="qualified"> <xs:simpleType name="ipv4_Address"> <xs:restriction base="xs:string"> <xs:pattern value="(([0-9]{1,2} | [1][0-9]{2} | [2][0-4][0-9] | [2][5][0-5])\.){3} ([0-9]{1,2} | [1][0-9]{2} | [2][0-4][0-9] | [2][5][0-5])" /> </xs:restriction> </xs:simpleType>
</xs:schema>
</source>
Define xml schema for a styled letter
<source lang="xml">
File: Data.xml <?xml version="1.0"?> <letter xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="Schema.xsd"> <greeting><hello/> Bob!</greeting> <body> text <item/> text <price/> text text <arrivalDate/>. </body> <closing>Just closing.<lax/></closing>
</letter> File: Schema.xsd <?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="letter"> <xsd:complexType mixed="true"> <xsd:sequence> <xsd:element name="greeting"> <xsd:complexType mixed="true"> <xsd:choice> <xsd:element name="hello"/> <xsd:element name="hi"/> <xsd:element name="dear"/> </xsd:choice> </xsd:complexType> </xsd:element> <xsd:element name="body"> <xsd:complexType mixed="true"> <xsd:all> <xsd:element name="item"/> <xsd:element name="price"/> <xsd:element name="arrivalDate"/> </xsd:all> </xsd:complexType> </xsd:element> <xsd:element name="closing"> <xsd:complexType mixed="true"> <xsd:complexContent> <xsd:restriction base="xsd:anyType"> <xsd:sequence> <xsd:any processContents="lax"/> </xsd:sequence> </xsd:restriction> </xsd:complexContent> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element>
</xsd:schema>
</source>
Domain Names
<source lang="xml">
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.wbex.ru" xmlns="http://www.wbex.ru" elementFormDefault="qualified"> <xs:simpleType name="ip_DomainName"> <xs:restriction base="xs:string"> <xs:pattern value="((([A-Za-z0-9])|([A-Za-z0-9][A-Za-z0-9\-]* [A-Za-z0-9]))\.)+(com|edu|gov|mil|net|org)" /> </xs:restriction> </xs:simpleType>
</xs:schema>
</source>
extended datatype for the US addresses:
<source lang="xml">
File: Schema.xsd <?xml version="1.0" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="Address"> <xs:sequence> <xs:element name="Name" type="xs:string" /> <xs:element name="Street" type="xs:string" minOccurs="1" maxOccurs="3" /> <xs:element name="City" type="xs:string" /> </xs:sequence> </xs:complexType> <xs:element name="MailAddress" type="Address" /> <xs:element name="BillAddress" type="Address" /> <xs:simpleType name="USPS_StateCode"> <xs:restriction base="xs:string"> <xs:enumeration value="AL" /> <xs:enumeration value="AK" /> <xs:enumeration value="WY" /> </xs:restriction> </xs:simpleType> <xs:simpleType name="USPS_ZIP"> <xs:restriction base="xs:integer"> <xs:minInclusive value="01000" /> <xs:maxInclusive value="99999" /> </xs:restriction> </xs:simpleType> <xs:complexType name="USA_Address"> <xs:complexContent> <xs:extension base="Address"> <xs:sequence> <xs:element name="State" type="USPS_StateCode" /> <xs:element name="ZIP" type="USPS_ZIP" /> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType>
</xs:schema> File: Address.xsml <?xml version="1.0" ?> <MailAddress xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="Schema.xsd" xsi:type="USA_Address"> <Name>name</Name> <Street>123 St.</Street> <City>LA</City> <State>AL</State> <ZIP>11111</ZIP>
</MailAddress>
</source>
Five-digit ZIP codes
<source lang="xml">
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.wbex.ru" xmlns="http://www.wbex.ru" elementFormDefault="qualified"> <xs:simpleType name="usa_ZIP"> <xs:restriction base="xs:positiveInteger"> <xs:pattern value="[0-9]{5}(-[0-9]{4})?" /> </xs:restriction> </xs:simpleType>
</xs:schema>
</source>
Gender code based on xs:nonNegativeInteger
<source lang="xml">
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.wbex.ru" xmlns="http://www.wbex.ru" elementFormDefault="qualified"> <xs:simpleType name="realworld_GenderCode"> <xs:restriction base="xs:nonNegativeInteger"> <xs:enumeration value="0" /> <xs:enumeration value="1" /> <xs:enumeration value="2" /> <xs:enumeration value="3" /> <xs:enumeration value="4" /> <xs:enumeration value="5" /> <xs:enumeration value="9" /> </xs:restriction> </xs:simpleType>
</xs:schema>
</source>
IP Addresses
<source lang="xml">
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.wbex.ru" xmlns="http://www.wbex.ru" elementFormDefault="qualified"> <xs:simpleType name="dottedQuad"> <xs:restriction base="xs:string"> <xs:pattern value="([0-9]*\.){3}[0-9]*" /> </xs:restriction> </xs:simpleType>
</xs:schema>
</source>
IPv6 addresses are easier to describe using a simple regex
<source lang="xml">
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.wbex.ru" xmlns="http://www.wbex.ru" elementFormDefault="qualified"> <xs:simpleType name="ipv6_Address"> <xs:restriction base="xs:string"> <xs:pattern value="([A-Fa-f0-9]{1,4}:){7}[A-Fa-f0-9]{1,4}" /> </xs:restriction> </xs:simpleType>
</xs:schema>
</source>
Mexican postal codes are simple five-digit numbers, with the first two digits representing a region, followed by three digits for zone and locality
<source lang="xml">
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.wbex.ru" xmlns="http://www.wbex.ru" elementFormDefault="qualified"> <xs:simpleType name="mex_PostalCode" > <xs:restriction base="xs:positiveInteger" > <xs:length value="5" /> </xs:restriction> </xs:simpleType>
</xs:schema>
</source>
Ocean states
<source lang="xml">
<?xml version="1.0" ?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:simpleType name="oceanState"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="CA"/> <xsd:enumeration value="OR"/> <xsd:enumeration value="WA"/> <xsd:enumeration value="ME"/> <xsd:enumeration value="NH"/> <xsd:enumeration value="MA"/> <xsd:enumeration value="RI"/> <xsd:enumeration value="CT"/> <xsd:enumeration value="NY"/> <xsd:enumeration value="NJ"/> <xsd:enumeration value="DE"/> <xsd:enumeration value="MD"/> <xsd:enumeration value="VA"/> <xsd:enumeration value="NC"/> <xsd:enumeration value="SC"/> <xsd:enumeration value="GA"/> <xsd:enumeration value="FL"/> </xsd:restriction> </xsd:simpleType>
</xsd:schema>
</source>
Our addresses in Great Britain
<source lang="xml">
File: Schema.xsd <?xml version="1.0" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="Address"> <xs:sequence> <xs:element name="Name" type="xs:string" /> <xs:element name="Street" type="xs:string" minOccurs="1" maxOccurs="3" /> <xs:element name="City" type="xs:string" /> </xs:sequence> </xs:complexType> <xs:element name="MailAddress" type="Address" /> <xs:element name="BillAddress" type="Address" /> <xs:simpleType name="GBR_Postcode"> <xs:restriction base="xs:string"> <xs:pattern value="(([A-Z]{2}[0-9]{2})|([A-Z]{2}[0-9][A-Z]) |([A-Z][0-9]{2})) ([0-9][A-Z]{2})" /> </xs:restriction> </xs:simpleType> <xs:complexType name="GBR_Address"> <xs:complexContent> <xs:extension base="Address"> <xs:sequence> <xs:element name="County" type="xs:string" minOccurs="0" /> <xs:element name="Postcode" type="GBR_Postcode" /> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType>
</xs:schema>
File: Data.xml <?xml version="1.0" ?> <MailAddress xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="Schema.xsd" xsi:type="GBR_Address"> <Name>name</Name> <Street>street</Street> <Street>1102 Road</Street> <City>city</City> <Postcode>B27 6BH</Postcode>
</MailAddress>
</source>
Schema for address
<source lang="xml">
File: Data.xml <?xml version="1.0"?> <addr:address xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.wbex.ru Schema.xsd" xmlns:addr="http://www.wbex.ru" addr:language="en" addr:ssn="123-45-6789"> <fullName> <first>first</first> <middle>middle</middle> <last>last</last> </fullName> <contacts> <phone addr:location="home" addr:number="111.222.3333"/> </contacts>
</addr:address> File: Schema.xsd <?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.wbex.ru" xmlns:addr="http://www.wbex.ru" attributeFormDefault="qualified"> <xsd:element name="address"> <xsd:complexType> <xsd:sequence> <xsd:element name="fullName"> <xsd:complexType> <xsd:sequence> <xsd:element name="first" type="addr:nameComponent"/> <xsd:element name="middle" type="addr:nameList" minOccurs="0"/> <xsd:element name="last" type="addr:nameComponent"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="contacts" type="addr:contactsType" minOccurs="0"/> <xsd:element name="notes" minOccurs="0"> <xsd:complexType> <xsd:sequence> <xsd:any namespace="http://www.w3.org/1999/xhtml" minOccurs="0" maxOccurs="unbounded" processContents="skip"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> <xsd:attributeGroup ref="addr:nationality"/> <xsd:attribute name="ssn" type="addr:ssn"/> <xsd:anyAttribute namespace="http://www.w3.org/1999/xlink" processContents="skip"/> </xsd:complexType> </xsd:element> <xsd:complexType name="nameComponent"> <xsd:simpleContent> <xsd:extension base="addr:nameString"/> </xsd:simpleContent> </xsd:complexType> <xsd:complexType name="nameList"> <xsd:simpleContent> <xsd:extension base="addr:nameListType"/> </xsd:simpleContent> </xsd:complexType> <xsd:simpleType name="nameListType"> <xsd:list itemType="addr:nameString"/> </xsd:simpleType> <xsd:simpleType name="nameString"> <xsd:restriction base="xsd:string"> <xsd:maxLength value="50"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="ssn"> <xsd:restriction base="xsd:string"> <xsd:pattern value="\d\d\d-\d\d-\d\d\d\d"/> </xsd:restriction> </xsd:simpleType> <xsd:complexType name="contactsType"> <xsd:sequence> <xsd:element name="phone" minOccurs="0"> <xsd:complexType> <xsd:complexContent> <xsd:restriction base="xsd:anyType"> <xsd:attribute name="location"> <xsd:simpleType> <xsd:union memberTypes="addr:locationType xsd:NMTOKEN"/> </xsd:simpleType> </xsd:attribute> <xsd:attribute name="number" type="xsd:string"/> </xsd:restriction> </xsd:complexContent> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> <xsd:simpleType name="locationType"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="work"/> <xsd:enumeration value="home"/> <xsd:enumeration value="mobile"/> </xsd:restriction> </xsd:simpleType> <xsd:attributeGroup name="nationality"> <xsd:attribute name="language" type="xsd:language"/> </xsd:attributeGroup>
</xsd:schema>
</source>
Simple type for length Units
<source lang="xml">
<?xml version="1.0" ?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:simpleType name="lengthUnits"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="angstrom"/> <xsd:enumeration value="nm"/> <xsd:enumeration value="mm"/> <xsd:enumeration value="cm"/> <xsd:enumeration value="dm"/> <xsd:enumeration value="m"/> <xsd:enumeration value="km"/> <xsd:enumeration value="ym"/> <xsd:enumeration value="mil"/> <xsd:enumeration value="inch"/> <xsd:enumeration value="in"/> <xsd:enumeration value="feet"/> <xsd:enumeration value="ft"/> <xsd:enumeration value="yard"/> <xsd:enumeration value="yd"/> </xsd:restriction> </xsd:simpleType>
</xsd:schema>
</source>
Simple type for temperature
<source lang="xml">
<?xml version="1.0" ?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:simpleType name="temperatureUnits"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="celsius"/> <xsd:enumeration value="farenheit"/> <xsd:enumeration value="kelvin" /> </xsd:restriction> </xsd:simpleType>
</xsd:schema>
</source>
Simple type for weight unit
<source lang="xml">
<?xml version="1.0" ?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:simpleType name="weightUnits"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="gram"/> <xsd:enumeration value="kilogram"/> <xsd:enumeration value="kg"/> <xsd:enumeration value="ounce"/> <xsd:enumeration value="pound"/> <xsd:enumeration value="lb"/> <xsd:enumeration value="ton"/> <xsd:enumeration value="grain"/> <xsd:enumeration value="scruple"/> <xsd:enumeration value="carat"/> <xsd:enumeration value="pennyweight"/> <xsd:enumeration value="dram"/> <xsd:enumeration value="stone"/> <xsd:enumeration value="quarter"/> <xsd:enumeration value="slug"/> <xsd:enumeration value="metric ton"/> <xsd:enumeration value="tonne"/> <xsd:enumeration value="long ton"/> </xsd:restriction> </xsd:simpleType>
</xsd:schema>
</source>
SSN type with pattern
<source lang="xml">
File: Data.xml <?xml version="1.0"?> <addr:address xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.wbex.ru Schema.xsd" xmlns:addr="http://www.wbex.ru" addr:language="en" addr:ssn="123-45-6789"> <fullName> <first>first</first> <middle>middlecott</middle> <last>last</last> </fullName> <contacts> <phone addr:location="home" addr:number="111.222.3333"/> </contacts>
</addr:address> File: Schema.xsd <?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.wbex.ru" xmlns:addr="http://www.wbex.ru" attributeFormDefault="qualified"> <xsd:element name="address"> <xsd:complexType> <xsd:sequence> <xsd:element name="fullName"> <xsd:complexType> <xsd:sequence> <xsd:element name="first" type="addr:nameComponent"/> <xsd:element name="middle" type="addr:nameComponent" minOccurs="0"/> <xsd:element name="last" type="addr:nameComponent"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="contacts" type="addr:contactsType" minOccurs="0"/> </xsd:sequence> <xsd:attributeGroup ref="addr:nationality"/> <xsd:attribute name="ssn" type="addr:ssn"/> </xsd:complexType> </xsd:element> <xsd:complexType name="nameComponent"> <xsd:simpleContent> <xsd:extension base="addr:nameString"/> </xsd:simpleContent> </xsd:complexType> <xsd:simpleType name="nameString"> <xsd:restriction base="xsd:string"> <xsd:maxLength value="50"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="ssn"> <xsd:restriction base="xsd:string"> <xsd:pattern value="\d\d\d-\d\d-\d\d\d\d"/> </xsd:restriction> </xsd:simpleType> <xsd:complexType name="contactsType"> <xsd:sequence> <xsd:element name="phone" minOccurs="0"> <xsd:complexType> <xsd:complexContent> <xsd:restriction base="xsd:anyType"> <xsd:attribute name="location" type="addr:locationType"/> <xsd:attribute name="number" type="xsd:string"/> </xsd:restriction> </xsd:complexContent> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> <xsd:simpleType name="locationType"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="work"/> <xsd:enumeration value="home"/> <xsd:enumeration value="mobile"/> </xsd:restriction> </xsd:simpleType> <xsd:attributeGroup name="nationality"> <xsd:attribute name="language" type="xsd:language"/> </xsd:attributeGroup>
</xsd:schema>
</source>
telephone numbers
<source lang="xml">
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.wbex.ru" xmlns="http://www.wbex.ru" elementFormDefault="qualified"> <xs:simpleType name="nanp_GenericPhoneNumber"> <xs:restriction base="xs:positiveInteger"> <xs:pattern value="[2-9](([0-9]{6})|([0-9]{9}))" /> </xs:restriction> </xs:simpleType> <xs:element name="PhoneNumber" type="nanp_GenericPhoneNumber"/>
</xs:schema>
XML data that conforms to this description might look something like this: <PhoneNumber>3135551212</PhoneNumber>
</source>
Uniform Resource Identifiers
<source lang="xml">
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.wbex.ru" xmlns="http://www.wbex.ru" elementFormDefault="qualified"> <xs:simpleType name="uri_Scheme"> <xs:restriction base="xs:string"> <xs:pattern value="[A-Za-z]([A-Za-z0-9\+\-\.])*" /> </xs:restriction> </xs:simpleType>
</xs:schema>
</source>
URI schema
<source lang="xml">
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.wbex.ru" xmlns="http://www.wbex.ru" elementFormDefault="qualified"> <xs:simpleType name="uri_Scheme"> <xs:restriction base="xs:string"> <xs:enumeration value="ftp" /> <xs:enumeration value="http" /> <xs:enumeration value="mailto" /> <xs:enumeration value="news" /> <xs:enumeration value="telnet" /> <xs:enumeration value="urn" /> </xs:restriction> </xs:simpleType>
</xs:schema>
</source>
Use simple strings for these various parts of a person"s name
<source lang="xml">
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.wbex.ru" xmlns="http://www.wbex.ru" elementFormDefault="qualified"> <xs:element name="PersonName" > <xs:complexType> <xs:choice> <xs:element name="SingleName" type="xs:string" /> <xs:sequence> <xs:element name="Prefix" type="xs:string" minOccurs="0" /> <xs:element name="GivenName" type="xs:string" /> <xs:element name="MiddleName" type="xs:string" minOccurs="0" maxOccurs="unbounded" /> <xs:element name="FamilyName" type="xs:string" /> <xs:element name="Suffix" type="xs:string" minOccurs="0" /> </xs:sequence> </xs:choice> </xs:complexType> </xs:element>
</xs:schema>
Some examples of XML data that conform to this datatype include: <PersonName>
<Prefix>Mr</Prefix> <GivenName>J</GivenName> <MiddleName>Q</MiddleName> <FamilyName>Public</FamilyName> <Suffix>Jr</Suffix>
</PersonName> <PersonName>
<GivenName>Jane</GivenName> <FamilyName>Doe</FamilyName>
</PersonName> <PersonName>
<SingleName>Madonna</SingleName>
</PersonName>
</source>
US postal address
<source lang="xml">
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.wbex.ru" xmlns="http://www.wbex.ru" elementFormDefault="qualified"> <xs:complexType name="postalAddress"> <xs:sequence> <xs:element name="Street" type="xs:string" maxOccurs="4" /> <xs:element name="City" type="xs:string" /> <xs:element name="State" type="xs:string" /> <xs:element name="ZIP" type="xs:string" /> <xs:element name="Country" type="xs:string" /> </xs:sequence> </xs:complexType> <xs:element name="Address" type="postalAddress" />
</xs:schema>
</source>
Zip code
<source lang="xml">
<?xml version="1.0" ?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:simpleType name="zipcode"> <xsd:restriction base="xsd:string"> <xsd:pattern value="[0-9]{5}(-[0-9]{4})?"/> </xsd:restriction> </xsd:simpleType>
</xsd:schema>
</source>