java - example - Le asserzioni XSD possono essere utilizzate nella specifica di un file WSDL



wsdl soap (1)

Sembra che le asserzioni siano state introdotte con XML Schema v1.1 quando la definizione di XMLSchema è passata a w3.org .

Intestazione del campione:

<wsdl:description
  targetNamespace="http://www.w3.org/2002/ws/sawsdl/spec/wsdl/order#"
  xmlns="http://www.w3.org/2002/ws/sawsdl/spec/wsdl/order#"
  xmlns:wsdl="http://www.w3.org/ns/wsdl"
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns:sawsdl="http://www.w3.org/ns/sawsdl">

Ho un file WSDL che contiene anche tutti i tipi utilizzati in esso (tramite <wsdl:types> ). Quando definisco i tipi, ho qualcosa di simile a questo:

<wsdl:definitions name="service"
        targetNamespace="http://www.xxx.yyy/reg/definitions" xmlns="http://schemas.xmlsoap.org/wsdl/"
        xmlns:tax="http://www.xxx.yyy/reg/definitions" xmlns:xs="http://www.w3.org/2001/XMLSchema"
        xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
    .............
    <xs:complexType name="CompanyName">
        <xs:sequence>
            <xs:element name="Name" type="xs:string" />
            <xs:element name="ShortName" type="xs:string" minOccurs="0" />
        </xs:sequence>
        <xs:attribute name="Language" type="tax:LanguageType" use="required"/>
        <xs:assert test="ShortName or @Language != 'Language1'"/>
    </xs:complexType>
    .............
</wsdl:definitions>

Sfortunatamente, non funziona dando la seguente eccezione quando provo ad avviare l'applicazione su Tomcat:

javax.xml.ws.WebServiceException: org.xml.sax.SAXParseException; s4s-elt-invalid-content.1: The content of 'CompanyName' is invalid.  Element 'assert' is invalid, misplaced, or occurs too often.

La versione WSDL è 1.2 e non so quale versione di xsd usi quando vengono descritti i tipi in esso, quindi non so se si tratta di un problema di versione xsd (1.0 vs. 1.1) o qualcos'altro.

Qualcuno può aiutarmi a trovare il vero problema?

EDIT: ho aggiunto l'intestazione del wsdl. Ho aggiunto l'attributo version ( version="1.1" ) alla definizione <xs:schema> ma questo non ha aiutato neanche:

<xs:schema targetNamespace="http://www.xxx.yyy/reg/definitions" elementFormDefault="qualified" version="1.1">




wsdl