This appendix provides a base HELD schema. Examples on message construction are not provided in this section. If required, they can be obtained from Chapter 4 and Appendix E.
<?xml version="1.0"?> <xs:schema targetNamespace="http://sitacs.uow.edu.au/ns/location/held" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:held="http://sitacs.uow.edu.au/ns/location/held" xmlns:gp="urn:ietf:params:xml:ns:pidf:geopriv10" xmlns:ca="urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr" xmlns:cp="urn:ietf:params:xml:ns:common-policy" xmlns:gml="http://www.opengis.net/gml" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:annotation> <xs:documentation> This document defines HELD messages. </xs:documentation> </xs:annotation> <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/> <xs:import namespace="urn:ietf:params:xml:ns:pidf:geopriv10" schemaLocation="geopriv10.xsd"/> <xs:import namespace="urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr" schemaLocation="civicAddress.xsd"/> <xs:import namespace="urn:ietf:params:xml:ns:common-policy" schemaLocation="common-policy.xsd"/> <xs:import namespace="http://www.opengis.net/gml" schemaLocation="GML-3.1.1/base/geometryBasic2d.xsd"/> <xs:import namespace="urn:oasis:names:tc:SAML:2.0:assertion" schemaLocation="saml-schema-assertion-2.0.xsd"/> <!-- Context Information Element Definitions --> <xs:complexType name="returnContextType"> <xs:complexContent> <xs:restriction base="xs:anyType"> <xs:sequence> <xs:element name="locationURI" type="xs:anyURI" maxOccurs ="unbounded"/> <xs:element name="password" type="xs:token"/> </xs:sequence> <xs:attribute name="expires" type="xs:dateTime" use="required"/> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:complexType name="usesContextType"> <xs:complexContent> <xs:restriction base="xs:anyType"> <xs:sequence> <xs:element name="locationURI" type="xs:anyURI"/> <xs:element name="password" type="xs:token"/> </xs:sequence> </xs:restriction> </xs:complexContent> </xs:complexType> <!-- HELD Duration Type Definition --> <xs:simpleType name="durationType"> <xs:union> <xs:simpleType> <xs:restriction base="xs:decimal"> <xs:minInclusive value="0.0"/> </xs:restriction> </xs:simpleType> <xs:simpleType> <xs:restriction base="xs:duration"> <xs:minInclusive value="PTOS"/> </xs:restriction> </xs:simpleType> </xs:union> </xs:simpleType> <!-- HELD Profile Element Definitions --> <xs:complexType name="pidfloProfileType"> <xs:complexContent> <xs:restriction base="xs:anyType"> <xs:sequence> <xs:choice minOccurs="0"> <xs:element name="presentity" type="xs:anyURI" nillable="true"/> <xs:element ref="saml:Assertion"/> <xs:element ref="saml:EncryptedAssertion"/> </xs:choice> <xs:choice minOccurs="0"> <xs:element name="retentionExpiry" type="xs:dateTime" nillable="true"/> <xs:element name="retentionInterval" type="held:durationType" nillable="true"/> </xs:choice> <xs:element name="retransmission" type="xs:boolean" minOccurs="0" nillable="true"/> <xs:element name="rulesetURI" type="xs:anyURI" minOccurs="0" nillable="true"/> </xs:sequence> </xs:restriction> </xs:complexContent> </xs:complexType> <!-Rules Element Definition --> <xs:complexType name="rulesType"> <xs:choice minOccurs="0"> <xs:element name="rulesetURI" type="xs:anyURI"/> <xs:element ref="cp:ruleset"/> </xs:choice> </xs:complexType> <!-- Location Type Element Definitions --> <xs:simpleType name="locationTypeBase"> <xs:union> <xs:simpleType> <xs:restriction base="xs:token"> <xs:enumeration value="any"/> </xs:restriction> </xs:simpleType> <xs:simpleType> <xs:list> <xs:simpleType> <xs:restriction base="xs:token"> <xs:enumeration value="civic"/> <xs:enumeration value="geodetic"/> <xs:enumeration value="postalCivic"/> <xs:enumeration value="jurisdictionalCivic"/> </xs:restriction> </xs:simpleType> </xs:list> </xs:simpleType> </xs:union> </xs:simpleType> <xs:complexType name="locationTypeType"> <xs:simpleContent> <xs:extension base="held:locationTypeBase"> <xs:attribute name="exact" type="xs:boolean" use="optional" default="false"/> </xs:extension> </xs:simpleContent> </xs:complexType> <!-- Location Assertion --> <xs:complexType name="locationAssertionType"> <xs:complexContent> <xs:restriction base="xs:anyType"> <xs:choice> <xs:element ref="ca:civicAddress"/> <xs:sequence> <xs:element ref="gml: Geometry"/> <xs:element ref="ca:civicAddress" minOccurs="0"/> </xs:sequence> </xs:choice> <xs:attribute name="method" type="xs:token"/> <xs:attribute name="timestamp" type="xs:dateTime"/> <xs:attribute name="expires" type="xs:dateTime"/> <xs:attribute name="exact" type="xs:boolean" use="optional" default="false"/> </xs:restriction> </xs:complexContent> </xs:complexType> <!-- Response code --> <xs:simpleType name="codeType"> <xs:restriction base="xs:nonNegativeInteger"> <xs:pattern value="[0-5][0-9][0-9]"/> </xs:restriction> </xs:simpleType> <!-- Base response Message Definitions --> <xs:complexType name="baseRequestType"> <xs:complexContent> <xs:restriction base="xs:anyType"> <xs:sequence/> <xs:attribute name="responseTime" type="held:durationType" use="optional"/> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:complexType name="baseResponseType"> <xs:complexContent> <xs:restriction base="xs:anyType"> <xs:sequence/> <xs:attribute name="code" type="held:codeType" use="required"/> <xs:attribute name="message" type="xs:token" use="optional"/> <xs:attribute ref="xml:lang" use="optional"/> </xs:restriction> </xs:complexContent> </xs:complexType> <!-- ERROR MESSAGE DEFINITION --> <xs:element name="error" type="held:baseResponseType"/> <!-- Create Context --> <xs:complexType name="createContextType"> <xs:complexContent> <xs:extension base="held:baseRequestType"> <xs:sequence> <xs:element name="lifetime" type="held:durationType"/> <xs:element name="profile" type="held:pidfloProfileType" minOccurs="0"/> <xs:element name="rules" type="held:rulesType" minOccurs="0"/> <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <!-- CREATE CONTEXT MESSAGE DEFINITION --> <xs:element name="createContext" type="held:createContextType"/> <!-- Context Response --> <xs:complexType name="contextResponseType"> <xs:complexContent> <xs:extension base="held:baseResponseType"> <xs:sequence> <xs:element name="context" type="held:returnContextType"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <!-- CONTEXT RESPONSE MESSAGE DEFINITION --> <xs:element name="contextResponse" type="held:contextResponseType"/> <!-- Update Context --> <xs:complexType name="updateContextType"> <xs:complexContent> <xs:extension base="held:baseRequestType"> <xs:sequence> <xs:element name="context" type="held:usesContextType"/> <xs:element name="lifetime" type="held:durationType" minOccurs="0"/> <xs:element name="profile" type="held:pidfloProfileType" minOccurs="0"/> <xs:element name="rules" type="held:rulesType" minOccurs="0"/> <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <!-- UPDATE CONTEXT MESSAGE DEFINITION --> <xs:element name="updateContext" type="held:updateContextType"/> <!-- ... response to updateContext is contextResponse --> <!-- Location Request --> <xs:complexType name="locationRequestType"> <xs:complexContent> <xs:extension base="held:baseRequestType"> <xs:sequence> <xs:choice minOccurs="0"> <xs:element name="locationType" type="held:locationTypeType"/> <xs:element name="assert" type="held:locationAssertionType"/> </xs:choice> <xs:choice minOccurs="0"> <xs:element name="context" type="held:usesContextType"/> <xs:element name="profile" type="held:pidfloProfileType"/> </xs:choice> <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="signed" type="xs:boolean" use="optional" default="false"/> </xs:extension> </xs:complexContent> </xs:complexType> <!-- LOCATION REQUEST MESSAGE DEFINITION --> <xs:element name="locationRequest" type="held:locationRequestType"/> </xs:schema>