
<schema xmlns="http://www.w3.org/2001/XMLSchema"
  xmlns:tns="http://www.zolera.com/schemas/ZSI/"
  xmlns:SOAPFAULT="http://schemas.xmlsoap.org/soap/envelope/"
  targetNamespace="http://www.zolera.com/schemas/ZSI/">

  <import namespace="http://schemas.xmlsoap.org/soap/envelope/"
    schemaLocation="http://schemas.xmlsoap.org/soap/envelope/"/>

  <!--  Soap doesn't define a fault element to use when we want
        to fault because of header problems. -->
  <element name="detail" type="SOAPFAULT:detail"/>

  <!--  A URIFaultDetail element typically reports an unknown
        mustUnderstand element. -->
  <element name="URIFaultDetail" type="tns:URIFaultDetail"/>
  <complexType name="URIFaultDetail">
    <sequence>
      <element name="URI" type="anyURI" minOccurs="1"/>
      <element name="localname" type="NCName" minOccurs="1"/>
      <any minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <!--  An ActorFaultDetail element typically reports an actor
        attribute was found that cannot be processed. -->
  <element name="ActorFaultDetail" type="tns:ActorFaultDetail"/>
  <complexType name="ActorFaultDetail">
    <sequence>
      <element name="URI" type="anyURI" minOccurs="1"/>
      <any minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <!--  A ParseFaultDetail or a FaultDetail element are typically
        used when there was parsing or "business-logic" errors.
        The TracedFault type is intended to provide a human-readable
        string that describes the error (in more detail then the
        SOAP faultstring element, which is becoming codified),
        and a human-readable "trace" (optional) that shows where
        within the application that the fault happened. -->
  <element name="ParseFaultDetail" type="tns:TracedFault"/>
  <element name="FaultDetail" type="tns:TracedFault"/>
  <complexType name="TracedFault">
    <sequence>
      <element name="string" type="string" minOccurs="1"/>
      <element name="trace" type="string" minOccurs="0"/>
      <!-- <any minOccurs="0" maxOccurs="unbounded"/> -->
    </sequence>
  </complexType>

  <!--  An element to hold a name and password, for doing basic-auth. -->
  <complexType name="BasicAuth">
    <sequence>
      <element name="Name" type="string" minOccurs="1"/>
      <element name="Password" type="string" minOccurs="1"/>
    </sequence>
  </complexType>

</schema>
