Schema for address
File: Data.xml <?xml version="1.0"?> <addr:address xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.java2s.com Schema.xsd" xmlns:addr="http://www.java2s.com" 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.java2s.com" xmlns:addr="http://www.java2s.com" 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>