Hello all,
I encoutered a strange problem when upgrading to Axis 1.2 from 1.2RC2, a WSDL
file stopped compiling with wsdl2java. Here's the command line that I use to
compile:
java -classpath
lib/axis.jar:lib/commons-logging-1.0.4.jar:lib/commons-discovery-0.2.jar:lib/wsdl4j-1.5.1.jar:lib/saaj.jar:lib/jaxrpc.jar:lib/mailapi.jar
org.apache.axis.wsdl.WSDL2Java --server-side --skeletonDeploy true -o src
xml/mssp.wsdl
Here is the error message from wsdl2java:
java.io.IOException: Type
{http://www.w3.org/2000/09/xmldsig#}SignatureProperty is referenced but not
defined.
at
org.apache.axis.wsdl.symbolTable.SymbolTable.checkForUndefined(SymbolTable.java:663)
at
org.apache.axis.wsdl.symbolTable.SymbolTable.add(SymbolTable.java:543)
at
org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:516)
at
org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:493)
at org.apache.axis.wsdl.gen.Parser$WSDLRunnable.run(Parser.java:360)
at java.lang.Thread.run(Thread.java:534)
SignatureProperty is defined in xmldsig-core-schema.xsd if I understand it
correctly.
Find the WSDL and required XML schemas attached, I would be happy if someone
understands what is happening here?
Jyrki
<?xml version="1.0" encoding="utf-8"?>
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:mss="http://uri.etsi.org/TS102204/v1.1.2#"
xmlns:vv="http://www.valimo.com/soap/mssp"
targetNamespace="http://www.valimo.com/soap/mssp">
<import namespace="http://uri.etsi.org/2003/v1.1.2#"
location="mss.xsd"/>
<types>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" targetNamespace="empty"/>
</types>
<message name="MSS_SignatureInput">
<part name="MSS_SignatureReq" type="mss:MSS_SignatureReqType"/>
</message>
<message name="MSS_SignatureOutput">
<part name="MSS_SignatureResp"
type="mss:MSS_SignatureRespType"/>
</message>
<message name="MSS_StatusQueryInput">
<part name="MSS_StatusReq" type="mss:MSS_StatusReqType"/>
</message>
<message name="MSS_StatusQueryOutput">
<part name="MSS_StatusResp" type="mss:MSS_StatusRespType"/>
</message>
<message name="MSS_ReceiptInput">
<part name="MSS_ReceiptReq" type="mss:MSS_ReceiptReqType"/>
</message>
<message name="MSS_ReceiptOutput">
<part name="MSS_ReceiptResp" type="mss:MSS_ReceiptRespType"/>
</message>
<message name="MSS_RegistrationInput">
<part name="MSS_RegistrationReq"
type="mss:MSS_RegistrationReqType"/>
</message>
<message name="MSS_RegistrationOutput">
<part name="MSS_RegistrationResp"
type="mss:MSS_RegistrationRespType"/>
</message>
<message name="MSS_ProfileQueryInput">
<part name="MSS_ProfileReq" type="mss:MSS_ProfileReqType"/>
</message>
<message name="MSS_ProfileQueryOutput">
<part name="MSS_ProfileResp" type="mss:MSS_ProfileRespType"/>
</message>
<message name="MSS_NotificationInput">
<part name="MSS_StatusResp" type="mss:MSS_StatusRespType"/>
</message>
<message name="MSS_NotificationOutput">
<part name="MSS_ReceiptReq" type="mss:MSS_ReceiptReqType"/>
</message>
<message name="MSS_HandshakeInput">
<part name="MSS_HandshakeReq" type="mss:MSS_HandshakeReqType"/>
</message>
<message name="MSS_HandshakeOutput">
<part name="MSS_HandshakeResp"
type="mss:MSS_HandshakeRespType"/>
</message>
<portType name="MSS_SignaturePortType">
<operation name="MSS_Signature">
<input message="vv:MSS_SignatureInput"/>
<output message="vv:MSS_SignatureOutput"/>
</operation>
</portType>
<portType name="MSS_StatusQueryPortType">
<operation name="MSS_StatusQuery">
<input message="vv:MSS_StatusQueryInput"/>
<output message="vv:MSS_StatusQueryOutput"/>
</operation>
</portType>
<portType name="MSS_ReceiptPortType">
<operation name="MSS_Receipt">
<input message="vv:MSS_ReceiptInput"/>
<output message="vv:MSS_ReceiptOutput"/>
</operation>
</portType>
<portType name="MSS_RegistrationPortType">
<operation name="MSS_Registration">
<input message="vv:MSS_RegistrationInput"/>
<output message="vv:MSS_RegistrationOutput"/>
</operation>
</portType>
<portType name="MSS_ProfileQueryPortType">
<operation name="MSS_ProfileQuery">
<input message="vv:MSS_ProfileQueryInput"/>
<output message="vv:MSS_ProfileQueryOutput"/>
</operation>
</portType>
<portType name="MSS_NotificationPortType">
<operation name="MSS_Notification">
<input message="vv:MSS_NotificationInput"/>
<output message="vv:MSS_NotificationOutput"/>
</operation>
</portType>
<portType name="MSS_HandshakePortType">
<operation name="MSS_Handshake">
<input message="vv:MSS_HandshakeInput"/>
<output message="vv:MSS_HandshakeOutput"/>
</operation>
</portType>
<binding name="MSS_SignatureBinding" type="vv:MSS_SignaturePortType">
<soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="MSS_Signature">
<soap:operation soapAction="uri" style="rpc"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<binding name="MSS_StatusQueryBinding"
type="vv:MSS_StatusQueryPortType">
<soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="MSS_StatusQuery">
<soap:operation soapAction="vv:MSS_StatusQuery"
style="rpc"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<binding name="MSS_ReceiptBinding" type="vv:MSS_ReceiptPortType">
<soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="MSS_Receipt">
<soap:operation soapAction="vv:MSS_Receipt"
style="rpc"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<binding name="MSS_RegistrationBinding"
type="vv:MSS_RegistrationPortType">
<soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="MSS_Registration">
<soap:operation soapAction="vv:MSS_Registration"
style="rpc"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<binding name="MSS_ProfileQueryBinding"
type="vv:MSS_ProfileQueryPortType">
<soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="MSS_ProfileQuery">
<soap:operation soapAction="vv:MSS_ProfileQuery"
style="rpc"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<binding name="MSS_NotificationBinding"
type="vv:MSS_NotificationPortType">
<soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="MSS_Notification">
<soap:operation soapAction="vv:MSS_Notification"
style="rpc"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<binding name="MSS_HandshakeBinding" type="vv:MSS_HandshakePortType">
<soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="MSS_Handshake">
<soap:operation soapAction="vv:MSS_Handshake"
style="rpc"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="MSS_SignatureService">
<port name="MSS_Signature" binding="vv:MSS_SignatureBinding">
<soap:address
location="https://jyrki.valimo.com:8443/MSSP/AxisServlet/MSS_Signature"/>
</port>
</service>
<service name="MSS_StatusQueryService">
<port name="MSS_StatusPort" binding="vv:MSS_StatusQueryBinding">
<soap:address
location="https://jyrki.valimo.com:8443/MSSP/AxisServlet/MSS_StatusPort"/>
</port>
</service>
<service name="MSS_ReceiptService">
<port name="MSS_ReceiptPort" binding="vv:MSS_ReceiptBinding">
<soap:address
location="https://jyrki.valimo.com:8443/MSSP/AxisServlet/MSS_ReceiptPort"/>
</port>
</service>
<service name="MSS_RegistrationService">
<port name="MSS_RegistrationPort"
binding="vv:MSS_RegistrationBinding">
<soap:address
location="https://jyrki.valimo.com:8443/MSSP/AxisServlet/MSS_RegistrationPort"/>
</port>
</service>
<service name="MSS_ProfileQueryService">
<port name="MSS_ProfileQueryPort"
binding="vv:MSS_ProfileQueryBinding">
<soap:address
location="https://jyrki.valimo.com:8443/MSSP/AxisServlet/MSS_ProfileQueryPort"/>
</port>
</service>
<service name="MSS_NotificationService">
<port name="MSS_NotificationPort"
binding="vv:MSS_NotificationBinding">
<soap:address
location="https://jyrki.valimo.com:8443/MSSP/AxisServlet/MSS_NotificationPort"/>
</port>
</service>
<service name="MSS_HandshakeService">
<port name="MSS_HandshakePort"
binding="vv:MSS_HandshakeBinding">
<soap:address
location="https://jyrki.valimo.com:8443/MSSP/AxisServlet/MSS_HandshakePort"/>
</port>
</service>
</definitions>
]>
<schema targetNamespace="http://www.w3.org/XML/1998/namespace"
xmlns="http://www.w3.org/2001/XMLSchema">
<annotation>
<documentation>This schema defines attributes and an attribute
group
suitable for use by
schemas wishing to allow xml:lang or xml:space attributes
on elements they define.
To enable this, such a schema must first declare the XML
namespace, and then import this schema
for the XML namespace, e.g. as follows:
<schema . . . xmlns:xml="http://www.w3.org/XML/1998/namespace">
. . .
<import namespace="http://www.w3.org/XML/1998/namespace"/>
Subsequently, qualified reference to either of the attributes
or the group defined below will have the desired effect, e.g.
<type . . .>
. . .
<attributeGroup ref="xml:specialAttrs"/>
will define a type which will schema-validate a instance
element with both xml:space and xml:lang attribute</documentation>
</annotation>
<attribute name="lang" type="language">
<annotation>
<documentation>In due course, we should install the
relevant ISO 2- and 3-letter
codes as the enumerated possible values . . .</documentation>
</annotation>
</attribute>
<attribute name="space" default="preserve">
<simpleType>
<restriction base="NCName">
<enumeration value="default"/>
<enumeration value="preserve"/>
</restriction>
</simpleType>
</attribute>
<attributeGroup name="specialAttrs">
<attribute ref="xml:lang"/>
<attribute ref="xml:space"/>
</attributeGroup>
</schema>
<xs:schema targetNamespace="http://uri.etsi.org/TS102204/v1.1.2#"
xmlns:env="http://www.w3.org/2003/05/soap-envelope"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:mss="http://uri.etsi.org/TS102204/v1.1.2#"
xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#" elementFormDefault="qualified">
<xs:import namespace="http://www.w3.org/2000/09/xmldsig#"
schemaLocation="xmldsig-core-schema.xsd"/>
<xs:import namespace="http://www.w3.org/2001/04/xmlenc#"
schemaLocation="xenc-schema.xsd"/>
<xs:import namespace="http://www.w3.org/2003/05/soap-envelope"
schemaLocation="soap-envelope.xsd"/>
<xs:complexType name="MessageAbstractType" abstract="true">
<xs:sequence>
<xs:element name="AP_Info">
<xs:complexType>
<xs:attribute name="AP_ID"
type="xs:anyURI" use="required"/>
<xs:attribute name="AP_TransID"
type="xs:NCName" use="required"/>
<xs:attribute name="AP_PWD"
type="xs:string" use="required"/>
<xs:attribute name="Instant"
type="xs:dateTime" use="required"/>
<xs:attribute name="AP_URL"
type="xs:anyURI" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="MSSP_Info">
<xs:complexType>
<xs:sequence>
<xs:element name="MSSP_ID"
type="mss:MeshMemberType"/>
</xs:sequence>
<xs:attribute name="Instant"
type="xs:dateTime" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="MajorVersion" type="xs:integer"
use="required"/>
<xs:attribute name="MinorVersion" type="xs:integer"
use="required"/>
</xs:complexType>
<xs:element name="MSS_SignatureReq" type="mss:MSS_SignatureReqType"/>
<xs:complexType name="MSS_SignatureReqType">
<xs:complexContent>
<xs:extension base="mss:MessageAbstractType">
<xs:sequence>
<xs:element name="MobileUser"
type="mss:MobileUserType"/>
<xs:element name="DataToBeSigned"
type="mss:DataType"/>
<xs:element name="DataToBeDisplayed"
type="mss:DataType" minOccurs="0"/>
<xs:element name="SignatureProfile"
type="mss:mssURIType" minOccurs="0"/>
<xs:element name="AdditionalServices"
minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element
name="Service" type="mss:AdditionalServiceType" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="MSS_Format"
type="mss:mssURIType" minOccurs="0"/>
<xs:element name="KeyReference"
type="mss:KeyReferenceType" minOccurs="0"/>
<xs:element
name="SignatureProfileComparison" type="mss:SignatureProfileComparisonType"
minOccurs="0"/>
</xs:sequence>
<xs:attribute name="ValidityDate"
type="xs:dateTime" use="optional"/>
<xs:attribute name="TimeOut"
type="xs:positiveInteger" use="optional"/>
<xs:attribute name="MessagingMode"
type="mss:MessagingModeType" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="MSS_SignatureResp" type="mss:MSS_SignatureRespType"/>
<xs:complexType name="MSS_SignatureRespType">
<xs:complexContent>
<xs:extension base="mss:MessageAbstractType">
<xs:sequence>
<xs:element name="MobileUser"
type="mss:MobileUserType"/>
<xs:element name="MSS_Signature"
type="mss:SignatureType" minOccurs="0"/>
<xs:element name="SignatureProfile"
type="mss:mssURIType" minOccurs="0"/>
<xs:element name="Status"
type="mss:StatusType"/>
</xs:sequence>
<xs:attribute name="MSSP_TransID"
type="xs:NCName" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="MSS_StatusReq" type="mss:MSS_StatusReqType"/>
<xs:complexType name="MSS_StatusReqType">
<xs:complexContent>
<xs:extension base="mss:MessageAbstractType">
<xs:attribute name="MSSP_TransID"
type="xs:NCName" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="MSS_StatusResp" type="mss:MSS_StatusRespType"/>
<xs:complexType name="MSS_StatusRespType">
<xs:complexContent>
<xs:extension base="mss:MessageAbstractType">
<xs:sequence>
<xs:element name="MobileUser"
type="mss:MobileUserType"/>
<xs:element name="MSS_Signature"
type="mss:SignatureType" minOccurs="0"/>
<xs:element name="Status"
type="mss:StatusType"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="MSS_RegistrationReq"
type="mss:MSS_RegistrationReqType"/>
<xs:complexType name="MSS_RegistrationReqType">
<xs:complexContent>
<xs:extension base="mss:MessageAbstractType">
<xs:sequence>
<xs:element name="MobileUser"
type="mss:MobileUserType"/>
<xs:element name="EncryptedData"
type="xenc:EncryptedType" minOccurs="0"/>
<xs:element name="EncryptResponseBy"
type="xs:anyURI" minOccurs="0"/>
<xs:element name="CertificateURI"
type="xs:anyURI" minOccurs="0"/>
<xs:element name="X509Certificate"
type="xs:base64Binary" minOccurs="0"/>
<xs:any namespace="##other"
processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="MSS_RegistrationResp"
type="mss:MSS_RegistrationRespType"/>
<xs:complexType name="MSS_RegistrationRespType">
<xs:complexContent>
<xs:extension base="mss:MessageAbstractType">
<xs:sequence>
<xs:element name="Status"
type="mss:StatusType"/>
<xs:element name="EncryptedData"
type="xenc:EncryptedType" minOccurs="0"/>
<xs:element name="CertificateURI"
type="xs:anyURI" minOccurs="0"/>
<xs:element name="X509Certificate"
type="xs:base64Binary" minOccurs="0"/>
<xs:element name="PublicKey"
type="xs:base64Binary" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="MSS_ProfileReq" type="mss:MSS_ProfileReqType"/>
<xs:complexType name="MSS_ProfileReqType">
<xs:complexContent>
<xs:extension base="mss:MessageAbstractType">
<xs:sequence>
<xs:element name="MobileUser"
type="mss:MobileUserType"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="MSS_ProfileResp" type="mss:MSS_ProfileRespType"/>
<xs:complexType name="MSS_ProfileRespType">
<xs:complexContent>
<xs:extension base="mss:MessageAbstractType">
<xs:sequence>
<xs:element name="SignatureProfile"
type="mss:mssURIType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="Status"
type="mss:StatusType"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="MSS_ReceiptReq" type="mss:MSS_ReceiptReqType"/>
<xs:complexType name="MSS_ReceiptReqType">
<xs:complexContent>
<xs:extension base="mss:MessageAbstractType">
<xs:sequence>
<xs:element name="MobileUser"
type="mss:MobileUserType"/>
<xs:element name="Status"
type="mss:StatusType" minOccurs="0"/>
<xs:element name="Message"
type="mss:DataType" minOccurs="0"/>
<xs:element name="SignedReceipt"
type="ds:SignatureType" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="MSSP_TransID"
type="xs:NCName" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="MSS_ReceiptResp" type="mss:MSS_ReceiptRespType"/>
<xs:complexType name="MSS_ReceiptRespType">
<xs:complexContent>
<xs:extension base="mss:MessageAbstractType">
<xs:sequence>
<xs:element name="Status"
type="mss:StatusType"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="MSS_HandshakeReq" type="mss:MSS_HandshakeReqType"/>
<xs:complexType name="MSS_HandshakeReqType">
<xs:complexContent>
<xs:extension base="mss:MessageAbstractType">
<xs:sequence>
<xs:element name="SecureMethods">
<xs:complexType>
<xs:attribute
name="MSS_Signature" type="xs:boolean" use="required"/>
<xs:attribute
name="MSS_Registration" type="xs:boolean" use="required"/>
<xs:attribute
name="MSS_Notification" type="xs:boolean" use="required"/>
<xs:attribute
name="MSS_ProfileQuery" type="xs:boolean" use="required"/>
<xs:attribute
name="MSS_Receipt" type="xs:boolean" use="required"/>
<xs:attribute
name="MSS_Status" type="xs:boolean" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="Certificates">
<xs:complexType>
<xs:sequence>
<xs:element
name="Certificate" type="xs:base64Binary" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="RootCAs">
<xs:complexType>
<xs:sequence>
<xs:element
name="DN" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="SignatureAlgList">
<xs:complexType>
<xs:sequence>
<xs:element
name="Algorithm" type="mss:mssURIType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="MSS_HandshakeResp" type="mss:MSS_HandshakeRespType"/>
<xs:complexType name="MSS_HandshakeRespType">
<xs:complexContent>
<xs:extension base="mss:MessageAbstractType">
<xs:sequence>
<xs:element name="SecureMethods">
<xs:complexType>
<xs:attribute
name="MSS_Signature" type="xs:boolean" use="required"/>
<xs:attribute
name="MSS_Registration" type="xs:boolean" use="required"/>
<xs:attribute
name="MSS_Notification" type="xs:boolean" use="required"/>
<xs:attribute
name="MSS_ProfileQuery" type="xs:boolean" use="required"/>
<xs:attribute
name="MSS_Receipt" type="xs:boolean" use="required"/>
<xs:attribute
name="MSS_Status" type="xs:boolean" use="required"/>
</xs:complexType>
</xs:element>
<xs:element
name="MatchingMSSPCertificates">
<xs:complexType>
<xs:sequence>
<xs:element
name="Certificate" type="xs:base64Binary" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element
name="MatchingAPCertificates">
<xs:complexType>
<xs:sequence>
<xs:element
name="Certificate" type="xs:base64Binary" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="MatchingSigAlgList">
<xs:complexType>
<xs:sequence>
<xs:element
name="Algorithm" type="mss:mssURIType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="MSSP_TransID"
type="xs:NCName" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="MobileUserType">
<xs:sequence>
<xs:element name="IdentityIssuer"
type="mss:MeshMemberType" minOccurs="0"/>
<xs:element name="UserIdentifier" type="xs:string"
minOccurs="0"/>
<xs:element name="HomeMSSP" type="mss:MeshMemberType"
minOccurs="0"/>
<xs:element name="MSISDN" type="xs:string"
minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="DataType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="MimeType" type="xs:string"
use="optional"/>
<xs:attribute name="Encoding" type="xs:string"
use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:simpleType name="SignatureProfileComparisonType">
<xs:restriction base="xs:string">
<xs:enumeration value="exact"/>
<xs:enumeration value="minimum"/>
<xs:enumeration value="better"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="MessagingModeType">
<xs:restriction base="xs:string">
<xs:enumeration value="synch"/>
<xs:enumeration value="asynchClientServer"/>
<xs:enumeration value="asynchServerServer"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="DigestAlgAndValueType">
<xs:sequence>
<xs:element name="DigestMethod"
type="ds:DigestMethodType" minOccurs="0"/>
<xs:element name="DigestValue"
type="ds:DigestValueType"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="mssURIType">
<xs:sequence>
<xs:element name="mssURI" type="xs:anyURI"/>
<xs:element name="DigestAlgAndValue"
type="mss:DigestAlgAndValueType" minOccurs="0"/>
<xs:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="MeshMemberType">
<xs:sequence>
<xs:element name="DNSName" type="xs:string"
minOccurs="0"/>
<xs:element name="IPAddress" type="xs:string"
minOccurs="0"/>
<xs:element name="URI" type="xs:anyURI" minOccurs="0"/>
<xs:element name="IdentifierString" type="xs:string"
minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="KeyReferenceType">
<xs:sequence>
<xs:element name="CertificateURL" type="xs:anyURI"
minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="CertificateIssuerDN" type="xs:string"
minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="HashOfUsersPublicKey"
type="mss:DigestAlgAndValueType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="HashOfCAPublicKey"
type="mss:DigestAlgAndValueType" minOccurs="0" maxOccurs="unbounded"/>
<xs:any namespace="##other" processContents="lax"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="SignatureType">
<xs:choice>
<xs:element name="XMLSignature"
type="ds:SignatureType"/>
<xs:element name="Base64Signature"
type="xs:base64Binary"/>
<xs:any namespace="##other" processContents="lax"
minOccurs="0"/>
<!-- this can also be an advanced XML Signature-->
</xs:choice>
</xs:complexType>
<xs:element name="MSS_MessageSignature">
<xs:complexType>
<xs:sequence>
<xs:element ref="ds:Signature"/>
</xs:sequence>
<xs:attribute ref="env:role" use="required"/>
<xs:attribute ref="env:mustUnderstand" use="required"/>
</xs:complexType>
</xs:element>
<xs:complexType name="AdditionalServiceType">
<xs:sequence>
<xs:element name="Description" type="mss:mssURIType"/>
<xs:element name="Entity" type="mss:MeshMemberType"
minOccurs="0"/>
<xs:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="StatusType">
<xs:sequence>
<xs:element name="StatusCode"
type="mss:StatusCodeType"/>
<xs:element name="StatusMessage" type="xs:string"
minOccurs="0"/>
<xs:element name="StatusDetail"
type="mss:StatusDetailType" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="StatusCodeType">
<xs:sequence>
<xs:element name="StatusCode" type="mss:StatusCodeType"
minOccurs="0"/>
</xs:sequence>
<xs:attribute name="Value" type="xs:integer" use="required"/>
</xs:complexType>
<xs:complexType name="StatusDetailType">
<xs:sequence>
<xs:any namespace="##any" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
Elements replacing the wildcard MUST be namespace qualified, but can be in the targetNamespace
Fault reporting structure
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE schema PUBLIC "-//W3C//DTD XMLSchema 200102//EN"
"http://www.w3.org/2001/XMLSchema.dtd" [
<!ATTLIST schema
xmlns:xenc CDATA #FIXED 'http://www.w3.org/2001/04/xmlenc#'
xmlns:ds CDATA #FIXED 'http://www.w3.org/2000/09/xmldsig#'>
<!ENTITY xenc 'http://www.w3.org/2001/04/xmlenc#'>
<!ENTITY % p ''>
<!ENTITY % s ''>
]>
<schema xmlns="http://www.w3.org/2001/XMLSchema" version="1.0"
xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
targetNamespace="http://www.w3.org/2001/04/xmlenc#"
elementFormDefault="qualified">
<import namespace="http://www.w3.org/2000/09/xmldsig#"
schemaLocation="http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd"/>
<complexType name="EncryptedType" abstract="true">
<sequence>
<element name="EncryptionMethod" type="xenc:EncryptionMethodType"
minOccurs="0"/>
<element ref="ds:KeyInfo" minOccurs="0"/>
<element ref="xenc:CipherData"/>
<element ref="xenc:EncryptionProperties" minOccurs="0"/>
</sequence>
<attribute name="Id" type="ID" use="optional"/>
<attribute name="Type" type="anyURI" use="optional"/>
<attribute name="MimeType" type="string" use="optional"/>
<attribute name="Encoding" type="anyURI" use="optional"/>
</complexType>
<complexType name="EncryptionMethodType" mixed="true">
<sequence>
<element name="KeySize" minOccurs="0" type="xenc:KeySizeType"/>
<element name="OAEPparams" minOccurs="0" type="base64Binary"/>
<any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
<attribute name="Algorithm" type="anyURI" use="required"/>
</complexType>
<simpleType name="KeySizeType">
<restriction base="integer"/>
</simpleType>
<element name="CipherData" type="xenc:CipherDataType"/>
<complexType name="CipherDataType">
<choice>
<element name="CipherValue" type="base64Binary"/>
<element ref="xenc:CipherReference"/>
</choice>
</complexType>
<element name="CipherReference" type="xenc:CipherReferenceType"/>
<complexType name="CipherReferenceType">
<choice>
<element name="Transforms" type="xenc:TransformsType" minOccurs="0"/>
</choice>
<attribute name="URI" type="anyURI" use="required"/>
</complexType>
<complexType name="TransformsType">
<sequence>
<element ref="ds:Transform" maxOccurs="unbounded"/>
</sequence>
</complexType>
<element name="EncryptedData" type="xenc:EncryptedDataType"/>
<complexType name="EncryptedDataType">
<complexContent>
<extension base="xenc:EncryptedType">
</extension>
</complexContent>
</complexType>
<!-- Children of ds:KeyInfo -->
<element name="EncryptedKey" type="xenc:EncryptedKeyType"/>
<complexType name="EncryptedKeyType">
<complexContent>
<extension base="xenc:EncryptedType">
<sequence>
<element ref="xenc:ReferenceList" minOccurs="0"/>
<element name="CarriedKeyName" type="string" minOccurs="0"/>
</sequence>
<attribute name="Recipient" type="string" use="optional"/>
</extension>
</complexContent>
</complexType>
<element name="AgreementMethod" type="xenc:AgreementMethodType"/>
<complexType name="AgreementMethodType" mixed="true">
<sequence>
<element name="KA-Nonce" minOccurs="0" type="base64Binary"/>
<!-- <element ref="ds:DigestMethod" minOccurs="0"/> -->
<any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
<element name="OriginatorKeyInfo" minOccurs="0" type="ds:KeyInfoType"/>
<element name="RecipientKeyInfo" minOccurs="0" type="ds:KeyInfoType"/>
</sequence>
<attribute name="Algorithm" type="anyURI" use="required"/>
</complexType>
<!-- End Children of ds:KeyInfo -->
<element name="ReferenceList">
<complexType>
<choice minOccurs="1" maxOccurs="unbounded">
<element name="DataReference" type="xenc:ReferenceType"/>
<element name="KeyReference" type="xenc:ReferenceType"/>
</choice>
</complexType>
</element>
<complexType name="ReferenceType">
<sequence>
<any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
<attribute name="URI" type="anyURI" use="required"/>
</complexType>
<element name="EncryptionProperties" type="xenc:EncryptionPropertiesType"/>
<complexType name="EncryptionPropertiesType">
<sequence>
<element ref="xenc:EncryptionProperty" maxOccurs="unbounded"/>
</sequence>
<attribute name="Id" type="ID" use="optional"/>
</complexType>
<element name="EncryptionProperty" type="xenc:EncryptionPropertyType"/>
<complexType name="EncryptionPropertyType" mixed="true">
<choice maxOccurs="unbounded">
<any namespace="##other" processContents="lax"/>
</choice>
<attribute name="Target" type="anyURI" use="optional"/>
<attribute name="Id" type="ID" use="optional"/>
<anyAttribute namespace="http://www.w3.org/XML/1998/namespace"/>
</complexType>
</schema>