如何用Google APIs和Google的应用系统进行集成(6)----如何把Google Calendar的JSON Schema转换成XML的Schema(XSD)?

来源:互联网 发布:dapaolu最新域名更换 编辑:程序博客网 时间:2024/06/05 02:46

有Google Task的地方,一般都会有Google Calendar,我在上个章节给大家分享了,如何用Google APIs和Google的应用系统进行集成(5)----如何把Google Tasks的JSON Schema转换成XML的Schema(XSD)?(http://blog.csdn.net/chancein007/article/details/29645055),那么Google Calendar的JSON Schema转换成XML的Schema将会是什么样子的呢?首先我们先列出Google Calendar的JSON的Schema(https://www.googleapis.com/discovery/v1/apis/calendar/v3/rest)

 

那么,如何把Google Calendar的JSON Schema转换成XML的XSD Schema?XML的Schema将会是什么样子的呢?请参考下面转换实现。

<?xml version='1.0' encoding='UTF-8'?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">    <xs:complexType name="Acl">        <xs:sequence>            <xs:element name="etag" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="items" form="unqualified" type="AclRule" minOccurs="0" maxOccurs="unbounded"/>            <xs:element name="kind" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="nextPageToken" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="nextSyncToken" form="unqualified" type="xs:string" minOccurs="0"/>        </xs:sequence>    </xs:complexType>    <xs:complexType name="AclRule">        <xs:sequence>            <xs:element name="etag" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="id" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="kind" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="role" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="scope" form="unqualified" type="scope" minOccurs="0"/>        </xs:sequence>    </xs:complexType>    <xs:complexType name="Calendar">        <xs:sequence>            <xs:element name="description" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="etag" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="id" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="kind" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="location" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="summary" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="timeZone" form="unqualified" type="xs:string" minOccurs="0"/>        </xs:sequence>    </xs:complexType>    <xs:complexType name="CalendarList">        <xs:sequence>            <xs:element name="etag" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="items" form="unqualified" type="CalendarListEntry" minOccurs="0" maxOccurs="unbounded"/>            <xs:element name="kind" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="nextPageToken" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="nextSyncToken" form="unqualified" type="xs:string" minOccurs="0"/>        </xs:sequence>    </xs:complexType>    <xs:complexType name="CalendarListEntry">        <xs:sequence>            <xs:element name="accessRole" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="backgroundColor" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="colorId" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="defaultReminders" form="unqualified" type="EventReminder" minOccurs="0" maxOccurs="unbounded"/>            <xs:element name="deleted" form="unqualified" type="xs:boolean" minOccurs="0"/>            <xs:element name="description" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="etag" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="foregroundColor" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="hidden" form="unqualified" type="xs:boolean" minOccurs="0"/>            <xs:element name="id" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="kind" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="location" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="notificationSettings" form="unqualified" type="notificationSettings" minOccurs="0"/>            <xs:element name="primary" form="unqualified" type="xs:boolean" minOccurs="0"/>            <xs:element name="selected" form="unqualified" type="xs:boolean" minOccurs="0"/>            <xs:element name="summary" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="summaryOverride" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="timeZone" form="unqualified" type="xs:string" minOccurs="0"/>        </xs:sequence>    </xs:complexType>    <xs:complexType name="CalendarNotification">        <xs:sequence>            <xs:element name="method" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="type" form="unqualified" type="xs:string" minOccurs="0"/>        </xs:sequence>    </xs:complexType>    <xs:complexType name="Channel">        <xs:sequence>            <xs:element name="address" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="expiration" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="id" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="kind" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="params" form="unqualified" type="params" minOccurs="0"/>            <xs:element name="payload" form="unqualified" type="xs:boolean" minOccurs="0"/>            <xs:element name="resourceId" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="resourceUri" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="token" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="type" form="unqualified" type="xs:string" minOccurs="0"/>        </xs:sequence>    </xs:complexType>    <xs:complexType name="ColorDefinition">        <xs:sequence>            <xs:element name="background" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="foreground" form="unqualified" type="xs:string" minOccurs="0"/>        </xs:sequence>    </xs:complexType>    <xs:complexType name="Colors">        <xs:sequence>            <xs:element name="calendar" form="unqualified" type="calendar" minOccurs="0"/>            <xs:element name="event" form="unqualified" type="event" minOccurs="0"/>            <xs:element name="kind" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="updated" form="unqualified" type="xs:string" minOccurs="0"/>        </xs:sequence>    </xs:complexType>    <xs:complexType name="Error">        <xs:sequence>            <xs:element name="domain" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="reason" form="unqualified" type="xs:string" minOccurs="0"/>        </xs:sequence>    </xs:complexType>    <xs:complexType name="Event">        <xs:sequence>            <xs:element name="anyoneCanAddSelf" form="unqualified" type="xs:boolean" minOccurs="0"/>            <xs:element name="attendees" form="unqualified" type="EventAttendee" minOccurs="0" maxOccurs="unbounded"/>            <xs:element name="attendeesOmitted" form="unqualified" type="xs:boolean" minOccurs="0"/>            <xs:element name="colorId" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="created" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="creator" form="unqualified" type="creator" minOccurs="0"/>            <xs:element name="description" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="end" form="unqualified" type="EventDateTime" minOccurs="0" maxOccurs="unbounded"/>            <xs:element name="endTimeUnspecified" form="unqualified" type="xs:boolean" minOccurs="0"/>            <xs:element name="etag" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="extendedProperties" form="unqualified" type="extendedProperties" minOccurs="0"/>            <xs:element name="gadget" form="unqualified" type="gadget" minOccurs="0"/>            <xs:element name="guestsCanInviteOthers" form="unqualified" type="xs:boolean" minOccurs="0"/>            <xs:element name="guestsCanModify" form="unqualified" type="xs:boolean" minOccurs="0"/>            <xs:element name="guestsCanSeeOtherGuests" form="unqualified" type="xs:boolean" minOccurs="0"/>            <xs:element name="hangoutLink" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="htmlLink" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="iCalUID" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="id" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="kind" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="location" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="locked" form="unqualified" type="xs:boolean" minOccurs="0"/>            <xs:element name="organizer" form="unqualified" type="organizer" minOccurs="0"/>            <xs:element name="originalStartTime" form="unqualified" type="EventDateTime" minOccurs="0" maxOccurs="unbounded"/>            <xs:element name="privateCopy" form="unqualified" type="xs:boolean" minOccurs="0"/>            <xs:element name="recurringEventId" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="reminders" form="unqualified" type="reminders" minOccurs="0"/>            <xs:element name="sequence" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="source" form="unqualified" type="source" minOccurs="0"/>            <xs:element name="start" form="unqualified" type="EventDateTime" minOccurs="0" maxOccurs="unbounded"/>            <xs:element name="status" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="summary" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="transparency" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="updated" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="visibility" form="unqualified" type="xs:string" minOccurs="0"/>        </xs:sequence>    </xs:complexType>    <xs:complexType name="EventAttendee">        <xs:sequence>            <xs:element name="additionalGuests" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="comment" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="displayName" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="email" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="id" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="optional" form="unqualified" type="xs:boolean" minOccurs="0"/>            <xs:element name="organizer" form="unqualified" type="xs:boolean" minOccurs="0"/>            <xs:element name="resource" form="unqualified" type="xs:boolean" minOccurs="0"/>            <xs:element name="responseStatus" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="self" form="unqualified" type="xs:boolean" minOccurs="0"/>        </xs:sequence>    </xs:complexType>    <xs:complexType name="EventDateTime">        <xs:sequence>            <xs:element name="date" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="dateTime" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="timeZone" form="unqualified" type="xs:string" minOccurs="0"/>        </xs:sequence>    </xs:complexType>    <xs:complexType name="EventReminder">        <xs:sequence>            <xs:element name="method" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="minutes" form="unqualified" type="xs:string" minOccurs="0"/>        </xs:sequence>    </xs:complexType>    <xs:complexType name="Events">        <xs:sequence>            <xs:element name="accessRole" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="defaultReminders" form="unqualified" type="EventReminder" minOccurs="0" maxOccurs="unbounded"/>            <xs:element name="description" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="etag" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="items" form="unqualified" type="Event" minOccurs="0" maxOccurs="unbounded"/>            <xs:element name="kind" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="nextPageToken" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="nextSyncToken" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="summary" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="timeZone" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="updated" form="unqualified" type="xs:string" minOccurs="0"/>        </xs:sequence>    </xs:complexType>    <xs:complexType name="FreeBusyCalendar">        <xs:sequence>            <xs:element name="busy" form="unqualified" type="TimePeriod" minOccurs="0" maxOccurs="unbounded"/>            <xs:element name="errors" form="unqualified" type="Error" minOccurs="0" maxOccurs="unbounded"/>        </xs:sequence>    </xs:complexType>    <xs:complexType name="FreeBusyGroup">        <xs:sequence>            <xs:element name="errors" form="unqualified" type="Error" minOccurs="0" maxOccurs="unbounded"/>        </xs:sequence>    </xs:complexType>    <xs:complexType name="FreeBusyRequest">        <xs:sequence>            <xs:element name="calendarExpansionMax" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="groupExpansionMax" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="items" form="unqualified" type="FreeBusyRequestItem" minOccurs="0" maxOccurs="unbounded"/>            <xs:element name="timeMax" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="timeMin" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="timeZone" form="unqualified" type="xs:string" minOccurs="0"/>        </xs:sequence>    </xs:complexType>    <xs:complexType name="FreeBusyRequestItem">        <xs:sequence>            <xs:element name="id" form="unqualified" type="xs:string" minOccurs="0"/>        </xs:sequence>    </xs:complexType>    <xs:complexType name="FreeBusyResponse">        <xs:sequence>            <xs:element name="calendars" form="unqualified" type="calendars" minOccurs="0"/>            <xs:element name="groups" form="unqualified" type="groups" minOccurs="0"/>            <xs:element name="kind" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="timeMax" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="timeMin" form="unqualified" type="xs:string" minOccurs="0"/>        </xs:sequence>    </xs:complexType>    <xs:complexType name="Setting">        <xs:sequence>            <xs:element name="etag" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="id" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="kind" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="value" form="unqualified" type="xs:string" minOccurs="0"/>        </xs:sequence>    </xs:complexType>    <xs:complexType name="Settings">        <xs:sequence>            <xs:element name="etag" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="items" form="unqualified" type="Setting" minOccurs="0" maxOccurs="unbounded"/>            <xs:element name="kind" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="nextPageToken" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="nextSyncToken" form="unqualified" type="xs:string" minOccurs="0"/>        </xs:sequence>    </xs:complexType>    <xs:complexType name="TimePeriod">        <xs:sequence>            <xs:element name="end" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="start" form="unqualified" type="xs:string" minOccurs="0"/>        </xs:sequence>    </xs:complexType>    <xs:complexType name="calendar">        <xs:sequence>            <xs:element name="additionalProperties" form="unqualified" type="ColorDefinition" minOccurs="0" maxOccurs="unbounded"/>        </xs:sequence>    </xs:complexType>    <xs:complexType name="calendars">        <xs:sequence>            <xs:element name="additionalProperties" form="unqualified" type="FreeBusyCalendar" minOccurs="0" maxOccurs="unbounded"/>        </xs:sequence>    </xs:complexType>    <xs:complexType name="creator">        <xs:sequence>            <xs:element name="displayName" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="email" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="id" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="self" form="unqualified" type="xs:boolean" minOccurs="0"/>        </xs:sequence>    </xs:complexType>    <xs:complexType name="event">        <xs:sequence>            <xs:element name="additionalProperties" form="unqualified" type="ColorDefinition" minOccurs="0" maxOccurs="unbounded"/>        </xs:sequence>    </xs:complexType>    <xs:complexType name="extendedProperties">        <xs:sequence>            <xs:element name="private" form="unqualified" type="private" minOccurs="0"/>            <xs:element name="shared" form="unqualified" type="shared" minOccurs="0"/>        </xs:sequence>    </xs:complexType>    <xs:complexType name="gadget">        <xs:sequence>            <xs:element name="display" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="height" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="iconLink" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="link" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="preferences" form="unqualified" type="preferences" minOccurs="0"/>            <xs:element name="title" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="type" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="width" form="unqualified" type="xs:string" minOccurs="0"/>        </xs:sequence>    </xs:complexType>    <xs:complexType name="groups">        <xs:sequence>            <xs:element name="additionalProperties" form="unqualified" type="FreeBusyGroup" minOccurs="0" maxOccurs="unbounded"/>        </xs:sequence>    </xs:complexType>    <xs:complexType name="notificationSettings">        <xs:sequence>            <xs:element name="notifications" form="unqualified" type="CalendarNotification" minOccurs="0" maxOccurs="unbounded"/>        </xs:sequence>    </xs:complexType>    <xs:complexType name="organizer">        <xs:sequence>            <xs:element name="displayName" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="email" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="id" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="self" form="unqualified" type="xs:boolean" minOccurs="0"/>        </xs:sequence>    </xs:complexType>    <xs:complexType name="params">        <xs:sequence>            <xs:element name="additionalProperties" form="unqualified" type="xs:string" minOccurs="0"/>        </xs:sequence>    </xs:complexType>    <xs:complexType name="preferences">        <xs:sequence>            <xs:element name="additionalProperties" form="unqualified" type="xs:string" minOccurs="0"/>        </xs:sequence>    </xs:complexType>    <xs:complexType name="private">        <xs:sequence>            <xs:element name="additionalProperties" form="unqualified" type="xs:string" minOccurs="0"/>        </xs:sequence>    </xs:complexType>    <xs:complexType name="reminders">        <xs:sequence>            <xs:element name="overrides" form="unqualified" type="EventReminder" minOccurs="0" maxOccurs="unbounded"/>            <xs:element name="useDefault" form="unqualified" type="xs:boolean" minOccurs="0"/>        </xs:sequence>    </xs:complexType>    <xs:complexType name="scope">        <xs:sequence>            <xs:element name="type" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="value" form="unqualified" type="xs:string" minOccurs="0"/>        </xs:sequence>    </xs:complexType>    <xs:complexType name="shared">        <xs:sequence>            <xs:element name="additionalProperties" form="unqualified" type="xs:string" minOccurs="0"/>        </xs:sequence>    </xs:complexType>    <xs:complexType name="source">        <xs:sequence>            <xs:element name="title" form="unqualified" type="xs:string" minOccurs="0"/>            <xs:element name="url" form="unqualified" type="xs:string" minOccurs="0"/>        </xs:sequence>    </xs:complexType>    <xs:element name="Acl" type="Acl"/>    <xs:element name="AclRule" type="AclRule"/>    <xs:element name="Calendar" type="Calendar"/>    <xs:element name="CalendarList" type="CalendarList"/>    <xs:element name="CalendarListEntry" type="CalendarListEntry"/>    <xs:element name="CalendarNotification" type="CalendarNotification"/>    <xs:element name="Channel" type="Channel"/>    <xs:element name="ColorDefinition" type="ColorDefinition"/>    <xs:element name="Colors" type="Colors"/>    <xs:element name="Error" type="Error"/>    <xs:element name="Event" type="Event"/>    <xs:element name="EventAttendee" type="EventAttendee"/>    <xs:element name="EventDateTime" type="EventDateTime"/>    <xs:element name="EventReminder" type="EventReminder"/>    <xs:element name="Events" type="Events"/>    <xs:element name="FreeBusyCalendar" type="FreeBusyCalendar"/>    <xs:element name="FreeBusyGroup" type="FreeBusyGroup"/>    <xs:element name="FreeBusyRequest" type="FreeBusyRequest"/>    <xs:element name="FreeBusyRequestItem" type="FreeBusyRequestItem"/>    <xs:element name="FreeBusyResponse" type="FreeBusyResponse"/>    <xs:element name="Setting" type="Setting"/>    <xs:element name="Settings" type="Settings"/>    <xs:element name="TimePeriod" type="TimePeriod"/></xs:schema>


 

 

 

1 0