rfc7852v3.txt   rfc7852.txt 
Internet Engineering Task Force (IETF) R. Gellens Internet Engineering Task Force (IETF) R. Gellens
Request for Comments: 7852 Request for Comments: 7852
Updates: 6443, 6881 B. Rosen Updates: 6443, 6881 B. Rosen
Category: Standards Track NeuStar Category: Standards Track NeuStar
ISSN: 2070-1721 H. Tschofenig ISSN: 2070-1721 H. Tschofenig
R. Marshall R. Marshall
TeleCommunication Systems, Inc. TeleCommunication Systems, Inc.
J. Winterbottom J. Winterbottom
April 2016 June 2016
Additional Data Related to an Emergency Call Additional Data Related to an Emergency Call
Abstract Abstract
When an emergency call is sent to a Public Safety Answering Point When an emergency call is sent to a Public Safety Answering Point
(PSAP), the originating device, the access network provider to which (PSAP), the originating device, the access network provider to which
the device is connected, and all service providers in the path of the the device is connected, and all service providers in the path of the
call have information about the call, the caller, or the location, call have information about the call, the caller, or the location,
which is helpful for the PSAP to have in handling the emergency. which is helpful for the PSAP to have in handling the emergency.
skipping to change at page 3, line 29 skipping to change at page 3, line 29
7. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 40 7. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 40
8. XML Schemas . . . . . . . . . . . . . . . . . . . . . . . . . 53 8. XML Schemas . . . . . . . . . . . . . . . . . . . . . . . . . 53
8.1. EmergencyCallData.ProviderInfo XML Schema . . . . . . . . 53 8.1. EmergencyCallData.ProviderInfo XML Schema . . . . . . . . 53
8.2. EmergencyCallData.ServiceInfo XML Schema . . . . . . . . 55 8.2. EmergencyCallData.ServiceInfo XML Schema . . . . . . . . 55
8.3. EmergencyCallData.DeviceInfo XML Schema . . . . . . . . . 56 8.3. EmergencyCallData.DeviceInfo XML Schema . . . . . . . . . 56
8.4. EmergencyCallData.SubscriberInfo XML Schema . . . . . . . 58 8.4. EmergencyCallData.SubscriberInfo XML Schema . . . . . . . 58
8.5. EmergencyCallData.Comment XML Schema . . . . . . . . . . 60 8.5. EmergencyCallData.Comment XML Schema . . . . . . . . . . 60
8.6. provided-by XML Schema . . . . . . . . . . . . . . . . . 61 8.6. provided-by XML Schema . . . . . . . . . . . . . . . . . 61
9. Security Considerations . . . . . . . . . . . . . . . . . . . 62 9. Security Considerations . . . . . . . . . . . . . . . . . . . 62
10. Privacy Considerations . . . . . . . . . . . . . . . . . . . 64 10. Privacy Considerations . . . . . . . . . . . . . . . . . . . 64
11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 67 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 66
11.1. Emergency Call Additional Data Registry . . . . . . . . 67 11.1. Emergency Call Additional Data Registry . . . . . . . . 67
11.1.1. Provider ID Series Registry . . . . . . . . . . . . 67 11.1.1. Provider ID Series Registry . . . . . . . . . . . . 67
11.1.2. Service Environment Registry . . . . . . . . . . . . 68 11.1.2. Service Environment Registry . . . . . . . . . . . . 68
11.1.3. Service Type Registry . . . . . . . . . . . . . . . 68 11.1.3. Service Type Registry . . . . . . . . . . . . . . . 68
11.1.4. Service Mobility Registry . . . . . . . . . . . . . 68 11.1.4. Service Mobility Registry . . . . . . . . . . . . . 68
11.1.5. Type of Provider Registry . . . . . . . . . . . . . 69 11.1.5. Type of Provider Registry . . . . . . . . . . . . . 69
11.1.6. Device Classification Registry . . . . . . . . . . . 69 11.1.6. Device Classification Registry . . . . . . . . . . . 69
11.1.7. Device ID Type Registry . . . . . . . . . . . . . . 69 11.1.7. Device ID Type Registry . . . . . . . . . . . . . . 69
11.1.8. Device/Service Data Type Registry . . . . . . . . . 70 11.1.8. Device/Service Data Type Registry . . . . . . . . . 70
11.1.9. Emergency Call Data Types Registry . . . . . . . . . 70 11.1.9. Emergency Call Data Types Registry . . . . . . . . . 70
11.2. 'EmergencyCallData' Purpose Parameter Value . . . . . . 72 11.2. 'EmergencyCallData' Purpose Parameter Value . . . . . . 71
11.3. URN Sub-Namespace Registration for <provided-by> 11.3. URN Sub-Namespace Registration for <provided-by>
Registry Entry . . . . . . . . . . . . . . . . . . . . . 72 Registry Entry . . . . . . . . . . . . . . . . . . . . . 72
11.4. MIME Registrations . . . . . . . . . . . . . . . . . . . 72 11.4. MIME Registrations . . . . . . . . . . . . . . . . . . . 72
11.4.1. MIME Content-Type Registration for 11.4.1. MIME Content-Type Registration for
'application/EmergencyCallData.ProviderInfo+xml' . . 72 'application/EmergencyCallData.ProviderInfo+xml' . . 72
11.4.2. MIME Content-Type Registration for 11.4.2. MIME Content-Type Registration for
'application/EmergencyCallData.ServiceInfo+xml' . . 73 'application/EmergencyCallData.ServiceInfo+xml' . . 73
11.4.3. MIME Content-Type Registration for 11.4.3. MIME Content-Type Registration for
'application/EmergencyCallData.DeviceInfo+xml' . . . 74 'application/EmergencyCallData.DeviceInfo+xml' . . . 74
11.4.4. MIME Content-Type Registration for 11.4.4. MIME Content-Type Registration for
'application/EmergencyCallData.SubscriberInfo+xml' . 75 'application/EmergencyCallData.SubscriberInfo+xml' . 75
11.4.5. MIME Content-Type Registration for 11.4.5. MIME Content-Type Registration for
'application/EmergencyCallData.Comment+xml' . . . . 76 'application/EmergencyCallData.Comment+xml' . . . . 76
11.5. URN Sub-Namespace Registration . . . . . . . . . . . . . 77 11.5. URN Sub-Namespace Registration . . . . . . . . . . . . . 77
11.5.1. Registration for 11.5.1. Registration for
urn:ietf:params:xml:ns:EmergencyCallData . . . . . . 78 urn:ietf:params:xml:ns:EmergencyCallData . . . . . . 77
11.5.2. Registration for 11.5.2. Registration for
urn:ietf:params:xml:ns:EmergencyCallData:ProviderInf urn:ietf:params:xml:ns:EmergencyCallData:ProviderInf
o . . . . . . . . . . . . . . . . . . . . . . . . . 78 o . . . . . . . . . . . . . . . . . . . . . . . . . 78
11.5.3. Registration for 11.5.3. Registration for
urn:ietf:params:xml:ns:EmergencyCallData:ServiceInfo 79 urn:ietf:params:xml:ns:EmergencyCallData:ServiceInfo 79
11.5.4. Registration for 11.5.4. Registration for
urn:ietf:params:xml:ns:EmergencyCallData:DeviceInfo 80 urn:ietf:params:xml:ns:EmergencyCallData:DeviceInfo 80
11.5.5. Registration for 11.5.5. Registration for
urn:ietf:params:xml:ns:EmergencyCallData:SubscriberI urn:ietf:params:xml:ns:EmergencyCallData:SubscriberI
nfo . . . . . . . . . . . . . . . . . . . . . . . . 81 nfo . . . . . . . . . . . . . . . . . . . . . . . . 81
11.5.6. Registration for 11.5.6. Registration for
urn:ietf:params:xml:ns:EmergencyCallData:Comment . . 82 urn:ietf:params:xml:ns:EmergencyCallData:Comment . . 82
11.6. Schema Registrations . . . . . . . . . . . . . . . . . . 83 11.6. Schema Registrations . . . . . . . . . . . . . . . . . . 83
11.7. vCard Parameter Value Registration . . . . . . . . . . . 84 11.7. vCard Parameter Value Registration . . . . . . . . . . . 84
12. References . . . . . . . . . . . . . . . . . . . . . . . . . 84 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 84
12.1. Normative References . . . . . . . . . . . . . . . . . . 84 12.1. Normative References . . . . . . . . . . . . . . . . . . 84
12.2. Informative References . . . . . . . . . . . . . . . . . 86 12.2. Informative References . . . . . . . . . . . . . . . . . 86
Appendix A. XML Schema for vCard/xCard . . . . . . . . . . . . . 89 Appendix A. XML Schema for vCard/xCard . . . . . . . . . . . . . 89
Appendix B. XML Validation . . . . . . . . . . . . . . . . . . . 112 Appendix B. XML Validation . . . . . . . . . . . . . . . . . . . 111
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 112 Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 112
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 113 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 112
1. Introduction 1. Introduction
When an IP-based emergency call is initiated, a rich set of data from When an IP-based emergency call is initiated, a rich set of data from
multiple data sources is conveyed to the Public Safety Answering multiple data sources is conveyed to the Public Safety Answering
Point (PSAP). This data includes information about the calling party Point (PSAP). This data includes information about the calling party
identity, the multimedia capabilities of the device, the request for identity, the multimedia capabilities of the device, the request for
emergency services, location information, and metadata about the emergency services, location information, and metadata about the
sources of the data. In addition, the device, the access network sources of the data. In addition, the device, the access network
provider, and any service provider in the call path has even more provider, and any service provider in the call path has even more
skipping to change at page 59, line 4 skipping to change at page 59, line 4
<xs:any namespace="##other" processContents="lax" <xs:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/> minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:schema> </xs:schema>
Figure 21: EmergencyCallData.DeviceInfo XML Schema Figure 21: EmergencyCallData.DeviceInfo XML Schema
8.4. EmergencyCallData.SubscriberInfo XML Schema 8.4. EmergencyCallData.SubscriberInfo XML Schema
<?xml version="1.0"?> <?xml version="1.0"?>
<xs:schema <xs:schema
targetNamespace= targetNamespace=
"urn:ietf:params:xml:ns:EmergencyCallData:SubscriberInfo" "urn:ietf:params:xml:ns:EmergencyCallData:SubscriberInfo"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:sub= xmlns:sub=
"urn:ietf:params:xml:ns:EmergencyCallData:SubscriberInfo" "urn:ietf:params:xml:ns:EmergencyCallData:SubscriberInfo"
xmlns:xc="urn:ietf:params:xml:ns:vcard-4.0" xmlns:xc="urn:ietf:params:xml:ns:vcard-4.0"
xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xml="http://www.w3.org/XML/1998/namespace"
elementFormDefault="qualified" elementFormDefault="qualified"
attributeFormDefault="unqualified"> attributeFormDefault="unqualified">
<xs:import namespace="http://www.w3.org/XML/1998/namespace" <xs:import namespace="http://www.w3.org/XML/1998/namespace"
schemaLocation="http://www.w3.org/2001/xml.xsd"/> schemaLocation="http://www.w3.org/2001/xml.xsd"/>
<xs:import namespace="urn:ietf:params:xml:ns:vcard-4.0" <xs:import namespace="urn:ietf:params:xml:ns:vcard-4.0"
schemaLocation="vcard.xsd"/> schemaLocation="vcard.xsd"/>
<xs:element name="EmergencyCallData.SubscriberInfo" <xs:element name="EmergencyCallData.SubscriberInfo"
type="sub:SubscriberInfoType"/> type="sub:SubscriberInfoType"/>
<xs:complexType name="SubscriberInfoType"> <xs:complexType name="SubscriberInfoType">
<xs:sequence> <xs:sequence>
<xs:element name="DataProviderReference" type="xs:token" <xs:element name="DataProviderReference" type="xs:token"
minOccurs="1" maxOccurs="1"/> minOccurs="1" maxOccurs="1"/>
<xs:element name="SubscriberData"> <xs:element name="SubscriberData">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:element ref="xc:vcard" <xs:element ref="xc:vcard"
maxOccurs="unbounded"/> maxOccurs="unbounded"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:any namespace="##other" processContents="lax" <xs:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/> minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence> </xs:sequence>
<xs:attribute name="privacyRequested" <xs:attribute name="privacyRequested"
type="xs:boolean" use="required"/> type="xs:boolean" use="required"/>
</xs:complexType> </xs:complexType>
</xs:schema> </xs:schema>
Figure 22: EmergencyCallData.SubscriberInfo XML Schema Figure 22: EmergencyCallData.SubscriberInfo XML Schema
8.5. EmergencyCallData.Comment XML Schema 8.5. EmergencyCallData.Comment XML Schema
<?xml version="1.0"?> <?xml version="1.0"?>
<xs:schema <xs:schema
targetNamespace= targetNamespace=
"urn:ietf:params:xml:ns:EmergencyCallData:Comment" "urn:ietf:params:xml:ns:EmergencyCallData:Comment"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema"
skipping to change at page 61, line 11 skipping to change at page 61, line 11
</xs:schema> </xs:schema>
Figure 23: EmergencyCallData.Comment XML Schema Figure 23: EmergencyCallData.Comment XML Schema
8.6. provided-by XML Schema 8.6. provided-by XML Schema
This section defines the provided-by schema. This section defines the provided-by schema.
<?xml version="1.0"?> <?xml version="1.0"?>
<xs:schema <xs:schema
targetNamespace= targetNamespace="urn:ietf:params:xml:ns:EmergencyCallData"
"urn:ietf:params:xml:ns:EmergencyCallData" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ad="urn:ietf:params:xml:ns:EmergencyCallData"
xmlns:ad="urn:ietf:params:xml:ns:EmergencyCallData" xmlns:xml="http://www.w3.org/XML/1998/namespace"
xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:pi="urn:ietf:params:xml:ns:EmergencyCallData:ProviderInfo"
xmlns:pi="urn:ietf:params:xml:ns:EmergencyCallData:ProviderInfo" xmlns:svc="urn:ietf:params:xml:ns:EmergencyCallData:ServiceInfo"
xmlns:svc="urn:ietf:params:xml:ns:EmergencyCallData:ServiceInfo" xmlns:dev="urn:ietf:params:xml:ns:EmergencyCallData:DeviceInfo"
xmlns:dev="urn:ietf:params:xml:ns:EmergencyCallData:DeviceInfo" xmlns:sub="urn:ietf:params:xml:ns:EmergencyCallData:SubscriberInfo"
xmlns:sub= xmlns:com="urn:ietf:params:xml:ns:EmergencyCallData:Comment"
"urn:ietf:params:xml:ns:EmergencyCallData:SubscriberInfo" elementFormDefault="qualified"
xmlns:com="urn:ietf:params:xml:ns:EmergencyCallData:Comment" attributeFormDefault="unqualified">
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:import <xs:import
namespace="urn:ietf:params:xml:ns:EmergencyCallData:ProviderInfo" namespace="urn:ietf:params:xml:ns:EmergencyCallData:ProviderInfo"
schemaLocation="ProviderInfo.xsd"/> schemaLocation="ProviderInfo.xsd"/>
<xs:import <xs:import
namespace="urn:ietf:params:xml:ns:EmergencyCallData:ServiceInfo" namespace="urn:ietf:params:xml:ns:EmergencyCallData:ServiceInfo"
schemaLocation="ServiceInfo.xsd"/> schemaLocation="ServiceInfo.xsd"/>
<xs:import <xs:import
namespace="urn:ietf:params:xml:ns:EmergencyCallData:DeviceInfo" namespace="urn:ietf:params:xml:ns:EmergencyCallData:DeviceInfo"
schemaLocation="DeviceInfo.xsd"/> schemaLocation="DeviceInfo.xsd"/>
<xs:import <xs:import
namespace="urn:ietf:params:xml:ns:EmergencyCallData:SubscriberInfo" namespace="urn:ietf:params:xml:ns:EmergencyCallData:SubscriberInfo"
schemaLocation="SubscriberInfo.xsd"/> schemaLocation="SubscriberInfo.xsd"/>
<xs:import <xs:import
namespace="urn:ietf:params:xml:ns:EmergencyCallData:Comment" namespace="urn:ietf:params:xml:ns:EmergencyCallData:Comment"
schemaLocation="Comment.xsd"/> schemaLocation="Comment.xsd"/>
<xs:element name="EmergencyCallDataReference" type="ad:ByRefType"/> <xs:element name="EmergencyCallDataReference" type="ad:ByRefType"/>
<xs:element name="EmergencyCallDataValue" <xs:element name="EmergencyCallDataValue"
type="ad:EmergencyCallDataValueType"/> type="ad:EmergencyCallDataValueType"/>
<!-- Additional Data By Reference --> <!-- Additional Data By Reference -->
<xs:complexType name="ByRefType"> <xs:complexType name="ByRefType">
<xs:sequence> <xs:sequence>
<xs:any namespace="##other" processContents="lax" <xs:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/> minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence> </xs:sequence>
<xs:attribute name="purpose" type="xs:token" use="required"/> <xs:attribute name="purpose" type="xs:token" use="required"/>
<xs:attribute name="ref" type="xs:anyURI" use="required"/> <xs:attribute name="ref" type="xs:anyURI" use="required"/>
</xs:complexType> </xs:complexType>
<!-- Additional Data By Value --> <!-- Additional Data By Value -->
<xs:complexType name="EmergencyCallDataValueType"> <xs:complexType name="EmergencyCallDataValueType">
<xs:sequence> <xs:sequence>
<xs:element name="EmergencyCallData.ProviderInfo" <xs:element name="EmergencyCallData.ProviderInfo"
type="pi:ProviderInfoType" minOccurs="0" type="pi:ProviderInfoType" minOccurs="0"
maxOccurs="unbounded"/> maxOccurs="unbounded"/>
<xs:element name="EmergencyCallData.ServiceInfo" <xs:element name="EmergencyCallData.ServiceInfo"
type="svc:ServiceInfoType" minOccurs="0" type="svc:ServiceInfoType" minOccurs="0"
maxOccurs="unbounded"/> maxOccurs="unbounded"/>
<xs:element name="EmergencyCallData.DeviceInfo" <xs:element name="EmergencyCallData.DeviceInfo"
type="dev:DeviceInfoType" minOccurs="0" type="dev:DeviceInfoType" minOccurs="0"
maxOccurs="unbounded"/> maxOccurs="unbounded"/>
<xs:element name="EmergencyCallData.SubscriberInfo" <xs:element name="EmergencyCallData.SubscriberInfo"
type="sub:SubscriberInfoType" minOccurs="0" type="sub:SubscriberInfoType" minOccurs="0"
maxOccurs="unbounded"/> maxOccurs="unbounded"/>
<xs:element name="EmergencyCallData.Comment" <xs:element name="EmergencyCallData.Comment"
type="com:CommentType" minOccurs="0" type="com:CommentType" minOccurs="0"
maxOccurs="unbounded"/> maxOccurs="unbounded"/>
<xs:any namespace="##other" processContents="lax" <xs:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/> minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:schema> </xs:schema>
Figure 24: provided-by XML Schema Figure 24: provided-by XML Schema
9. Security Considerations 9. Security Considerations
The data structures described in this document contain information The data structures described in this document contain information
usually considered private. When information is provided by value, usually considered private. When information is provided by value,
entities that are a party to the SIP signaling (such as proxy servers entities that are a party to the SIP signaling (such as proxy servers
and back-to-back user agents) will have access to it and need to and back-to-back user agents) will have access to it and need to
skipping to change at page 89, line 25 skipping to change at page 89, line 25
Appendix A. XML Schema for vCard/xCard Appendix A. XML Schema for vCard/xCard
This section contains the vCard/xCard XML schema version of the Relax This section contains the vCard/xCard XML schema version of the Relax
NG schema defined in RFC 6351 [RFC6351] for use with the XML schemas NG schema defined in RFC 6351 [RFC6351] for use with the XML schemas
defined in this document. In addition to mapping the Relax NG schema defined in this document. In addition to mapping the Relax NG schema
to an XML schema, this specification applies an erratum raised for to an XML schema, this specification applies an erratum raised for
RFC 6351 regarding the type definition; see RFC Erratum ID 3047 RFC 6351 regarding the type definition; see RFC Erratum ID 3047
[Err3047]. [Err3047].
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<xs:schema <xs:schema
targetNamespace="urn:ietf:params:xml:ns:vcard-4.0" targetNamespace="urn:ietf:params:xml:ns:vcard-4.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:ns1="urn:ietf:params:xml:ns:vcard-4.0" xmlns:ns1="urn:ietf:params:xml:ns:vcard-4.0"
elementFormDefault="qualified"> elementFormDefault="qualified">
<!-- <!--
3.3
iana-token = xsd:string { pattern = "[a-zA-Z0-9-]+" }
x-name = xsd:string { pattern = "x-[a-zA-Z0-9-]+" }
-->
<xs:simpleType name="iana-token">
<xs:annotation>
<xs:documentation>Section 3.3: vCard Format Specification
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="x-name">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<!--
4.1 3.3
--> iana-token = xsd:string { pattern = "[a-zA-Z0-9-]+" }
<xs:element name="text" type="xs:string"/> x-name = xsd:string { pattern = "x-[a-zA-Z0-9-]+" }
<xs:group name="value-text-list"> -->
<xs:sequence> <xs:simpleType name="iana-token">
<xs:element ref="ns1:text" maxOccurs="unbounded"/> <xs:annotation>
</xs:sequence> <xs:documentation>Section 3.3: vCard Format Specification
</xs:group> </xs:documentation>
<!-- 4.2 --> </xs:annotation>
<xs:element name="uri" type="xs:anyURI"/> <xs:restriction base="xs:string"/>
<!-- 4.3.1 --> </xs:simpleType>
<xs:element name="date" <xs:simpleType name="x-name">
substitutionGroup="ns1:value-date-and-or-time"> <xs:restriction base="xs:string"/>
<xs:simpleType> </xs:simpleType>
<xs:restriction base="xs:string"> <!--
<xs:pattern
value="\d{8}|\d{4}-\d\d|--\d\d(\d\d)?|---\d\d"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<!-- 4.3.2 -->
<xs:element name="time"
substitutionGroup="ns1:value-date-and-or-time">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value=
"(\d\d(\d\d(\d\d)?)?|-\d\d(\d\d?)|--\d\d)(Z|[+\-]\d\d(\d\d)?)?"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<!-- 4.3.3 -->
<xs:element name="date-time"
substitutionGroup="ns1:value-date-and-or-time">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value=
"(\d{8}|--\d{4}|---\d\d)T\d\d(\d\d(\d\d)?)?(Z|[+\-]\d\d(\d\d)?)?"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<!-- 4.3.4 -->
<xs:element name="value-date-and-or-time" abstract="true"/>
<!-- 4.3.5 -->
<xs:complexType name="value-timestamp">
<xs:sequence>
<xs:element ref="ns1:timestamp"/>
</xs:sequence>
</xs:complexType>
<xs:element name="timestamp">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="\d{8}T\d{6}(Z|[+\-]\d\d(\d\d)?)?"/>
</xs:restriction> 4.1
</xs:simpleType> -->
</xs:element> <xs:element name="text" type="xs:string"/>
<!-- 4.4 --> <xs:group name="value-text-list">
<xs:element name="boolean" type="xs:boolean"/> <xs:sequence>
<!-- 4.5 --> <xs:element ref="ns1:text" maxOccurs="unbounded"/>
<xs:element name="integer" type="xs:integer"/> </xs:sequence>
<!-- 4.6 --> </xs:group>
<xs:element name="float" type="xs:float"/> <!-- 4.2 -->
<!-- 4.7 --> <xs:element name="uri" type="xs:anyURI"/>
<xs:element name="utc-offset"> <!-- 4.3.1 -->
<xs:simpleType> <xs:element name="date"
<xs:restriction base="xs:string"> substitutionGroup="ns1:value-date-and-or-time">
<xs:pattern value="[+\-]\d\d(\d\d)?"/> <xs:simpleType>
</xs:restriction> <xs:restriction base="xs:string">
</xs:simpleType> <xs:pattern
</xs:element> value="\d{8}|\d{4}-\d\d|--\d\d(\d\d)?|---\d\d"/>
<!-- 4.8 --> </xs:restriction>
<xs:element name="language-tag"> </xs:simpleType>
<xs:simpleType> </xs:element>
<xs:restriction base="xs:string"> <!-- 4.3.2 -->
<xs:pattern value= <xs:element name="time"
"([a-z]{2,3}((-[a-z]{3}){0,3})?|[a-z]{4,8})(-[a-z]{4})? substitutionGroup="ns1:value-date-and-or-time">
(-([a-z]{2}|\d{3}))?(-([0-9a-z]{5,8}|\d[0-9a-z]{3}))* <xs:simpleType>
(-[0-9a-wyz](-[0-9a-z]{2,8})+)*(-x(-[0-9a-z]{1,8})+)? <xs:restriction base="xs:string">
|x(-[0-9a-z]{1,8})+|[a-z]{1,3}(-[0-9a-z]{2,8}){1,2}"/> <xs:pattern value=
</xs:restriction> "(\d\d(\d\d(\d\d)?)?|-\d\d(\d\d?)|--\d\d)(Z|[+\-]\d\d(\d\d)?)?"/>
</xs:simpleType> </xs:restriction>
</xs:element> </xs:simpleType>
<!-- </xs:element>
<!-- 4.3.3 -->
<xs:element name="date-time"
substitutionGroup="ns1:value-date-and-or-time">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value=
"(\d{8}|--\d{4}|---\d\d)T\d\d(\d\d(\d\d)?)?(Z|[+\-]\d\d(\d\d)?)?"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<!-- 4.3.4 -->
<xs:element name="value-date-and-or-time" abstract="true"/>
<!-- 4.3.5 -->
<xs:complexType name="value-timestamp">
<xs:sequence>
<xs:element ref="ns1:timestamp"/>
</xs:sequence>
</xs:complexType>
<xs:element name="timestamp">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="\d{8}T\d{6}(Z|[+\-]\d\d(\d\d)?)?"/>
5.1 </xs:restriction>
--> </xs:simpleType>
<xs:group name="param-language"> </xs:element>
<xs:annotation> <!-- 4.4 -->
<xs:documentation>Section 5: Parameters</xs:documentation> <xs:element name="boolean" type="xs:boolean"/>
</xs:annotation> <!-- 4.5 -->
<xs:sequence> <xs:element name="integer" type="xs:integer"/>
<xs:element ref="ns1:language" minOccurs="0"/> <!-- 4.6 -->
</xs:sequence> <xs:element name="float" type="xs:float"/>
</xs:group> <!-- 4.7 -->
<xs:element name="language"> <xs:element name="utc-offset">
<xs:complexType> <xs:simpleType>
<xs:sequence> <xs:restriction base="xs:string">
<xs:element ref="ns1:language-tag"/> <xs:pattern value="[+\-]\d\d(\d\d)?"/>
</xs:sequence> </xs:restriction>
</xs:complexType> </xs:simpleType>
</xs:element> </xs:element>
<!-- 5.2 --> <!-- 4.8 -->
<xs:group name="param-pref"> <xs:element name="language-tag">
<xs:sequence> <xs:simpleType>
<xs:element ref="ns1:pref" minOccurs="0"/> <xs:restriction base="xs:string">
</xs:sequence> <xs:pattern value=
</xs:group> "([a-z]{2,3}((-[a-z]{3}){0,3})?|[a-z]{4,8})(-[a-z]{4})?
<xs:element name="pref"> (-([a-z]{2}|\d{3}))?(-([0-9a-z]{5,8}|\d[0-9a-z]{3}))*
<xs:complexType> (-[0-9a-wyz](-[0-9a-z]{2,8})+)*(-x(-[0-9a-z]{1,8})+)?
<xs:sequence> |x(-[0-9a-z]{1,8})+|[a-z]{1,3}(-[0-9a-z]{2,8}){1,2}"/>
<xs:element name="integer"> </xs:restriction>
<xs:simpleType> </xs:simpleType>
<xs:restriction base="xs:integer"> </xs:element>
<xs:minInclusive value="1"/> <!--
<xs:maxInclusive value="100"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- 5.4 -->
<xs:group name="param-altid">
<xs:sequence>
<xs:element ref="ns1:altid" minOccurs="0"/>
</xs:sequence>
</xs:group>
<xs:element name="altid">
<xs:complexType>
<xs:sequence>
<xs:element ref="ns1:text"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- 5.5 -->
<xs:group name="param-pid">
<xs:sequence>
<xs:element ref="ns1:pid" minOccurs="0"/>
</xs:sequence>
</xs:group>
<xs:element name="pid">
<xs:complexType>
<xs:sequence>
<xs:element name="text" maxOccurs="unbounded">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="\d+(\.\d+)?"/>
</xs:restriction>
</xs:simpleType>
</xs:element> 5.1
</xs:sequence> -->
</xs:complexType> <xs:group name="param-language">
</xs:element> <xs:annotation>
<!-- 5.6 --> <xs:documentation>Section 5: Parameters</xs:documentation>
<xs:group name="param-type"> </xs:annotation>
<xs:sequence> <xs:sequence>
<xs:element ref="ns1:type" minOccurs="0"/> <xs:element ref="ns1:language" minOccurs="0"/>
</xs:sequence> </xs:sequence>
</xs:group> </xs:group>
<xs:element name="type"> <xs:element name="language">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:element name="text" maxOccurs="unbounded"> <xs:element ref="ns1:language-tag"/>
<xs:simpleType> </xs:sequence>
<xs:restriction base="xs:token"> </xs:complexType>
<xs:enumeration value="work"/> </xs:element>
<xs:enumeration value="home"/> <!-- 5.2 -->
</xs:restriction> <xs:group name="param-pref">
</xs:simpleType> <xs:sequence>
</xs:element> <xs:element ref="ns1:pref" minOccurs="0"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:group>
</xs:element> <xs:element name="pref">
<!-- 5.7 --> <xs:complexType>
<xs:group name="param-mediatype"> <xs:sequence>
<xs:sequence> <xs:element name="integer">
<xs:element ref="ns1:mediatype" minOccurs="0"/> <xs:simpleType>
</xs:sequence> <xs:restriction base="xs:integer">
</xs:group> <xs:minInclusive value="1"/>
<xs:element name="mediatype"> <xs:maxInclusive value="100"/>
<xs:complexType> </xs:restriction>
<xs:sequence> </xs:simpleType>
<xs:element ref="ns1:text"/> </xs:element>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<!-- 5.8 --> <!-- 5.4 -->
<xs:group name="param-calscale"> <xs:group name="param-altid">
<xs:sequence> <xs:sequence>
<xs:element ref="ns1:calscale" minOccurs="0"/> <xs:element ref="ns1:altid" minOccurs="0"/>
</xs:sequence> </xs:sequence>
</xs:group> </xs:group>
<xs:element name="calscale"> <xs:element name="altid">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:element name="text"> <xs:element ref="ns1:text"/>
<xs:simpleType> </xs:sequence>
<xs:restriction base="xs:token"> </xs:complexType>
<xs:enumeration value="gregorian"/> </xs:element>
</xs:restriction> <!-- 5.5 -->
</xs:simpleType> <xs:group name="param-pid">
</xs:element> <xs:sequence>
</xs:sequence> <xs:element ref="ns1:pid" minOccurs="0"/>
</xs:complexType> </xs:sequence>
</xs:element> </xs:group>
<!-- 5.9 --> <xs:element name="pid">
<xs:group name="param-sort-as"> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:element ref="ns1:sort-as" minOccurs="0"/> <xs:element name="text" maxOccurs="unbounded">
</xs:sequence> <xs:simpleType>
</xs:group> <xs:restriction base="xs:string">
<xs:element name="sort-as"> <xs:pattern value="\d+(\.\d+)?"/>
<xs:complexType> </xs:restriction>
<xs:sequence> </xs:simpleType>
<xs:element ref="ns1:text" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- 5.10 -->
<xs:group name="param-geo">
<xs:sequence>
<xs:element name="geo" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ns1:uri"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<!-- 5.11 -->
<xs:group name="param-tz">
<xs:sequence>
<xs:element name="tz" minOccurs="0">
<xs:complexType>
<xs:choice>
<xs:element ref="ns1:text"/>
<xs:element ref="ns1:uri"/>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<!--
6.1.3 </xs:element>
--> </xs:sequence>
<xs:element name="source"> </xs:complexType>
<xs:complexType> </xs:element>
<xs:sequence> <!-- 5.6 -->
<xs:element name="parameters"> <xs:group name="param-type">
<xs:complexType> <xs:sequence>
<xs:sequence> <xs:element ref="ns1:type" minOccurs="0"/>
<xs:group ref="ns1:param-altid"/> </xs:sequence>
<xs:group ref="ns1:param-pid"/> </xs:group>
<xs:group ref="ns1:param-pref"/> <xs:element name="type">
<xs:group ref="ns1:param-mediatype"/> <xs:complexType>
</xs:sequence> <xs:sequence>
</xs:complexType> <xs:element name="text" maxOccurs="unbounded">
</xs:element> <xs:simpleType>
<xs:element ref="ns1:uri"/> <xs:restriction base="xs:token">
</xs:sequence> <xs:enumeration value="work"/>
</xs:complexType> <xs:enumeration value="home"/>
</xs:element> </xs:restriction>
<!-- 6.1.4 --> </xs:simpleType>
<xs:element name="kind"> </xs:element>
<xs:complexType> </xs:sequence>
<xs:sequence> </xs:complexType>
<xs:annotation> </xs:element>
<xs:documentation> <!-- 5.7 -->
The text value must be one of: individual, group, org, <xs:group name="param-mediatype">
location or a ns1:x-name or a ns1:iana-token value <xs:sequence>
</xs:documentation> <xs:element ref="ns1:mediatype" minOccurs="0"/>
</xs:annotation> </xs:sequence>
<xs:element name="text" type="xs:token" </xs:group>
minOccurs="1" maxOccurs="1"/> <xs:element name="mediatype">
</xs:sequence> <xs:complexType>
</xs:complexType> <xs:sequence>
</xs:element> <xs:element ref="ns1:text"/>
<!-- 6.2.1 --> </xs:sequence>
<xs:element name="fn"> </xs:complexType>
<xs:complexType> </xs:element>
<xs:sequence> <!-- 5.8 -->
<xs:element name="parameters" minOccurs="0"> <xs:group name="param-calscale">
<xs:complexType> <xs:sequence>
<xs:sequence> <xs:element ref="ns1:calscale" minOccurs="0"/>
<xs:group ref="ns1:param-language"/> </xs:sequence>
<xs:group ref="ns1:param-altid"/> </xs:group>
<xs:group ref="ns1:param-pid"/> <xs:element name="calscale">
<xs:group ref="ns1:param-pref"/> <xs:complexType>
<xs:group ref="ns1:param-type"/> <xs:sequence>
</xs:sequence> <xs:element name="text">
</xs:complexType> <xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="gregorian"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- 5.9 -->
<xs:group name="param-sort-as">
<xs:sequence>
<xs:element ref="ns1:sort-as" minOccurs="0"/>
</xs:sequence>
</xs:group>
<xs:element name="sort-as">
<xs:complexType>
<xs:sequence>
<xs:element ref="ns1:text" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- 5.10 -->
<xs:group name="param-geo">
<xs:sequence>
<xs:element name="geo" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ns1:uri"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<!-- 5.11 -->
<xs:group name="param-tz">
<xs:sequence>
<xs:element name="tz" minOccurs="0">
<xs:complexType>
<xs:choice>
<xs:element ref="ns1:text"/>
<xs:element ref="ns1:uri"/>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<!--
6.1.3
-->
<xs:element name="source">
<xs:complexType>
<xs:sequence>
<xs:element name="parameters">
<xs:complexType>
<xs:sequence>
<xs:group ref="ns1:param-altid"/>
<xs:group ref="ns1:param-pid"/>
<xs:group ref="ns1:param-pref"/>
<xs:group ref="ns1:param-mediatype"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element ref="ns1:uri"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- 6.1.4 -->
<xs:element name="kind">
<xs:complexType>
<xs:sequence>
<xs:annotation>
<xs:documentation>
The text value must be one of: individual, group, org,
location or a ns1:x-name or a ns1:iana-token value
</xs:documentation>
</xs:annotation>
<xs:element name="text" type="xs:token"
minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- 6.2.1 -->
<xs:element name="fn">
<xs:complexType>
<xs:sequence>
<xs:element name="parameters" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:group ref="ns1:param-language"/>
<xs:group ref="ns1:param-altid"/>
<xs:group ref="ns1:param-pid"/>
<xs:group ref="ns1:param-pref"/>
<xs:group ref="ns1:param-type"/>
</xs:sequence>
</xs:complexType>
</xs:element> </xs:element>
<xs:element ref="ns1:text"/> <xs:element ref="ns1:text"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<!-- 6.2.2 --> <!-- 6.2.2 -->
<xs:element name="n"> <xs:element name="n">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:element name="parameters" minOccurs="0"> <xs:element name="parameters" minOccurs="0">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:group ref="ns1:param-language"/> <xs:group ref="ns1:param-language"/>
<xs:group ref="ns1:param-sort-as"/> <xs:group ref="ns1:param-sort-as"/>
<xs:group ref="ns1:param-altid"/> <xs:group ref="ns1:param-altid"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:element ref="ns1:surname" <xs:element ref="ns1:surname"
minOccurs="0" maxOccurs="unbounded"/> minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="ns1:given" <xs:element ref="ns1:given"
minOccurs="0" maxOccurs="unbounded"/> minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="ns1:additional" <xs:element ref="ns1:additional"
minOccurs="0" maxOccurs="unbounded"/> minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="ns1:prefix" <xs:element ref="ns1:prefix"
minOccurs="0" maxOccurs="unbounded"/> minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="ns1:suffix" <xs:element ref="ns1:suffix"
minOccurs="0" maxOccurs="unbounded"/> minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:element name="surname" type="xs:string"/> <xs:element name="surname" type="xs:string"/>
<xs:element name="given" type="xs:string"/> <xs:element name="given" type="xs:string"/>
<xs:element name="additional" type="xs:string"/> <xs:element name="additional" type="xs:string"/>
<xs:element name="prefix" type="xs:string"/> <xs:element name="prefix" type="xs:string"/>
<xs:element name="suffix" type="xs:string"/> <xs:element name="suffix" type="xs:string"/>
<!-- 6.2.3 --> <!-- 6.2.3 -->
<xs:element name="nickname"> <xs:element name="nickname">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:element name="parameters" minOccurs="0"> <xs:element name="parameters" minOccurs="0">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:group ref="ns1:param-language"/> <xs:group ref="ns1:param-language"/>
<xs:group ref="ns1:param-altid"/> <xs:group ref="ns1:param-altid"/>
<xs:group ref="ns1:param-pid"/> <xs:group ref="ns1:param-pid"/>
<xs:group ref="ns1:param-pref"/> <xs:group ref="ns1:param-pref"/>
<xs:group ref="ns1:param-type"/> <xs:group ref="ns1:param-type"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:group ref="ns1:value-text-list"/> <xs:group ref="ns1:value-text-list"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<!-- 6.2.4 --> <!-- 6.2.4 -->
<xs:element name="photo"> <xs:element name="photo">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:element name="parameters" minOccurs="0"> <xs:element name="parameters" minOccurs="0">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:group ref="ns1:param-altid"/> <xs:group ref="ns1:param-altid"/>
<xs:group ref="ns1:param-pid"/> <xs:group ref="ns1:param-pid"/>
<xs:group ref="ns1:param-pref"/> <xs:group ref="ns1:param-pref"/>
<xs:group ref="ns1:param-type"/> <xs:group ref="ns1:param-type"/>
<xs:group ref="ns1:param-mediatype"/> <xs:group ref="ns1:param-mediatype"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:element ref="ns1:uri"/> <xs:element ref="ns1:uri"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<!-- 6.2.5 --> <!-- 6.2.5 -->
<xs:element name="bday"> <xs:element name="bday">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:element name="parameters" minOccurs="0"> <xs:element name="parameters" minOccurs="0">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:group ref="ns1:param-altid"/> <xs:group ref="ns1:param-altid"/>
<xs:group ref="ns1:param-calscale"/> <xs:group ref="ns1:param-calscale"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:choice> <xs:choice>
<xs:element ref="ns1:value-date-and-or-time"/> <xs:element ref="ns1:value-date-and-or-time"/>
<xs:element ref="ns1:text"/> <xs:element ref="ns1:text"/>
</xs:choice> </xs:choice>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<!-- 6.2.6 --> <!-- 6.2.6 -->
<xs:element name="anniversary"> <xs:element name="anniversary">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:element name="parameters" minOccurs="0"> <xs:element name="parameters" minOccurs="0">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:group ref="ns1:param-altid"/> <xs:group ref="ns1:param-altid"/>
<xs:group ref="ns1:param-calscale"/> <xs:group ref="ns1:param-calscale"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:choice> <xs:choice>
<xs:element ref="ns1:value-date-and-or-time"/> <xs:element ref="ns1:value-date-and-or-time"/>
<xs:element ref="ns1:text"/> <xs:element ref="ns1:text"/>
</xs:choice> </xs:choice>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<!-- 6.2.7 --> <!-- 6.2.7 -->
<xs:element name="gender"> <xs:element name="gender">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:element ref="ns1:sex"/> <xs:element ref="ns1:sex"/>
<xs:element ref="ns1:identity" minOccurs="0"/> <xs:element ref="ns1:identity" minOccurs="0"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:element name="sex"> <xs:element name="sex">
<xs:simpleType> <xs:simpleType>
<xs:restriction base="xs:token"> <xs:restriction base="xs:token">
<xs:enumeration value=""/> <xs:enumeration value=""/>
<xs:enumeration value="M"/> <xs:enumeration value="M"/>
<xs:enumeration value="F"/> <xs:enumeration value="F"/>
<xs:enumeration value="O"/> <xs:enumeration value="O"/>
<xs:enumeration value="N"/> <xs:enumeration value="N"/>
<xs:enumeration value="U"/> <xs:enumeration value="U"/>
</xs:restriction> </xs:restriction>
</xs:simpleType> </xs:simpleType>
</xs:element> </xs:element>
<xs:element name="identity" type="xs:string"/> <xs:element name="identity" type="xs:string"/>
<!-- 6.3.1 --> <!-- 6.3.1 -->
<xs:group name="param-label"> <xs:group name="param-label">
<xs:sequence> <xs:sequence>
<xs:element ref="ns1:label" minOccurs="0"/> <xs:element ref="ns1:label" minOccurs="0"/>
</xs:sequence> </xs:sequence>
</xs:group> </xs:group>
<xs:element name="label"> <xs:element name="label">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:element ref="ns1:text"/> <xs:element ref="ns1:text"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:element name="adr"> <xs:element name="adr">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:element name="parameters" minOccurs="0"> <xs:element name="parameters" minOccurs="0">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:group ref="ns1:param-language"/> <xs:group ref="ns1:param-language"/>
<xs:group ref="ns1:param-altid"/> <xs:group ref="ns1:param-altid"/>
<xs:group ref="ns1:param-pid"/> <xs:group ref="ns1:param-pid"/>
<xs:group ref="ns1:param-pref"/> <xs:group ref="ns1:param-pref"/>
<xs:group ref="ns1:param-type"/> <xs:group ref="ns1:param-type"/>
<xs:group ref="ns1:param-geo"/> <xs:group ref="ns1:param-geo"/>
<xs:group ref="ns1:param-tz"/> <xs:group ref="ns1:param-tz"/>
<xs:group ref="ns1:param-label"/> <xs:group ref="ns1:param-label"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:element ref="ns1:pobox" <xs:element ref="ns1:pobox"
minOccurs="0" maxOccurs="unbounded"/> minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="ns1:ext" <xs:element ref="ns1:ext"
minOccurs="0" maxOccurs="unbounded"/> minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="ns1:street" <xs:element ref="ns1:street"
minOccurs="0" maxOccurs="unbounded"/> minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="ns1:locality" <xs:element ref="ns1:locality"
minOccurs="0" maxOccurs="unbounded"/> minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="ns1:region" <xs:element ref="ns1:region"
minOccurs="0" maxOccurs="unbounded"/> minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="ns1:code" <xs:element ref="ns1:code"
minOccurs="0" maxOccurs="unbounded"/> minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="ns1:country" <xs:element ref="ns1:country"
minOccurs="0" maxOccurs="unbounded"/> minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:element name="pobox" type="xs:string"/> <xs:element name="pobox" type="xs:string"/>
<xs:element name="ext" type="xs:string"/> <xs:element name="ext" type="xs:string"/>
<xs:element name="street" type="xs:string"/> <xs:element name="street" type="xs:string"/>
<xs:element name="locality" type="xs:string"/> <xs:element name="locality" type="xs:string"/>
<xs:element name="region" type="xs:string"/> <xs:element name="region" type="xs:string"/>
<xs:element name="code" type="xs:string"/> <xs:element name="code" type="xs:string"/>
<xs:element name="country" type="xs:string"/> <xs:element name="country" type="xs:string"/>
<!-- 6.4.1 --> <!-- 6.4.1 -->
<xs:element name="tel"> <xs:element name="tel">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:element name="parameters" minOccurs="0"> <xs:element name="parameters" minOccurs="0">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:group ref="ns1:param-altid" <xs:group ref="ns1:param-altid"
minOccurs="0"/> minOccurs="0"/>
<xs:group ref="ns1:param-pid" <xs:group ref="ns1:param-pid"
minOccurs="0"/> minOccurs="0"/>
<xs:group ref="ns1:param-pref" <xs:group ref="ns1:param-pref"
minOccurs="0"/> minOccurs="0"/>
<xs:element name="type" minOccurs="0"> <xs:element name="type" minOccurs="0">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:element name="text" <xs:element name="text"
type="xs:string" type="xs:string"
maxOccurs="unbounded"> maxOccurs="unbounded">
</xs:element> </xs:element>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:group ref="ns1:param-mediatype"/> <xs:group ref="ns1:param-mediatype"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:choice> <xs:choice>
<xs:element ref="ns1:text"/> <xs:element ref="ns1:text"/>
<xs:element ref="ns1:uri"/> <xs:element ref="ns1:uri"/>
</xs:choice> </xs:choice>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<!-- 6.4.2 --> <!-- 6.4.2 -->
<xs:element name="email"> <xs:element name="email">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:element name="parameters" minOccurs="0"> <xs:element name="parameters" minOccurs="0">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:group ref="ns1:param-altid"/> <xs:group ref="ns1:param-altid"/>
<xs:group ref="ns1:param-pid"/> <xs:group ref="ns1:param-pid"/>
<xs:group ref="ns1:param-pref"/> <xs:group ref="ns1:param-pref"/>
<xs:group ref="ns1:param-type"/> <xs:group ref="ns1:param-type"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:element ref="ns1:text"/> <xs:element ref="ns1:text"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<!-- 6.4.3 --> <!-- 6.4.3 -->
<xs:element name="impp"> <xs:element name="impp">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:element name="parameters" minOccurs="0"> <xs:element name="parameters" minOccurs="0">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:group ref="ns1:param-altid"/> <xs:group ref="ns1:param-altid"/>
<xs:group ref="ns1:param-pid"/> <xs:group ref="ns1:param-pid"/>
<xs:group ref="ns1:param-pref"/> <xs:group ref="ns1:param-pref"/>
<xs:group ref="ns1:param-type"/> <xs:group ref="ns1:param-type"/>
<xs:group ref="ns1:param-mediatype"/> <xs:group ref="ns1:param-mediatype"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:element ref="ns1:uri"/> <xs:element ref="ns1:uri"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<!-- 6.4.4 --> <!-- 6.4.4 -->
<xs:element name="lang"> <xs:element name="lang">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:element name="parameters" minOccurs="0"> <xs:element name="parameters" minOccurs="0">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:group ref="ns1:param-altid"/> <xs:group ref="ns1:param-altid"/>
<xs:group ref="ns1:param-pid"/> <xs:group ref="ns1:param-pid"/>
<xs:group ref="ns1:param-pref"/> <xs:group ref="ns1:param-pref"/>
<xs:group ref="ns1:param-type"/> <xs:group ref="ns1:param-type"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:element ref="ns1:language-tag"/> <xs:element ref="ns1:language-tag"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<!-- 6.5.1 --> <!-- 6.5.1 -->
<xs:group name="property-tz"> <xs:group name="property-tz">
<xs:sequence> <xs:sequence>
<xs:element name="tz"> <xs:element name="tz">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:element name="parameters" minOccurs="0"> <xs:element name="parameters" minOccurs="0">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:group ref="ns1:param-altid"/> <xs:group ref="ns1:param-altid"/>
<xs:group ref="ns1:param-pid"/> <xs:group ref="ns1:param-pid"/>
<xs:group ref="ns1:param-pref"/> <xs:group ref="ns1:param-pref"/>
<xs:group ref="ns1:param-type"/> <xs:group ref="ns1:param-type"/>
<xs:group <xs:group
ref="ns1:param-mediatype"/> ref="ns1:param-mediatype"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:choice> <xs:choice>
<xs:element ref="ns1:text"/> <xs:element ref="ns1:text"/>
<xs:element ref="ns1:uri"/> <xs:element ref="ns1:uri"/>
<xs:element ref="ns1:utc-offset"/> <xs:element ref="ns1:utc-offset"/>
</xs:choice> </xs:choice>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
</xs:sequence> </xs:sequence>
</xs:group> </xs:group>
<!-- 6.5.2 --> <!-- 6.5.2 -->
<xs:group name="property-geo"> <xs:group name="property-geo">
<xs:sequence> <xs:sequence>
<xs:element name="geo"> <xs:element name="geo">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:element name="parameters" minOccurs="0"> <xs:element name="parameters" minOccurs="0">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:group ref="ns1:param-altid"/> <xs:group ref="ns1:param-altid"/>
<xs:group ref="ns1:param-pid"/> <xs:group ref="ns1:param-pid"/>
<xs:group ref="ns1:param-pref"/> <xs:group ref="ns1:param-pref"/>
<xs:group ref="ns1:param-type"/> <xs:group ref="ns1:param-type"/>
<xs:group <xs:group
ref="ns1:param-mediatype"/> ref="ns1:param-mediatype"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:element ref="ns1:uri"/> <xs:element ref="ns1:uri"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
</xs:sequence> </xs:sequence>
</xs:group> </xs:group>
<!-- 6.6.1 --> <!-- 6.6.1 -->
<xs:element name="title"> <xs:element name="title">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:element name="parameters" minOccurs="0"> <xs:element name="parameters" minOccurs="0">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:group ref="ns1:param-language"/> <xs:group ref="ns1:param-language"/>
<xs:group ref="ns1:param-altid"/> <xs:group ref="ns1:param-altid"/>
<xs:group ref="ns1:param-pid"/> <xs:group ref="ns1:param-pid"/>
<xs:group ref="ns1:param-pref"/> <xs:group ref="ns1:param-pref"/>
<xs:group ref="ns1:param-type"/> <xs:group ref="ns1:param-type"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:element ref="ns1:text"/> <xs:element ref="ns1:text"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<!-- 6.6.2 --> <!-- 6.6.2 -->
<xs:element name="role"> <xs:element name="role">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:element name="parameters" minOccurs="0"> <xs:element name="parameters" minOccurs="0">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:group ref="ns1:param-language"/> <xs:group ref="ns1:param-language"/>
<xs:group ref="ns1:param-altid"/> <xs:group ref="ns1:param-altid"/>
<xs:group ref="ns1:param-pid"/> <xs:group ref="ns1:param-pid"/>
<xs:group ref="ns1:param-pref"/> <xs:group ref="ns1:param-pref"/>
<xs:group ref="ns1:param-type"/> <xs:group ref="ns1:param-type"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:element ref="ns1:text"/> <xs:element ref="ns1:text"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<!-- 6.6.3 --> <!-- 6.6.3 -->
<xs:element name="logo"> <xs:element name="logo">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:element name="parameters" minOccurs="0"> <xs:element name="parameters" minOccurs="0">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:group ref="ns1:param-language"/> <xs:group ref="ns1:param-language"/>
<xs:group ref="ns1:param-altid"/> <xs:group ref="ns1:param-altid"/>
<xs:group ref="ns1:param-pid"/> <xs:group ref="ns1:param-pid"/>
<xs:group ref="ns1:param-pref"/> <xs:group ref="ns1:param-pref"/>
<xs:group ref="ns1:param-type"/> <xs:group ref="ns1:param-type"/>
<xs:group ref="ns1:param-mediatype"/> <xs:group ref="ns1:param-mediatype"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:element ref="ns1:uri"/> <xs:element ref="ns1:uri"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<!-- 6.6.4 --> <!-- 6.6.4 -->
<xs:element name="org"> <xs:element name="org">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:element name="parameters" minOccurs="0"> <xs:element name="parameters" minOccurs="0">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:group ref="ns1:param-language"/> <xs:group ref="ns1:param-language"/>
<xs:group ref="ns1:param-altid"/> <xs:group ref="ns1:param-altid"/>
<xs:group ref="ns1:param-pid"/> <xs:group ref="ns1:param-pid"/>
<xs:group ref="ns1:param-pref"/> <xs:group ref="ns1:param-pref"/>
<xs:group ref="ns1:param-type"/> <xs:group ref="ns1:param-type"/>
<xs:group ref="ns1:param-sort-as"/> <xs:group ref="ns1:param-sort-as"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:group ref="ns1:value-text-list"/> <xs:group ref="ns1:value-text-list"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<!-- 6.6.5 --> <!-- 6.6.5 -->
<xs:element name="member"> <xs:element name="member">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:element name="parameters" minOccurs="0"> <xs:element name="parameters" minOccurs="0">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:group ref="ns1:param-altid"/> <xs:group ref="ns1:param-altid"/>
<xs:group ref="ns1:param-pid"/> <xs:group ref="ns1:param-pid"/>
<xs:group ref="ns1:param-pref"/> <xs:group ref="ns1:param-pref"/>
<xs:group ref="ns1:param-mediatype"/> <xs:group ref="ns1:param-mediatype"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:element ref="ns1:uri"/> <xs:element ref="ns1:uri"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<!-- 6.6.6 --> <!-- 6.6.6 -->
<xs:element name="related"> <xs:element name="related">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:element name="parameters" minOccurs="0"> <xs:element name="parameters" minOccurs="0">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:group ref="ns1:param-altid"/> <xs:group ref="ns1:param-altid"/>
<xs:group ref="ns1:param-pid"/> <xs:group ref="ns1:param-pid"/>
<xs:group ref="ns1:param-pref"/> <xs:group ref="ns1:param-pref"/>
<xs:element name="type" minOccurs="0"> <xs:element name="type" minOccurs="0">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:element name="text" <xs:element name="text" maxOccurs="unbounded">
maxOccurs="unbounded"> <xs:simpleType>
<xs:simpleType> <xs:restriction base="xs:token">
<xs:restriction <xs:enumeration value="work"/>
base="xs:token"> <xs:enumeration value="home"/>
<xs:enumeration <xs:enumeration value="contact"/>
value="work"/> <xs:enumeration value="acquaintance"/>
<xs:enumeration <xs:enumeration value="friend"/>
value="home"/> <xs:enumeration value="met"/>
<xs:enumeration <xs:enumeration value="co-worker"/>
value="contact"/> <xs:enumeration value="colleague"/>
<xs:enumeration <xs:enumeration value="co-resident"/>
value="acquaintance"/> <xs:enumeration value="neighbor"/>
<xs:enumeration <xs:enumeration value="child"/>
value="friend"/> <xs:enumeration value="parent"/>
<xs:enumeration <xs:enumeration value="sibling"/>
value="met"/> <xs:enumeration value="spouse"/>
<xs:enumeration <xs:enumeration value="kin"/>
value="co-worker"/> <xs:enumeration value="muse"/>
<xs:enumeration <xs:enumeration value="crush"/>
value="colleague"/> <xs:enumeration value="date"/>
<xs:enumeration <xs:enumeration value="sweetheart"/>
value="co-resident"/> <xs:enumeration value="me"/>
<xs:enumeration <xs:enumeration value="agent"/>
value="neighbor"/> <xs:enumeration value="emergency"/>
<xs:enumeration </xs:restriction>
value="child"/> </xs:simpleType>
<xs:enumeration </xs:element>
value="parent"/> </xs:sequence>
<xs:enumeration </xs:complexType>
value="sibling"/> </xs:element>
<xs:enumeration <xs:group ref="ns1:param-mediatype"/>
value="spouse"/> </xs:sequence>
<xs:enumeration </xs:complexType>
value="kin"/> </xs:element>
<xs:enumeration <xs:choice>
value="muse"/> <xs:element ref="ns1:uri"/>
<xs:enumeration <xs:element ref="ns1:text"/>
value="crush"/> </xs:choice>
<xs:enumeration </xs:sequence>
value="date"/> </xs:complexType>
<xs:enumeration </xs:element>
value="sweetheart"/> <!-- 6.7.1 -->
<xs:enumeration <xs:element name="categories">
value="me"/> <xs:complexType>
<xs:enumeration <xs:sequence>
value="agent"/> <xs:element name="parameters" minOccurs="0">
<xs:enumeration <xs:complexType>
value="emergency"/> <xs:sequence>
</xs:restriction> <xs:group ref="ns1:param-altid"/>
</xs:simpleType> <xs:group ref="ns1:param-pid"/>
</xs:element> <xs:group ref="ns1:param-pref"/>
</xs:sequence> <xs:group ref="ns1:param-type"/>
</xs:complexType> </xs:sequence>
</xs:element> </xs:complexType>
<xs:group ref="ns1:param-mediatype"/> </xs:element>
</xs:sequence> <xs:group ref="ns1:value-text-list"/>
</xs:complexType> </xs:sequence>
</xs:element> </xs:complexType>
<xs:choice> </xs:element>
<xs:element ref="ns1:uri"/> <!-- 6.7.2 -->
<xs:element ref="ns1:text"/> <xs:element name="note">
</xs:choice> <xs:complexType>
</xs:sequence> <xs:sequence>
</xs:complexType> <xs:element name="parameters" minOccurs="0">
</xs:element> <xs:complexType>
<!-- 6.7.1 --> <xs:sequence>
<xs:element name="categories"> <xs:group ref="ns1:param-language"/>
<xs:complexType> <xs:group ref="ns1:param-altid"/>
<xs:sequence> <xs:group ref="ns1:param-pid"/>
<xs:element name="parameters" minOccurs="0"> <xs:group ref="ns1:param-pref"/>
<xs:complexType> <xs:group ref="ns1:param-type"/>
<xs:sequence> </xs:sequence>
<xs:group ref="ns1:param-altid"/> </xs:complexType>
<xs:group ref="ns1:param-pid"/> </xs:element>
<xs:group ref="ns1:param-pref"/> <xs:element ref="ns1:text"/>
<xs:group ref="ns1:param-type"/> </xs:sequence>
</xs:sequence> </xs:complexType>
</xs:complexType> </xs:element>
</xs:element> <!-- 6.7.3 -->
<xs:group ref="ns1:value-text-list"/> <xs:element name="prodid">
</xs:sequence> <xs:complexType>
</xs:complexType> <xs:sequence>
</xs:element> <xs:element ref="ns1:text"/>
<!-- 6.7.2 --> </xs:sequence>
<xs:element name="note"> </xs:complexType>
<xs:complexType> </xs:element>
<xs:sequence> <!-- 6.7.4 -->
<xs:element name="parameters" minOccurs="0"> <xs:element name="rev" type="ns1:value-timestamp"/>
<xs:complexType> <!-- 6.7.5 -->
<xs:sequence> <xs:element name="sound">
<xs:group ref="ns1:param-language"/> <xs:complexType>
<xs:group ref="ns1:param-altid"/> <xs:sequence>
<xs:group ref="ns1:param-pid"/> <xs:element name="parameters" minOccurs="0">
<xs:group ref="ns1:param-pref"/> <xs:complexType>
<xs:group ref="ns1:param-type"/> <xs:sequence>
</xs:sequence> <xs:group ref="ns1:param-language"/>
</xs:complexType> <xs:group ref="ns1:param-altid"/>
</xs:element> <xs:group ref="ns1:param-pid"/>
<xs:element ref="ns1:text"/> <xs:group ref="ns1:param-pref"/>
</xs:sequence> <xs:group ref="ns1:param-type"/>
</xs:complexType> <xs:group ref="ns1:param-mediatype"/>
</xs:element> </xs:sequence>
<!-- 6.7.3 --> </xs:complexType>
<xs:element name="prodid"> </xs:element>
<xs:complexType> <xs:element ref="ns1:uri"/>
<xs:sequence> </xs:sequence>
<xs:element ref="ns1:text"/> </xs:complexType>
</xs:sequence> </xs:element>
</xs:complexType> <!-- 6.7.6 -->
</xs:element> <xs:element name="uid">
<!-- 6.7.4 --> <xs:complexType>
<xs:element name="rev" type="ns1:value-timestamp"/> <xs:sequence>
<!-- 6.7.5 --> <xs:element ref="ns1:uri"/>
<xs:element name="sound"> </xs:sequence>
<xs:complexType> </xs:complexType>
<xs:sequence> </xs:element>
<xs:element name="parameters" minOccurs="0"> <!-- 6.7.7 -->
<xs:complexType> <xs:element name="clientpidmap">
<xs:sequence> <xs:complexType>
<xs:group ref="ns1:param-language"/> <xs:sequence>
<xs:group ref="ns1:param-altid"/> <xs:element ref="ns1:sourceid"/>
<xs:group ref="ns1:param-pid"/> <xs:element ref="ns1:uri"/>
<xs:group ref="ns1:param-pref"/> </xs:sequence>
<xs:group ref="ns1:param-type"/> </xs:complexType>
<xs:group ref="ns1:param-mediatype"/> </xs:element>
</xs:sequence> <xs:element name="sourceid" type="xs:positiveInteger"/>
</xs:complexType> <!-- 6.7.8 -->
</xs:element> <xs:element name="url">
<xs:element ref="ns1:uri"/> <xs:complexType>
</xs:sequence> <xs:sequence>
</xs:complexType> <xs:element name="parameters" minOccurs="0">
</xs:element> <xs:complexType>
<!-- 6.7.6 --> <xs:sequence>
<xs:element name="uid"> <xs:group ref="ns1:param-altid"/>
<xs:complexType> <xs:group ref="ns1:param-pid"/>
<xs:sequence> <xs:group ref="ns1:param-pref"/>
<xs:element ref="ns1:uri"/> <xs:group ref="ns1:param-type"/>
<xs:group ref="ns1:param-mediatype"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element ref="ns1:uri"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- 6.8.1 -->
<xs:element name="key">
<xs:complexType>
<xs:sequence>
<xs:element name="parameters" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:group ref="ns1:param-altid"/>
<xs:group ref="ns1:param-pid"/>
<xs:group ref="ns1:param-pref"/>
<xs:group ref="ns1:param-type"/>
<xs:group ref="ns1:param-mediatype"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:choice>
<xs:element ref="ns1:uri"/>
<xs:element ref="ns1:text"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- 6.9.1 -->
<xs:element name="fburl">
<xs:complexType>
<xs:sequence>
<xs:element name="parameters" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:group ref="ns1:param-altid"/>
<xs:group ref="ns1:param-pid"/>
<xs:group ref="ns1:param-pref"/>
<xs:group ref="ns1:param-type"/>
<xs:group ref="ns1:param-mediatype"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element ref="ns1:uri"/>
</xs:sequence>
</xs:complexType>
</xs:sequence> </xs:element>
</xs:complexType> <!-- 6.9.2 -->
</xs:element> <xs:element name="caladruri">
<!-- 6.7.7 --> <xs:complexType>
<xs:element name="clientpidmap"> <xs:sequence>
<xs:complexType> <xs:element name="parameters" minOccurs="0">
<xs:sequence> <xs:complexType>
<xs:element ref="ns1:sourceid"/> <xs:sequence>
<xs:element ref="ns1:uri"/> <xs:group ref="ns1:param-altid"/>
</xs:sequence> <xs:group ref="ns1:param-pid"/>
</xs:complexType> <xs:group ref="ns1:param-pref"/>
</xs:element> <xs:group ref="ns1:param-type"/>
<xs:element name="sourceid" type="xs:positiveInteger"/> <xs:group ref="ns1:param-mediatype"/>
<!-- 6.7.8 --> </xs:sequence>
<xs:element name="url"> </xs:complexType>
<xs:complexType> </xs:element>
<xs:sequence> <xs:element ref="ns1:uri"/>
<xs:element name="parameters" minOccurs="0"> </xs:sequence>
<xs:complexType> </xs:complexType>
<xs:sequence> </xs:element>
<xs:group ref="ns1:param-altid"/> <!-- 6.9.3 -->
<xs:group ref="ns1:param-pid"/> <xs:element name="caluri">
<xs:group ref="ns1:param-pref"/> <xs:complexType>
<xs:group ref="ns1:param-type"/> <xs:sequence>
<xs:group ref="ns1:param-mediatype"/> <xs:element name="parameters" minOccurs="0">
</xs:sequence> <xs:complexType>
</xs:complexType> <xs:sequence>
</xs:element> <xs:group ref="ns1:param-altid"/>
<xs:element ref="ns1:uri"/> <xs:group ref="ns1:param-pid"/>
</xs:sequence> <xs:group ref="ns1:param-pref"/>
</xs:complexType> <xs:group ref="ns1:param-type"/>
</xs:element> <xs:group ref="ns1:param-mediatype"/>
<!-- 6.8.1 --> </xs:sequence>
<xs:element name="key"> </xs:complexType>
<xs:complexType> </xs:element>
<xs:sequence> <xs:element ref="ns1:uri"/>
<xs:element name="parameters" minOccurs="0"> </xs:sequence>
<xs:complexType> </xs:complexType>
<xs:sequence> </xs:element>
<xs:group ref="ns1:param-altid"/> <!-- Top-level grammar -->
<xs:group ref="ns1:param-pid"/> <xs:group name="property">
<xs:group ref="ns1:param-pref"/> <xs:sequence>
<xs:group ref="ns1:param-type"/> <xs:element ref="ns1:adr" minOccurs="0"
<xs:group ref="ns1:param-mediatype"/> maxOccurs="unbounded"/>
</xs:sequence> <xs:element ref="ns1:anniversary" minOccurs="0"
</xs:complexType> maxOccurs="1"/>
</xs:element> <xs:element ref="ns1:bday" minOccurs="0"
<xs:choice> maxOccurs="1"/>
<xs:element ref="ns1:uri"/> <xs:element ref="ns1:caladruri" minOccurs="0"
<xs:element ref="ns1:text"/> maxOccurs="unbounded"/>
</xs:choice> <xs:element ref="ns1:caluri" minOccurs="0"
</xs:sequence> maxOccurs="unbounded"/>
</xs:complexType> <xs:element ref="ns1:categories" minOccurs="0"
</xs:element> maxOccurs="unbounded"/>
<!-- 6.9.1 --> <xs:element ref="ns1:clientpidmap" minOccurs="0"
<xs:element name="fburl"> maxOccurs="unbounded"/>
<xs:complexType> <xs:element ref="ns1:email" minOccurs="0"
<xs:sequence> maxOccurs="unbounded"/>
<xs:element name="parameters" minOccurs="0"> <xs:element ref="ns1:fburl" minOccurs="0"
<xs:complexType> maxOccurs="unbounded"/>
<xs:sequence> <xs:element ref="ns1:fn" minOccurs="1"
<xs:group ref="ns1:param-altid"/> maxOccurs="unbounded"/>
<xs:group ref="ns1:param-pid"/> <xs:group ref="ns1:property-geo" minOccurs="0"
<xs:group ref="ns1:param-pref"/> maxOccurs="unbounded"/>
<xs:group ref="ns1:param-type"/> <xs:element ref="ns1:impp" minOccurs="0"
<xs:group ref="ns1:param-mediatype"/> maxOccurs="unbounded"/>
</xs:sequence> <xs:element ref="ns1:key" minOccurs="0"
</xs:complexType> maxOccurs="unbounded"/>
</xs:element> <xs:element ref="ns1:kind" minOccurs="0"
<xs:element ref="ns1:uri"/> maxOccurs="1"/>
</xs:sequence> <xs:element ref="ns1:lang" minOccurs="0"
</xs:complexType> maxOccurs="unbounded"/>
</xs:element> <xs:element ref="ns1:logo" minOccurs="0"
<!-- 6.9.2 --> maxOccurs="unbounded"/>
<xs:element name="caladruri"> <xs:element ref="ns1:member" minOccurs="0"
<xs:complexType> maxOccurs="unbounded"/>
<xs:sequence> <xs:element ref="ns1:n" minOccurs="0"
<xs:element name="parameters" minOccurs="0"> maxOccurs="1"/>
<xs:complexType> <xs:element ref="ns1:nickname" minOccurs="0"
<xs:sequence> maxOccurs="unbounded"/>
<xs:group ref="ns1:param-altid"/> <xs:element ref="ns1:note" minOccurs="0"
<xs:group ref="ns1:param-pid"/> maxOccurs="unbounded"/>
<xs:group ref="ns1:param-pref"/> <xs:element ref="ns1:org" minOccurs="0"
<xs:group ref="ns1:param-type"/> maxOccurs="unbounded"/>
<xs:group ref="ns1:param-mediatype"/> <xs:element ref="ns1:photo" minOccurs="0"
</xs:sequence> maxOccurs="unbounded"/>
</xs:complexType> <xs:element ref="ns1:prodid" minOccurs="0"
</xs:element> maxOccurs="1"/>
<xs:element ref="ns1:uri"/> <xs:element ref="ns1:related" minOccurs="0"
</xs:sequence> maxOccurs="unbounded"/>
</xs:complexType> <xs:element ref="ns1:rev" minOccurs="0"
</xs:element> maxOccurs="1"/>
<!-- 6.9.3 --> <xs:element ref="ns1:role" minOccurs="0"
<xs:element name="caluri"> maxOccurs="unbounded"/>
<xs:complexType> <xs:element ref="ns1:gender" minOccurs="0"
<xs:sequence> maxOccurs="1"/>
<xs:element name="parameters" minOccurs="0"> <xs:element ref="ns1:sound" minOccurs="0"
<xs:complexType> maxOccurs="unbounded"/>
<xs:sequence> <xs:element ref="ns1:source" minOccurs="0"
<xs:group ref="ns1:param-altid"/> maxOccurs="unbounded"/>
<xs:group ref="ns1:param-pid"/> <xs:element ref="ns1:tel" minOccurs="0"
<xs:group ref="ns1:param-pref"/> maxOccurs="unbounded"/>
<xs:group ref="ns1:param-type"/> <xs:element ref="ns1:title" minOccurs="0"
<xs:group ref="ns1:param-mediatype"/> maxOccurs="unbounded"/>
</xs:sequence> <xs:group ref="ns1:property-tz" minOccurs="0"
</xs:complexType> maxOccurs="unbounded"/>
</xs:element> <xs:element ref="ns1:uid" minOccurs="0"
<xs:element ref="ns1:uri"/> maxOccurs="1"/>
</xs:sequence> <xs:element ref="ns1:url" minOccurs="0"
</xs:complexType> maxOccurs="unbounded"/>
</xs:element> </xs:sequence>
<!-- Top-level grammar --> </xs:group>
<xs:group name="property"> <xs:element name="vcards">
<xs:sequence> <xs:complexType>
<xs:element ref="ns1:adr" minOccurs="0" <xs:sequence>
maxOccurs="unbounded"/> <xs:element ref="ns1:vcard" maxOccurs="unbounded"/>
<xs:element ref="ns1:anniversary" minOccurs="0" </xs:sequence>
maxOccurs="1"/> </xs:complexType>
<xs:element ref="ns1:bday" minOccurs="0" </xs:element>
maxOccurs="1"/> <xs:complexType name="vcardType">
<xs:element ref="ns1:caladruri" minOccurs="0" <xs:sequence>
maxOccurs="unbounded"/> <xs:group ref="ns1:property"/>
<xs:element ref="ns1:caluri" minOccurs="0" <xs:element ref="ns1:group" minOccurs="0"
maxOccurs="unbounded"/> maxOccurs="unbounded"/>
<xs:element ref="ns1:categories" minOccurs="0" <xs:any namespace="##other" processContents="lax"
maxOccurs="unbounded"/> minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="ns1:clientpidmap" minOccurs="0" </xs:sequence>
maxOccurs="unbounded"/> </xs:complexType>
<xs:element ref="ns1:email" minOccurs="0" <xs:element name="vcard" type="ns1:vcardType"/>
maxOccurs="unbounded"/> <xs:element name="group">
<xs:element ref="ns1:fburl" minOccurs="0" <xs:complexType>
maxOccurs="unbounded"/> <xs:group ref="ns1:property"/>
<xs:element ref="ns1:fn" minOccurs="1" <xs:attribute name="name" use="required"/>
maxOccurs="unbounded"/> </xs:complexType>
<xs:group ref="ns1:property-geo" minOccurs="0" </xs:element>
maxOccurs="unbounded"/> </xs:schema>
<xs:element ref="ns1:impp" minOccurs="0"
maxOccurs="unbounded"/>
<xs:element ref="ns1:key" minOccurs="0"
maxOccurs="unbounded"/>
<xs:element ref="ns1:kind" minOccurs="0"
maxOccurs="1"/>
<xs:element ref="ns1:lang" minOccurs="0"
maxOccurs="unbounded"/>
<xs:element ref="ns1:logo" minOccurs="0"
maxOccurs="unbounded"/>
<xs:element ref="ns1:member" minOccurs="0"
maxOccurs="unbounded"/>
<xs:element ref="ns1:n" minOccurs="0"
maxOccurs="1"/>
<xs:element ref="ns1:nickname" minOccurs="0"
maxOccurs="unbounded"/>
<xs:element ref="ns1:note" minOccurs="0"
maxOccurs="unbounded"/>
<xs:element ref="ns1:org" minOccurs="0"
maxOccurs="unbounded"/>
<xs:element ref="ns1:photo" minOccurs="0"
maxOccurs="unbounded"/>
<xs:element ref="ns1:prodid" minOccurs="0"
maxOccurs="1"/>
<xs:element ref="ns1:related" minOccurs="0"
maxOccurs="unbounded"/>
<xs:element ref="ns1:rev" minOccurs="0"
maxOccurs="1"/>
<xs:element ref="ns1:role" minOccurs="0"
maxOccurs="unbounded"/>
<xs:element ref="ns1:gender" minOccurs="0"
maxOccurs="1"/>
<xs:element ref="ns1:sound" minOccurs="0"
maxOccurs="unbounded"/>
<xs:element ref="ns1:source" minOccurs="0"
maxOccurs="unbounded"/>
<xs:element ref="ns1:tel" minOccurs="0"
maxOccurs="unbounded"/>
<xs:element ref="ns1:title" minOccurs="0"
maxOccurs="unbounded"/>
<xs:group ref="ns1:property-tz" minOccurs="0"
maxOccurs="unbounded"/>
<xs:element ref="ns1:uid" minOccurs="0"
maxOccurs="1"/>
<xs:element ref="ns1:url" minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:group>
<xs:element name="vcards">
<xs:complexType>
<xs:sequence>
<xs:element ref="ns1:vcard" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="vcardType">
<xs:sequence>
<xs:group ref="ns1:property"/>
<xs:element ref="ns1:group" minOccurs="0"
maxOccurs="unbounded"/>
<xs:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:element name="vcard" type="ns1:vcardType"/>
<xs:element name="group">
<xs:complexType>
<xs:group ref="ns1:property"/>
<xs:attribute name="name" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>
Appendix B. XML Validation Appendix B. XML Validation
This document defines a number of XML schemas and contains various This document defines a number of XML schemas and contains various
examples. Extracting the XML and validating the examples against the examples. Extracting the XML and validating the examples against the
schemas can be challenging, especially due to the formatting schemas can be challenging, especially due to the formatting
limitations introduced by IETF RFCs. For those readers who copy the limitations introduced by IETF RFCs. For those readers who copy the
XML schemas and examples directly from this document, please consider XML schemas and examples directly from this document, please consider
that errors might be introduced due to line breaks and extra that errors might be introduced due to line breaks and extra
whitespaces in the regular expressions contained in the vCard schema whitespaces in the regular expressions contained in the vCard schema
 End of changes. 27 change blocks. 
1201 lines changed or deleted 1174 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/