<?xml version="1.0" encoding="UTF-8"?>
<!--
(c) 2004 Microsoft Corporation. All rights reserved. 

Permission to copy and display the Devices Profile for Web Services schema (the "Document"), in any medium without fee or royalty is hereby granted, provided that you include the following on ALL copies of the Document, or portions thereof, that you make:

A link or URL to the Document at this location. 
The copyright notice as shown in the Document. 
THE PROFILE IS PROVIDED "AS IS," AND THE CO-DEVELOPERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS OF THE PROFILE IS SUITABLE FOR ANY PURPOSE; NOR THAT THE IMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.

THE CO-DEVELOPERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR RELATING TO ANY USE OR DISTRIBUTION OF THE PROFILE.

The name and trademarks of the Co-developers may NOT be used in any manner, including advertising or publicity pertaining to the Document or its contents without specific, written prior permission. Title to copyright in the Document will at all times remain with Microsoft.

No other rights are granted by implication, estoppel or otherwise.

-->
<xs:schema
    targetNamespace="http://schemas.xmlsoap.org/ws/2004/08/devprof"
    xmlns:tns="http://schemas.xmlsoap.org/ws/2004/08/devprof"
    xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
    xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
    xmlns:wsd="http://schemas.xmlsoap.org/ws/2004/02/discovery"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    elementFormDefault="qualified"
    blockDefault="#all" >

 
  <xs:import
      namespace="http://www.w3.org/XML/1998/namespace"
      schemaLocation="http://www.w3.org/2001/xml.xsd" />

  <xs:import
      namespace="http://www.w3.org/2003/05/soap-envelope"
      schemaLocation="http://www.w3.org/2003/05/soap-envelope" />

  <xs:import
      namespace="http://schemas.xmlsoap.org/ws/2004/08/addressing"
      schemaLocation="addressing.xsd" />

  <xs:import
      namespace="http://schemas.xmlsoap.org/ws/2004/02/discovery"
      schemaLocation="http://schemas.xmlsoap.org/ws/2004/02/discovery" />

  <xs:element name="ServiceId" >
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:anyURI" >
          <xs:attribute ref="soap:mustUnderstand" />
          <xs:attribute ref="soap:role" />
          <xs:anyAttribute namespace="##any" processContents="lax" />
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>

  <xs:element name="ThisModel" >
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:manufacturer" maxOccurs="unbounded" />
        <xs:element ref="tns:manufacturerURL" minOccurs="0" />
        <xs:element ref="tns:modelName" maxOccurs="unbounded" />
        <xs:element ref="tns:modelNumber" minOccurs="0" />
        <xs:element ref="tns:modelURL" minOccurs="0" />
        <xs:element ref="tns:UPC" minOccurs="0" />
        <xs:element ref="tns:presentationURL" minOccurs="0" />
        <xs:any namespace="##other"
                processContents="lax"
                minOccurs="0"
                maxOccurs="unbounded" />
      </xs:sequence>
      <xs:anyAttribute namespace="##other" processContents="lax" />
    </xs:complexType>
  </xs:element>

  <xs:element name="manufacturer" >
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:string" >
          <xs:attribute ref="xml:lang" />
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="manufacturerURL" type="xs:anyURI" />
  <xs:element name="modelName" >
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:string">
          <xs:attribute ref="xml:lang"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="modelNumber" type="xs:string" />
  <xs:element name="modelURL" type="xs:anyURI" />
  <xs:element name="UPC" type="xs:string" />
  <xs:element name="presentationURL" type="xs:anyURI" />

  <xs:element name="ThisDevice" >
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:friendlyName" maxOccurs="unbounded" />
        <xs:element ref="tns:firmwareVersion" minOccurs="0" />
        <xs:element ref="tns:serialNumber" minOccurs="0" />
        <xs:any namespace="##other"
                processContents="lax"
                minOccurs="0"
                maxOccurs="unbounded" />
      </xs:sequence>
      <xs:anyAttribute namespace="##other" processContents="lax" />
    </xs:complexType>
  </xs:element>

  <xs:element name="friendlyName" >
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:string" >
          <xs:attribute ref="xml:lang" />
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="firmwareVersion" type="xs:string" />
  <xs:element name="serialNumber" type="xs:string" />

  <xs:element name="Relationship" >
    <xs:complexType>
      <xs:sequence>
        <xs:any namespace="##any"
                processContents="lax"
                minOccurs="0"
                maxOccurs="unbounded" />
      </xs:sequence>
      <xs:attribute name="Type" type="xs:anyURI" use="required" />
      <xs:anyAttribute namespace="##other" processContents="lax" />
    </xs:complexType>
  </xs:element>

  <xs:element name="Host" >
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="wsa:EndpointReference" />
<!-- omitted only to eliminate non-determinism in schema
        <xs:element ref="wsd:Types" minOccurs="0" />
-->
        <xs:any namespace="##any"
                processContents="lax"
                minOccurs="0"
                maxOccurs="unbounded" />
      </xs:sequence>
      <xs:anyAttribute namespace="##other" processContents="lax" />
    </xs:complexType>
  </xs:element>

  <xs:element name="Hosted" >
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="wsa:EndpointReference" />
<!-- omitted only to eliminate non-determinism in schema
        <xs:element ref="wsd:Types" minOccurs="0" />
-->
        <xs:any namespace="##any"
                processContents="lax"
                minOccurs="0"
                maxOccurs="unbounded" />
      </xs:sequence>
      <xs:anyAttribute namespace="##other" processContents="lax" />
    </xs:complexType>
  </xs:element>

  <xs:attribute name="extends" >
    <xs:simpleType>
      <xs:list itemType="xs:QName" />
    </xs:simpleType>
  </xs:attribute>

  <xs:element name="HttpTransmissionOptimization" >
    <xs:complexType>
      <xs:complexContent>
        <xs:restriction base="xs:anyType">
          <xs:anyAttribute namespace="##other" processContents="lax" />
        </xs:restriction>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>

  <xs:element name="Authn" >
    <xs:complexType>
      <xs:complexContent>
        <xs:restriction base="xs:anyType">
          <xs:anyAttribute namespace="##other" processContents="lax" />
        </xs:restriction>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>

  <xs:element name="SignDisco" >
    <xs:complexType>
      <xs:complexContent>
        <xs:restriction base="xs:anyType">
          <xs:anyAttribute namespace="##other" processContents="lax" />
        </xs:restriction>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>

  <xs:element name="Tls" >
    <xs:complexType>
      <xs:complexContent>
        <xs:restriction base="xs:anyType">
          <xs:anyAttribute namespace="##other" processContents="lax" />
        </xs:restriction>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>

  <xs:element name="Cert" >
    <xs:complexType>
      <xs:complexContent>
        <xs:restriction base="xs:anyType">
          <xs:anyAttribute namespace="##other" processContents="lax" />
        </xs:restriction>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>

  <xs:element name="Security" >
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:Sig" minOccurs="0" />
      </xs:sequence>
      <xs:anyAttribute namespace="##other" processContents="lax" />
    </xs:complexType> 
  </xs:element>

  <xs:attribute name="Id" type="xs:ID"/>

  <xs:element name="Sig" >
    <xs:complexType>
      <xs:sequence>
        <xs:any namespace="##any"
                processContents="lax"
                minOccurs="0"
                maxOccurs="unbounded" />
      </xs:sequence>
      <xs:attribute name="Scheme" type="xs:anyURI" use="required" />
      <xs:attribute name="KeyId" type="xs:base64Binary" />
      <xs:attribute name="Refs" type="xs:IDREFS" use="required" />
      <xs:attribute name="Sig" type="xs:base64Binary" use="required" />
      <xs:anyAttribute namespace="##other" processContents="lax" />
    </xs:complexType> 
  </xs:element>

</xs:schema>
