12. References
12.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <http://www.rfc-editor.org/info/rfc2119>. [RFC2392] Levinson, E., "Content-ID and Message-ID Uniform Resource Locators", RFC 2392, DOI 10.17487/RFC2392, August 1998, <http://www.rfc-editor.org/info/rfc2392>. [RFC3204] Zimmerer, E., Peterson, J., Vemuri, A., Ong, L., Audet, F., Watson, M., and M. Zonoun, "MIME media types for ISUP and QSIG Objects", RFC 3204, DOI 10.17487/RFC3204, December 2001, <http://www.rfc-editor.org/info/rfc3204>. [RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A., Peterson, J., Sparks, R., Handley, M., and E. Schooler, "SIP: Session Initiation Protocol", RFC 3261, DOI 10.17487/RFC3261, June 2002, <http://www.rfc-editor.org/info/rfc3261>. [RFC3459] Burger, E., "Critical Content Multi-purpose Internet Mail Extensions (MIME) Parameter", RFC 3459, DOI 10.17487/RFC3459, January 2003, <http://www.rfc-editor.org/info/rfc3459>. [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, DOI 10.17487/RFC3688, January 2004, <http://www.rfc-editor.org/info/rfc3688>. [RFC3966] Schulzrinne, H., "The tel URI for Telephone Numbers", RFC 3966, DOI 10.17487/RFC3966, December 2004, <http://www.rfc-editor.org/info/rfc3966>. [RFC4119] Peterson, J., "A Presence-based GEOPRIV Location Object Format", RFC 4119, DOI 10.17487/RFC4119, December 2005, <http://www.rfc-editor.org/info/rfc4119>. [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 5226, DOI 10.17487/RFC5226, May 2008, <http://www.rfc-editor.org/info/rfc5226>.
[RFC5322] Resnick, P., Ed., "Internet Message Format", RFC 5322, DOI 10.17487/RFC5322, October 2008, <http://www.rfc-editor.org/info/rfc5322>. [RFC5621] Camarillo, G., "Message Body Handling in the Session Initiation Protocol (SIP)", RFC 5621, DOI 10.17487/RFC5621, September 2009, <http://www.rfc-editor.org/info/rfc5621>. [RFC5646] Phillips, A., Ed. and M. Davis, Ed., "Tags for Identifying Languages", BCP 47, RFC 5646, DOI 10.17487/RFC5646, September 2009, <http://www.rfc-editor.org/info/rfc5646>. [RFC6350] Perreault, S., "vCard Format Specification", RFC 6350, DOI 10.17487/RFC6350, August 2011, <http://www.rfc-editor.org/info/rfc6350>. [RFC6351] Perreault, S., "xCard: vCard XML Representation", RFC 6351, DOI 10.17487/RFC6351, August 2011, <http://www.rfc-editor.org/info/rfc6351>. [RFC6838] Freed, N., Klensin, J., and T. Hansen, "Media Type Specifications and Registration Procedures", BCP 13, RFC 6838, DOI 10.17487/RFC6838, January 2013, <http://www.rfc-editor.org/info/rfc6838>. [RFC7303] Thompson, H. and C. Lilley, "XML Media Types", RFC 7303, DOI 10.17487/RFC7303, July 2014, <http://www.rfc-editor.org/info/rfc7303>.12.2. Informative References
[ECRIT-WG-wiki] IETF ECRIT WG Wiki, "Additional Data Examples", July 2015, <http://tools.ietf.org/wg/ecrit/trac/attachment/wiki/ WikiStart/additional-data-examples.zip>. [Err3047] RFC Errata, Erratum ID 3047, RFC 6351. [HUMAN-LANG] Gellens, R., "Negotiating Human Language in Real-Time Communications", Work in Progress, draft-ietf-slim- negotiating-human-language-04, July 2016. [IANA-XML-Schemas] IANA, "IETF XML Registry", <http://www.iana.org/assignments/xml-registry>.
[IEEE-1512-2006] IEEE, "IEEE Standard for Common Incident Management Message Sets for Use by Emergency Management Centers", IEEE Std 1512-2006, DOI 10.1109/IEEESTD.2006.224678, August 2006, <https://standards.ieee.org/findstds/ standard/1512-2006.html>. [LanguageSubtagRegistry] IANA, "Language Subtag Registry", <http://www.iana.org/assignments/ language-subtag-registry>. [LERG] Telcordia Technologies, Inc., "LERG Routing Guide", ANI II Digits Definitions, June 2015. [NANP] North American Numbering Plan Administration (NANPA), "ANI II Digits Assignments", September 2015, <http://nanpa.com/number_resource_info/ ani_ii_assignments.html>. [nc911] North Carolina 911 Board, "Wireless 911 for Telecommunicators", January 2009, <https://www.nc911.nc.gov/pdf/ A_TelecommunicatorReference.pdf>. [NENA-02-010] National Emergency Number Association (NENA), "NENA Standard Data Formats for 9-1-1 Data Exchange & GIS Mapping", NENA-02-010, Version 9, December 2010, <http://www.nena.org>. [RFC3325] Jennings, C., Peterson, J., and M. Watson, "Private Extensions to the Session Initiation Protocol (SIP) for Asserted Identity within Trusted Networks", RFC 3325, DOI 10.17487/RFC3325, November 2002, <http://www.rfc-editor.org/info/rfc3325>. [RFC3840] Rosenberg, J., Schulzrinne, H., and P. Kyzivat, "Indicating User Agent Capabilities in the Session Initiation Protocol (SIP)", RFC 3840, DOI 10.17487/RFC3840, August 2004, <http://www.rfc-editor.org/info/rfc3840>. [RFC5012] Schulzrinne, H. and R. Marshall, Ed., "Requirements for Emergency Context Resolution with Internet Technologies", RFC 5012, DOI 10.17487/RFC5012, January 2008, <http://www.rfc-editor.org/info/rfc5012>.
[RFC5139] Thomson, M. and J. Winterbottom, "Revised Civic Location Format for Presence Information Data Format Location Object (PIDF-LO)", RFC 5139, DOI 10.17487/RFC5139, February 2008, <http://www.rfc-editor.org/info/rfc5139>. [RFC5491] Winterbottom, J., Thomson, M., and H. Tschofenig, "GEOPRIV Presence Information Data Format Location Object (PIDF-LO) Usage Clarification, Considerations, and Recommendations", RFC 5491, DOI 10.17487/RFC5491, March 2009, <http://www.rfc-editor.org/info/rfc5491>. [RFC5582] Schulzrinne, H., "Location-to-URL Mapping Architecture and Framework", RFC 5582, DOI 10.17487/RFC5582, September 2009, <http://www.rfc-editor.org/info/rfc5582>. [RFC5962] Schulzrinne, H., Singh, V., Tschofenig, H., and M. Thomson, "Dynamic Extensions to the Presence Information Data Format Location Object (PIDF-LO)", RFC 5962, DOI 10.17487/RFC5962, September 2010, <http://www.rfc-editor.org/info/rfc5962>. [RFC5985] Barnes, M., Ed., "HTTP-Enabled Location Delivery (HELD)", RFC 5985, DOI 10.17487/RFC5985, September 2010, <http://www.rfc-editor.org/info/rfc5985>. [RFC6443] Rosen, B., Schulzrinne, H., Polk, J., and A. Newton, "Framework for Emergency Calling Using Internet Multimedia", RFC 6443, DOI 10.17487/RFC6443, December 2011, <http://www.rfc-editor.org/info/rfc6443>. [RFC6698] Hoffman, P. and J. Schlyter, "The DNS-Based Authentication of Named Entities (DANE) Transport Layer Security (TLS) Protocol: TLSA", RFC 6698, DOI 10.17487/RFC6698, August 2012, <http://www.rfc-editor.org/info/rfc6698>. [RFC6848] Winterbottom, J., Thomson, M., Barnes, R., Rosen, B., and R. George, "Specifying Civic Address Extensions in the Presence Information Data Format Location Object (PIDF- LO)", RFC 6848, DOI 10.17487/RFC6848, January 2013, <http://www.rfc-editor.org/info/rfc6848>. [RFC6881] Rosen, B. and J. Polk, "Best Current Practice for Communications Services in Support of Emergency Calling", BCP 181, RFC 6881, DOI 10.17487/RFC6881, March 2013, <http://www.rfc-editor.org/info/rfc6881>.
[RFC6973] Cooper, A., Tschofenig, H., Aboba, B., Peterson, J., Morris, J., Hansen, M., and R. Smith, "Privacy Considerations for Internet Protocols", RFC 6973, DOI 10.17487/RFC6973, July 2013, <http://www.rfc-editor.org/info/rfc6973>. [RFC7035] Thomson, M., Rosen, B., Stanley, D., Bajko, G., and A. Thomson, "Relative Location Representation", RFC 7035, DOI 10.17487/RFC7035, October 2013, <http://www.rfc-editor.org/info/rfc7035>. [RFC7090] Schulzrinne, H., Tschofenig, H., Holmberg, C., and M. Patel, "Public Safety Answering Point (PSAP) Callback", RFC 7090, DOI 10.17487/RFC7090, April 2014, <http://www.rfc-editor.org/info/rfc7090>. [RFC7525] Sheffer, Y., Holz, R., and P. Saint-Andre, "Recommendations for Secure Use of Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)", BCP 195, RFC 7525, DOI 10.17487/RFC7525, May 2015, <http://www.rfc-editor.org/info/rfc7525>.
Appendix A. XML Schema for vCard/xCard
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 defined in this document. In addition to mapping the Relax NG schema to an XML schema, this specification applies an erratum raised for RFC 6351 regarding the type definition; see RFC Erratum ID 3047 [Err3047]. <?xml version="1.0" encoding="UTF-8"?> <xs:schema targetNamespace="urn:ietf:params:xml:ns:vcard-4.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ns1="urn:ietf:params:xml:ns:vcard-4.0" 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 --> <xs:element name="text" type="xs:string"/> <xs:group name="value-text-list"> <xs:sequence> <xs:element ref="ns1:text" maxOccurs="unbounded"/> </xs:sequence> </xs:group> <!-- 4.2 --> <xs:element name="uri" type="xs:anyURI"/> <!-- 4.3.1 --> <xs:element name="date" substitutionGroup="ns1:value-date-and-or-time"> <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> </xs:simpleType> </xs:element> <!-- 4.4 --> <xs:element name="boolean" type="xs:boolean"/> <!-- 4.5 --> <xs:element name="integer" type="xs:integer"/> <!-- 4.6 --> <xs:element name="float" type="xs:float"/> <!-- 4.7 --> <xs:element name="utc-offset"> <xs:simpleType> <xs:restriction base="xs:string">
<xs:pattern value="[+\-]\d\d(\d\d)?"/> </xs:restriction> </xs:simpleType> </xs:element> <!-- 4.8 --> <xs:element name="language-tag"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value= "([a-z]{2,3}((-[a-z]{3}){0,3})?|[a-z]{4,8})(-[a-z]{4})? (-([a-z]{2}|\d{3}))?(-([0-9a-z]{5,8}|\d[0-9a-z]{3}))* (-[0-9a-wyz](-[0-9a-z]{2,8})+)*(-x(-[0-9a-z]{1,8})+)? |x(-[0-9a-z]{1,8})+|[a-z]{1,3}(-[0-9a-z]{2,8}){1,2}"/> </xs:restriction> </xs:simpleType> </xs:element> <!-- 5.1 --> <xs:group name="param-language"> <xs:annotation> <xs:documentation>Section 5: Parameters</xs:documentation> </xs:annotation> <xs:sequence> <xs:element ref="ns1:language" minOccurs="0"/> </xs:sequence> </xs:group> <xs:element name="language"> <xs:complexType> <xs:sequence> <xs:element ref="ns1:language-tag"/> </xs:sequence> </xs:complexType> </xs:element> <!-- 5.2 --> <xs:group name="param-pref"> <xs:sequence> <xs:element ref="ns1:pref" minOccurs="0"/> </xs:sequence> </xs:group> <xs:element name="pref"> <xs:complexType> <xs:sequence> <xs:element name="integer"> <xs:simpleType> <xs:restriction base="xs:integer"> <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> </xs:sequence> </xs:complexType> </xs:element> <!-- 5.6 --> <xs:group name="param-type"> <xs:sequence> <xs:element ref="ns1:type" minOccurs="0"/> </xs:sequence> </xs:group> <xs:element name="type"> <xs:complexType> <xs:sequence> <xs:element name="text" maxOccurs="unbounded">
<xs:simpleType> <xs:restriction base="xs:token"> <xs:enumeration value="work"/> <xs:enumeration value="home"/> </xs:restriction> </xs:simpleType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <!-- 5.7 --> <xs:group name="param-mediatype"> <xs:sequence> <xs:element ref="ns1:mediatype" minOccurs="0"/> </xs:sequence> </xs:group> <xs:element name="mediatype"> <xs:complexType> <xs:sequence> <xs:element ref="ns1:text"/> </xs:sequence> </xs:complexType> </xs:element> <!-- 5.8 --> <xs:group name="param-calscale"> <xs:sequence> <xs:element ref="ns1:calscale" minOccurs="0"/> </xs:sequence> </xs:group> <xs:element name="calscale"> <xs:complexType> <xs:sequence> <xs:element name="text"> <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 ref="ns1:text"/> </xs:sequence> </xs:complexType> </xs:element> <!-- 6.2.2 --> <xs:element name="n"> <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-sort-as"/> <xs:group ref="ns1:param-altid"/>
</xs:sequence> </xs:complexType> </xs:element> <xs:element ref="ns1:surname" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="ns1:given" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="ns1:additional" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="ns1:prefix" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="ns1:suffix" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="surname" type="xs:string"/> <xs:element name="given" type="xs:string"/> <xs:element name="additional" type="xs:string"/> <xs:element name="prefix" type="xs:string"/> <xs:element name="suffix" type="xs:string"/> <!-- 6.2.3 --> <xs:element name="nickname"> <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:group ref="ns1:value-text-list"/> </xs:sequence> </xs:complexType> </xs:element> <!-- 6.2.4 --> <xs:element name="photo"> <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:element> <!-- 6.2.5 --> <xs:element name="bday"> <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-calscale"/> </xs:sequence> </xs:complexType> </xs:element> <xs:choice> <xs:element ref="ns1:value-date-and-or-time"/> <xs:element ref="ns1:text"/> </xs:choice> </xs:sequence> </xs:complexType> </xs:element> <!-- 6.2.6 --> <xs:element name="anniversary"> <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-calscale"/> </xs:sequence> </xs:complexType> </xs:element> <xs:choice> <xs:element ref="ns1:value-date-and-or-time"/> <xs:element ref="ns1:text"/> </xs:choice> </xs:sequence> </xs:complexType>
</xs:element> <!-- 6.2.7 --> <xs:element name="gender"> <xs:complexType> <xs:sequence> <xs:element ref="ns1:sex"/> <xs:element ref="ns1:identity" minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="sex"> <xs:simpleType> <xs:restriction base="xs:token"> <xs:enumeration value=""/> <xs:enumeration value="M"/> <xs:enumeration value="F"/> <xs:enumeration value="O"/> <xs:enumeration value="N"/> <xs:enumeration value="U"/> </xs:restriction> </xs:simpleType> </xs:element> <xs:element name="identity" type="xs:string"/> <!-- 6.3.1 --> <xs:group name="param-label"> <xs:sequence> <xs:element ref="ns1:label" minOccurs="0"/> </xs:sequence> </xs:group> <xs:element name="label"> <xs:complexType> <xs:sequence> <xs:element ref="ns1:text"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="adr"> <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:group ref="ns1:param-geo"/>
<xs:group ref="ns1:param-tz"/> <xs:group ref="ns1:param-label"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element ref="ns1:pobox" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="ns1:ext" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="ns1:street" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="ns1:locality" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="ns1:region" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="ns1:code" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="ns1:country" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="pobox" type="xs:string"/> <xs:element name="ext" type="xs:string"/> <xs:element name="street" type="xs:string"/> <xs:element name="locality" type="xs:string"/> <xs:element name="region" type="xs:string"/> <xs:element name="code" type="xs:string"/> <xs:element name="country" type="xs:string"/> <!-- 6.4.1 --> <xs:element name="tel"> <xs:complexType> <xs:sequence> <xs:element name="parameters" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:group ref="ns1:param-altid" minOccurs="0"/> <xs:group ref="ns1:param-pid" minOccurs="0"/> <xs:group ref="ns1:param-pref" minOccurs="0"/> <xs:element name="type" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element name="text" type="xs:string" maxOccurs="unbounded">
</xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:group ref="ns1:param-mediatype"/> </xs:sequence> </xs:complexType> </xs:element> <xs:choice> <xs:element ref="ns1:text"/> <xs:element ref="ns1:uri"/> </xs:choice> </xs:sequence> </xs:complexType> </xs:element> <!-- 6.4.2 --> <xs:element name="email"> <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:sequence> </xs:complexType> </xs:element> <xs:element ref="ns1:text"/> </xs:sequence> </xs:complexType> </xs:element> <!-- 6.4.3 --> <xs:element name="impp"> <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:element> <!-- 6.4.4 --> <xs:element name="lang"> <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:sequence> </xs:complexType> </xs:element> <xs:element ref="ns1:language-tag"/> </xs:sequence> </xs:complexType> </xs:element> <!-- 6.5.1 --> <xs:group name="property-tz"> <xs:sequence> <xs:element name="tz"> <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:text"/> <xs:element ref="ns1:uri"/> <xs:element ref="ns1:utc-offset"/> </xs:choice> </xs:sequence> </xs:complexType> </xs:element>
</xs:sequence> </xs:group> <!-- 6.5.2 --> <xs:group name="property-geo"> <xs:sequence> <xs:element name="geo"> <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:element> </xs:sequence> </xs:group> <!-- 6.6.1 --> <xs:element name="title"> <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 ref="ns1:text"/> </xs:sequence> </xs:complexType> </xs:element> <!-- 6.6.2 --> <xs:element name="role"> <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 ref="ns1:text"/> </xs:sequence> </xs:complexType> </xs:element> <!-- 6.6.3 --> <xs:element name="logo"> <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:group ref="ns1:param-mediatype"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element ref="ns1:uri"/> </xs:sequence> </xs:complexType> </xs:element> <!-- 6.6.4 --> <xs:element name="org"> <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:group ref="ns1:param-sort-as"/> </xs:sequence> </xs:complexType> </xs:element> <xs:group ref="ns1:value-text-list"/> </xs:sequence> </xs:complexType> </xs:element> <!-- 6.6.5 --> <xs:element name="member"> <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-mediatype"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element ref="ns1:uri"/> </xs:sequence> </xs:complexType> </xs:element> <!-- 6.6.6 --> <xs:element name="related"> <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:element name="type" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element name="text" maxOccurs="unbounded"> <xs:simpleType> <xs:restriction base="xs:token"> <xs:enumeration value="work"/> <xs:enumeration value="home"/> <xs:enumeration value="contact"/> <xs:enumeration value="acquaintance"/> <xs:enumeration value="friend"/> <xs:enumeration value="met"/>
<xs:enumeration value="co-worker"/> <xs:enumeration value="colleague"/> <xs:enumeration value="co-resident"/> <xs:enumeration value="neighbor"/> <xs:enumeration value="child"/> <xs:enumeration value="parent"/> <xs:enumeration value="sibling"/> <xs:enumeration value="spouse"/> <xs:enumeration value="kin"/> <xs:enumeration value="muse"/> <xs:enumeration value="crush"/> <xs:enumeration value="date"/> <xs:enumeration value="sweetheart"/> <xs:enumeration value="me"/> <xs:enumeration value="agent"/> <xs:enumeration value="emergency"/> </xs:restriction> </xs:simpleType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <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.7.1 --> <xs:element name="categories"> <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:sequence> </xs:complexType> </xs:element> <xs:group ref="ns1:value-text-list"/>
</xs:sequence> </xs:complexType> </xs:element> <!-- 6.7.2 --> <xs:element name="note"> <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 ref="ns1:text"/> </xs:sequence> </xs:complexType> </xs:element> <!-- 6.7.3 --> <xs:element name="prodid"> <xs:complexType> <xs:sequence> <xs:element ref="ns1:text"/> </xs:sequence> </xs:complexType> </xs:element> <!-- 6.7.4 --> <xs:element name="rev" type="ns1:value-timestamp"/> <!-- 6.7.5 --> <xs:element name="sound"> <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:group ref="ns1:param-mediatype"/> </xs:sequence> </xs:complexType> </xs:element>
<xs:element ref="ns1:uri"/> </xs:sequence> </xs:complexType> </xs:element> <!-- 6.7.6 --> <xs:element name="uid"> <xs:complexType> <xs:sequence> <xs:element ref="ns1:uri"/> </xs:sequence> </xs:complexType> </xs:element> <!-- 6.7.7 --> <xs:element name="clientpidmap"> <xs:complexType> <xs:sequence> <xs:element ref="ns1:sourceid"/> <xs:element ref="ns1:uri"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="sourceid" type="xs:positiveInteger"/> <!-- 6.7.8 --> <xs:element name="url"> <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: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:element> <!-- 6.9.2 --> <xs:element name="caladruri"> <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:element> <!-- 6.9.3 --> <xs:element name="caluri"> <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:element> <!-- Top-level grammar --> <xs:group name="property"> <xs:sequence> <xs:element ref="ns1:adr" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="ns1:anniversary" minOccurs="0" maxOccurs="1"/> <xs:element ref="ns1:bday" minOccurs="0" maxOccurs="1"/> <xs:element ref="ns1:caladruri" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="ns1:caluri" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="ns1:categories" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="ns1:clientpidmap" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="ns1:email" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="ns1:fburl" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="ns1:fn" minOccurs="1" maxOccurs="unbounded"/> <xs:group ref="ns1:property-geo" minOccurs="0"
maxOccurs="unbounded"/> <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
This document defines a number of XML schemas and contains various examples. Extracting the XML and validating the examples against the schemas can be challenging, especially due to the formatting limitations introduced by IETF RFCs. For those readers who copy the XML schemas and examples directly from this document, please consider that errors might be introduced due to line breaks and extra whitespaces in the regular expressions contained in the vCard schema in Appendix A. To validate the PIDF-LO from Figure 18, it is also necessary to consult the referenced RFCs and copy the schemas necessary for successful validation. The XML schemas found in this document include a 'SchemaLocation' attribute. Depending on the location of the downloaded schema files, you may need to adjust this schema location or configure your XML editor to point to the location. For the convenience of the reader, the schemas are available at [IANA-XML-Schemas], and the XML examples are available at the IETF ECRIT working group wiki page [ECRIT-WG-wiki].
Acknowledgments
This work was originally started in NENA and has benefited from a large number of participants involved in NENA standardization efforts, originally in the Long Term Definition working group, the Data Technical Committee, and most recently in the Additional Data working group. The authors are grateful for the initial work and extended comments provided by many NENA participants, including Delaine Arnold, Marc Berryman, Guy Caron, Brian Dupras, Mark Fletcher, James Leyerle, Kathy McMahon, Christian Militeau, Ira Pyles, Matt Serra, and Robert (Bob) Sherry. Amursana Khiyod, Robert Sherry, Frank Rahoi, Scott Ross, and Tom Klepetka provided valuable feedback regarding the vCard/xCard use in this specification. We would also like to thank Paul Kyzivat, Gunnar Hellstrom, Martin Thomson, Keith Drage, Laura Liess, Chris Santer, Barbara Stark, Chris Santer, Archie Cobbs, Magnus Nystrom, Stephen Farrell, Amanda Baber, Dan Banks, Andrew Newton, Philip Reichl, and Francis Dupont for their review comments. Alissa Cooper, Guy Caron, Ben Campbell, and Barry Leiba deserve special mention for their detailed and extensive review comments, which were very helpful and appreciated.
Authors' Addresses
Randall Gellens San Diego, CA 92121 United States Email: rg+ietf@randy.pensive.org Brian Rosen NeuStar 470 Conrad Dr. Mars, PA 16046 United States Phone: +1 724 382 1051 Email: br@brianrosen.net Hannes Tschofenig Hall in Tirol 6060 Austria Email: Hannes.tschofenig@gmx.net URI: http://www.tschofenig.priv.at Roger Marshall TeleCommunication Systems, Inc. 2401 Elliott Avenue Seattle, WA 98121 United States Phone: +1 206 792 2424 Email: rmarshall@telecomsys.com URI: http://www.telecomsys.com James Winterbottom Winterb Consulting Services Gwynneville, NSW 2500 Australia Phone: +61 448 266004 Email: a.james.winterbottom@gmail.com