[Bedework-commit] bwxml r16 - in trunk: . schemas schemas/tzsvr schemas/vcard vcard

svnadmin at bedework.org svnadmin at bedework.org
Tue Mar 8 14:53:50 EST 2011


Author: douglm
Date: 2011-03-08 14:53:49 -0500 (Tue, 08 Mar 2011)
New Revision: 16

Added:
   trunk/schemas/vcard/
   trunk/schemas/vcard/vcard.xsd
   trunk/vcard/
   trunk/vcard/gensrc/
Modified:
   trunk/build.properties
   trunk/build.xml
   trunk/schemas/tzsvr/tzservice.xsd
Log:
Add vcard schema

Modified: trunk/build.properties
===================================================================
--- trunk/build.properties	2011-03-07 20:33:31 UTC (rev 15)
+++ trunk/build.properties	2011-03-08 19:53:49 UTC (rev 16)
@@ -12,4 +12,5 @@
 org.bedework.module.exchangewsschema.jar=bw-exchangewsschema
 org.bedework.module.exsynchwsschema.jar=bw-exsynchwsschema
 org.bedework.module.tzschema.jar=bw-tzschema
+org.bedework.module.vcardschema.jar=bw-vcardschema
 

Modified: trunk/build.xml
===================================================================
--- trunk/build.xml	2011-03-07 20:33:31 UTC (rev 15)
+++ trunk/build.xml	2011-03-08 19:53:49 UTC (rev 16)
@@ -58,6 +58,9 @@
     <property name="org.bedework.tzsvc.base"
               location="${project.home}/timezones" />
 
+    <property name="org.bedework.vcard.base"
+              location="${project.home}/vcard" />
+
     <property name="exchangews.jar"
               location="${dist.home}/${org.bedework.module.exchangewsschema.jar}-${project.version}.jar" />
 
@@ -66,6 +69,9 @@
 
     <property name="tzsvc.jar"
               location="${dist.home}/${org.bedework.module.tzschema.jar}-${project.version}.jar" />
+
+    <property name="vcard.jar"
+              location="${dist.home}/${org.bedework.module.vcardschema.jar}-${project.version}.jar" />
     
     <property name="exchange.wsdllocation"
               value="${bedework-options.org.bedework.app.Exsynch.exchangeWSDLURI}" />
@@ -114,6 +120,13 @@
          bindingsdir="${project.home}/xjcbindings"
          dependencies="org.bedework.schemas.files"
     />
+
+    <!-- vcard -->
+    <xjc schema="${org.bedework.schemas.base}/vcard/vcard.xsd"
+         module-base="${org.bedework.vcard.base}/gensrc"
+         jar-file="${vcard.jar}"
+         bindingsdir="${project.home}/xjcbindings"
+    />
     
     <build-jar-stats />
   </target>

Modified: trunk/schemas/tzsvr/tzservice.xsd
===================================================================
--- trunk/schemas/tzsvr/tzservice.xsd	2011-03-07 20:33:31 UTC (rev 15)
+++ trunk/schemas/tzsvr/tzservice.xsd	2011-03-08 19:53:49 UTC (rev 16)
@@ -4,9 +4,9 @@
         xmlns:xcal="urn:ietf:params:xml:ns:icalendar-2.0"
         targetNamespace="urn:ietf:params:xml:ns:timezone-service" 
         elementFormDefault="qualified">
-  <!-- =====================================================================
+  <!-- =============================================================
        Timezones service XML schema 
-       ===================================================================== -->
+       ============================================================= -->
         
   <import schemaLocation="../xml.xsd" 
           namespace="http://www.w3.org/XML/1998/namespace" />
@@ -14,17 +14,18 @@
   <import schemaLocation="../icalendar/iCalendar.xsd" 
           namespace="urn:ietf:params:xml:ns:icalendar-2.0" />
   
-  <!-- *********************************************************************
+  <!-- *************************************************************
                              basic types
-       ********************************************************************* -->
+       ************************************************************* -->
           
   <simpleType name="CalscaleType">
     <annotation>
       <documentation xml:lang="en">
         The calendar system defines how rules, dates and times are to be 
         interpreted. Currently only the value "Gregorian" is supported, 
-        referring to the Gregorian calendar scale. If this element is not 
-        present in its normal context, then the value "Gregorian" MUST be assumed. 
+        referring to the Gregorian calendar scale. If this element is 
+        not present in its normal context, then the value "Gregorian" 
+        MUST be assumed. 
       </documentation>
     </annotation>
     <restriction base="string"/>
@@ -33,8 +34,8 @@
   <simpleType name="DtstampType">
     <annotation>
       <documentation xml:lang="en">
-        Provides the UTC date and time when a substantive change was made to the 
-        timezone data.  
+        Provides the UTC date and time when a substantive change was 
+        made to the timezone data.  
       </documentation>
     </annotation>
     <restriction base="string"/>
@@ -43,7 +44,8 @@
   <simpleType name="LastmodifiedType">
     <annotation>
       <documentation xml:lang="en">
-        Provides the UTC date and time that the timezone data was last modified. 
+        Provides the UTC date and time that the timezone data was last 
+        modified. 
       </documentation>
     </annotation>
     <restriction base="string"/>
@@ -52,16 +54,18 @@
   <complexType name="LocalNameType">
     <annotation>
       <documentation xml:lang="en">
-        Defines one or more localized names that are used when a timezone 
-        identifier needs to be presented to a user. The xml:lang attribute is 
-        used to indicate the language associated with each value. If multiple 
-        names are provided for the same locale the first is considered the 
-        preferred name.
+        Defines one or more localized names that are used when a 
+        timezone identifier needs to be presented to a user. 
+        The xml:lang attribute is used to indicate the language 
+        associated with each value.  
+        If multiple names are provided for the same locale the first is 
+        considered the preferred name.
       </documentation>
     </annotation>
     <simpleContent>
       <extension base="string">
         <attribute ref="xml:lang" />
+        <attribute name="pref" type="boolean" />
       </extension>
     </simpleContent>
   </complexType>
@@ -69,7 +73,8 @@
   <simpleType name="OnsetType">
     <annotation>
       <documentation xml:lang="en">
-        The onset element defines the local time at which the observance takes effect.   
+        The onset element defines the local time at which the 
+        observance takes effect.   
       </documentation>
     </annotation>
     <restriction base="string"/>
@@ -78,7 +83,8 @@
   <simpleType name="TzidType">
     <annotation>
       <documentation xml:lang="en">
-        The text value is the identifier of the timezone being referred to.  
+        The text value is the identifier of the timezone being 
+        referred to.  
       </documentation>
     </annotation>
     <restriction base="string"/>
@@ -87,8 +93,8 @@
   <simpleType name="UtcOffsetFromType">
     <annotation>
       <documentation xml:lang="en">
-        The utc-offset-from element defines the UTC offset in hours and minutes 
-        before the start of this observance.   
+        The utc-offset-from element defines the UTC offset in hours 
+        and minutes before the start of this observance.   
       </documentation>
     </annotation>
     <restriction base="string"/>
@@ -97,8 +103,8 @@
   <simpleType name="UtcOffsetToType">
     <annotation>
       <documentation xml:lang="en">
-        The utc-offset-to element defines the UTC offset in hours and minutes at 
-        and after the start of this observance.   
+        The utc-offset-to element defines the UTC offset in hours and 
+        minutes at and after the start of this observance.   
       </documentation>
     </annotation>
     <restriction base="string"/>
@@ -107,8 +113,9 @@
   <complexType name="AliasType">
     <annotation>
       <documentation xml:lang="en">
-        Defines alternative identifiers that can be used for the timezone. This 
-        feature allows mapping of old identifiers onto new. 
+        Defines alternative identifiers that can be used for the 
+        timezone. This feature allows mapping of old identifiers 
+        onto new. 
       </documentation>
     </annotation>
     <simpleContent>
@@ -120,14 +127,15 @@
   
   <complexType name="BaseResultType" abstract="true" />
   
-  <!-- *********************************************************************
+  <!-- *************************************************************
                              capabilities response
-       ********************************************************************* -->
+       ************************************************************* -->
   
   <complexType name="CapabilitiesAcceptParameterType">
     <annotation>
       <documentation xml:lang="en">
-        This defines the name, type and characteristics of an operation parameter. 
+        This defines the name, type and characteristics of an operation 
+        parameter. 
       </documentation>
     </annotation>
     <sequence> 
@@ -142,14 +150,15 @@
   <complexType name="CapabilitiesOperationType">
     <annotation>
       <documentation xml:lang="en">
-        The element used as the container for information defining an operation 
-        and its parameters. .
+        The element used as the container for information defining an 
+        operation and its parameters. .
       </documentation>
     </annotation>
     <sequence> 
       <element name="action" type="string" />
       <element name="description" type="string" />
-      <element name="accept-parameter" type="tns:CapabilitiesAcceptParameterType" 
+      <element name="accept-parameter" 
+               type="tns:CapabilitiesAcceptParameterType" 
                maxOccurs="unbounded" />
     </sequence>
   </complexType>
@@ -157,13 +166,15 @@
   <complexType name="CapabilitiesType">
     <annotation>
       <documentation xml:lang="en">
-           The root (top-level) element used as the container for capabilities information.
+           The root (top-level) element used as the container for 
+           capabilities information.
       </documentation>
     </annotation>
     <complexContent mixed="false">
       <extension base="tns:BaseResultType">
         <sequence> 
-          <element name="operation" type="tns:CapabilitiesOperationType"
+          <element name="operation" 
+                    type="tns:CapabilitiesOperationType"
                     maxOccurs="unbounded" />
         </sequence>
       </extension>
@@ -172,15 +183,15 @@
   
   <element name="capabilities" type="tns:CapabilitiesType" />
   
-  <!-- *********************************************************************
+  <!-- *************************************************************
                              list response
-       ********************************************************************* -->
+       ************************************************************* -->
   
   <complexType name="SummaryType">
     <annotation>
       <documentation xml:lang="en">
-        This defines the element that provides summary information for a timezone 
-        in the timezones list. 
+        This defines the element that provides summary information for a 
+        timezone in the timezones list. 
       </documentation>
     </annotation>
     <sequence >
@@ -196,15 +207,17 @@
   <complexType name="TimezoneListType">
     <annotation>
       <documentation xml:lang="en">
-        This defines the root (top-level) element used as the container for 
-        a timezone listing.  
+        This defines the root (top-level) element used as the container 
+        for a timezone listing.  
       </documentation>
     </annotation>
     <complexContent mixed="false">
       <extension base="tns:BaseResultType">
         <sequence >
-          <element name="dtstamp" type="tns:DtstampType" minOccurs="1" />
-          <element name="summary" type="tns:SummaryType"
+          <element name="dtstamp" 
+                   type="tns:DtstampType" minOccurs="1" />
+          <element name="summary" 
+                   type="tns:SummaryType"
                    maxOccurs="unbounded"  />
         </sequence>
       </extension>
@@ -213,15 +226,15 @@
   
   <element name="timezone-list" type="tns:TimezoneListType" />
   
-  <!-- *********************************************************************
+  <!-- ************************************************************
                             expand response
-       ********************************************************************* -->
+       ************************************************************* -->
   
   <complexType name="ObservanceType">
     <annotation>
       <documentation xml:lang="en">
-        In an expanded timezone, the observance element specifies a single 
-        timezone observance.  
+        In an expanded timezone, the observance element specifies a 
+        single timezone observance.  
       </documentation>
     </annotation>
     <sequence> 
@@ -229,16 +242,18 @@
       <element name="local-name" type="tns:LocalNameType"
                maxOccurs="unbounded" />
       <element name="onset" type="tns:OnsetType" minOccurs="1" />
-      <element name="utc-offset-from" type="tns:UtcOffsetFromType" minOccurs="1" />
-      <element name="utc-offset-to" type="tns:UtcOffsetToType" minOccurs="1" />
+      <element name="utc-offset-from" 
+               type="tns:UtcOffsetFromType" minOccurs="1" />
+      <element name="utc-offset-to" type="tns:UtcOffsetToType" 
+               minOccurs="1" />
     </sequence>
   </complexType>
   
   <complexType name="TzdataType">
     <annotation>
       <documentation xml:lang="en">
-        This element specifies expanded timezone data for the range specified in 
-        a request. 
+        This element specifies expanded timezone data for the range 
+        specified in a request. 
       </documentation>
     </annotation>
     <sequence> 
@@ -252,14 +267,15 @@
   <complexType name="TimezonesType">
     <annotation>
       <documentation xml:lang="en">
-        This defines the root (top-level) element used as the container for 
-        expanded timezone data.  
+        This defines the root (top-level) element used as the container 
+        for expanded timezone data.  
       </documentation>
     </annotation>
     <complexContent mixed="false">
       <extension base="tns:BaseResultType">
         <sequence >
-          <element name="dtstamp" type="tns:DtstampType" minOccurs="1" />
+          <element name="dtstamp" 
+                   type="tns:DtstampType" minOccurs="1" />
           <element name="tzdata" type="tns:TzdataType"
                    maxOccurs="unbounded"  />
         </sequence>
@@ -269,3 +285,4 @@
   
   <element name="timezones" type="tns:TimezonesType" />
 </schema>
+

Added: trunk/schemas/vcard/vcard.xsd
===================================================================
--- trunk/schemas/vcard/vcard.xsd	                        (rev 0)
+++ trunk/schemas/vcard/vcard.xsd	2011-03-08 19:53:49 UTC (rev 16)
@@ -0,0 +1,496 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
+           xmlns:v="urn:ietf:params:xml:ns:vcard-4.0" 
+           targetNamespace="urn:ietf:params:xml:ns:vcard-4.0" 
+           elementFormDefault="qualified">
+            
+  <!-- =============================================================
+       Value Types 
+       ============================================================= -->
+          
+  <xs:element name="text" type="xs:string"/>
+  
+  <xs:simpleType name="UriType">
+    <xs:restriction base="xs:string"/>
+  </xs:simpleType>
+  
+  <xs:element name="uri" type="v:UriType" />  
+  
+  <xs:element name="date">
+    <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>  
+  
+  <xs:element name="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>  
+  
+  <xs:element name="date-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>  
+  
+  <xs:complexType name="DateAndOrTimeType">
+    <xs:sequence>
+      <xs:choice>
+        <xs:element ref="v:date" />
+        <xs:element ref="v:date-time" />
+        <xs:element ref="v:time" />
+      </xs:choice>
+    </xs:sequence>
+  </xs:complexType>
+  
+  <xs:element name="date-and-or-time" type="v:DateAndOrTimeType" />
+  
+  <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>  
+
+  <xs:element name="boolean" type="xs:boolean" />
+
+  <xs:element name="integer" type="xs:integer" />
+  
+  <xs:element name="float" type="xs:float" />
+  
+  <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>  
+  
+  <xs:element name="pid-val">
+    <xs:simpleType>
+      <xs:restriction base="xs:string">
+        <xs:pattern value="\d+(\.\d+)?"/>
+      </xs:restriction>
+    </xs:simpleType>
+  </xs:element>  
+            
+  <!-- =============================================================
+       Parameters 
+       ============================================================= -->
+
+  <xs:complexType name="BaseParameterType" abstract="true" >
+  </xs:complexType>
+
+  <xs:element name="baseParameter" type="v:BaseParameterType" />
+
+  <xs:complexType name="ArrayOfParameters">
+    <xs:sequence>
+      <xs:element ref="v:baseParameter" minOccurs="0" maxOccurs="unbounded"/>
+    </xs:sequence>
+  </xs:complexType>
+
+  <xs:element name="language" type="v:LanguageParamType"
+              substitutionGroup="v:baseParameter" />
+
+  <xs:element name="pref" type="v:PrefParamType"
+              substitutionGroup="v:baseParameter" />
+
+  <xs:element name="altid" type="v:TextParamType"
+              substitutionGroup="v:baseParameter" />
+
+  <xs:element name="pid" type="v:PidParamType"
+              substitutionGroup="v:baseParameter" />
+
+  <xs:element name="type" type="v:TextParamType"
+              substitutionGroup="v:baseParameter" />
+
+  <xs:element name="calscale" type="v:TextParamType"
+              substitutionGroup="v:baseParameter" />
+
+  <xs:element name="sort-as" type="v:TextListParamType"
+              substitutionGroup="v:baseParameter" />
+
+  <!-- Renamed from geo -->
+  <xs:element name="geoloc" type="v:UriParamType"
+              substitutionGroup="v:baseParameter" />
+
+  <!-- Renamed from tz -->
+  <xs:element name="tzid" type="v:TzParamType"
+              substitutionGroup="v:baseParameter" />
+
+  <xs:element name="label" type="v:TextParamType"
+              substitutionGroup="v:baseParameter" />
+
+  <!-- Parameters that take a simple text value -->
+  <xs:complexType name="TextParamType" >
+    <xs:complexContent mixed="false">
+      <xs:extension base="v:BaseParameterType">
+        <xs:sequence> 
+          <xs:element ref="v:text" />
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <!-- Parameters that take one or more simple text value -->
+  <xs:complexType name="TextListParamType" >
+    <xs:complexContent mixed="false">
+      <xs:extension base="v:BaseParameterType">
+        <xs:sequence> 
+          <xs:element ref="v:text" maxOccurs="unbounded" />
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <!-- Parameters that take a uri value -->
+  <xs:complexType name="UriParamType" >
+    <xs:complexContent mixed="false">
+      <xs:extension base="v:BaseParameterType">
+        <xs:sequence>
+          <xs:element ref="v:uri"/>
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <xs:complexType name="PrefParamType" >
+    <xs:complexContent mixed="false">
+      <xs:extension base="v:BaseParameterType">
+        <xs:sequence>
+          <xs:element ref="v:text" />
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <xs:complexType name="TzParamType" >
+    <xs:complexContent mixed="false">
+      <xs:extension base="v:BaseParameterType">
+        <xs:sequence>
+          <xs:choice>
+            <xs:element ref="v:text" />
+            <xs:element ref="v:uri"/>
+          </xs:choice>
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <xs:complexType name="LanguageParamType" >
+    <xs:complexContent mixed="false">
+      <xs:extension base="v:BaseParameterType">
+        <xs:sequence> 
+          <xs:element ref="v:language-tag" />
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <xs:complexType name="PidParamType" >
+    <xs:complexContent mixed="false">
+      <xs:extension base="v:BaseParameterType">
+        <xs:sequence> 
+          <xs:element ref="v:pid-val" maxOccurs="unbounded" />
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+            
+  <!-- =============================================================
+       Properties 
+       ============================================================= -->
+
+  <!-- =====================================================================
+        BasePropertyType 
+        All properties are based off this type which defines a property as 
+        nothing more than a list of parameters. 
+        
+        We make no attempt to define valid parameters for each property as this
+        would complicate the schema significantly. Consumers can ignore 
+        property parameters they do not understand or expect. 
+       ===================================================================== -->  
+  <xs:complexType name="BasePropertyType" abstract="true" >
+    <xs:sequence>
+      <xs:element name="parameters" type="v:ArrayOfParameters"/>
+    </xs:sequence>
+  </xs:complexType>
+
+  <xs:element name="baseProperty" type="v:BasePropertyType" />
+
+  <xs:complexType name="ArrayOfProperties">
+    <xs:sequence>
+      <xs:element ref="v:baseProperty" minOccurs="0" maxOccurs="unbounded"/>
+    </xs:sequence>
+  </xs:complexType>
+  
+  <xs:element name="source" type="v:UriPropertyType"
+              substitutionGroup="v:baseProperty" />
+  
+  <!--  "individual" | "group" | "org" | "location"   -->   
+  <xs:element name="kind" type="v:TextPropertyType"
+              substitutionGroup="v:baseProperty" />
+
+  <xs:element name="fn" type="v:TextPropertyType"
+              substitutionGroup="v:baseProperty" />
+
+  <xs:element name="n" type="v:NamePropertyType"
+              substitutionGroup="v:baseProperty" />
+
+  <xs:element name="nickname" type="v:TextListPropertyType"
+              substitutionGroup="v:baseProperty" />
+  
+  <xs:element name="photo" type="v:UriPropertyType"
+              substitutionGroup="v:baseProperty" />
+  
+  <xs:element name="bday" type="v:BdayPropertyType"
+              substitutionGroup="v:baseProperty" />
+  
+  <xs:element name="anniversary" type="v:BdayPropertyType"
+              substitutionGroup="v:baseProperty" />
+
+  <!-- "male" | "female" -->
+  <xs:element name="gender" type="v:TextPropertyType"
+              substitutionGroup="v:baseProperty" />
+
+  <xs:element name="adr" type="v:AdrPropertyType"
+              substitutionGroup="v:baseProperty" />
+
+  <xs:element name="tel" type="v:TextUriPropertyType"
+              substitutionGroup="v:baseProperty" />
+
+  <xs:element name="email" type="v:TextPropertyType"
+              substitutionGroup="v:baseProperty" />
+
+  <xs:element name="impp" type="v:UriPropertyType"
+              substitutionGroup="v:baseProperty" />
+
+  <xs:element name="lang" type="v:LangPropertyType"
+              substitutionGroup="v:baseProperty" />
+
+  <xs:element name="tz" type="v:TextUriPropertyType"
+              substitutionGroup="v:baseProperty" />
+
+  <xs:element name="geo" type="v:UriPropertyType"
+              substitutionGroup="v:baseProperty" />
+
+  <xs:element name="title" type="v:TextPropertyType"
+              substitutionGroup="v:baseProperty" />
+
+  <xs:element name="role" type="v:TextPropertyType"
+              substitutionGroup="v:baseProperty" />
+
+  <xs:element name="logo" type="v:UriPropertyType"
+              substitutionGroup="v:baseProperty" />
+
+  <xs:element name="org" type="v:TextListPropertyType"
+              substitutionGroup="v:baseProperty" />
+
+  <xs:element name="member" type="v:UriPropertyType"
+              substitutionGroup="v:baseProperty" />
+
+  <xs:element name="related" type="v:TextUriPropertyType"
+              substitutionGroup="v:baseProperty" />
+
+  <xs:element name="categories" type="v:TextListPropertyType"
+              substitutionGroup="v:baseProperty" />
+
+  <xs:element name="note" type="v:TextPropertyType"
+              substitutionGroup="v:baseProperty" />
+
+  <xs:element name="prodid" type="v:TextPropertyType"
+              substitutionGroup="v:baseProperty" />
+
+  <xs:element name="rev" type="v:TimestampPropertyType"
+              substitutionGroup="v:baseProperty" />
+
+  <xs:element name="sound" type="v:UriPropertyType"
+              substitutionGroup="v:baseProperty" />
+
+  <xs:element name="uid" type="v:UriPropertyType"
+              substitutionGroup="v:baseProperty" />
+
+  <xs:element name="clientpidmap" type="v:ClientPidmapPropertyType"
+              substitutionGroup="v:baseProperty" />
+
+  <xs:element name="url" type="v:UriPropertyType"
+              substitutionGroup="v:baseProperty" />
+
+  <xs:element name="key" type="v:TextUriPropertyType"
+              substitutionGroup="v:baseProperty" />
+
+  <xs:element name="fburl" type="v:UriPropertyType"
+              substitutionGroup="v:baseProperty" />
+
+  <xs:element name="caladruri" type="v:UriPropertyType"
+              substitutionGroup="v:baseProperty" />
+
+  <xs:element name="caluri" type="v:UriPropertyType"
+              substitutionGroup="v:baseProperty" />
+
+  <xs:complexType name="NamePropertyType" >
+    <xs:complexContent mixed="false">
+      <xs:extension base="v:BasePropertyType">
+        <xs:sequence> 
+          <xs:element name="surname" type="v:TextListPropertyType" 
+                      minOccurs="0" />
+          <xs:element name="given" type="v:TextListPropertyType" 
+                      minOccurs="0" />
+          <xs:element name="additional" type="v:TextListPropertyType" 
+                      minOccurs="0" />
+          <xs:element name="prefix" type="v:TextListPropertyType" 
+                      minOccurs="0" />
+          <xs:element name="suffix" type="v:TextListPropertyType" 
+                      minOccurs="0" />
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:complexType name="BdayPropertyType" >
+    <xs:complexContent mixed="false">
+      <xs:extension base="v:BasePropertyType">
+        <xs:sequence> 
+          <xs:choice>
+            <xs:element ref="v:date-and-or-time" />
+            <xs:element ref="v:text" />
+          </xs:choice>
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:complexType name="ClientPidmapPropertyType" >
+    <xs:complexContent mixed="false">
+      <xs:extension base="v:BasePropertyType">
+        <xs:sequence> 
+          <xs:element name="sourceid" type="xs:integer" />
+          <xs:element ref="v:uri" />
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:complexType name="AdrPropertyType" >
+    <xs:complexContent mixed="false">
+      <xs:extension base="v:BasePropertyType">
+        <xs:sequence> 
+          <xs:element name="pobox" type="v:TextListPropertyType" 
+                      minOccurs="0" />
+          <xs:element name="ext" type="v:TextListPropertyType" 
+                      minOccurs="0" />
+          <xs:element name="street" type="v:TextListPropertyType" 
+                      minOccurs="0" />
+          <xs:element name="locality" type="v:TextListPropertyType" 
+                      minOccurs="0" />
+          <xs:element name="region" type="v:TextListPropertyType" 
+                      minOccurs="0" />
+          <xs:element name="code" type="v:TextListPropertyType" 
+                      minOccurs="0" />
+          <xs:element name="country" type="v:TextListPropertyType" 
+                      minOccurs="0" />
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:complexType name="TextUriPropertyType" >
+    <xs:complexContent mixed="false">
+      <xs:extension base="v:BasePropertyType">
+        <xs:sequence> 
+          <xs:choice>
+            <xs:element ref="v:uri" />
+            <xs:element ref="v:text" />
+          </xs:choice>
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:complexType name="LangPropertyType" >
+    <xs:complexContent mixed="false">
+      <xs:extension base="v:BasePropertyType">
+        <xs:sequence> 
+          <xs:element ref="v:language-tag" />
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <!-- Properties that take a simple text value -->
+  <xs:complexType name="TextPropertyType" >
+    <xs:complexContent mixed="false">
+      <xs:extension base="v:BasePropertyType">
+        <xs:sequence> 
+          <xs:element ref="v:text" />
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <xs:complexType name="TextListPropertyType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="v:BasePropertyType">
+        <xs:sequence>
+          <xs:element ref="v:text" maxOccurs="unbounded"/>
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:complexType name="TimestampPropertyType" >
+    <xs:complexContent mixed="false">
+      <xs:extension base="v:BasePropertyType">
+        <xs:sequence> 
+          <xs:element ref="v:timestamp" />
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <!-- Properties that take a uri value -->
+  <xs:complexType name="UriPropertyType" >
+    <xs:complexContent mixed="false">
+      <xs:extension base="v:BasePropertyType">
+        <xs:sequence>
+          <xs:element ref="v:uri"/>
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+            
+  <!-- =============================================================
+       Vcard components 
+       ============================================================= -->
+  
+  <!-- Vcard Stream -->
+  <xs:complexType name="VcardsType">
+    <xs:sequence>
+      <xs:element name="vcards" type="v:VcardType" maxOccurs="unbounded"/>
+    </xs:sequence>
+  </xs:complexType>
+          
+  <xs:complexType name="GroupType" >
+    <xs:sequence>
+      <xs:element name="properties" type="v:ArrayOfProperties"/>
+    </xs:sequence>
+    <xs:attribute name="name" type="xs:string"/>
+  </xs:complexType>
+          
+  <xs:complexType name="VcardType" >
+    <xs:sequence maxOccurs="unbounded">
+      <xs:choice>
+        <xs:element name="properties" type="v:ArrayOfProperties"/>
+        <xs:element name="group" type="v:GroupType"/>
+      </xs:choice>
+    </xs:sequence>
+  </xs:complexType>
+</xs:schema>



More information about the Bedework-commit mailing list