Skip to main content

SSO samples and schemas

Data

Samples

SSO_ValidateTokenRQ.example3.110.xml

<ValidateTokenRQ xmlns="http://webservices.sabre.com/sabreXML/sso/ssoaas/SSO_ValidateToken/1.1.0"
    version="1.1.0" applicationID="App1">
    <SAMLToken>
        PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIu
        MDpwcm90b2NvbCIgRGVzdGluYXRpb249Imh0dHBzOi8vd3gxLmdldHRoZXJlLm5ldC9sb2dpbi9z
        YW1sL3Bvc3QuYWN0IiBJRD0iXzMxMGQ1MzdiNjBlNDQwMzBiNGUzZGE0OGRhYmY3NzdiIiBJc3N1
        ZUluc3RhbnQ9IjIwMTItMDYtMjFUMTA6NDU6MjUuNjgwWiIgVmVyc2lvbj0iMi4wIj48c2FtbDI6
        SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9u
        IiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0
        eSI+aHR0cHM6Ly9sb2dpbjIuZGV2LnNhYnJlLmNvbS88L3NhbWwyOklzc3Vlcj48c2FtbDJwOlN0
        YXR1cz48c2FtbDJwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIu
        MDpzdGF0dXM6U3VjY2VzcyIvPjwvc2FtbDJwOlN0YXR1cz48c2FtbDI6QXNzZXJ0aW9uIHhtbG5z
        OnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBJRD0iXzZjYzQx
        ODRmZGYwZTRjYTU5ZDI5ZmI0MDA3YTg3Yzc5IiBJc3N1ZUluc3RhbnQ9IjIwMTItMDYtMjFUMTA6
        NDU6MjUuNjgwWiIgVmVyc2lvbj0iMi4wIiB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAw
        MS9YTUxTY2hlbWEiPjxzYW1sMjpJc3N1ZXIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FN
        TDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vbG9naW4yLmRldi5zYWJyZS5jb20v
        PC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC8wOS94bWxkc2lnIyI+PGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRo
        b2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48
        ZHM6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94
        bWxkc2lnI3JzYS1zaGExIi8+PGRzOlJlZmVyZW5jZSBVUkk9IiNfNmNjNDE4NGZkZjBlNGNhNTlk
        MjlmYjQwMDdhODdjNzkiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJo
        dHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxk
        czpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMt
        YzE0biMiPjxlYzpJbmNsdXNpdmVOYW1lc3BhY2VzIHhtbG5zOmVjPSJodHRwOi8vd3d3LnczLm9y
        Zy8yMDAxLzEwL3htbC1leGMtYzE0biMiIFByZWZpeExpc3Q9InhzIi8+PC9kczpUcmFuc2Zvcm0+
        PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3Lncz
        Lm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT55WDgvODAxZlJDYlQ0
        QjBoeEg1bEJsMUFZVVE9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25l
        ZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPmZmUHUwN1A2NkxPRXZDUWNaNXVMWFl0YTFSeWRTZU1X
        TEN3RGY0cEovQmdrYXJaaGp5cWlFbWVjcGluWEZQYk5jQlpzZlVHaXNONVdSOHRXclVWbWtmMDNM
        WFlGT1p3L0N0cUFqVUhoU2p0anJ3c05UQk90ejhjd01QRFJhNmJ0ajEvejA4NFV1NG42K0RBWU04
        OTBXRTQ0ZnFnbDFwSjF2cUJTZ3luTlRxKzRaTnNOMzl4eXo3RTNZSWtuRk9kSVY4V2hQajVoVjEv
        d1lZenNJNXVSSkNMZEFRaVRERXhOMGRJcVliaXo1bkpBbk81VFZNWjBJWTFlRmp6c0N5R1c2WXRW
        eVk1ZnNWT2VZazJHN0hSL241c01EMzJEWTdZQmxKTllMY1RscUdnVGZQYXlNSXVrQVZUekowdHcy
        YjdKakNXWENzTkppMXhBdUxCMlFidXdWUT09PC9kczpTaWduYXR1cmVWYWx1ZT48ZHM6S2V5SW5m
        bz48ZHM6WDUwOURhdGE+PGRzOlg1MDlDZXJ0aWZpY2F0ZT5NSUlEdURDQ0FxQUNDUUNyRWlvQ01q
        V1hHREFOQmdrcWhraUc5dzBCQVFVRkFEQ0JuVEVMTUFrR0ExVUVCaE1DVlZNeERqQU1CZ05WQkFn
        VEJWUmxlR0Z6TVJJd0VBWURWUVFIRXdsVGIzVjBhR3hoYTJVeEZ6QVZCZ05WQkFvVERsTmhZbkps
        SUVodmJHUnBibWR6TVF3d0NnWURWUVFMRXdORFNVOHhIVEFiQmdOVkJBTVRGR3h2WjJsdU1pNWta
        WFl1YzJGaWNtVXVZMjl0TVNRd0lnWUpLb1pJaHZjTkFRa0JGaFZ6YzI4dWMzVndjRzl5ZEVCellX
        SnlaUzVqYjIwd0hoY05NVEV3T1RFME1UUXhNREEyV2hjTk1UTXdPVEV6TVRReE1EQTJXakNCblRF
        TE1Ba0dBMVVFQmhNQ1ZWTXhEakFNQmdOVkJBZ1RCVlJsZUdGek1SSXdFQVlEVlFRSEV3bFRiM1Yw
        YUd4aGEyVXhGekFWQmdOVkJBb1REbE5oWW5KbElFaHZiR1JwYm1kek1Rd3dDZ1lEVlFRTEV3TkRT
        VTh4SFRBYkJnTlZCQU1URkd4dloybHVNaTVrWlhZdWMyRmljbVV1WTI5dE1TUXdJZ1lKS29aSWh2
        Y05BUWtCRmhWemMyOHVjM1Z3Y0c5eWRFQnpZV0p5WlM1amIyMHdnZ0VpTUEwR0NTcUdTSWIzRFFF
        QkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEVTFEeklKNWJXNUFKRzlWaTdiMjdsb2t4TkVXbjAzeUxz
        VlFWNmh0QXB0b2IxUHNNbU1mUUZ3UDFKTENYamprenpqbFRFRnZ5TnJ5R2NXUGc3cm1vUk45cUFS
        RnNMcExrSER0Ukh5UFIrdERLSVJkTThETVhSaEJsWFNGajdiNGpyQkRCYVQzTGRlNU85MXhMd1di
        ZHpSU0tCRFdHanhoRFdvQ3pHd29VVHJkQjVzUEFSZzZrTzZwaXdhOUp3aHlwaXlkYUVsZjRmajJG
        aFFWcUV5cWZjTmR0bmhUV3dETk0xSnlTVFBzZ0pwK0hPWnhSZmMycHlLVXcwSFNiNXgzZS9zSUpq
        MXltdFh6Z2h6aGZ0Qm9JTGd3ZjZGY25SSmtXc2Myb3RGMC9nSUhNSEd1NUtGekc0V0dRd1Z3c2VS
        YTVkZCtoZm05Y2cxVGhRTEx2eFdXdDVBZ01CQUFFd0RRWUpLb1pJaHZjTkFRRUZCUUFEZ2dFQkFG
        QzFrdE5JLzN5ZzhjNThtQ3FqZmEyQ2Z1V3FIaUcvOXhFcXMrOURqNklYRTJ0aDZhUFc5d2dQU0Q5
        czQzSWs5dUFkZEVBc3lSamo3cGxEMkVlV3pKaWpaQThvTEZLWjd1dlR5MFQ3dGtzb0lDVUVxdXgx
        TlRrMzRTVmpoSTErT3B6aUJOUEpWeXNCMTZlZjN2bFNZaXlhbG9GT3JReW9qUUdoakJHd2UvbXhv
        N0g0dURhSnZQUENNK05NdEY5K0pVZWY5S1VIbTRsRDZHMFRkTk9CcHZ4WmVQNTBwZkJJUDJ5T0xz
        MUhkWDVWbGNxN1lDV1piOWpZNjJxNVRJdzZ6aDA4OFVSZGl1MnYrc3pJNWw4aE9HMlp6VzgzcVNQ
        ZmJEeHlWYnExUzdnV0F5K1hUTUNiQm0waGhHQ1hzMnZ5cmNJbGdLeStNMlp3K2llVFQrcFM5ZE09
        PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWdu
        YXR1cmU+PHNhbWwyOlN1YmplY3Q+PHNhbWwyOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpuYW1l
        czp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OnVuc3BlY2lmaWVkIj45Mjk0MTM8L3NhbWwyOk5h
        bWVJRD48c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0
        YzpTQU1MOjIuMDpjbTpiZWFyZXIiPjxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uRGF0YSBOb3RP
        bk9yQWZ0ZXI9IjIwMTItMDYtMjFUMTA6NDc6MjUuNjgwWiIgUmVjaXBpZW50PSJodHRwczovL3d3
        dy5nZXR0aGVyZS5jb20iLz48L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24+PC9zYW1sMjpTdWJq
        ZWN0PjxzYW1sMjpDb25kaXRpb25zIE5vdEJlZm9yZT0iMjAxMi0wNi0yMVQxMDo0NToyNS42ODBa
        IiBOb3RPbk9yQWZ0ZXI9IjIwMTItMDYtMjFUMTA6NDY6MjUuNjgwWiI+PHNhbWwyOkF1ZGllbmNl
        UmVzdHJpY3Rpb24+PHNhbWwyOkF1ZGllbmNlPmh0dHBzOi8vd3d3LmdldHRoZXJlLmNvbTwvc2Ft
        bDI6QXVkaWVuY2U+PC9zYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPjwvc2FtbDI6Q29uZGl0aW9u
        cz48c2FtbDI6QXV0aG5TdGF0ZW1lbnQgQXV0aG5JbnN0YW50PSIyMDEyLTA2LTIxVDEwOjQ1OjI1
        LjY4MFoiIFNlc3Npb25JbmRleD0iSUV2WjZQelcxT2UvK3lvSVJGUEVMU1lyQkRzPSIgU2Vzc2lv
        bk5vdE9uT3JBZnRlcj0iMjAxMi0wNi0yMVQxNDo0NToyNS42ODBaIj48c2FtbDI6QXV0aG5Db250
        ZXh0PjxzYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoy
        LjA6YWM6Y2xhc3NlczpQYXNzd29yZDwvc2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+PC9zYW1s
        MjpBdXRobkNvbnRleHQ+PC9zYW1sMjpBdXRoblN0YXRlbWVudD48c2FtbDI6QXR0cmlidXRlU3Rh
        dGVtZW50PjxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0idXNlcm5hbWUiPjxzYW1sMjpBdHRyaWJ1dGVW
        YWx1ZSB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNl
        IiB4c2k6dHlwZT0ieHM6c3RyaW5nIj45Mjk0MTM8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPjwvc2Ft
        bDI6QXR0cmlidXRlPjxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0ic2l0ZW5hbWUiPjxzYW1sMjpBdHRy
        aWJ1dGVWYWx1ZSB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWlu
        c3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5zYWJyZWluYzwvc2FtbDI6QXR0cmlidXRlVmFs
        dWU+PC9zYW1sMjpBdHRyaWJ1dGU+PC9zYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQ+PC9zYW1sMjpB
        c3NlcnRpb24+PC9zYW1sMnA6UmVzcG9uc2U+
    </SAMLToken>
</ValidateTokenRQ>

SSO_ValidateTokenRS.example3.110.xml

<ValidateTokenRS version="1.1.0" xmlns="http://webservices.sabre.com/sabreXML/sso/ssoaas/SSO_ValidateToken/1.1.0">
    <ResponseInfo isValid="true" code="0">Assertion is valid</ResponseInfo>
    <TokenInfo>
        <User username="929413">
            <Attrs>
                <Attr key="username">
                    <Val>929413</Val>
                </Attr>
                <Attr key="sitename">
                    <Val>sabreinc</Val>
                </Attr>
            </Attrs>
        </User>
        <Session id="_6cc4184fdf0e4ca59d29fb4007a87c79">
            <Valid validFrom="2012-06-21T10:45:25.680Z" validTo="2012-06-21T14:45:25.680Z" />
            <Duration nil="true" />
        </Session>
    </TokenInfo>
</ValidateTokenRS>

Validation Request Parameters

POST https:// #host# /ssoaas/services/SSO_ValidateTokenRQ/1.1.0/

POST data:
<ValidateTokenRQ xmlns="http://webservices.sabre.com/sabreXML/sso/ssoaas/SSO_ValidateToken/1.1.0"  version="1.1.0" applicationID="#ApplicationId#">
    <SAMLToken>#base64 encoded saml assertion - received from sso service: response.getPayload().getAssertion();#</SAMLToken>
</ValidateTokenRQ>

[no cookies]

Request Headers:
Connection: close
user: #user#
password: #password#
User-Agent: Jakarta Commons-HttpClient/3.1
Host: #host#
Content-Length: 6475
Content-Type: text/xml; charset=utf-8

Schemas

env.xsd

<?xml version="1.0" encoding="UTF-8"?>
<!-- Schema for the SOAP/1.1 envelope

     This schema has been produced using W3C's SOAP Version 1.2 schema
     found at:

     http://www.w3.org/2001/06/soap-envelope

     Copyright 2001 Martin Gudgin, Developmentor.

     Changes made are the following:
     - reverted namespace to http://schemas.xmlsoap.org/soap/envelope/
     - reverted mustUnderstand to only allow 0 and 1 as lexical values
	 - made encodingStyle a global attribute 20020825

	 Further changes:

	 - removed default value from mustUnderstand attribute declaration - 20030314

     Original copyright:

     Copyright 2001 W3C (Massachusetts Institute of Technology,
     Institut National de Recherche en Informatique et en Automatique,
     Keio University). All Rights Reserved.
     http://www.w3.org/Consortium/Legal/

     This document is governed by the W3C Software License [1] as
     described in the FAQ [2].

     [1] http://www.w3.org/Consortium/Legal/copyright-software-19980720
     [2] http://www.w3.org/Consortium/Legal/IPR-FAQ-20000620.html#DTD
-->
<xs:schema targetNamespace="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:tns="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <!-- Envelope, header and body -->
    <xs:element name="Envelope" type="tns:Envelope" />
    <xs:complexType name="Envelope">
        <xs:sequence>
            <xs:element ref="tns:Header" minOccurs="0" maxOccurs="unbounded" />
            <xs:element ref="tns:Body" />
            <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
        <xs:anyAttribute namespace="##other" processContents="lax" />
    </xs:complexType>
    <xs:element name="Header" type="tns:Header" />
    <xs:complexType name="Header">
        <xs:sequence>
            <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
        <xs:anyAttribute namespace="##other" processContents="lax" />
    </xs:complexType>
    <xs:element name="Body" type="tns:Body" />
    <xs:complexType name="Body">
        <xs:sequence>
            <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
        <xs:anyAttribute namespace="##any" processContents="lax">
            <xs:annotation>
                <xs:documentation> Prose in the spec does not specify that attributes are allowed on
                    the Body element </xs:documentation>
            </xs:annotation>
        </xs:anyAttribute>
    </xs:complexType>
    <!-- Global Attributes.  The following attributes are intended to be usable via qualified
    attribute names on any complex type referencing them.  -->
    <xs:attribute name="mustUnderstand">
        <xs:simpleType>
            <xs:restriction base="xs:boolean">
                <xs:pattern value="0|1" />
            </xs:restriction>
        </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="actor" type="xs:anyURI" />
    <xs:simpleType name="encodingStyle">
        <xs:annotation>
            <xs:documentation> 'encodingStyle' indicates any canonicalization conventions followed
                in the contents of the containing element. For example, the value
                'http://schemas.xmlsoap.org/soap/encoding/' indicates the pattern described in SOAP
                specification </xs:documentation>
        </xs:annotation>
        <xs:list itemType="xs:anyURI" />
    </xs:simpleType>
    <xs:attribute name="encodingStyle" type="tns:encodingStyle" />
    <xs:attributeGroup name="encodingStyle">
        <xs:attribute ref="tns:encodingStyle" />
    </xs:attributeGroup>
    <xs:element name="Fault" type="tns:Fault" />
    <xs:complexType name="Fault" final="extension">
        <xs:annotation>
            <xs:documentation> Fault reporting structure </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="faultcode" type="xs:QName" />
            <xs:element name="faultstring" type="xs:string" />
            <xs:element name="faultactor" type="xs:anyURI" minOccurs="0" />
            <xs:element name="detail" type="tns:detail" minOccurs="0" />
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="detail">
        <xs:sequence>
            <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
        <xs:anyAttribute namespace="##any" processContents="lax" />
    </xs:complexType>
</xs:schema>

envelope.xsd

<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns="http://www.w3.org/2001/XMLSchema"
    xmlns:tns="http://schemas.xmlsoap.org/soap/envelope/">
    <include schemaLocation="env.xsd" />
</schema>

msg-header-2_0.xsd

<?xml version="1.0" encoding="UTF-8"?>
<!-- Some parsers may require explicit declaration of
'xmlns:xml="http://www.w3.org/XML/1998/namespace"'.
     In that case, a copy of this schema augmented with the above declaration should be cached and used
     for the purpose of schema validation on ebXML messages. -->
<schema xmlns:tns="http://www.ebxml.org/namespaces/messageHeader"
    xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xlink="http://www.w3.org/1999/xlink"
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://www.ebxml.org/namespaces/messageHeader" elementFormDefault="qualified"
    attributeFormDefault="qualified" version="2.0c">
    <import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd" />
    <import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd" />
    <import namespace="http://schemas.xmlsoap.org/soap/envelope/" schemaLocation="envelope.xsd" />
    <import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd" />
    <!-- MANIFEST, for use in soap:Body element -->
    <element name="Manifest">
        <complexType>
            <sequence>
                <element ref="tns:Reference" maxOccurs="unbounded" />
                <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
            </sequence>
            <attributeGroup ref="tns:bodyExtension.grp" />
        </complexType>
    </element>
    <element name="Reference">
        <complexType>
            <sequence>
                <element ref="tns:Schema" minOccurs="0" maxOccurs="unbounded" />
                <element ref="tns:Description" minOccurs="0" maxOccurs="unbounded" />
                <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
            </sequence>
            <attribute ref="tns:id" />
            <attribute ref="xlink:type" fixed="simple" />
            <attribute ref="xlink:href" use="required" />
            <attribute ref="xlink:role" />
            <anyAttribute namespace="##other" processContents="lax" />
        </complexType>
    </element>
    <element name="Schema">
        <complexType>
            <attribute name="location" type="anyURI" use="required" />
            <attribute name="version" type="tns:non-empty-string" />
        </complexType>
    </element>
    <!-- MESSAGEHEADER, for use in soap:Header element -->
    <element name="MessageHeader">
        <complexType>
            <sequence>
                <element ref="tns:From" />
                <element ref="tns:To" />
                <element ref="tns:CPAId" />
                <element ref="tns:ConversationId" />
                <element ref="tns:Service" />
                <element ref="tns:Action" />
                <element ref="tns:MessageData" />
                <element ref="tns:DuplicateElimination" minOccurs="0" />
                <element ref="tns:Description" minOccurs="0" maxOccurs="unbounded" />
                <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
            </sequence>
            <attributeGroup ref="tns:headerExtension.grp" />
        </complexType>
    </element>
    <element name="CPAId" type="tns:non-empty-string" />
    <element name="ConversationId" type="tns:non-empty-string" />
    <element name="Service">
        <complexType>
            <simpleContent>
                <extension base="string">
                    <attribute name="type" type="tns:non-empty-string" />
                </extension>
            </simpleContent>
        </complexType>
    </element>
    <element name="Action" type="tns:non-empty-string" />
    <element name="MessageData">
        <complexType>
            <sequence>
                <element ref="tns:MessageId" />
                <element ref="tns:Timestamp" />
                <element ref="tns:RefToMessageId" minOccurs="0" />
                <element ref="tns:TimeToLive" minOccurs="0" />
                <element ref="tns:Timeout" minOccurs="0" />
            </sequence>
        </complexType>
    </element>
    <element name="MessageId" type="tns:non-empty-string" />
    <element name="Timeout" type="nonNegativeInteger" />
    <element name="TimeToLive" type="dateTime" />
    <element name="DuplicateElimination" type="anyType" />
    <!-- SYNC REPLY, for use in soap:Header element -->
    <element name="SyncReply">
        <complexType>
            <sequence>
                <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
            </sequence>
            <attributeGroup ref="tns:headerExtension.grp" />
            <attribute ref="soap:actor" use="required" />
        </complexType>
    </element>
    <!-- MESSAGE ORDER, for use in soap:Header element -->
    <element name="MessageOrder">
        <complexType>
            <sequence>
                <element ref="tns:SequenceNumber" />
                <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
            </sequence>
            <attributeGroup ref="tns:headerExtension.grp" />
        </complexType>
    </element>
    <element name="SequenceNumber" type="tns:sequenceNumber.type" />
    <!-- ACK REQUESTED, for use in soap:Header element -->
    <element name="AckRequested">
        <complexType>
            <sequence>
                <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
            </sequence>
            <attributeGroup ref="tns:headerExtension.grp" />
            <attribute ref="soap:actor" />
            <attribute name="signed" type="boolean" use="required" />
        </complexType>
    </element>
    <!-- ACKNOWLEDGMENT, for use in soap:Header element -->
    <element name="Acknowledgment">
        <complexType>
            <sequence>
                <element ref="tns:Timestamp" />
                <element ref="tns:RefToMessageId" />
                <element ref="tns:From" minOccurs="0" />
                <element ref="tns:Reference" minOccurs="0" maxOccurs="unbounded" />
                <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
            </sequence>
            <attributeGroup ref="tns:headerExtension.grp" />
            <attribute ref="soap:actor" />
        </complexType>
    </element>
    <!-- ERROR LIST, for use in soap:Header element -->
    <element name="ErrorList">
        <complexType>
            <sequence>
                <element ref="tns:Error" maxOccurs="unbounded" />
                <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
            </sequence>
            <attributeGroup ref="tns:headerExtension.grp" />
            <attribute name="highestSeverity" type="tns:severity.type" use="required" />
        </complexType>
    </element>
    <element name="Error">
        <complexType>
            <sequence>
                <element ref="tns:Description" minOccurs="0" />
                <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
            </sequence>
            <attribute ref="tns:id" />
            <attribute name="codeContext" type="anyURI"
                default="urn:oasis:names:tc:ebxml-msg:service:errors" />
            <attribute name="errorCode" type="tns:non-empty-string" use="required" />
            <attribute name="severity" type="tns:severity.type" use="required" />
            <attribute name="location" type="tns:non-empty-string" />
            <anyAttribute namespace="##other" processContents="lax" />
        </complexType>
    </element>
    <!-- STATUS RESPONSE, for use in soap:Body element -->
    <element name="StatusResponse">
        <complexType>
            <sequence>
                <element ref="tns:RefToMessageId" />
                <element ref="tns:Timestamp" minOccurs="0" />
                <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
            </sequence>
            <attributeGroup ref="tns:bodyExtension.grp" />
            <attribute name="messageStatus" type="tns:messageStatus.type" use="required" />
        </complexType>
    </element>
    <!-- STATUS REQUEST, for use in soap:Body element -->
    <element name="StatusRequest">
        <complexType>
            <sequence>
                <element ref="tns:RefToMessageId" />
                <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
            </sequence>
            <attributeGroup ref="tns:bodyExtension.grp" />
        </complexType>
    </element>
    <!-- COMMON TYPES -->
    <complexType name="sequenceNumber.type">
        <simpleContent>
            <extension base="nonNegativeInteger">
                <attribute name="status" type="tns:status.type" default="Continue" />
            </extension>
        </simpleContent>
    </complexType>
    <simpleType name="status.type">
        <restriction base="NMTOKEN">
            <enumeration value="Reset" />
            <enumeration value="Continue" />
        </restriction>
    </simpleType>
    <simpleType name="messageStatus.type">
        <restriction base="NMTOKEN">
            <enumeration value="UnAuthorized" />
            <enumeration value="NotRecognized" />
            <enumeration value="Received" />
            <enumeration value="Processed" />
            <enumeration value="Forwarded" />
        </restriction>
    </simpleType>
    <simpleType name="non-empty-string">
        <restriction base="string">
            <minLength value="1" />
        </restriction>
    </simpleType>
    <simpleType name="severity.type">
        <restriction base="NMTOKEN">
            <enumeration value="Warning" />
            <enumeration value="Error" />
        </restriction>
    </simpleType>
    <!-- COMMON ATTRIBUTES and ATTRIBUTE GROUPS -->
    <attribute name="id" type="ID" />
    <attribute name="version" type="tns:non-empty-string" />
    <attributeGroup name="headerExtension.grp">
        <attribute ref="tns:id" />
        <attribute ref="tns:version" use="required" />
        <anyAttribute namespace="##other" processContents="lax" />
        <!--attribute
        ref="soap:mustUnderstand" use="optional"/-->
    </attributeGroup>
    <attributeGroup name="bodyExtension.grp">
        <attribute ref="tns:id" />
        <attribute ref="tns:version" use="required" />
        <anyAttribute namespace="##other" processContents="lax" />
    </attributeGroup>
    <!-- COMMON ELEMENTS -->
    <element name="PartyId">
        <complexType>
            <simpleContent>
                <extension base="string">
                    <attribute name="type" type="tns:non-empty-string" />
                </extension>
            </simpleContent>
        </complexType>
    </element>
    <element name="To">
        <complexType>
            <sequence>
                <element ref="tns:PartyId" maxOccurs="unbounded" />
                <element name="Role" type="tns:non-empty-string" minOccurs="0" />
            </sequence>
        </complexType>
    </element>
    <element name="From">
        <complexType>
            <sequence>
                <element ref="tns:PartyId" maxOccurs="unbounded" />
                <element name="Role" type="tns:non-empty-string" minOccurs="0" />
            </sequence>
        </complexType>
    </element>
    <element name="Description">
        <complexType>
            <simpleContent>
                <extension base="string">
                    <attribute ref="xml:lang" use="required" />
                </extension>
            </simpleContent>
        </complexType>
    </element>
    <element name="RefToMessageId" type="tns:non-empty-string" />
    <element name="Timestamp" type="string" />
</schema>

SSO_ValidateToken1.1.0RQ.wsdl

<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:xsd1="http://webservices.sabre.com/sabreXML/sso/ssoaas/SSO_ValidateToken/1.1.0"
    xmlns:tns="https://webservices.sabre.com/websvc"
    xmlns:eb="http://www.ebxml.org/namespaces/messageHeader"
    xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext"
    targetNamespace="https://webservices.sabre.com/websvc">
    <types>
        <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
            <xsd:import
                namespace="http://webservices.sabre.com/sabreXML/sso/ssoaas/SSO_ValidateToken/1.1.0"
                schemaLocation="SSO_ValidateToken1.1.0RQRS.xsd" />
            <xsd:import namespace="http://www.ebxml.org/namespaces/messageHeader"
                schemaLocation="msg-header-2_0.xsd" />
            <xsd:import namespace="http://www.w3.org/2000/09/xmldsig#"
                schemaLocation="xmldsig-core-schema.xsd" />
            <xsd:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd" />
            <xsd:import namespace="http://schemas.xmlsoap.org/soap/envelope/"
                schemaLocation="envelope.xsd" />
            <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd" />
            <xsd:import namespace="http://schemas.xmlsoap.org/ws/2002/12/secext"
                schemaLocation="wsse.xsd" />
        </xsd:schema>
    </types>
    <message name="SSO_ValidateTokenInput">
        <part name="header" element="eb:MessageHeader" />
        <part name="header2" element="wsse:Security" />
        <part name="body" element="xsd1:ValidateTokenRQ" />
    </message>
    <message name="SSO_ValidateTokenOutput">
        <part name="header" element="eb:MessageHeader" />
        <part name="header2" element="wsse:Security" />
        <part name="body" element="xsd1:ValidateTokenRS" />
    </message>
    <portType name="SSO_ValidateTokenPortType">
        <operation name="SSO_ValidateTokenRQ">
            <input message="tns:SSO_ValidateTokenInput" />
            <output message="tns:SSO_ValidateTokenOutput" />
        </operation>
    </portType>
    <binding name="SSO_ValidateTokenSoapBinding" type="tns:SSO_ValidateTokenPortType">
        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
        <operation name="SSO_ValidateTokenRQ">
            <soap:operation soapAction="OTA" />
            <input>
                <soap:header message="tns:SSO_ValidateTokenInput" part="header" use="literal" />
                <soap:header message="tns:SSO_ValidateTokenInput" part="header2" use="literal" />
                <soap:body parts="body" use="literal" />
            </input>
            <output>
                <soap:header message="tns:SSO_ValidateTokenOutput" part="header" use="literal" />
                <soap:header message="tns:SSO_ValidateTokenOutput" part="header2" use="literal" />
                <soap:body parts="body" use="literal" />
            </output>
        </operation>
    </binding>
    <service name="SSO_ValidateTokenService">
        <port name="SSO_ValidateTokenPortType" binding="tns:SSO_ValidateTokenSoapBinding">
            <soap:address location="https://webservices.sabre.com/websvc" />
        </port>
    </service>
</definitions>

SSO_ValidateToken1.1.0RQ.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    elementFormDefault="qualified"
    attributeFormDefault="unqualified">

    <xs:include schemaLocation="ssoaasCommons1.1.0.xsd" />

    <xs:element name="ValidateTokenRQ">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="SiteminderToken" type="SiteminderTokenType" />
                <xs:element name="OpenAMToken" type="OpenAMTokenType" />
                <xs:element type="xs:string" name="SAMLToken" />
            </xs:sequence>
            <xs:attribute type="xs:string" name="version" form="unqualified" />
            <xs:attribute type="xs:string" name="applicationID" form="unqualified" />
        </xs:complexType>
    </xs:element>
</xs:schema>

SSO_ValidateToken1.1.0RQRS.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
    targetNamespace="http://webservices.sabre.com/sabreXML/sso/ssoaas/SSO_ValidateToken/1.1.0"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    elementFormDefault="qualified"
    attributeFormDefault="unqualified">

    <xs:include schemaLocation="SSO_ValidateToken1.1.0RQ.xsd" />
    <xs:include schemaLocation="SSO_ValidateToken1.1.0RS.xsd" />
</xs:schema>

SSO_ValidateToken1.1.0RS.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    elementFormDefault="qualified"
    attributeFormDefault="unqualified">
    <xs:include schemaLocation="ssoaasCommons1.1.0.xsd" />

    <xs:element name="ValidateTokenRS">
        <xs:complexType>
            <xs:sequence>
                <xs:element type="ResponseInfoType" name="ResponseInfo" />
                <xs:element type="TokenInfoType" name="TokenInfo" />
            </xs:sequence>
            <xs:attribute type="xs:string" name="version" form="unqualified" />
        </xs:complexType>
    </xs:element>
</xs:schema>

ssoaasCommons1.1.0.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    elementFormDefault="qualified"
    attributeFormDefault="unqualified">
    <!--
        for commons using cameleon-anonymous schema w/o targetNamespace
    -->
    <xs:complexType name="SiteminderTokenType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute type="xs:string" name="name" />
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>

    <xs:complexType name="OpenAMTokenType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute type="xs:string" name="name" />
                <xs:attribute type="xs:string" name="stickyTokenName" />
                <xs:attribute type="xs:string" name="stickyTokenBody" />
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>

    <xs:complexType name="TokenInfoType">
        <xs:sequence>
            <xs:element type="UserType" name="User" />
            <xs:element type="SessionType" name="Session" />
        </xs:sequence>
        <xs:attribute type="xs:string" name="idpID" />
        <xs:attribute type="xs:string" name="spID" />
    </xs:complexType>

    <xs:complexType name="UserType">
        <xs:sequence>
            <xs:element type="AttrsType" name="Attrs" />
        </xs:sequence>
        <xs:attribute type="xs:string" name="username" />
    </xs:complexType>

    <xs:complexType name="AttrsType">
        <xs:sequence>
            <xs:element type="AttrType" name="Attr" maxOccurs="unbounded"
                minOccurs="0" />
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="AttrType">
        <xs:sequence>
            <xs:element name="Val" maxOccurs="unbounded" minOccurs="0">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
        </xs:sequence>
        <xs:attribute type="xs:string" name="key" use="optional" />
    </xs:complexType>

    <xs:complexType name="SessionType">
        <xs:sequence>
            <xs:element type="ValidType" name="Valid" nillable="true" />
            <xs:element type="DurationInSecondsType" name="Duration" nillable="true" />
            <xs:element type="xs:string" name="AuthnContext" />
        </xs:sequence>
        <xs:attribute type="xs:string" name="id" />
    </xs:complexType>

    <xs:complexType name="ValidType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute type="xs:dateTime" name="validFrom" />
                <xs:attribute type="xs:dateTime" name="validTo" />
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>

    <xs:simpleType name="DurationInSecondsType">
        <xs:restriction base="xs:unsignedLong">
            <xs:minInclusive value="1" />
        </xs:restriction>
    </xs:simpleType>

    <!-- common response info type -->
    <xs:complexType name="ResponseInfoType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute type="xs:string" name="isValid" />
                <xs:attribute type="xs:string" name="code" />
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
</xs:schema>

wsse.xsd

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns:xsse="http://schemas.xmlsoap.org/ws/2002/12/secext"
    xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
    xmlns:app2="http://schemas.xmlsoap.org/ws/2002/12/secext"
    targetNamespace="http://schemas.xmlsoap.org/ws/2002/12/secext" elementFormDefault="qualified"
    attributeFormDefault="qualified">
    <element name="Security" msdata:Prefix="wsse">
        <complexType>
            <sequence>
                <element name="UsernameToken" minOccurs="0" msdata:Prefix="wsse">
                    <complexType>
                        <sequence>
                            <element name="Username" type="xs:string" minOccurs="0"
                                msdata:Prefix="wsse" />
                            <element name="Password" type="xs:string" minOccurs="0"
                                msdata:Prefix="wsse" />
                            <element name="NewPassword" type="xs:string" minOccurs="0" maxOccurs="2"
                                msdata:Prefix="wsse" />
                            <element name="Organization" type="xs:string" form="unqualified"
                                minOccurs="0" />
                            <element name="Domain" type="xs:string" form="unqualified" minOccurs="0" />
                            <element name="Lniata" type="xs:string" form="unqualified" minOccurs="0" />
                            <element name="LockId" type="xs:string" form="unqualified" minOccurs="0" />
                        </sequence>
                    </complexType>
                </element>
                <element name="SabreAth" type="xs:string" minOccurs="0" msdata:Prefix="wsse" />
                <element name="BinarySecurityToken" type="xs:string" minOccurs="0"
                    msdata:Prefix="wsse">
                    <!--xs:complexType>
                        <xs:attribute name="EncodingType" type="xs:string" use="optional"/>
                        <xs:attribute name="valueType" type="xs:string" use="optional"/>
                    </xs:complexType-->
                </element>
            </sequence>
        </complexType>
    </element>
</schema>
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xlink="http://www.w3.org/1999/xlink"
    targetNamespace="http://www.w3.org/1999/xlink" elementFormDefault="qualified"
    attributeFormDefault="qualified">
    <xsd:attribute name="type">
        <xsd:simpleType>
            <xsd:restriction base="xsd:NMTOKEN">
                <xsd:enumeration value="simple" />
                <xsd:enumeration value="extended" />
                <xsd:enumeration value="locator" />
                <xsd:enumeration value="arc" />
                <xsd:enumeration value="resource" />
                <xsd:enumeration value="title" />
                <xsd:enumeration value="none" />
            </xsd:restriction>
        </xsd:simpleType>
    </xsd:attribute>
    <xsd:attribute name="href" type="xsd:anyURI">
    </xsd:attribute>
    <xsd:attribute name="role" type="xsd:anyURI">
    </xsd:attribute>
    <xsd:attribute name="arcrole" type="xsd:anyURI">
    </xsd:attribute>
    <xsd:attribute name="title" type="xsd:string">
    </xsd:attribute>
    <xsd:attribute name="label" type="xsd:NMTOKEN">
    </xsd:attribute>
    <xsd:attribute name="show">
        <xsd:simpleType>
            <xsd:restriction base="xsd:NMTOKEN">
                <xsd:enumeration value="new" />
                <xsd:enumeration value="replace" />
                <xsd:enumeration value="embed" />
                <xsd:enumeration value="other" />
                <xsd:enumeration value="none" />
            </xsd:restriction>
        </xsd:simpleType>
    </xsd:attribute>
</xsd:schema>

xml.xsd

<?xml version="1.0"?>
<!DOCTYPE xs:schema PUBLIC "-//W3C//DTD XMLSCHEMA 200102//EN" "http://webservices.sabre.com/wsdl/sabreXML1.0.00/usg/XMLSchema.dtd">
<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace"
  xmlns:xs="http://www.w3.org/2001/XMLSchema" xml:lang="en">
  <xs:annotation>
    <xs:documentation> See http://www.w3.org/XML/1998/namespace.html and
      http://www.w3.org/TR/REC-xml for information about this namespace. </xs:documentation>
  </xs:annotation>
  <xs:annotation>
    <xs:documentation>This schema defines attributes and an attribute group suitable for use by
      schemas wishing to allow xml:base, xml:lang or xml:space attributes on elements they define.
      To enable this, such a schema must import this schema for the XML namespace, e.g. as follows:
      &lt;schema . . .> . . . &lt;import namespace="http://www.w3.org/XML/1998/namespace"
      schemaLocation="http://www.w3.org/2001/03/xml.xsd"/> Subsequently, qualified reference to any
      of the attributes or the group defined below will have the desired effect, e.g. &lt;type . .
      .> . . . &lt;attributeGroup ref="xml:specialAttrs"/> will define a type which will
      schema-validate an instance element with any of those attributes</xs:documentation>
  </xs:annotation>
  <xs:annotation>
    <xs:documentation>In keeping with the XML Schema WG's standard versioning policy, this schema
      document will persist at http://www.w3.org/2001/03/xml.xsd. At the date of issue it can also
      be found at http://www.w3.org/2001/xml.xsd. The schema document at that URI may however change
      in the future, in order to remain compatible with the latest version of XML Schema itself. In
      other words, if the XML Schema namespace changes, the version of this document at
      http://www.w3.org/2001/xml.xsd will change accordingly; the version at
      http://www.w3.org/2001/03/xml.xsd will not change. </xs:documentation>
  </xs:annotation>
  <xs:attribute name="lang" type="xs:language">
    <xs:annotation>
      <xs:documentation>In due course, we should install the relevant ISO 2- and 3-letter codes as
        the enumerated possible values . . .</xs:documentation>
    </xs:annotation>
  </xs:attribute>
  <xs:attribute name="space" default="preserve">
    <xs:simpleType>
      <xs:restriction base="xs:NCName">
        <xs:enumeration value="default" />
        <xs:enumeration value="preserve" />
      </xs:restriction>
    </xs:simpleType>
  </xs:attribute>
  <xs:attribute name="base" type="xs:anyURI">
    <xs:annotation>
      <xs:documentation>See http://www.w3.org/TR/xmlbase/ for information about this attribute.</xs:documentation>
    </xs:annotation>
  </xs:attribute>
  <xs:attributeGroup name="specialAttrs">
    <xs:attribute ref="xml:base" />
    <xs:attribute ref="xml:lang" />
    <xs:attribute ref="xml:space" />
  </xs:attributeGroup>
</xs:schema>

xmldsig-core-schema.xsd

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE schema PUBLIC "-//W3C//DTD XMLSchema 200102//EN" "http://webservices.sabre.com/wsdl/sabreXML1.0.00/usg/XMLSchema.dtd" [
    <!ATTLIST schema xmlns:ds CDATA #FIXED "http://www.w3.org/2000/09/xmldsig#"
>
    <!ENTITY dsig 'http://www.w3.org/2000/09/xmldsig#'>
    <!ENTITY % p ''>
    <!ENTITY % s ''>
]>
<!-- Schema for XML Signatures
    http://www.w3.org/2000/09/xmldsig#
    $Revision: 1.1 $ on $Date: 2002/02/08 20:32:26 $ by $Author: reagle $

    Copyright 2001 The Internet Society and W3C (Massachusetts Institute
    of Technology, Institut National de Recherche en Informatique et en
    Automatique, Keio University). All Rights Reserved.
    http://www.w3.org/Consortium/Legal/

    This document is governed by the W3C Software License [1] as described
    in the FAQ [2].

    [1] http://www.w3.org/Consortium/Legal/copyright-software-19980720
    [2] http://www.w3.org/Consortium/Legal/IPR-FAQ-20000620.html#DTD
-->
<schema targetNamespace="http://www.w3.org/2000/09/xmldsig#"
    xmlns="http://www.w3.org/2001/XMLSchema" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
    elementFormDefault="qualified" version="0.1">
    <!-- Basic Types Defined for Signatures -->
    <simpleType name="CryptoBinary">
        <restriction base="base64Binary" />
    </simpleType>
    <!-- Start Signature -->
    <element name="Signature" type="ds:SignatureType" />
    <complexType name="SignatureType">
        <sequence>
            <element ref="ds:SignedInfo" />
            <element ref="ds:SignatureValue" />
            <element ref="ds:KeyInfo" minOccurs="0" />
            <element ref="ds:Object" minOccurs="0" maxOccurs="unbounded" />
        </sequence>
        <attribute name="Id" type="ID" use="optional" />
    </complexType>
    <element name="SignatureValue" type="ds:SignatureValueType" />
    <complexType name="SignatureValueType">
        <simpleContent>
            <extension base="base64Binary">
                <attribute name="Id" type="ID" use="optional" />
            </extension>
        </simpleContent>
    </complexType>
    <!-- Start SignedInfo -->
    <element name="SignedInfo" type="ds:SignedInfoType" />
    <complexType name="SignedInfoType">
        <sequence>
            <element ref="ds:CanonicalizationMethod" />
            <element ref="ds:SignatureMethod" />
            <element ref="ds:Reference" maxOccurs="unbounded" />
        </sequence>
        <attribute name="Id" type="ID" use="optional" />
    </complexType>
    <element name="CanonicalizationMethod" type="ds:CanonicalizationMethodType" />
    <complexType name="CanonicalizationMethodType" mixed="true">
        <sequence>
            <any namespace="##any" minOccurs="0" maxOccurs="unbounded" />
            <!-- (0,unbounded) elements from (1,1) namespace -->
        </sequence>
        <attribute name="Algorithm" type="anyURI" use="required" />
    </complexType>
    <element name="SignatureMethod" type="ds:SignatureMethodType" />
    <complexType name="SignatureMethodType" mixed="true">
        <sequence>
            <element name="HMACOutputLength" type="ds:HMACOutputLengthType" minOccurs="0" />
            <any namespace="##other" minOccurs="0" maxOccurs="unbounded" />
            <!-- (0,unbounded) elements from (1,1) external namespace -->
        </sequence>
        <attribute name="Algorithm" type="anyURI" use="required" />
    </complexType>
    <!-- Start Reference -->
    <element name="Reference" type="ds:ReferenceType" />
    <complexType name="ReferenceType">
        <sequence>
            <element ref="ds:Transforms" minOccurs="0" />
            <element ref="ds:DigestMethod" />
            <element ref="ds:DigestValue" />
        </sequence>
        <attribute name="Id" type="ID" use="optional" />
        <attribute name="URI" type="anyURI" use="optional" />
        <attribute name="Type" type="anyURI" use="optional" />
    </complexType>
    <element name="Transforms" type="ds:TransformsType" />
    <complexType name="TransformsType">
        <sequence>
            <element ref="ds:Transform" maxOccurs="unbounded" />
        </sequence>
    </complexType>
    <element name="Transform" type="ds:TransformType" />
    <complexType name="TransformType" mixed="true">
        <choice minOccurs="0" maxOccurs="unbounded">
            <any namespace="##other" processContents="lax" />
            <element name="XPath" type="string" />
            <!-- (1,1) elements from (0,unbounded) namespaces -->
        </choice>
        <attribute name="Algorithm" type="anyURI" use="required" />
    </complexType>
    <!-- End Reference -->
    <element name="DigestMethod" type="ds:DigestMethodType" />
    <complexType name="DigestMethodType" mixed="true">
        <sequence>
            <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
        </sequence>
        <attribute name="Algorithm" type="anyURI" use="required" />
    </complexType>
    <element name="DigestValue" type="ds:DigestValueType" />
    <simpleType name="DigestValueType">
        <restriction base="base64Binary" />
    </simpleType>
    <!-- End SignedInfo -->
    <!-- Start KeyInfo -->
    <element name="KeyInfo" type="ds:KeyInfoType" />
    <complexType name="KeyInfoType" mixed="true">
        <choice maxOccurs="unbounded">
            <element ref="ds:KeyName" />
            <element ref="ds:KeyValue" />
            <element ref="ds:RetrievalMethod" />
            <element ref="ds:X509Data" />
            <element ref="ds:PGPData" />
            <element ref="ds:SPKIData" />
            <element ref="ds:MgmtData" />
            <any namespace="##other" processContents="lax" />
            <!-- (1,1) elements from (0,unbounded) namespaces -->
        </choice>
        <attribute name="Id" type="ID" use="optional" />
    </complexType>
    <element name="KeyName" type="string" />
    <element name="MgmtData" type="string" />
    <element name="KeyValue" type="ds:KeyValueType" />
    <complexType name="KeyValueType" mixed="true">
        <choice>
            <element ref="ds:DSAKeyValue" />
            <element ref="ds:RSAKeyValue" />
            <any namespace="##other" processContents="lax" />
        </choice>
    </complexType>
    <element name="RetrievalMethod" type="ds:RetrievalMethodType" />
    <complexType name="RetrievalMethodType">
        <sequence>
            <element ref="ds:Transforms" minOccurs="0" />
        </sequence>
        <attribute name="URI" type="anyURI" />
        <attribute name="Type" type="anyURI" use="optional" />
    </complexType>
    <!-- Start X509Data -->
    <element name="X509Data" type="ds:X509DataType" />
    <complexType name="X509DataType">
        <sequence maxOccurs="unbounded">
            <choice>
                <element name="X509IssuerSerial" type="ds:X509IssuerSerialType" />
                <element name="X509SKI" type="base64Binary" />
                <element name="X509SubjectName" type="string" />
                <element name="X509Certificate" type="base64Binary" />
                <element name="X509CRL" type="base64Binary" />
                <any namespace="##other" processContents="lax" />
            </choice>
        </sequence>
    </complexType>
    <complexType name="X509IssuerSerialType">
        <sequence>
            <element name="X509IssuerName" type="string" />
            <element name="X509SerialNumber" type="integer" />
        </sequence>
    </complexType>
    <!-- End X509Data -->
    <!-- Begin PGPData -->
    <element name="PGPData" type="ds:PGPDataType" />
    <complexType name="PGPDataType">
        <sequence>
            <element name="PGPKeyID" type="base64Binary" />
            <element name="PGPKeyPacket" type="base64Binary" minOccurs="0" />
            <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
        </sequence>
    </complexType>
    <!-- End PGPData -->
    <!-- Begin SPKIData -->
    <element name="SPKIData" type="ds:SPKIDataType" />
    <complexType name="SPKIDataType">
        <sequence maxOccurs="unbounded">
            <element name="SPKISexp" type="base64Binary" />
            <any namespace="##other" processContents="lax" minOccurs="0" />
        </sequence>
    </complexType>
    <!-- End SPKIData -->
    <!-- End KeyInfo -->
    <!-- Start Object (Manifest, SignatureProperty) -->
    <element name="Object" type="ds:ObjectType" />
    <complexType name="ObjectType" mixed="true">
        <sequence minOccurs="0" maxOccurs="unbounded">
            <any namespace="##any" processContents="lax" />
        </sequence>
        <attribute name="Id" type="ID" use="optional" />
        <attribute name="MimeType" type="string" use="optional" />
        <attribute name="Encoding" type="anyURI" use="optional" />
        <!-- add a grep facet -->
    </complexType>
    <element name="Manifest" type="ds:ManifestType" />
    <complexType name="ManifestType">
        <sequence>
            <element ref="ds:Reference" maxOccurs="unbounded" />
        </sequence>
        <attribute name="Id" type="ID" use="optional" />
    </complexType>
    <element name="SignatureProperties" type="ds:SignaturePropertiesType" />
    <complexType name="SignaturePropertiesType">
        <sequence>
            <element ref="ds:SignatureProperty" maxOccurs="unbounded" />
        </sequence>
        <attribute name="Id" type="ID" use="optional" />
    </complexType>
    <element name="SignatureProperty" type="ds:SignaturePropertyType" />
    <complexType name="SignaturePropertyType" mixed="true">
        <choice maxOccurs="unbounded">
            <any namespace="##other" processContents="lax" />
            <!-- (1,1) elements from (1,unbounded) namespaces -->
        </choice>
        <attribute name="Target" type="anyURI" use="required" />
        <attribute name="Id" type="ID" use="optional" />
    </complexType>
    <!-- End Object (Manifest, SignatureProperty) -->
    <!-- Start Algorithm Parameters -->
    <simpleType name="HMACOutputLengthType">
        <restriction base="integer" />
    </simpleType>
    <!-- Start KeyValue Element-types -->
    <element name="DSAKeyValue" type="ds:DSAKeyValueType" />
    <complexType name="DSAKeyValueType">
        <sequence>
            <sequence minOccurs="0">
                <element name="P" type="ds:CryptoBinary" />
                <element name="Q" type="ds:CryptoBinary" />
            </sequence>
            <element name="G" type="ds:CryptoBinary" minOccurs="0" />
            <element name="Y" type="ds:CryptoBinary" />
            <element name="J" type="ds:CryptoBinary" minOccurs="0" />
            <sequence minOccurs="0">
                <element name="Seed" type="ds:CryptoBinary" />
                <element name="PgenCounter" type="ds:CryptoBinary" />
            </sequence>
        </sequence>
    </complexType>
    <element name="RSAKeyValue" type="ds:RSAKeyValueType" />
    <complexType name="RSAKeyValueType">
        <sequence>
            <element name="Modulus" type="ds:CryptoBinary" />
            <element name="Exponent" type="ds:CryptoBinary" />
        </sequence>
    </complexType>
    <!-- End KeyValue Element-types -->
    <!-- End Signature -->
</schema>