6 Appendix A: Full XML Schema
For ease of implementation, the following is the full XML schema for this protocol.
-
<?xml version="1.0" encoding="utf-8"?> <xs:schema id="Discovery" targetNamespace="http://tempuri.org/Discovery.xsd" elementFormDefault="qualified" xmlns="http://tempuri.org/Discovery.xsd" xmlns:mstns="http://tempuri.org/Discovery.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" > <xs:simpleType name="st_wopi-action-values"> <xs:restriction base="xs:string"> <xs:enumeration value="view" /> <xs:enumeration value="edit" /> <xs:enumeration value="mobileView" /> <xs:enumeration value="embedview" /> <xs:enumeration value="embededit" /> <xs:enumeration value="present" /> <xs:enumeration value="presentservice" /> <xs:enumeration value="attend" /> <xs:enumeration value="attendservice" /> <xs:enumeration value="editnew" /> <xs:enumeration value="imagepreview" /> <xs:enumeration value="interactivepreview" /> <xs:enumeration value="formsubmit" /> <xs:enumeration value="formedit" /> <xs:enumeration value="rest" /> <xs:enumeration value="preloadview" /> <xs:enumeration value="preloadedit" /> <xs:enumeration value="rtc" /> <xs:enumeration value="getinfo" /> <xs:enumeration value="convert" /> <xs:enumeration value="syndicate" /> <xs:enumeration value="legacywebservice" /> <xs:enumeration value="collab" /> <xs:enumeration value="formpreview" /> <xs:enumeration value="documentchat" /> </xs:restriction> </xs:simpleType> <xs:simpleType name="st_wopi-action-requirements"> <xs:restriction base="xs:string"> <xs:pattern value="/^((update|locks|cobalt|containers)\s*(,\s*|$))*((update|locks|cobalt|containers)\s*$)/" /> </xs:restriction> </xs:simpleType> <xs:simpleType name="st_wopi-url-source"> <xs:restriction base="xs:string"> <xs:pattern value="/^([a-z0-9+.-]+):(?://(?:((?:[a-z0-9-._~!$&'()*+,;=:]|%[0-9A-F]{2})*)@)?((?:[a-z0-9-._~!$&'()*+,;=]|%[0-9A-F]{2})*)(?::(\d*))?(/(?:[a-z0-9-._~!$&'()*+,;=:@/]|%[0-9A-F]{2})*)?|(/?(?:[a-z0-9-._~!$&'()*+,;=:@]|%[0-9A-F]{2})+(?:[a-z0-9-._~!$&'()*+,;=:@/]|%[0-9A-F]{2})*)?)(?:\?((?:[a-z0-9-._~!$&'()*+,;=:/?@]|%[0-9A-F]{2})*))?(?:#((?:[a-z0-9-._~!$&'()*+,;=:/?@]|%[0-9A-F]{2})*))?$/i" /> </xs:restriction> </xs:simpleType> <xs:complexType name="ct_wopi-action"> <xs:attribute name="name" use="required" type="st_wopi-action-values"/> <xs:attribute name="default" type="xs:boolean" default="false"/> <xs:attribute name="requires" type="st_wopi-action-requirements"/> <xs:attribute name="urlsrc" use="required" type="st_wopi-url-source"/> <xs:attribute name="ext" type="xs:string" use="optional"/> <xs:attribute name="progid" type="xs:string" use="optional"/> <xs:attribute name="newprogid" type="xs:string" use="optional"/> <xs:attribute name="newext" type="xs:string" use="optional"/> <xs:attribute name="useParent" type="xs:boolean" default="false"/> <xs:attribute name="targetext" type="xs:string" use="optional"/> </xs:complexType> <xs:simpleType name="st_wopi-zone"> <xs:restriction base="xs:string"> <xs:enumeration value="internal-http" /> <xs:enumeration value="internal-https" /> <xs:enumeration value="external-http" /> <xs:enumeration value="external-https" /> </xs:restriction> </xs:simpleType> <xs:complexType name="ct_net-zone"> <xs:sequence> <xs:element name="app" minOccurs="1" maxOccurs="unbounded" type="ct_app-name"/> </xs:sequence> <xs:attribute name="name" type="mstns:st_wopi-zone"/> </xs:complexType> <xs:complexType name="ct_wopi-discovery"> <xs:sequence> <xs:element name="net-zone" minOccurs="1" maxOccurs="4" type="ct_net-zone"/> <xs:element name="proof-key" minOccurs="0" maxOccurs="1" type="ct_proof-key"/> </xs:sequence> </xs:complexType> <xs:element name="wopi-discovery" type="ct_wopi-discovery"/> <xs:complexType name="ct_app-name"> <xs:sequence> <xs:element name="action" minOccurs="1" maxOccurs="unbounded" type="ct_wopi-action"/> </xs:sequence> <xs:attribute name="name" type="xs:string" use="required"/> <xs:attribute name="favIconUrl" type="xs:string" use="optional"/> <xs:attribute name="checkLicense" type="xs:boolean" use="optional" default="false"/> </xs:complexType>
-
<xs:complexType name="ct_proof-key"> <xs:attribute name="exponent" type="xs:string" use="required"/> <xs:attribute name="modulus" type="xs:string" use="required"/> <xs:attribute name="oldexponent" type="xs:string" use="required"/> <xs:attribute name="oldmodulus" type="xs:string" use="required"/> <xs:attribute name="oldvalue" type="xs:string" use="required"/> <xs:attribute name="value" type="xs:string" use="required"/> </xs:complexType>
-
</xs:schema>