OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

ebxml-msg message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: about testing


About AS4 testing:

As discussed today, we could learn from WS-I testing, and reuse some of its methodology/tools/artifacts.

First, it starts with writing plain English test assertions (TAs) . See the overall TA structure and methodology described in:  http://docs.oasis-open.org/tag/guidelines/v1.0/cn02/guidelines-v1.0-cn02.pdf

So writing TAs for conformance is what the TC could do if it wants to produce a practical definition of “conformance” to AS4/ebMS3 (beyond what the conformance clauses are stating). Then the implementers of a conformance test suite (whoever they are) would have to implement these test assertions, for their test suite to be “valid”.

The TC could stop there.  Some OASIS TCs did publish plain English test assertions (TAs): SCA TCs, CAMP.

Or the TC may want (or some of its members) to go further and do the job of developing a conformance test suite. This could be done following the 2-phase testing methodology used in WS-I:

See the intermediate message capture file sample Trace-BP12.Addressing-Test1191.log.xml  attached . Note that it contains a “messageLog” where each message is formatted in an XML container, including HTTP headers. Note that it also contain a WSDL file, for validating messages against it. In our case, that could be an XML representation of a Pmode… (if we define one). But it could otherwise just contain the messageLog.

See the ppt attached as a general case for “2-phase” testing.

The OSS “tamelizer”  tool implements the 2nd phase (analysis).  See doc in the download package:

http://code.google.com/p/tamelizer/

See attached a sample file TestAssertionsBasicProfile-1.2.xml of XML/Xpath scripted  test assertions for WS-I profile, that are fed to the “tamelizer” tool (actually, to an older WS-I specific version of this tool). Notice the Xpath2.0 expressions in the “target” and “predicate” of each TA.

If we adopt this approach, writing a conformance test suite for AS4 would amount to translating the English test assertions into XML/Xpath TAs. The rest is supported by the tamelizer tool. Such test suite can then be used either in a conformance testing context,  or in an interoperability testing context.

-jacques

 

<?xml version="1.0" encoding="UTF-8"?>
<wsil:testLog xmlns:wsil="http://www.ws-i.org/testing/2008/02/log/"; xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata"; xmlns:xsd="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xmlns:xyz="http://schemas.unknownspace.org/"; timestamp="Mon Aug 02 10:37:38 PDT 2010" xsi:schemaLocation="http://www.ws-i.org/testing/2008/02/log/log.xsd";>
<wsil:messageLog>
  <wsil:message conversation="1" id="1" type="request" xsi:type="wsil:httpmessage">
    <wsil:httpHeaders>
      <wsil:requestLine>POST http://ws2.withoutawire.com:9080/BP12AddressingService/wsaTestService HTTP/1.1</wsil:requestLine>
    <wsil:contentTypeHeader subtype="xml" type="text">
      <wsil:parameter key="charset" quoted="true" value="utf-8"/>
    </wsil:contentTypeHeader>
    <wsil:httpHeader key="SOAPACTION" quoted="true" value="http://example.org/action/echoIn"/>
    <wsil:httpHeader key="ACCEPT" quoted="false" value="text/xml, multipart/related, text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2"/>
    <wsil:httpHeader key="USER-AGENT" quoted="false" value="Oracle JAX-WS 2.1.5"/>
    <wsil:httpHeader key="FROM" quoted="false" value="/66.248.195.51:57770"/>
    <wsil:httpHeader key="HOST" quoted="false" value="ws2.withoutawire.com:9080"/>
    <wsil:httpHeader key="CONNECTION" quoted="false" value="close"/>
    <wsil:httpHeader key="WSIP_POSTED_ENDPOINT" quoted="false" value="http://66.248.195.51:8080/aHR0cDovL3dzMi53aXRob3V0YXdpcmUuY29tOjkwODAvQlAxMkFkZHJlc3NpbmdTZXJ2aWNlL3dzYVRlc3RTZXJ2aWNl*_E1II4XkHITJYIpjdtlz46cFT___cg_"/>
    <wsil:httpHeader key="CONTENT-LENGTH" quoted="false" value="1741"/>
  </wsil:httpHeaders>
  <wsil:messageContents containsDTD="false" containsProcessingInstructions="false" containsXmlDecl="true" enconding="utf-8" validXml="true" xmlVersion="1.0">
    <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/";>
<S:Header>
<wsa:To xmlns:wsa="http://www.w3.org/2005/08/addressing";>http://ws2.withoutawire.com:9080/BP12AddressingService/wsaTestService</wsa:To>
<wsa:Action xmlns:wsa="http://www.w3.org/2005/08/addressing";>http://example.org/action/echoIn</wsa:Action>
<ReplyTo xmlns="http://www.w3.org/2005/08/addressing";>
    <Address>http://www.w3.org/2005/08/addressing/anonymous</Address>
</ReplyTo>
<FaultTo xmlns="http://www.w3.org/2005/08/addressing";>
    <Address>http://www.w3.org/2005/08/addressing/anonymous</Address>
</FaultTo>
<work:WorkContext xmlns:work="http://oracle.com/weblogic/soap/workarea/";>rO0ABXoAAAJ5ADBvcmFjbGUuZG1zLmNvbnRleHQuaW50ZXJuYWwud2xzLldMU0NvbnRleHRGYW1pbHkAAAFPAAAAKXdlYmxvZ2ljLndvcmthcmVhLlNlcmlhbGl6YWJsZVdvcmtDb250ZXh0AAABZKztAAVzcgAxd2VibG9naWMud29ya2FyZWEuU2VyaWFsaXphYmxlV29ya0NvbnRleHQkQ2Fycmllcv1CAh9z5wpPAwACWgAHbXV0YWJsZUwADHNlcmlhbGl6YWJsZXQAFkxqYXZhL2lvL1NlcmlhbGl6YWJsZTt4cHcEAAAAAXNyAEFvcmFjbGUuZG1zLmNvbnRleHQuaW50ZXJuYWwud2xzLldMU0NvbnRleHRGYW1pbHkkU2VyaWFsaXphYmxlSW1wbAAAAAAAAAAAAwABTAARbVdMU0NvbnRleHRGYW1pbHl0ADJMb3JhY2xlL2Rtcy9jb250ZXh0L2ludGVybmFsL3dscy9XTFNDb250ZXh0RmFtaWx5O3hwd0QAQjEuYmY4ZTQ0YmMyMDE1MzlmNjotMzVkMGJiOWU6MTJhMzM3ZTk1ZWQ6LTgwMDAtMDAwMDAwMDAwMDAwMTQzMzt2MHh3AQF4ACZ3ZWJsb2dpYy5kaWFnbm9zdGljcy5EaWFnbm9zdGljQ29udGV4dAAAAX8AAAAyd2VibG9naWMuZGlhZ25vc3RpY3MuY29udGV4dC5EaWFnbm9zdGljQ29udGV4dEltcGwAAAA9YmY4ZTQ0YmMyMDE1MzlmNjotMzVkMGJiOWU6MTJhMzM3ZTk1ZWQ6LTgwMDAtMDAwMDAwMDAwMDAwMTQzMwAAAAAAAAAAAAAA</work:WorkContext>
</S:Header>
<S:Body>
<ns2:echoIn xmlns="http://schemas.microsoft.com/2003/10/Serialization/"; xmlns:ns2="http://example.org/echo"; xmlns:ns3="http://example.org/notify";>test1191</ns2:echoIn>
</S:Body>
</S:Envelope>  </wsil:messageContents>
</wsil:message>
<wsil:message conversation="1" id="2" type="response" xsi:type="wsil:httpmessage">
  <wsil:httpHeaders>
    <wsil:requestLine>HTTP/1.1 500 Error</wsil:requestLine>
    <wsil:contentTypeHeader subtype="xml" type="text">
      <wsil:parameter key="charset" quoted="false" value="utf-8"/>
    </wsil:contentTypeHeader>
    <wsil:httpHeader key="CONTENT-LANGUAGE" quoted="false" value="en-US"/>
    <wsil:httpHeader key="CONNECTION" quoted="false" value="Close"/>
    <wsil:httpHeader key="DATE" quoted="false" value="02 Aug 2010 17:36:53 GMT"/>
    <wsil:httpHeader key="SERVER" quoted="false" value="WebSphere Application Server/7.0"/>
    <wsil:httpHeader key="CONTENT-LENGTH" quoted="false" value="627"/>
    <wsil:httpHeader key="omit-xml-declaration" quoted="false" value="yes"/>
    <wsil:httpHeader key="HOST" quoted="false" value="66.248.195.51:57770"/>
  </wsil:httpHeaders>
  <wsil:messageContents containsDTD="false" containsProcessingInstructions="false" containsXmlDecl="true" enconding="utf-8" validXml="true" xmlVersion="1.0">
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";>
<soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing";>
<wsa:Action>http://www.w3.org/2005/08/addressing/fault</wsa:Action>
<wsa:FaultDetail>
<wsa:ProblemHeaderQName>wsa:MessageID</wsa:ProblemHeaderQName>
</wsa:FaultDetail>
</soapenv:Header>
<soapenv:Body>
<soapenv:Fault xmlns:wsa="http://www.w3.org/2005/08/addressing";>
<faultcode>wsa:MessageAddressingHeaderRequired</faultcode>
<faultstring>A required header representing a Message Addressing Property is not present</faultstring>
<detail/>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>  </wsil:messageContents>
</wsil:message>
</wsil:messageLog>
 <wsil:descriptionFiles>
 <wsil:descriptionFile encoding="utf-8" filename="service.wsdl"> 
  <wsdl:definitions xmlns:i0="http://example.org"; xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"; xmlns:tns="http://tempuri.org/"; xmlns:wsa10="http://www.w3.org/2005/08/addressing"; xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"; xmlns:wsp="http://www.w3.org/ns/ws-policy"; xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"; name="wsaTestService" targetNamespace="http://tempuri.org/";>
 <wsdl:import location="_tH4sJstSH1d6jbZULCciB6zN7z0_.wsdl" namespace="http://example.org"/>
 <wsdl:types/>
 <wsdl:binding name="CustomBinding_wsaTestPortType" type="i0:wsaTestPortType">
  <wsp:PolicyReference URI="#CustomBinding_wsaTestPortType_policy"/>
  <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
  <wsdl:operation name="Echo">
   <soap:operation soapAction="http://example.org/action/echoIn"; style="document"/>
   <wsdl:input name="EchoInMessage">
    <soap:body use="literal"/>
   </wsdl:input>
   <wsdl:output name="EchoOutMessage">
    <soap:body use="literal"/>
   </wsdl:output>
  </wsdl:operation>
  <wsdl:operation name="Notify">
   <soap:operation soapAction="http://example.org/action/notify"; style="document"/>
   <wsdl:input name="NotifyMessage">
    <soap:body use="literal"/>
   </wsdl:input>
  </wsdl:operation>
 </wsdl:binding>
 <wsdl:service name="wsaTestService">
  <wsdl:port binding="tns:CustomBinding_wsaTestPortType" name="CustomBinding_wsaTestPortType">
   <soap:address location="http://ws2.withoutawire.com:9080/BP12AddressingService/wsaTestService"/>
  </wsdl:port>
 </wsdl:service>
 <wsp:Policy wsu:Id="CustomBinding_wsaTestPortType_policy">
  <wsp:ExactlyOne>
   <wsp:All>
    <wsam:Addressing>
     <wsp:Policy/>
    </wsam:Addressing>
   </wsp:All>
  </wsp:ExactlyOne>
 </wsp:Policy>
</wsdl:definitions>
</wsil:descriptionFile>
<wsil:descriptionFile filename="_tH4sJstSH1d6jbZULCciB6zN7z0_.wsdl">
  <wsdl:definitions xmlns:q1="http://example.org/echo"; xmlns:q2="http://example.org/notify"; xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"; xmlns:tns="http://example.org"; xmlns:wsa10="http://www.w3.org/2005/08/addressing"; xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"; xmlns:wsp="http://www.w3.org/ns/ws-policy"; xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"; targetNamespace="http://example.org";>
 <wsdl:types>
  <xsd:schema targetNamespace="http://example.org/Imports";>
   <xsd:import namespace="http://example.org/echo"; schemaLocation="_qcixsuxQ___HYvSeyk3Z___WhajOBng_.xsd"/>
   <xsd:import namespace="http://example.org/notify"; schemaLocation="_2AUUem54g40WkK__VVv8OpMzGJXc_.xsd"/>
   <xsd:import namespace="http://schemas.example.com/2003/10/Serialization/"; schemaLocation="_FnIUZGKifuicmnWoBHgcOlGAEe0_.xsd"/>
  </xsd:schema>
 </wsdl:types>
 <wsdl:message name="NotifyMessage">
  <wsdl:part element="q2:notify" name="notify"/>
 </wsdl:message>
 <wsdl:message name="EchoOutMessage">
  <wsdl:part element="q1:echoOut" name="echoOut"/>
 </wsdl:message>
 <wsdl:message name="EchoInMessage">
  <wsdl:part element="q1:echoIn" name="echoIn"/>
 </wsdl:message>
 <wsdl:portType name="wsaTestPortType">
  <wsdl:operation name="Echo">
   <wsdl:input message="tns:EchoInMessage" name="EchoInMessage" wsam:Action="http://example.org/action/echoIn"/>
   <wsdl:output message="tns:EchoOutMessage" name="EchoOutMessage" wsam:Action="http://example.org/action/echoOut"/>
  </wsdl:operation>
  <wsdl:operation name="Notify">
   <wsdl:input message="tns:NotifyMessage" name="NotifyMessage" wsam:Action="http://example.org/action/notify"/>
  </wsdl:operation>
 </wsdl:portType>
</wsdl:definitions>
</wsil:descriptionFile>
<wsil:descriptionFile filename="_qcixsuxQ___HYvSeyk3Z___WhajOBng_.xsd">
  <xs:schema xmlns:tns="http://example.org/echo"; xmlns:xs="http://www.w3.org/2001/XMLSchema"; elementFormDefault="qualified" targetNamespace="http://example.org/echo";>
 <xs:element name="echoIn" nillable="true" type="xs:string"/>
 <xs:element name="echoOut" nillable="true" type="xs:string"/>
</xs:schema>
</wsil:descriptionFile>
<wsil:descriptionFile filename="_2AUUem54g40WkK__VVv8OpMzGJXc_.xsd">
  <xs:schema xmlns:tns="http://example.org/notify"; xmlns:xs="http://www.w3.org/2001/XMLSchema"; elementFormDefault="qualified" targetNamespace="http://example.org/notify";>
 <xs:element name="notify" nillable="true" type="xs:string"/>
</xs:schema>
</wsil:descriptionFile>
<wsil:descriptionFile filename="_FnIUZGKifuicmnWoBHgcOlGAEe0_.xsd">
  <xs:schema xmlns:tns="http://schemas.example.com/2003/10/Serialization/"; xmlns:xs="http://www.w3.org/2001/XMLSchema"; attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://schemas.example.com/2003/10/Serialization/";>
 <xs:element name="anyType" nillable="true" type="xs:anyType"/>
 <xs:element name="anyURI" nillable="true" type="xs:anyURI"/>
 <xs:element name="base64Binary" nillable="true" type="xs:base64Binary"/>
 <xs:element name="boolean" nillable="true" type="xs:boolean"/>
 <xs:element name="byte" nillable="true" type="xs:byte"/>
 <xs:element name="dateTime" nillable="true" type="xs:dateTime"/>
 <xs:element name="decimal" nillable="true" type="xs:decimal"/>
 <xs:element name="double" nillable="true" type="xs:double"/>
 <xs:element name="float" nillable="true" type="xs:float"/>
 <xs:element name="int" nillable="true" type="xs:int"/>
 <xs:element name="long" nillable="true" type="xs:long"/>
 <xs:element name="QName" nillable="true" type="xs:QName"/>
 <xs:element name="short" nillable="true" type="xs:short"/>
 <xs:element name="string" nillable="true" type="xs:string"/>
 <xs:element name="unsignedByte" nillable="true" type="xs:unsignedByte"/>
 <xs:element name="unsignedInt" nillable="true" type="xs:unsignedInt"/>
 <xs:element name="unsignedLong" nillable="true" type="xs:unsignedLong"/>
 <xs:element name="unsignedShort" nillable="true" type="xs:unsignedShort"/>
 <xs:element name="duration" nillable="true" type="xs:duration"/>
 <xs:attribute name="FactoryType" type="xs:QName"/>
 <xs:attribute name="Id" type="xs:ID"/>
 <xs:attribute name="Ref" type="xs:IDREF"/>
</xs:schema>
</wsil:descriptionFile>
  <feature bindingQName="{http://tempuri.org/}CustomBinding_wsaTestPortType"; bindingUri="http://schemas.xmlsoap.org/wsdl/soap/"; mode="required" name="http://www.w3.org/ns/ws-policy/Policy"; portName="CustomBinding_wsaTestPortType" portTypeQName="{http://example.org}wsaTestPortType"; serviceQName="{http://tempuri.org/}wsaTestService"; transportUri="http://schemas.xmlsoap.org/soap/http"; xmlns="http://www.ws-i.org/testing/2008/02/log/";>
<alternative>
<feature mode="required" name="http://www.w3.org/2007/05/addressing/metadata/Addressing"/>
</alternative>
</feature>
<feature bindingQName="{http://tempuri.org/}CustomBinding_wsaTestPortType"; mode="required" name="http://www.w3.org/2007/05/addressing/metadata/Addressing"; portName="CustomBinding_wsaTestPortType" portTypeQName="{http://example.org}wsaTestPortType"; serviceQName="{http://tempuri.org/}wsaTestService"; xmlns="http://www.ws-i.org/testing/2008/02/log/"/>
</wsil:descriptionFiles>
</wsil:testLog>

Attachment: StarEAST11-JacquesDurand_Separate-Execution-Analysis.ppt
Description: StarEAST11-JacquesDurand_Separate-Execution-Analysis.ppt

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="ProfileTAsToHtml-2.0.xsl"?>
<profile xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
         xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
         xmlns:xsd="http://www.w3.org/2001/XMLSchema";
         xmlns:xs="http://www.w3.org/2001/XMLSchema";
         xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
         xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";

  >
  <head>
    <title>Test Assertions Basic Profile</title>
    <version>1.2</version>
    <cvsDate>$Date: 2013/06/14  $</cvsDate>
  </head>
 <!--

      Test Assertions for Basic Profile 1.2

    -->
  <testAssertions>
	<testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
                       xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
                       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
                       xmlns:xsd="http://www.w3.org/2001/XMLSchema";
                       xmlns:xs="http://www.w3.org/2001/XMLSchema";
                       xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
                       xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
                       xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
                       enable="true"
                       id="BP1901">
	  <!-- preReq="" -->
	  <description>
            The soap11:Envelope contains other header blocks.
	  </description>
	  <target>/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap11:Envelope[soap11:Header[some $hbloc in child::* satisfies not(fn:namespace-uri($hbloc) = 'http://www.w3.org/2005/08/addressing') and not($hbloc/attribute::*:IsReferenceParameter) ]]</target>
	  <!-- target>/wsil:testLog/wsil:messageLog/wsil:message</target -->
	  <predicate>fn:true()</predicate>
	  <prescription level="permitted"/>
	  <reporting true="warning" false="failed"/>
	  <errorMessage>
            Extensibility Point WARNING: The soap11:Envelope makes use of extra SOAP headers
	  </errorMessage>
	  <diagnostic>
	  </diagnostic>
	</testAssertion>
	<testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
                       xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
                       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
                       xmlns:xsd="http://www.w3.org/2001/XMLSchema";
                       xmlns:xs="http://www.w3.org/2001/XMLSchema";
                       xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
                       xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
                       xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
                       enable="true"
                       id="BP1904">
	  <!-- preReq="" -->
	  <description>
            The soap11:Envelope contains @role with unspecified values.
	  </description>
	  <target>/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap11:Envelope[.//attribute::*:role]</target>
	  <!-- target>/wsil:testLog/wsil:messageLog/wsil:message</target -->
	  <predicate>every $rval in .//*/attribute::*:role satisfies ($rval = 'http://www.w3.org/2003/05/soap-envelope/role/next' or $rval = 'http://www.w3.org/2003/05/soap-envelope/role/none')</predicate>
	  <prescription level="permitted"/>
	  <reporting true="passed" false="warning"/>
	  <errorMessage>
            Extensibility Point WARNING: The soap11:Envelope contains @role with unspecified values
	  </errorMessage>
	  <diagnostic>
	  </diagnostic>
	</testAssertion>
	<testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
                       xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
                       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
                       xmlns:xsd="http://www.w3.org/2001/XMLSchema";
                       xmlns:xs="http://www.w3.org/2001/XMLSchema";
                       xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
                       xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
                       xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
                       enable="true"
                       id="BP1905">
	  <!-- preReq="" -->
	  <description>
            The soap11:Envelope contains a Fault with unspecified detail content.
	  </description>
	  <target>/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap11:Envelope[soap11:Body/soap11:Fault/detail]</target>
	  <!-- target>/wsil:testLog/wsil:messageLog/wsil:message</target -->
	  <predicate>fn:true()</predicate>
	  <prescription level="permitted"/>
	  <reporting true="warning" false="passed"/>
	  <errorMessage>
            Extensibility Point WARNING: The soap11:Fault makes use of optional detail element
	  </errorMessage>
	  <diagnostic>
	  </diagnostic>
	</testAssertion>
	  
  <testAssertion id="BP1015" enable="false"
     xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
     xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
     xmlns:xsd="http://www.w3.org/2001/XMLSchema";
     xmlns:xs="http://www.w3.org/2001/XMLSchema";
     xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
     xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
     xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
     >
    <!-- preReq="" -->
    <description>
      A receiver must not fault messages with envelopes that contain an XML Declaration.
    </description>
    <target>/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents[@containsXmlDecl = 'true']/soap11:Envelope</target>
    <predicate>not (/wsil:testLog/wsil:messageLog/wsil:message[(@type = 'response' and @conversation = $target/../../@conversation) or (.//soap11:Envelope/soap11:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] =  $target/soap11:Header/wsa:MessageID)]/wsil:messageContents/soap11:Envelope/soap11:Body/soap11:Fault )
    </predicate>
    <prescription level="mandatory"/>
    <reporting true="passed" false="warning"/>
    <errorMessage>
      A soap Fault has been generated when receiving a message with an XML declaration: 
      verify that this Fault has another cause - it must not be caused by teh XML declaration.
    </errorMessage>
    <diagnostic>
      {SOAP message}
    </diagnostic>
  </testAssertion>
	
  <testAssertion id="BP1306" enable="true"
                 xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
                 xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
                 xmlns:xsd="http://www.w3.org/2001/XMLSchema";
                 xmlns:xs="http://www.w3.org/2001/XMLSchema";
                 xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
                 xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";>
      <!-- preReq="" -->
      <!-- NOTE: a scenario-dependent TA -->
      <description>
         A RECEIVER MUST NOT fault due to the presence of a UTF-8 Unicode Byte Order Mark. NOTE:
         This is a "scenario-dependent" test assertion, that will only trigger if the SOAP Header
         contains a header block of the form *:R4006 or *:R1019 (with any namespace prefix).
      </description>
      <target>/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents[fn:starts-with(fn:lower-case(@encoding), 'utf-8') ]/soap11:Envelope[soap11:Header/*:R1019 or soap11:Header/*:R4006]</target>
      <predicate>not (/wsil:testLog/wsil:messageLog/wsil:message[(@type = 'response' and @conversation = $target/../../@conversation) or (.//soap11:Envelope/soap11:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] =  $target/soap11:Header/wsa:MessageID)]/wsil:messageContents/soap11:Envelope/soap11:Body/soap11:Fault )
      </predicate>
      <prescription level="mandatory"/>
      <reporting true="passed" false="warning"/>
      <errorMessage>
        A SOAP Fault has been generated when receiving a message with  a UTF-8 Unicode Byte Order Mark. Please verify that this fault has another cause - it must not be caused by the presence of the B.O.M.
      </errorMessage>
      <diagnostic>
        {SOAP message}
      </diagnostic>
    </testAssertion>

    <testAssertion id="BP1307" enable="true"
                   xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
                   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
                   xmlns:xs="http://www.w3.org/2001/XMLSchema";
                   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
                   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";>
      <!-- preReq="" -->
      <!-- NOTE: a scenario-dependent TA -->
      <description>
         A RECEIVER MUST NOT fault due to the presence of a UTF-16 Unicode Byte Order Mark. NOTE:
         This is a "scenario-dependent" test assertion, that will only trigger if the SOAP Header
         contains a header block of the form *:R4007 (with any namespace prefix).
      </description>
      <target>/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents[fn:starts-with(fn:lower-case(@encoding), 'utf-16') ]/soap11:Envelope[soap11:Header/*:R4007]</target>
      <predicate>not (/wsil:testLog/wsil:messageLog/wsil:message[(@type = 'response' and @conversation = $target/../../@conversation) or (.//soap11:Envelope/soap11:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] =  $target/soap11:Header/wsa:MessageID)]/wsil:messageContents/soap11:Envelope/soap11:Body/soap11:Fault )
      </predicate>
      <prescription level="mandatory"/>
      <reporting true="passed" false="warning"/>
      <errorMessage>
        A soap Fault has been generated when receiving a message with  a UTF-16 Unicode Byte Order Mark. Please verify that this Fault has another cause - it must not be caused by the presence of the B.O.M.
      </errorMessage>
      <diagnostic>
        {SOAP message}
      </diagnostic>
    </testAssertion>

  <testAssertion id="BP1019" enable="true"
     xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
     xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
     xmlns:xsd="http://www.w3.org/2001/XMLSchema";
     xmlns:xs="http://www.w3.org/2001/XMLSchema";
     xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
     xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
     >
    <!-- preReq="" -->
    <description>
      The soap11:Envelope in the message is a well-formed XML 1.0
      document.
    </description>
    <target>/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap11:Envelope</target>
    <cotarget name="metadata">$target/../../wsil:messageContents[@validXml and @xmlVersion]</cotarget>
    <predicate>$target/../../wsil:messageContents[@validXml = fn:true() and @xmlVersion = '1.0']</predicate>
    <prescription level="mandatory"/>
    <errorMessage>
      The soap11:Envelope does not conform to XML 1.0.
    </errorMessage>
    <diagnostic>
      {SOAP message}{any XML parser error messages}
    </diagnostic>
  </testAssertion>
  
	<testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
                       xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
                       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
                       xmlns:xsd="http://www.w3.org/2001/XMLSchema";
                       xmlns:xs="http://www.w3.org/2001/XMLSchema";
                       xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
                       xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
                       xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
                       enable="true"
                       id="BP1018">
	  <description>
            The logged SOAP envelope is a UTF-8 transcript of an
            envelope originally encoded as UTF-8 or UTF-16. The HTTP
            Content-Type header's charset value is either UTF-8 or
            UTF-16. Looking at the messageContent element of the
            logged message, either (1) it has a BOM attribute which
            maps the charset value in the Content-Type header, or (2)
            it has it has an XML declaration which matches the charset
            value in the Content-Type header, or (3) there is no BOM
            attribute and no XML declaration, and the charset value is
            UTF-8.
	  </description>
    <target>/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap11:Envelope</target>
    <predicate>$target/../../wsil:httpHeaders/wsil:contentTypeHeader/wsil:parameter[@key = 'charset' and (fn:starts-with(fn:lower-case(@value), 'utf-8') or fn:starts-with(fn:lower-case(@value),'utf-16'))] or 
      fn:starts-with(fn:lower-case($target/../wsil:messageContents/@encoding),'utf-8') or 
      fn:starts-with(fn:lower-case($target/../wsil:messageContents/@encoding),'utf-16')</predicate>
	  <prescription level="mandatory"/>
	      <errorMessage>
		Either (1a) the message contains a Content-Type header but
		no charset value, or (1b) the charset value is neither
		UTF-8 nor UTF-16, or (2) there is a BOM attribute in the
		messageContent element, but its value does not match the
		charset value, or (3) there is an XML declaration, and the
		charset value does not match its value, or (4) there is no
		BOM attribute, no XML declaration, and the charset value
		in Content-Type header is not UTF-8.
	      </errorMessage>
	      <diagnostic>Complete message.</diagnostic>
            </testAssertion>
            
	    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
			   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
			   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
			   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
			   xmlns:xs="http://www.w3.org/2001/XMLSchema";
			   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
			   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
			   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
			   enable="true"
			   id="BP1020">
	      <description>
		A XOP_ENCODED_MESSAGE MUST include the start-info parameter in the Content-Type header of the enclosing multipart/related MIME entity body.
	      </description>
	      <target>/wsil:testLog/wsil:messageLog/wsil:message[wsil:httpHeaders/wsil:contentTypeHeader/@type = 'multipart' and
		wsil:httpHeaders/wsil:contentTypeHeader/@subtype = 'related' and
		wsil:httpHeaders/wsil:contentTypeHeader/wsil:parameter[@key = 'type']/@value=
		'application/xop+xml']</target>
        <predicate>wsil:httpHeaders/wsil:contentTypeHeader/wsil:parameter[fn:lower-case(@key) = 'start-info' and @value != '']</predicate>
	      <prescription level="mandatory"/>
	      <errorMessage>
          The XOP_ENCODED_MESSAGE does not include the start-info parameter with proper @value.
	      </errorMessage>
	      <diagnostic/>
            </testAssertion>
	    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
			   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
			   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
			   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
			   xmlns:xs="http://www.w3.org/2001/XMLSchema";
			   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
			   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
			   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
			   enable="true"
			   id="BP1021">
	      <description>
		A XOP_ENCODED_MESSAGE SHOULD include the full value of the type parameter from the root entity body part inside the start-info parameter of the enclosing multipart/related MIME entity body part's Content-Type header.
	      </description>
	      <target>/wsil:testLog/wsil:messageLog/wsil:message[wsil:httpHeaders/wsil:contentTypeHeader/@type = 'multipart' and
		wsil:httpHeaders/wsil:contentTypeHeader/@subtype = 'related' and
		wsil:httpHeaders/wsil:contentTypeHeader/wsil:parameter[@key = 'type']/@value =
		'application/xop+xml']</target>
    	  <predicate>some $rootContentID in
    	    string(wsil:httpHeaders/wsil:contentTypeHeader/wsil:parameter[@key = 'start']/@value)
    	    satisfies
    	    string(wsil:httpHeaders/wsil:contentTypeHeader/wsil:parameter[fn:lower-case(@key) = 'start-info']/@value) =  
    	    string(wsil:messageAttachments//*:mimeHeaders[
    	    *:mimeHeader[ fn:lower-case(@key) = 'content-id' and @value = $rootContentID]]/wsil:contentTypeHeader/wsil:parameter[@key = 'type']/@value)  
    	  </predicate>
	      <prescription level="preferred"/>
	      <errorMessage>
		The XOP_ENCODED_MESSAGE SHOULD include the full value of the type parameter
	      </errorMessage>
	      <diagnostic/>
            </testAssertion>

      <testAssertion id="BP1600" enable="true"
         xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
         xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
         xmlns:xsd="http://www.w3.org/2001/XMLSchema";
         xmlns:xs="http://www.w3.org/2001/XMLSchema";
         xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
         xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
         xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
         >
        <description>
          The envelope conforms to the structure specified in SOAP
          1.1 Part 1, Section 5.
        </description>
        <target>
          /wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap11:Envelope
        </target> 
        <cotarget name="metadata">$target/../@schemaValid</cotarget> 
        <predicate>
          $target/../@schemaValid = fn:true()
        </predicate>
        <prescription level="mandatory"/>
        <errorMessage>
          The envelope does not conform to the structure specified
          in SOAP 1.1 Part 1, Section 5
        </errorMessage>
        <diagnostic>SOAP envelope.</diagnostic>
      </testAssertion>
      
	    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
			   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
			   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
			   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
			   xmlns:xs="http://www.w3.org/2001/XMLSchema";
			   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
			   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
			   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
			   enable="true"
			   id="BP1881">
        <description>
          The envelope must have exactly zero or one child elements of the soap11:Body
        </description>
        <target>/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap11:Envelope</target>
        <predicate>count(soap11:Body/*) le 1</predicate>
        <prescription level="mandatory"/>
        <errorMessage>
          The envelope does not have exactly zero or one child elements of the soap11:Body
        </errorMessage>
        <diagnostic>SOAP envelope.</diagnostic>
	    </testAssertion>
	    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
			   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
			   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
			   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
			   xmlns:xs="http://www.w3.org/2001/XMLSchema";
			   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
			   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
			   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
			   enable="true"
			   id="BP1202">
	      <!-- preReq="BP1701" -->
	      <description>
		Each child element (if any) of the soap11:Body element is
		namespace qualified (not the grandchildren).
	      </description>
	      <target>/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap11:Envelope[count(soap11:Body/*) &gt; 0]</target>
	      <predicate>fn:namespace-uri-from-QName(fn:node-name(soap11:Body/*)) != ''</predicate>
		  <prescription level="mandatory"/>
		  <errorMessage>
		    A child element of the soap11:Body element is not namespace
		    qualified.
		  </errorMessage>
		  <diagnostic>SOAP envelope.</diagnostic>
		</testAssertion>
    <testAssertion id="BP1007" enable="true"
       xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
       xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
       xmlns:xsd="http://www.w3.org/2001/XMLSchema";
       xmlns:xs="http://www.w3.org/2001/XMLSchema";
       xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
       xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
       xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
       >
      <!-- preReq="BP1701" -->
      <description>
        DTDs relating to soap11:Header or soap11:Body documents, are
        not present in the envelope: no DOCTYPE element is
        present. 
      </description>
      <target>/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap11:Envelope</target>
      <cotarget name="metadata">$target/../@containsDTD</cotarget>
      <predicate>not(../@containsDTD = fn:true())</predicate>
      <prescription level="mandatory"/>
      <errorMessage>
        The soap11:Header or soap11:Body elements in the envelope,
        were described with an included DTD.
      </errorMessage>
      <diagnostic>SOAP envelope.</diagnostic>
    </testAssertion>
    <testAssertion id="BP1208" enable="true"
       xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
       xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
       xmlns:xsd="http://www.w3.org/2001/XMLSchema";
       xmlns:xs="http://www.w3.org/2001/XMLSchema";
       xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
       xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
       xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
       >
      <!-- preReq="BP1701" -->
      <description>
        The SOAP envelope does not include XML processing
        instructions.
      </description>
      <target>/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap11:Envelope</target>
      <cotarget name="metadata">$target/../@containsProcessingInstructions</cotarget>
      <predicate>not(../@containsProcessingInstructions = fn:true())</predicate>
      <prescription level="mandatory"/>
      <errorMessage>
        a SOAP envelope contains XML processing instructions.
      </errorMessage>
      <diagnostic>SOAP envelope.</diagnostic>
    </testAssertion>
		<testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
			       xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
			       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
			       xmlns:xsd="http://www.w3.org/2001/XMLSchema";
			       xmlns:xs="http://www.w3.org/2001/XMLSchema";
			       xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
			       xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
			       xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
             enable="true"
			       id="BP1033">
		  <!-- preReq="BP1701" -->
		  <description>
		    The SOAP envelope does not contain the namespace
		    declaration
		    xmlns:xml="http://www.w3.org/XML/1998/namespace";.
		  </description>
		  <target>/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap11:Envelope</target>
		  <!-- predicate>not(descendant-or-self::*[fn:namespace-uri-for-prefix('xml', .) = 'http://www.w3.org/XML/1998/namespace'])</predicate -->
		  <predicate>not(.//*[fn:namespace-uri(.) = 'http://www.w3.org/XML/1998/namespace'])
		  </predicate>
		  <!-- predicate>not(descendant-or-self::*[some $nmsp in namespace::node() satisfies fn:contains($nmsp, 'http://www.w3.org/XML/1998/namespace')])</predicate -->
		  <prescription level="preferred"/>
		  <errorMessage>
		    The SOAP envelope contains the namespace declaration
		    xmlns:xml="http://www.w3.org/XML/1998/namespace";.
		  </errorMessage>
		  <diagnostic>SOAP envelope</diagnostic>
		</testAssertion>
		<testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
			       xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
			       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
			       xmlns:xsd="http://www.w3.org/2001/XMLSchema";
			       xmlns:xs="http://www.w3.org/2001/XMLSchema";
			       xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
			       xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
			       xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
			       enable="true"
			       id="BP1032">
		  <!-- preReq="BP1701" -->
		  <description>
            Test to see if the soap11:Envelope, soap11:Header, and soap11:Body elements have any
            attributes in either either the the SOAP 1.1 or the SOAP 1.2 namespace. Although this
            tests for additional constraints beyond those in R1032 (namely attributes in the SOAP
            1.2 namespace), it is felt that the existence of such attributes represent an error.
		  </description>
		  <target>/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap11:Envelope</target>
		  <predicate>every $attrib in (self::node()/attribute::*,
		    ./soap11:Header/attribute::*,
		    ./soap11:Body/attribute::*) satisfies
		    fn:namespace-uri($attrib) != 'http://www.w3.org/2003/05/soap-envelope' and
		    fn:namespace-uri($attrib) != 'http://schemas.xmlsoap.org/soap/envelope/'
		  </predicate>
		  <prescription level="mandatory"/>
		  <errorMessage>
            The message has a soap11:Envelope, soap11:Header, or soap11:Body element with one or
            more attributes in either the "http://schemas.xmlsoap.org/soap/envelope/"; or the
            "http://www.w3.org/2003/05/soap-envelope"; namespace.
		  </errorMessage>
		  <diagnostic>SOAP envelope</diagnostic>
		</testAssertion>
		<testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
			       xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
			       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
			       xmlns:xsd="http://www.w3.org/2001/XMLSchema";
			       xmlns:xs="http://www.w3.org/2001/XMLSchema";
			       xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
			       xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
			       xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
			       enable="true"
			       id="BP1035">
		  <description>
		    The value of the wsa:Action element is
		    http://www.w3.org/2005/08/addressing/soap/fault
		  </description>
		  <target>/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap11:Envelope[soap11:Header/wsa:Action and (fn:ends-with(soap11:Body/soap11:Fault/soap11:Code/soap11:Value,'MustUnderstand') or  fn:ends-with(soap11:Body/soap11:Fault/soap11:Code/soap11:Value, 'VersionMismatch'))]</target>
		  <predicate>normalize-space(string(./soap11:Header/wsa:Action)) =
		    'http://www.w3.org/2005/08/addressing/soap/fault'</predicate>
		      <prescription level="mandatory"/>
		      <errorMessage>
			A fault response does not contain the expected wsa:Action
			value of http://www.w3.org/2005/08/addressing/soap/fault.
		      </errorMessage>
		      <diagnostic>Complete message.</diagnostic>
		    </testAssertion>

            <testAssertion id="BP1040a" enable="true"
                           xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
                           xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
                           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
                           xmlns:xsd="http://www.w3.org/2001/XMLSchema";
                           xmlns:xs="http://www.w3.org/2001/XMLSchema";
                           xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
                           xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";>
              <description>
                If an endpoint requires use of WS-Addressing by use of a wsam:Addressing policy
                assertion, an ENVELOPE sent by a SENDER MUST carry all required WS-Addressing SOAP
                headers. NOTE: this TA is only verifying the presence of the wsa:Action header. The
                presence of other headers (once wsa:Action is present) is verified by the family of
                TAs BP1142x and BP1143x (related to R1142), which also contribute at testing R1040.
              </description>
              <target>/wsil:testLog/wsil:messageLog/wsil:message
              [/wsil:testLog/wsil:descriptionFiles/*:feature[@name = 'http://www.w3.org/2007/05/addressing/metadata/Addressing' and @mode = 'required']]/wsil:messageContents/soap11:Envelope[soap11:Body/* and  not (soap11:Body/soap11:Fault) ]</target> 
              <predicate>$target/soap11:Header/wsa:Action</predicate>
              <prescription level="mandatory"/>
              <errorMessage>
                The use of WS-Addressing was required, but the message did not include wsa:Action.
              </errorMessage>
              <diagnostic>Complete message.</diagnostic>
            </testAssertion>

    <testAssertion id="BP1040b"
                   enable="true"
                   xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
                   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
                   xmlns:xs="http://www.w3.org/2001/XMLSchema";
                   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
                   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";>
      <description>
        This assertions tests one aspect of R1040; if an instance requires the use of WS-Addressing
        with anonymous response EPRs, any envelope sent by a sender must not contain response EPRs
        that include anything other than "http://www.w3.org/2005/08/addressing/anonymous"; as the
        value of their wsa:Address.
      </description>
      <target>
        /wsil:testLog/wsil:messageLog/wsil:message
        [@type = 'request']
        /wsil:messageContents/soap11:Envelope
        [ not(soap11:Header/wsa:RelatesTo) and
        not(soap11:Header/wsa:ReplyTo/wsa:Address = 'http://www.w3.org/2005/08/addressing/none') and
        not(soap11:Header/wsa:FaultTo/wsa:Address = 'http://www.w3.org/2005/08/addressing/none')
        ]
        [/wsil:testLog/wsil:descriptionFiles/wsil:feature[@name = "http://www.w3.org/ns/ws-policy/Policy"]/wsil:alternative/wsil:feature[@name = "http://www.w3.org/2007/05/addressing/metadata/Addressing"]/wsil:alternative/wsil:feature[@name = "http://www.w3.org/2007/05/addressing/metadata/AnonymousResponses"; and @mode = "required"]
        ]
      </target>
      <predicate>
        (
          (not ($target/soap11:Header/wsa:ReplyTo) or
           ($target/soap11:Header/wsa:ReplyTo/wsa:Address='http://www.w3.org/2005/08/addressing/anonymous')
          ) and
          (not ($target/soap11:Header/wsa:FaultTo) or
           ($target/soap11:Header/wsa:FaultTo/wsa:Address='http://www.w3.org/2005/08/addressing/anonymous')
          )
        )
      </predicate>
      <prescription level="mandatory"/>
      <reporting true="passed" false="failed"/>
      <errorMessage>
        The service requires request messages to use response endpoint EPRs that contain the
        anonymous URI as the value of wsa:Address. The client sent a request with a response EPR
        that contained something other than the anonymous URI.
      </errorMessage>
      <diagnostic>Complete message.</diagnostic>
    </testAssertion>

    <testAssertion id="BP1040c"
                   enable="true"
                   xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
                   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
                   xmlns:xs="http://www.w3.org/2001/XMLSchema";
                   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
                   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";>
      <description>
        This assertions tests one aspect of R1040; if an instance requires the use of WS-Addressing
        with non-anonymous response EPRs, any envelope sent by a sender must not include response
        EPRs that include "http://www.w3.org/2005/08/addressing/anonymous"; as the value of their
        wsa:Address. Note also that the absence of a ReplyTo header implies a default [reply
        endpoint] with wsa:Address equal to "http://www.w3.org/2005/08/addressing/anonymous";.
      </description>
      <target>
        /wsil:testLog/wsil:messageLog/wsil:message
        [@type = 'request']
        /wsil:messageContents/soap11:Envelope
        [ not(soap11:Header/wsa:RelatesTo) and
        not(soap11:Header/wsa:ReplyTo/wsa:Address = 'http://www.w3.org/2005/08/addressing/none') and
        not(soap11:Header/wsa:FaultTo/wsa:Address = 'http://www.w3.org/2005/08/addressing/none')
        ]
        [/wsil:testLog/wsil:descriptionFiles/wsil:feature[@name="http://www.w3.org/ns/ws-policy/Policy"]/wsil:alternative/wsil:feature[@name="http://www.w3.org/2007/05/addressing/metadata/Addressing"]/wsil:alternative/wsil:feature[@name="http://www.w3.org/2007/05/addressing/metadata/NonAnonymousResponses"; and @mode="required"]
        ]
      </target>
      <predicate>
        (
          ($target/soap11:Header/wsa:ReplyTo) and
          not ($target/soap11:Header/wsa:ReplyTo/wsa:Address='http://www.w3.org/2005/08/addressing/anonymous') and
          not ($target/soap11:Header/wsa:FaultTo/wsa:Address='http://www.w3.org/2005/08/addressing/anonymous')
        )
      </predicate>
      <prescription level="mandatory"/>
      <reporting true="passed" false="failed"/>
      <errorMessage>
        The service requires request messages to use response endpoint EPRs that contain something
        other than the anonymous URI as the value of wsa:Address. The client sent a request with
        either a response EPR that contained the anonymous URI or without the ReplyTo header, which
        implies a default [reply endpoint] with the anonymous URI.
      </errorMessage>
      <diagnostic>Complete message.</diagnostic>
    </testAssertion>

            <testAssertion id="BP1041" enable="true"
                           xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
                           xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
                           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
                           xmlns:xsd="http://www.w3.org/2001/XMLSchema";
                           xmlns:xs="http://www.w3.org/2001/XMLSchema";
                           xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
                           xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";>
              <description>
                An ENVELOPE that is a MustUnderstand SOAP fault, sent from an endpoint that has a
                policy alternative containing the wsam:Addressing assertion attached to its WSDL
                endpoint subject, MUST NOT contain a NotUnderstood SOAP header block with the qname
                attribute value that identifies a WS-Addressing defined SOAP header block.
              </description>
              <target>/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap11:Envelope[soap11:Body/soap11:Fault[some $code in .//faultcode satisfies
              fn:contains($code,'MustUnderstand')
              ]]
              [/wsil:testLog/wsil:descriptionFiles/*:feature[@name = 'http://www.w3.org/2007/05/addressing/metadata/Addressing' and (@mode = 'required' or @mode = 'supported')]] </target> 
              <predicate>$target/soap11:Header[not(soap11:NotUnderstood[fn:namespace-uri-for-prefix(fn:substring-before(@qname, ':'), .) = 'http://www.w3.org/2005/08/addressing'])]
              </predicate>
              <prescription level="mandatory"/>
              <errorMessage>
                A MustUnderstand SOAP fault, sent from an endpoint that
                has a policy alternative containing the wsam:Addressing assertion attached to
                its WSDL endpoint subject, contains a NotUnderstood SOAP header block
                with the qname attribute value that identifies a WS-Addressing defined SOAP
                header block.
              </errorMessage>
              <diagnostic>Complete message.</diagnostic>
            </testAssertion>

        <testAssertion id="BP1142a" enable="true"
                       xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
                       xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
                       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
                       xmlns:xsd="http://www.w3.org/2001/XMLSchema";
                       xmlns:xs="http://www.w3.org/2001/XMLSchema";
                       xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
                       xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";>
          <!-- rpc-lit / request case -->
          <description>
            The envelope must conform to WS-Addressing WSDL Binding,
            Section 5.1.
            For a request message, with a wsa:Action element, defined using an rpc/lit binding, the following must hold:
            - If there is an EPR attached to the corresponding wsdl:port definition, then the wsa:To element must be present 
            - the wsa:RelatesTo/@RelationshipType must be present with value "http://www.w3.org/2005/08/addressing/reply"; (this is covered by  2nd cotarget presence)
            - The wsa:Action value in the soap11:Header must equal to that specified from the wsdl
            - If the operation binding includes a wsdl:output element then there must be  wsa:messageID and a wsa:ReplyTo elements present in the soap11:header
          </description>
          <target>
            /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/wsil:messageContents/soap11:Envelope
            [soap11:Header[ wsa:Action and 
            not  (wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)]  )] 
            and soap11:Body/* and  not (soap11:Body/soap11:Fault) ]
            [
            some $myenv in . satisfies
            some $message in //wsdl:definitions/wsdl:message satisfies ($message/wsdl:part[1]/@type)
            ]
          </target>
          <!-- assume BP2017 passed for cotarget -->
          <cotarget name="myOpBinding">
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding
            [.//wsoap11:*[@style = 'rpc']]/wsdl:operation[@name =  fn:local-name-from-QName(node-name($target/soap11:Body/*[1]))]
          </cotarget>
          <predicate>
            (        
            if   <br/>
            ( 
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:service/
            wsdl:port[fn:local-name-from-QName(fn:resolve-QName(xsd:string(@binding), . )) = 
            $myOpBinding/../@name ]/wsa:EndpointReference 
            )<br/>
            then<br/>
            (some $portEpr in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:service/
            wsdl:port[fn:local-name-from-QName(fn:resolve-QName(xsd:string(@binding), . )) = 
            $myOpBinding/../@name ]/wsa:EndpointReference satisfies
            ( $target/soap11:Header/wsa:To 
            )
            )<br/>
            else fn:true()<br/>
            )<br/>
            and<br/>
            (
            if <br/>
            ( $myOpBinding/wsdl:output )
            then <br/>
            ($target/soap11:Header/wsa:MessageID)
            else fn:true()<br/>
            )<br/>
            and  (:  correct wsa:Action value  :)
            (some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/
            wsdl:operation[ $myOpBinding/@name = @name ]/wsdl:input satisfies
            ($target/soap11:Header/wsa:Action =     
            ( if ($opmsg/@wsam:Action) then $opmsg/@wsam:Action
            else fn:concat($opmsg/../../../@targetNamespace,
	        if (not(fn:ends-with($opmsg/../../../@targetNamespace,'/'))) then '/' else '',
	        $opmsg/../../@name, 
	        '/',
            if($opmsg/@name) then $opmsg/@name
            else fn:concat($opmsg/../@name, 'Request' )  )
            ) ) 
            )
          </predicate>
          <prescription level="mandatory"/>
          <errorMessage>
            An envelope does not conform to WS-Addressing WSDL
            Binding, Section 5.1.
            For a request message, with a wsa:Action element, defined using an rpc/lit binding, the following must hold:
            - If there is an EPR attached to the corresponding wsdl:port definition, then the wsa:To element must be present 
            - The wsa:Action value in the soap11:Header must equal to that specified from the wsdl
            - If the operation binding includes a wsdl:output element then there must be  wsa:messageID and a wsa:ReplyTo elements present in the soap11:header
          </errorMessage>
          <diagnostic>Complete message.</diagnostic>
        </testAssertion>

		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="true"
				   id="BP1142b">
		      <!-- doc-lit / response case -->
		      <description>
    		    The envelope must conform to WS-Addressing WSDL Binding,
    		    Section 5.1. http://www.w3.org/2005/08/addressing/reply IRI. 
    		    For a response message with a wsa:Action element, defined using an rpc/lit binding, the following must hold:
    		    - the wsa:ReplyTo EPR in the related Request message must have the anonymous address
    		    - the wsa:To element, if present, must have the anonymous value
    		    - The wsa:Action value in the soap11:Header must equal to that specified from the wsdl
		      </description>
		      <target>
            /wsil:testLog/wsil:messageLog/wsil:message[@type = 'response']/wsil:messageContents/
            soap11:Envelope[soap11:Header[wsa:Action] and soap11:Body/* and not (soap11:Body/soap11:Fault)]
            [
            some $myenv in . satisfies
            some $message in //wsdl:definitions/wsdl:message satisfies ($message/wsdl:part[1]/@type)
            ]
          </target>
		      <!-- assume BP2017 passed for cotarget -->
		      <cotarget name="myOpBinding">
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[.//wsoap11:*[@style = 'rpc']]/
            wsdl:operation
            [fn:string-join((@name, 'Response' ),'' ) = fn:local-name-from-QName(node-name($target/soap11:Body/*[1]))]
		      </cotarget>
          <cotarget name ="related-Request">
            /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/
            wsil:messageContents/soap11:Envelope[soap11:Header/wsa:MessageID = 
            $target/soap11:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] ]  
          </cotarget>
          <predicate> 
            ( 
            not ($related-Request/soap11:Header/wsa:ReplyTo) 
            or 
            ($related-Request/soap11:Header/wsa:ReplyTo/wsa:Address='http://www.w3.org/2005/08/addressing/anonymous' )
            ) 
            and
            ( 
            $target/soap11:Header/wsa:RelatesTo
            [ not ( @RelationshipType ) or (@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ]
            )
            and
            (
            $target/soap11:Header[ not (wsa:To) or (wsa:To = 'http://www.w3.org/2005/08/addressing/anonymous' )]
            )
            and (: correct wsa:Action value :)
            (some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/
            wsdl:operation[ $myOpBinding/@name = @name ]/wsdl:output satisfies
            ($target/soap11:Header/wsa:Action =     
            ( if ($opmsg/@wsam:Action) then $opmsg/@wsam:Action
            else fn:concat($opmsg/../../../@targetNamespace,
	        if (not(fn:ends-with($opmsg/../../../@targetNamespace,'/'))) then '/' else '',
	        $opmsg/../../@name, 
	        '/',
            if($opmsg/@name) then $opmsg/@name
            else fn:concat($opmsg/../@name, 'Response' )  )
            ) ) 
            )
          </predicate>
	      <prescription level="mandatory"/>
          <errorMessage>
            An envelope does not conform to WS-Addressing WSDL
            Binding, Section 5.1.
            For a response message with a wsa:Action element, defined using an rpc/lit binding, the following must hold:
            - the wsa:ReplyTo EPR in the related Request message must have the anonymous address
            - the wsa:To element, if present, must have the anonymous value
            - The wsa:Action value in the soap11:Header must equal to that specified from the wsdl
          </errorMessage>
		      <diagnostic>Complete message.</diagnostic>
		    </testAssertion>
		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="true"
				   id="BP1142c">
          <!-- rpc-lit /  non anonymous response case -->
          <description>
            The envelope must conform to WS-Addressing WSDL Binding,
            Section 5.1. http://www.w3.org/2005/08/addressing/reply IRI. 
            For a non anonymous response message with a wsa:Action element, defined using an rpc/lit binding, 
            the following must hold:
            - the wsa:ReplyTo EPR in the related Request message must have a non-anonymous address
            - the wsa:To element must be present, and must have a non-anonymous value 
            - The wsa:Action value in the soap11:Header must equal to that specified from the wsdl
          </description>
          <target>
            /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/wsil:messageContents/
            soap11:Envelope
            [soap11:Body[not (soap11:Fault)] and soap11:Header
            [wsa:Action and  
            (wsa:RelatesTo
            [@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] 
            )
            ]
            ]
            [
            some $myenv in . satisfies
            some $message in //wsdl:definitions/wsdl:message satisfies ($message/wsdl:part[1]/@type)
            ]
          </target>
          <!-- assume BP2017 passed for cotarget -->
          <cotarget name="myOpBinding">
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[.//wsoap11:*[@style = 'rpc']]/
            wsdl:operation
            [fn:string-join((@name, 'Response' ),'' ) = fn:local-name-from-QName(node-name($target/soap11:Body/*[1]))]
          </cotarget>
          <cotarget name ="related-Request">
            /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/
            wsil:messageContents/soap11:Envelope[soap11:Header/wsa:MessageID = 
            $target/soap11:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] ]  
          </cotarget>
          
          <predicate> 
            ( 
            ($related-Request/soap11:Header/wsa:ReplyTo) 
            and not
            ($related-Request/soap11:Header/wsa:ReplyTo/wsa:Address='http://www.w3.org/2005/08/addressing/anonymous' )
            ) 
            and
            ( 
            $target/soap11:Header/wsa:RelatesTo
            [ not ( @RelationshipType ) or (@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ]
            )
            and
            (
            $target/soap11:Header[ (wsa:To) and not (wsa:To = 'http://www.w3.org/2005/08/addressing/anonymous' ) ]
            )
            and (: correct wsa:Action value :)
            (some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/
            wsdl:operation[ $myOpBinding/@name = @name ]/wsdl:output satisfies
            ($target/soap11:Header/wsa:Action =     
            ( if ($opmsg/@wsam:Action) then $opmsg/@wsam:Action
            else fn:concat($opmsg/../../../@targetNamespace,
	        if (not(fn:ends-with($opmsg/../../../@targetNamespace,'/'))) then '/' else '',
	        $opmsg/../../@name, 
	        '/',
            if($opmsg/@name) then $opmsg/@name
            else fn:concat($opmsg/../@name, 'Response' )  )
            ) ) 
            )
          </predicate>
          <prescription level="mandatory"/>
          <errorMessage>
            An envelope does not conform to WS-Addressing WSDL
            Binding, Section 5.1.
            For a non anonymous response message with a wsa:Action element, defined using an rpc/lit binding, 
            the following must hold:
            - the wsa:ReplyTo EPR in the related Request message must have a non-anonymous address
            - the wsa:To element must be present, and must have a non-anonymous value 
            - The wsa:Action value in the soap11:Header must equal to that specified from the wsdl
          </errorMessage>
          <diagnostic>Complete message.</diagnostic>
		    </testAssertion>

        <testAssertion id="BP1143a"  enable="true"
                 xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
                 xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
                 xmlns:xsd="http://www.w3.org/2001/XMLSchema";
                 xmlns:xs="http://www.w3.org/2001/XMLSchema";
                 xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
                 xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
                 xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
                 >
          <!-- doc-lit / request case -->
          <description>
            The envelope must conform to WS-Addressing WSDL Binding,
            Section 5.1.
            For a request message, with a wsa:Action element, defined using a doc/lit binding, the following must hold:
            - If there is an EPR attached to the corresponding wsdl:port definition, then the wsa:To element must be present 
            - The wsa:Action value in the soap11:Header must equal to that specified from the wsdl (this is covered by the cotarget presence)
            - If the operation binding includes a wsdl:output element then there must be  wsa:messageID and a wsa:ReplyTo present in the soap11:header
          </description>
          <target>
            /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/wsil:messageContents/
            soap11:Envelope
            [soap11:Body[not (soap11:Fault)] and soap11:Header
            [wsa:Action and not 
            (wsa:RelatesTo
            [@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] 
            )
            ]
            ]
            [
            some $myenv in .
            satisfies
            (  every $message in //wsdl:definitions/wsdl:message satisfies 
            ( (not($message/wsdl:part[1]/@type)  )
            and ( $myenv/soap11:Body/*[1] or $myenv/soap11:Header/wsa:Action ))
            ) 
            ]
          </target > 
          <!-- assume BP2017 passed for cotarget -->
          <cotarget name="myOpBinding">
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation
            [
            some $opBinding in . satisfies 
            (if ($target/soap11:Body/*[1] ) then
            (some $dmesg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[wsdl:part[fn:resolve-QName(xsd:string(@element), . ) = fn:node-name($target/soap11:Body/*[1])] ]
            satisfies
            some $dopmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:input
            [fn:local-name-from-QName(fn:resolve-QName(xsd:string(@message), . )) = $dmesg/@name] 
            satisfies
            $opBinding/@name = $dopmsg/../@name
            ) else fn:true()
            )   and
            ( if ($target/soap11:Header/wsa:Action) then
            (  some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:input satisfies
            ($target/soap11:Header/wsa:Action =     
            (    if ($opmsg/@wsam:Action) then $opmsg/@wsam:Action
            else fn:concat($opmsg/../../../@targetNamespace,
            if (not(fn:ends-with($opmsg/../../../@targetNamespace,'/'))) then '/' else '',
            $opmsg/../../@name, 
            '/',
            if($opmsg/@name) then $opmsg/@name
            else fn:concat($opmsg/../@name, 'Request' )  )
            )
            )  and ( $opBinding/@name = $opmsg/../@name  )  )
            else fn:true()
            )
            ]
          </cotarget>
          <predicate>
            (
            if   
            ( 
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:service/
            wsdl:port[fn:local-name-from-QName(fn:resolve-QName(xsd:string(@binding), . )) = 
            $myOpBinding/../@name ]/wsa:EndpointReference 
            )
            then
            (some $portEpr in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:service/
            wsdl:port[fn:local-name-from-QName(fn:resolve-QName(xsd:string(@binding), . )) = 
            $myOpBinding/../@name ]/wsa:EndpointReference satisfies
            ( $target/soap11:Header/wsa:To )
            )
            else fn:true()
            )
            and
            (
            if 
            ( $myOpBinding/wsdl:output )
            then 
            ( $target/soap11:Header/wsa:MessageID)
            else fn:true()
            )
            
          </predicate>
          <prescription level="mandatory"/>
          <errorMessage>
            An envelope does not conform to WS-Addressing WSDL
            Binding, Section 5.1.
            For a request message, with a wsa:Action element, defined using a doc/lit binding, the following must hold:
            - If there is an EPR attached to the corresponding wsdl:port definition, then the wsa:To element must be present 
            - The wsa:Action value in the soap11:Header must equal to that specified from the wsdl (this is covered by the cotarget presence)
            - If the operation binding includes a wsdl:output element then there must be  wsa:messageID and a wsa:ReplyTo elements present in the soap11:header
          </errorMessage>
          <diagnostic>Complete message.</diagnostic>
        </testAssertion>
        
        <testAssertion   id="BP1143b"  enable="true"
             xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
             xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
             xmlns:xsd="http://www.w3.org/2001/XMLSchema";
             xmlns:xs="http://www.w3.org/2001/XMLSchema";
             xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
             xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
             xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
             >
          <!-- doc-lit / response case -->
          <description>
            The envelope must conform to WS-Addressing WSDL Binding,
            Section 5.1. http://www.w3.org/2005/08/addressing/reply IRI.
            For a response message with a wsa:Action element, defined using a doc/lit binding, the following must hold:
            - the wsa:ReplyTo EPR in the related Request message must have the anonymous address
            - the wsa:RelatesTo/@RelationshipType must be present with value "http://www.w3.org/2005/08/addressing/reply"; (this is covered by  2nd cotarget presence)
            - the wsa:To element, if present, must have the anonymous value
            - The wsa:Action value in the soap11:Header must equal to that specified from the wsdl (this is covered by the cotarget presence)
          </description>
          <target>
            /wsil:testLog/wsil:messageLog/wsil:message[@type = 'response']/wsil:messageContents/soap11:Envelope
            [soap11:Body[not (soap11:Fault) ] and soap11:Header[wsa:Action]  ]
            [
            some $myenv in .
            satisfies
            (  every $message in //wsdl:definitions/wsdl:message satisfies ( (not($message/wsdl:part[1]/@type)  )
            and ( $myenv/soap11:Body/*[1] or $myenv/soap11:Header/wsa:Action ))
            ) 
            ]
          </target > 
          <!-- assume BP2017 passed for cotarget -->
          <cotarget name="myOpBinding">
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation
            [
            some $opBinding in . satisfies 
            (if ($target/soap11:Body/*[1] ) then
            (some $dmesg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[wsdl:part[fn:resolve-QName(xsd:string(@element), . ) = fn:node-name($target/soap11:Body/*[1])] ]
            satisfies
            some $dopmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:output
            [fn:local-name-from-QName(fn:resolve-QName(xsd:string(@message), . )) = $dmesg/@name] 
            satisfies
            $opBinding/@name = $dopmsg/../@name
            ) else fn:true()
            )   and
            ( if ($target/soap11:Header/wsa:Action) then
            (  some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:output satisfies
            ($target/soap11:Header/wsa:Action =     
            (    if ($opmsg/@wsam:Action) then $opmsg/@wsam:Action
            else fn:string-join(($opmsg/../../../@targetNamespace,$opmsg/../../@name, 
            if($opmsg/@name) then $opmsg/@name
            else fn:string-join(($opmsg/../@name, 'Response' ),'' )  ),'/' )
            )
            )  and ( $opBinding/@name = $opmsg/../@name  )  )
            else fn:true()
            )
            ]
          </cotarget>
          
          <cotarget name ="related-Request">
            /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/
            wsil:messageContents/soap11:Envelope[soap11:Header/wsa:MessageID = 
            $target/soap11:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)]   ]
          </cotarget>
          
          <predicate>
            ( 
            not ($related-Request/soap11:Header/wsa:ReplyTo) 
            or 
            ($related-Request/soap11:Header/wsa:ReplyTo/wsa:Address='http://www.w3.org/2005/08/addressing/anonymous' )
            ) 
            and
            ( 
            $target/soap11:Header/wsa:RelatesTo
            [ not ( @RelationshipType ) or (@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ]
            )
            and
            (
            $target/soap11:Header[ not (wsa:To) or (wsa:To = 'http://www.w3.org/2005/08/addressing/anonymous' )]
            )
          </predicate>
          <prescription level="mandatory"/>
          <errorMessage>
            An envelope does not conform to WS-Addressing WSDL
            Binding, Section 5.1.
            For a response message with a wsa:Action element, defined using a doc/lit binding, the following must hold:
            - the wsa:ReplyTo EPR in the related Request message must have the anonymous address
            - the wsa:To element, if present, must have the anonymous value
            - The wsa:Action value in the soap11:Header must equal to that specified from the wsdl (this is covered by the cotarget presence)
          </errorMessage>
          <diagnostic>Complete message.</diagnostic>
        </testAssertion>
        
        <testAssertion   id="BP1143c"  enable="true"
             xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
             xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
             xmlns:xsd="http://www.w3.org/2001/XMLSchema";
             xmlns:xs="http://www.w3.org/2001/XMLSchema";
             xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
             xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
             xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
             >
          <!-- doc-lit / non-anonymous response case -->
          <description>
            The envelope must conform to WS-Addressing WSDL Binding,
            Section 5.1. http://www.w3.org/2005/08/addressing/reply IRI.
            For a non anon response message with a wsa:Action element, defined using a doc/lit binding, the following must hold:
            - the wsa:ReplyTo EPR in the related Request message must have a non-anonymous address
            - the wsa:RelatesTo/@RelationshipType must be present with value "http://www.w3.org/2005/08/addressing/reply"; (this is covered by  2nd cotarget presence)
            - the wsa:To element, must be present and not anonymous
            - The wsa:Action value in the soap11:Header must equal to that specified from the wsdl (this is covered by the cotarget presence)
          </description>
          
          <target>
            /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/wsil:messageContents/soap11:Envelope
            [soap11:Body[not (soap11:Fault)] and soap11:Header
            [wsa:Action and  
            (wsa:RelatesTo
            [@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] 
            )
            ]
            ]
            [
            some $myenv in .
            satisfies
            (  every $message in //wsdl:definitions/wsdl:message satisfies ( (not($message/wsdl:part[1]/@type)  )
            and ( $myenv/soap11:Body/*[1] or $myenv/soap11:Header/wsa:Action ))
            ) 
            ]
          </target > 
          <!-- assume BP2017 passed for cotarget -->
          <cotarget name="myOpBinding">
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation
            [
            some $opBinding in . satisfies 
            (if ($target/soap11:Body/*[1] ) then
            (some $dmesg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[wsdl:part[fn:resolve-QName(xsd:string(@element), . ) = fn:node-name($target/soap11:Body/*[1])] ]
            satisfies
            some $dopmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:output
            [fn:local-name-from-QName(fn:resolve-QName(xsd:string(@message), . )) = $dmesg/@name] 
            satisfies
            $opBinding/@name = $dopmsg/../@name
            ) else fn:true()
            )   and
            ( if ($target/soap11:Header/wsa:Action) then
            (  some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:output satisfies
            ($target/soap11:Header/wsa:Action =     
            (    if ($opmsg/@wsam:Action) then $opmsg/@wsam:Action
            else fn:concat($opmsg/../../../@targetNamespace,
            if (not(fn:ends-with($opmsg/../../../@targetNamespace,'/'))) then '/' else '',
            $opmsg/../../@name, 
            '/',
            if($opmsg/@name) then $opmsg/@name
            else fn:concat($opmsg/../@name, 'Response' )  )
            )
            )  and ( $opBinding/@name = $opmsg/../@name  )  )
            else fn:true()
            )
            ]
          </cotarget>
          <cotarget name ="related-Request">
            /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/
            wsil:messageContents/soap11:Envelope[soap11:Header/wsa:MessageID = 
            $target/soap11:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)]   ]
          </cotarget>
          
          <predicate>
            ( 
            ($related-Request/soap11:Header/wsa:ReplyTo) 
            and not 
            ($related-Request/soap11:Header/wsa:ReplyTo/wsa:Address='http://www.w3.org/2005/08/addressing/anonymous' )
            ) 
            and
            ( 
            $target/soap11:Header/wsa:RelatesTo
            [ not ( @RelationshipType ) or (@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ]
            )
            and
            (
            $target/soap11:Header[ (wsa:To) and not (wsa:To = 'http://www.w3.org/2005/08/addressing/anonymous' )]
            )
          </predicate>
          <prescription level="mandatory"/>
          <errorMessage>
            An envelope does not conform to WS-Addressing WSDL
            Binding, Section 5.1.
            For a non anon response message with a wsa:Action element, defined using a doc/lit binding, the following must hold:
            - the wsa:ReplyTo EPR in the related Request message must have a non-anonymous address
            - the wsa:To element, must be present with a non anonymous value
            - The wsa:Action value in the soap11:Header must equal to that specified from the wsdl (this is covered by the cotarget presence)
          </errorMessage>
          <diagnostic>Complete message.</diagnostic>
        </testAssertion>

    <testAssertion id="BP1043a" enable="true"
                   xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
                   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
                   xmlns:xs="http://www.w3.org/2001/XMLSchema";
                   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
                   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
                   xmlns:wsa="http://www.w3.org/2005/08/addressing";>
      <description>
        This assertion tests one aspect of R1143. It verifies that, if the ReplyTo EPR contains
        reference parameters, these referece parameters are properly echoed any response that
        claims to have originated from an instance that supports WS-Addressing.
      </description>
      <target>
        /wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap11:Envelope[soap11:Header/wsa:ReplyTo/wsa:ReferenceParameters/*]
      </target>
      <cotarget name="related-Response">
        /wsil:testLog/wsil:messageLog/wsil:message
          [@type = 'response' or
            ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo
            [not(@RelationshipType) or (@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply')]
          ]
        /wsil:messageContents/soap11:Envelope
          [soap11:Header/wsa:RelatesTo[not(@RelationshipType) or (@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply')] =
           $target/soap11:Header/wsa:MessageID]
      </cotarget>
      <predicate>
        (
        if<br/>
        (
          ($related-Response/soap11:Header/wsa:Action) and
          (not($related-Response/soap11:Body/soap11:Fault) or
           (not($target/soap11:Header/wsa:FaultTo) and
            $related-Response/soap11:Header/wsa:Action ne 'http://www.w3.org/2005/08/addressing/fault'))
        )<br/>
        then<br/>
        (
          <!-- tests for presence of refP QName - refP values not compared -->
          every $refP in $target/soap11:Header/wsa:ReplyTo/wsa:ReferenceParameters/*
          satisfies
            some $header in $related-Response/soap11:Header/*[@wsa:IsReferenceParameter='1'or  @wsa:IsReferenceParameter = 'true']
            satisfies
              fn:resolve-QName(fn:name($refP), $refP) = fn:resolve-QName(fn:name($header), $header)
        )<br/>
        else fn:true()<br/>
        )
      </predicate>
      <prescription level="mandatory"/>
      <reporting true="passed" false="failed"/>
      <errorMessage>
        The response to a message that contained reference parameters in the ReplyTo EPR is missing
        one or more of those reference parameters in its SOAP headers. NOTE: the case where this
        appears in a Fault response message over HTTP response due to an invalid ReplyTo address
        would not account for a violation of R1143.
      </errorMessage>
      <diagnostic>Complete message.</diagnostic>
    </testAssertion>

    <testAssertion id="BP1043b" enable="true"
                   xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
                   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
                   xmlns:xs="http://www.w3.org/2001/XMLSchema";
                   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
                   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
                   xmlns:wsa="http://www.w3.org/2005/08/addressing";>
      <description>
        This assertion tests one aspect of R1143. It verifies that, if the FaultTo EPR contains
        reference parameters, these referece parameters are properly echoed any fault response that
        claims to have originated from an instance that supports WS-Addressing.
      </description>
      <target>
        /wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap11:Envelope[soap11:Header/wsa:FaultTo/wsa:ReferenceParameters/*]
      </target>
      <cotarget name="related-Response">
        /wsil:testLog/wsil:messageLog/wsil:message
          [@type = 'response' or
            ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo
            [not(@RelationshipType) or (@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply')]
          ]
        /wsil:messageContents/soap11:Envelope
          [soap11:Header/wsa:RelatesTo[not(@RelationshipType) or (@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply')] =
           $target/soap11:Header/wsa:MessageID]
      </cotarget>
      <predicate>
        (
        if<br/>
        (
          ($related-Response/soap11:Header/wsa:Action) and
          ($related-Response/soap11:Body/soap11:Fault)
        )<br/>
        then<br/>
        (
          <!-- tests for presence of refP QName - refP values not compared -->
          every $refP in $target/soap11:Header/wsa:FaultTo/wsa:ReferenceParameters/*
          satisfies
            some $header in $related-Response/soap11:Header/*[@wsa:IsReferenceParameter='1'or  @wsa:IsReferenceParameter = 'true']
            satisfies
              fn:resolve-QName(fn:name($refP), $refP) = fn:resolve-QName(fn:name($header), $header)
        )<br/>
        else fn:true()<br/>
        )
      </predicate>
      <prescription level="mandatory"/>
      <reporting true="passed" false="failed"/>
      <errorMessage>
        The fault response to a message that contained reference parameters in the FaultTo EPR is
        missing one or more of those reference parameters in its SOAP headers.
      </errorMessage>
      <diagnostic>Complete message.</diagnostic>
    </testAssertion>

        <testAssertion id="BP1153a"  enable="true"
                 xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
                 xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
                 xmlns:xsd="http://www.w3.org/2001/XMLSchema";
                 xmlns:xs="http://www.w3.org/2001/XMLSchema";
                 xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
                 xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
                 xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";>
          <!-- doc-lit / request case -->
          <description>
            For a request message,  defined using a doc/lit binding, the following must hold:
            - If there is no EPR attached to the corresponding wsdl:port definition,
            then in case there is no wsa:To element, the message should not be faulted.
          </description>
          <target>
            /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/wsil:messageContents/
            soap11:Envelope
            [soap11:Body[not (soap11:Fault)] and soap11:Header[not(wsa:To) ]]
            [
            some $myenv in .
            satisfies
            (  every $message in //wsdl:definitions/wsdl:message satisfies 
            ( (not($message/wsdl:part[1]/@type)  )
            and ( $myenv/soap11:Body/*[1] or $myenv/soap11:Header/wsa:Action ))
            ) and
            ( some $port in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:service/wsdl:port satisfies
            not(wsa:EndpointReference)
            )
            ]
          </target > 
          <!-- assume BP2017 passed for cotarget -->
          <cotarget name="myOpBinding">
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation
            [
            some $opBinding in . satisfies 
            (if ($target/soap11:Body/*[1] ) then
            (some $dmesg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[wsdl:part[fn:resolve-QName(xsd:string(@element), . ) = fn:node-name($target/soap11:Body/*[1])] ]
            satisfies
            some $dopmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:input
            [fn:local-name-from-QName(fn:resolve-QName(xsd:string(@message), . )) = $dmesg/@name] 
            satisfies
            $opBinding/@name = $dopmsg/../@name
            ) else fn:true()
            )   and
            ( if ($target/soap11:Header/wsa:Action) then
            (  some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:input satisfies
            ($target/soap11:Header/wsa:Action =     
            (    if ($opmsg/@wsam:Action) then $opmsg/@wsam:Action
            else fn:concat($opmsg/../../../@targetNamespace,
            if (not(fn:ends-with($opmsg/../../../@targetNamespace,'/'))) then '/' else '',
            $opmsg/../../@name, 
            '/',
            if($opmsg/@name) then $opmsg/@name
            else fn:concat($opmsg/../@name, 'Request' )  )
            )
            )  and ( $opBinding/@name = $opmsg/../@name  )  )
            else fn:true()
            )
            ]
          </cotarget >
		  <prerequisite>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:service/wsdl:port[
		    fn:local-name-from-QName(fn:resolve-QName(xsd:string(@binding), . )) = 
		    $myOpBinding/../@name and not(wsa:EndpointReference)
		    ]
		  </prerequisite>
		  <predicate>
		    (
		    if   
		    ( 
		    /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:service/wsdl:port[
		    fn:local-name-from-QName(fn:resolve-QName(xsd:string(@binding), . )) = 
		    $myOpBinding/../@name and 
		    not(wsa:EndpointReference)] 
		    )
		    then
		    (
		    not (/wsil:testLog/wsil:messageLog/wsil:message[(@type = 'response' and @conversation = $target/../../@conversation) or 
		    (.//soap11:Envelope/soap11:Header/wsa:RelatesTo =  $target/soap11:Header/wsa:MessageID)]
		    /wsil:messageContents/soap11:Envelope/soap11:Body/soap11:Fault )
		    )
		    else fn:true()
		    )
		  </predicate>          
          <prescription level="mandatory"/>
          <reporting true="passed" false="warning"/>
          <errorMessage>
            An envelope for a doc/lit bound request message, without wsa:To in a message bound to a port that is NOT extended with wsa:EndpointReference has generated a Fault in response. Verify that this fault is not caused by the absence of wsa:To.
          </errorMessage>
          <diagnostic>Complete message.</diagnostic>
        </testAssertion>
    
        <testAssertion  id="BP1153b" enable="true"
            xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
            xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
            xmlns:xsd="http://www.w3.org/2001/XMLSchema";
            xmlns:xs="http://www.w3.org/2001/XMLSchema";
            xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
            xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
            xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";>
          <!-- rpc-lit / request case -->
          <description>
            For a request message,  defined using a rpc/lit binding, the following must hold:
            - If there is no EPR attached to the corresponding wsdl:port definition,
            then in case there is no wsa:To element, the message should not be faulted.
           </description>
         <target>
            /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/wsil:messageContents/soap11:Envelope
            [soap11:Header[ 
            not  (wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)]  ) and not(wsa:To)] 
            and soap11:Body/* 
            and  not (soap11:Body/soap11:Fault) ]
            [
            some $myenv in . satisfies
            (some $message in //wsdl:definitions/wsdl:message satisfies ($message/wsdl:part[1]/@type)) and
            ( some $port in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:service/wsdl:port satisfies
            not(wsa:EndpointReference))
            ]
          </target>
          <!-- assume BP2017 passed for cotarget -->
          <cotarget name="myOpBinding">
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding
            [.//wsoap11:*[@style = 'rpc']]/wsdl:operation[@name =  fn:local-name-from-QName(node-name($target/soap11:Body/*[1]))]
          </cotarget>
		  <prerequisite>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:service/wsdl:port[
		    fn:local-name-from-QName(fn:resolve-QName(xsd:string(@binding), . )) = 
		    $myOpBinding/../@name and not(wsa:EndpointReference)
		    ]
		  </prerequisite>
		  <predicate>
		    (        
		    if   <br/>
		    ( 
		    /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:service/wsdl:port[
		    fn:local-name-from-QName(fn:resolve-QName(xsd:string(@binding), . )) = 
		    $myOpBinding/../@name and 
		    not(wsa:EndpointReference)] 
		    )<br/>
		    then<br/>
		    (
		    not (/wsil:testLog/wsil:messageLog/wsil:message[(@type = 'response' and @conversation = $target/../../@conversation) or 
		    (.//soap11:Envelope/soap11:Header/wsa:RelatesTo =  $target/soap11:Header/wsa:MessageID)]
		    /wsil:messageContents/soap11:Envelope/soap11:Body/soap11:Fault )
		    )<br/>
		    else fn:true()<br/>
		    )<br/>
		  </predicate>
		  <prescription level="mandatory"/>
          <reporting true="passed" false="warning"/>
          <errorMessage>
            An envelope for a rpc/lit bound request message, without wsa:To in a message bound to a port that is NOT extended with wsa:EndpointReference has generated a Fault in response. Verify that this fault is not caused by the absence of wsa:To.
          </errorMessage>
          <diagnostic>Complete message.</diagnostic>
        </testAssertion>

        <testAssertion id="BP1125a"  enable="true"
                 xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
                 xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
                 xmlns:xsd="http://www.w3.org/2001/XMLSchema";
                 xmlns:xs="http://www.w3.org/2001/XMLSchema";
                 xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
                 xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
                 xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";>
          <!-- doc-lit / request case -->
          <description>
           When a CONSUMER is non-addressable, a SOAP ENVELOPE, that is described by the input message of a WSDL doc-lit operation supported by an INSTANCE, MUST be bound to a HTTP Request message.
          </description>
          <target>
            /wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/
            soap11:Envelope
            [soap11:Body[not (soap11:Fault)] and
            not(soap11:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] ) and 
            ((some $repto in soap11:Header/wsa:ReplyTo satisfies  
            fn:contains($repto, 'anonymous')) or not(soap11:Header/wsa:ReplyTo) )
            ]
            [
            some $myenv in .
            satisfies
            (  every $message in //wsdl:definitions/wsdl:message satisfies 
            ( (not($message/wsdl:part[1]/@type)  )
            and ( $myenv/soap11:Body/*[1] or $myenv/soap11:Header/wsa:Action ))
            ) and
            ( some $port in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:service/wsdl:port satisfies
            not(wsa:EndpointReference)
            )
            ]
          </target > 
          <!-- assume BP2017 passed for cotarget -->
          <cotarget name="myOpBinding">
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation
            [
            some $opBinding in . satisfies 
            (if ($target/soap11:Body/*[1] ) then
            (some $dmesg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[wsdl:part[fn:resolve-QName(xsd:string(@element), . ) = fn:node-name($target/soap11:Body/*[1])] ]
            satisfies
            some $dopmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:input
            [fn:local-name-from-QName(fn:resolve-QName(xsd:string(@message), . )) = $dmesg/@name] 
            satisfies
            $opBinding/@name = $dopmsg/../@name
            ) else fn:true()
            )   and
            ( if ($target/soap11:Header/wsa:Action) then
            (  some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:input satisfies
            ($target/soap11:Header/wsa:Action =     
            (    if ($opmsg/@wsam:Action) then $opmsg/@wsam:Action
            else fn:concat($opmsg/../../../@targetNamespace,
            if (not(fn:ends-with($opmsg/../../../@targetNamespace,'/'))) then '/' else '',
            $opmsg/../../@name, 
            '/',
            if($opmsg/@name) then $opmsg/@name
            else fn:concat($opmsg/../@name, 'Request' )  )
            )
            )  and ( $opBinding/@name = $opmsg/../@name  )  )
            else fn:true()
            )
            ]
          </cotarget >
          <predicate>$target/../../@type = 'request'</predicate>
          <prescription level="mandatory"/>
          <reporting true="passed" false="failed"/>
          <errorMessage>
            An envelope for a WSDL doc/lit bound request message, with a wsa:ReplyTo anonymous, was sent over an HTTP response.
          </errorMessage>
          <diagnostic>Complete message.</diagnostic>
        </testAssertion>
    
        <testAssertion  id="BP1125b" enable="true"
            xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
            xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
            xmlns:xsd="http://www.w3.org/2001/XMLSchema";
            xmlns:xs="http://www.w3.org/2001/XMLSchema";
            xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
            xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
            xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";>
          <!-- rpc-lit / request case -->
          <description>
           When a CONSUMER is non-addressable, a SOAP ENVELOPE, that is described by the input message of a WSDL rpc-lit operation supported by an INSTANCE, MUST be bound to a HTTP Request message.
          </description>
          <target>
            /wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/
            soap11:Envelope
            [soap11:Body[not (soap11:Fault)] and
            not(soap11:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] ) and 
            ((some $repto in soap11:Header/wsa:ReplyTo satisfies  
            fn:contains($repto, 'anonymous')) or not(soap11:Header/wsa:ReplyTo) )
            ]
            [
            some $myenv in . satisfies
            (some $message in //wsdl:definitions/wsdl:message satisfies ($message/wsdl:part[1]/@type)) and
            ( some $port in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:service/wsdl:port satisfies
            not(wsa:EndpointReference))
            ]
          </target>
          <!-- assume BP2017 passed for cotarget -->
          <cotarget name="myOpBinding">
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding
            [.//wsoap11:*[@style = 'rpc']]/wsdl:operation[@name =  fn:local-name-from-QName(node-name($target/soap11:Body/*[1]))]
          </cotarget>
          <predicate>$target/../../@type = 'request'</predicate>
          <prescription level="mandatory"/>
          <errorMessage>
            An envelope for a WSDL rpc/lit bound request message, with a wsa:ReplyTo anonymous, was sent over an HTTP response.
          </errorMessage>
          <diagnostic>Complete message.</diagnostic>
        </testAssertion>
    
        <testAssertion id="BP1126a" enable="true"
             xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
             xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
             xmlns:xsd="http://www.w3.org/2001/XMLSchema";
             xmlns:xs="http://www.w3.org/2001/XMLSchema";
             xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
             xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
             xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";>
          <!-- doc-lit / response case -->
          <description>
           When a CONSUMER is non-addressable, a SOAP ENVELOPE, that is described by the output message of a WSDL doc-lit operation supported by an INSTANCE, MUST be bound to a HTTP Response message.
          </description>
          <target>
            /wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap11:Envelope
            [soap11:Body[not (soap11:Fault) ] and
            soap11:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)]  and 
            (some $respenv in . satisfies
            some $req in /wsil:testLog/wsil:messageLog/wsil:message satisfies
            $req/wsil:messageContents/soap11:Envelope/soap11:Header/wsa:MessageID = 
            $respenv/soap11:Header/wsa:RelatesTo
            [@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] 
            and 
            $req/wsil:messageContents/soap11:Envelope/soap11:Header[fn:contains(wsa:ReplyTo[1]/wsa:Address, 'http://www.w3.org/2005/08/addressing/anonymous') or not(wsa:ReplyTo)]  )
            ]
            [
            some $myenv in .
            satisfies
            (  every $message in //wsdl:definitions/wsdl:message satisfies ( (not($message/wsdl:part[1]/@type)  )
            and ( $myenv/soap11:Body/*[1] or $myenv/soap11:Header/wsa:Action ))
            ) 
            ]
          </target > 
          <!-- assume BP2017 passed for cotarget -->
          <cotarget name="myOpBinding">
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation
            [
            some $opBinding in . satisfies 
            (if ($target/soap11:Body/*[1] ) then
            (some $dmesg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[wsdl:part[fn:resolve-QName(xsd:string(@element), . ) = fn:node-name($target/soap11:Body/*[1])] ]
            satisfies
            some $dopmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:output
            [fn:local-name-from-QName(fn:resolve-QName(xsd:string(@message), . )) = $dmesg/@name] 
            satisfies
            $opBinding/@name = $dopmsg/../@name
            ) else fn:true()
            )   
            and
            ( if ($target/soap11:Header/wsa:Action) then
            (  some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:output satisfies
            ($target/soap11:Header/wsa:Action =     
            (    if ($opmsg/@wsam:Action) then $opmsg/@wsam:Action
            else fn:concat($opmsg/../../../@targetNamespace,
            if (not(fn:ends-with($opmsg/../../../@targetNamespace,'/'))) then '/' else '',
            $opmsg/../../@name, 
            '/',
            if($opmsg/@name) then $opmsg/@name
            else fn:concat($opmsg/../@name, 'Response' )  )
            )
            )  and ( $opBinding/@name = $opmsg/../@name  )  )
            else fn:true()
            ) 
            ]
          </cotarget>
          <predicate>$target/../../@type = 'response'</predicate>
          <prescription level="mandatory"/>
          <errorMessage>
             An envelope for a WSDL doc/lit bound response message, related to a request containing a wsa:ReplyTo anonymous, was sent over an HTTP request.
          </errorMessage>
          <diagnostic>Complete message.</diagnostic>
        </testAssertion>
        
        <testAssertion id="BP1126b" enable="true"
                 xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
                 xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
                 xmlns:xsd="http://www.w3.org/2001/XMLSchema";
                 xmlns:xs="http://www.w3.org/2001/XMLSchema";
                 xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
                 xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
                 xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";>
          <!-- rpc-lit / response case -->
          <description>
           When a CONSUMER is non-addressable, a SOAP ENVELOPE, that is described by the output message of a WSDL rpc-lit operation supported by an INSTANCE, MUST be bound to a HTTP Response message.
          </description>
          <target>
            /wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap11:Envelope
            [soap11:Body[not (soap11:Fault) ] and
            soap11:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)]  and 
            (some $respenv in . satisfies
            some $req in /wsil:testLog/wsil:messageLog/wsil:message satisfies
            $req/wsil:messageContents/soap11:Envelope/soap11:Header/wsa:MessageID = 
            $respenv/soap11:Header/wsa:RelatesTo
            [@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] 
            and 
            $req/wsil:messageContents/soap11:Envelope/soap11:Header[fn:contains(wsa:ReplyTo[1]/wsa:Address, 'http://www.w3.org/2005/08/addressing/anonymous') or not(wsa:ReplyTo)]  )
            ]
            [
            some $myenv in . satisfies
            some $message in //wsdl:definitions/wsdl:message satisfies ($message/wsdl:part[1]/@type)
            ]
          </target>
          <!-- assume BP2017 passed for cotarget -->
          <cotarget name="myOpBinding">
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[.//wsoap11:*[@style = 'rpc']]/
            wsdl:operation
            [fn:string-join((@name, 'Response' ),'' ) = fn:local-name-from-QName(node-name($target/soap11:Body/*[1]))]
          </cotarget>
          <predicate>$target/../../@type = 'response'</predicate>
          <prescription level="mandatory"/>
          <errorMessage>
             An envelope for a WSDL rpc/lit bound response message, related to a request containing a wsa:ReplyTo anonymous, was sent over an HTTP request.
          </errorMessage>
          <diagnostic>Complete message.</diagnostic>
        </testAssertion>

        <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
                       xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
                       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
                       xmlns:xsd="http://www.w3.org/2001/XMLSchema";
                       xmlns:xs="http://www.w3.org/2001/XMLSchema";
                       xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
                       xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
                       xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
                       enable="true"
                       id="BP1144">
          <description>
            The request message must specify a SOAPAction HTTP header with either a value that is
			an absolute URI that has the same value as the value of the wsa:Action SOAP header, or a value
			of "" (empty string).
          </description>
          <target>/wsil:testLog/wsil:messageLog/wsil:message[@type = 'request' and wsil:messageContents/soap11:Envelope/soap11:Header/wsa:Action]</target>
          <predicate>
            (wsil:messageContents/soap11:Envelope/soap11:Header/wsa:Action/text() = wsil:httpHeaders/wsil:httpHeader[fn:lower-case(@key) = 'soapaction']/@value) 
            or (wsil:httpHeaders/wsil:httpHeader[fn:lower-case(@key) = 'soapaction']/@value = '')
          </predicate>
          <prescription level="mandatory"/>
          <errorMessage>
            A message did not specify a SOAPAction HTTP header with either a value that is an
			absolute URI that has the same value as the value of the wsa:Action SOAP header, or a
			value of "" (empty string).
          </errorMessage>
          <diagnostic>Complete message.</diagnostic>
        </testAssertion>
        
        <testAssertion id="BP1146" enable="true"
                       xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
                       xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
                       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
                       xmlns:xsd="http://www.w3.org/2001/XMLSchema";
                       xmlns:xs="http://www.w3.org/2001/XMLSchema";
                       xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
                       xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
                       xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";>
          <description>
            A non-faulting response must be sent to the endpoint referred to by the wsa:ReplyTo
            header or generate a fault instead.
          </description> 
          <target>
            /wsil:testLog/wsil:messageLog/wsil:message
            [ (@type = 'response' and 
            (some $resp in . satisfies 
            some $req in /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request' and 
                  @conversation = $resp/@conversation] satisfies 
            $req//wsa:*
            )
            )
            or 
            ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo
            [@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)]
            ]
            [wsil:messageContents/soap11:Envelope[not(soap11:Body/soap11:Fault)]]
          </target> 
          <cotarget name="myRequestMsg">
            /wsil:testLog/wsil:messageLog/wsil:message
            [ @type = 'request' and 
            (if (not(./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:MessageID) ) then (
            @conversation = $target/../../@conversation) else 
            (./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:MessageID = 
            $target/soap11:Header/wsa:RelatesTo
            [@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)]
            ))
            ]
          </cotarget>
          <predicate>
      ((not($myRequestMsg/wsil:messageContents/soap11:Envelope/soap11:Header/wsa:ReplyTo) or
      $myRequestMsg/wsil:messageContents/soap11:Envelope/soap11:Header/wsa:ReplyTo/wsa:Address = 
      'http://www.w3.org/2005/08/addressing/anonymous')
      and
      $target[@type = 'response']/wsil:messageContents/soap11:Envelope/soap11:Header
            [ wsa:To = 'http://www.w3.org/2005/08/addressing/anonymous' or not(wsa:To )]) or
            (
            $target/wsil:messageContents/soap11:Envelope/soap11:Header/wsa:To = 
      $myRequestMsg/wsil:messageContents/soap11:Envelope/soap11:Header/wsa:ReplyTo/wsa:Address
      )
          </predicate>
          <prescription level="mandatory"/>
          <errorMessage>
            A response message was sent to a destination other than the expected endpoint,
            i.e. different from wsa:ReplyTo in the request message.
          </errorMessage>
          <diagnostic>Complete message</diagnostic>
        </testAssertion>
        
        <testAssertion id="BP1152a" enable="true"
                 xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
                 xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
                 xmlns:xsd="http://www.w3.org/2001/XMLSchema";
                 xmlns:xs="http://www.w3.org/2001/XMLSchema";
                 xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
                 xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
                 xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";>
          <description>
            The message must be sent in the entity body of an HTTP
            request in a separate HTTP connection specified by the
            response EPR using the SOAP 1.1 Request Optional Response
            HTTP binding.
          </description> 
          <!-- non-faulty response case -->
          <target>
            /wsil:testLog/wsil:messageLog/wsil:message
            [wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] and
            wsil:messageContents/soap11:Envelope/soap11:Body[not(soap11:Fault)]
            and 
            (some $req in /wsil:testLog/wsil:messageLog/wsil:message satisfies
            $req/wsil:messageContents/soap11:Envelope/soap11:Header/wsa:MessageID = 
            wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo
            [@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] and 
            $req/wsil:messageContents/soap11:Envelope/soap11:Header[
            wsa:ReplyTo[1] and 
            not(fn:contains(wsa:ReplyTo[1]/wsa:Address, 'http://www.w3.org/2005/08/addressing/anonymous'))]
            )]
          </target> 
          <cotarget name="myRequestMsg">
            /wsil:testLog/wsil:messageLog/wsil:message
            [wsil:messageContents/soap11:Envelope/soap11:Header/wsa:MessageID = 
            $target/wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo
            [@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)]]
          </cotarget>
          <predicate>
            ($target/@type = 'request') and  
            (
            $target/wsil:messageContents/soap11:Envelope/soap11:Header
            [ (wsa:To) and not (fn:contains(wsa:To[1], 'http://www.w3.org/2005/08/addressing/anonymous' )) ]
            )
          </predicate>
          <prescription level="mandatory"/>
          <errorMessage>
            A response message was not sent in the entity body of an HTTP
            request in a separate HTTP connection as required by the
            (non-anonymous) response EPR.
          </errorMessage>
          <diagnostic>Complete message</diagnostic>
        </testAssertion>
   
        <testAssertion id="BP1152b" enable="true"
                 xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
                 xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
                 xmlns:xsd="http://www.w3.org/2001/XMLSchema";
                 xmlns:xs="http://www.w3.org/2001/XMLSchema";
                 xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
                 xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";>
          <description>
            The message must be sent in the entity body of an HTTP
            request in a separate HTTP connection specified by the
            response EPR using the SOAP 1.1 Request Optional Response
            HTTP binding.
          </description> 
          <!-- faulty response case -->
          <target>
            /wsil:testLog/wsil:messageLog/wsil:message
            [wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] and
            wsil:messageContents/soap11:Envelope/soap11:Body[soap11:Fault] and
            wsil:messageContents/soap11:Envelope/soap11:Header[not(wsa:Action) or not(fn:starts-with(wsa:Action,'http://www.w3.org/2005/08/addressing/' ))]
            and 
            (some $req in /wsil:testLog/wsil:messageLog/wsil:message satisfies
            $req/wsil:messageContents/soap11:Envelope/soap11:Header/wsa:MessageID = 
            wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo
            [@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] and 
            $req/wsil:messageContents/soap11:Envelope/soap11:Header[
            wsa:FaultTo[1] and  
            not(fn:contains(wsa:FaultTo[1]/wsa:Address, 'http://www.w3.org/2005/08/addressing/anonymous'))] 
            )]
          </target> 
          <cotarget name="myRequestMsg">
            /wsil:testLog/wsil:messageLog/wsil:message
            [wsil:messageContents/soap11:Envelope/soap11:Header/wsa:MessageID = 
            $target/wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo
            [@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)]]
          </cotarget>
          <predicate>
            ($target/@type = 'request') and  
            (
            $target/wsil:messageContents/soap11:Envelope/soap11:Header
            [ (wsa:To) and not (fn:contains(wsa:To[1], 'http://www.w3.org/2005/08/addressing/anonymous' )) ]
            )
          </predicate>
          <prescription level="mandatory"/>
          <errorMessage>
            A response message was not sent in the entity body of an HTTP
            request in a separate HTTP connection as required by the
            (non-anonymous) response EPR.
          </errorMessage>
          <diagnostic>Complete message</diagnostic>
        </testAssertion>
    
        <testAssertion id="BP1152c" enable="true"
                 xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
                 xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
                 xmlns:xsd="http://www.w3.org/2001/XMLSchema";
                 xmlns:xs="http://www.w3.org/2001/XMLSchema";
                 xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
                 xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
                 xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";>
          <description>
            The message must be sent in the entity body of an HTTP
            request in a separate HTTP connection specified by the
            response EPR using the SOAP 1.1 Request Optional Response
            HTTP binding.
          </description> 
          <target>
            /wsil:testLog/wsil:messageLog/wsil:message[ not (wsil:messageContents/soap11:Envelope/soap11:Body/soap11:Fault) and
	        wsil:messageContents/soap11:Envelope/soap11:Header
            [(wsa:To) and not (fn:contains(wsa:To[1], 'http://www.w3.org/2005/08/addressing/anonymous' )) ]]
          </target> 
          <predicate>$target/@type = 'request'</predicate>
              <prescription level="mandatory"/>
              <errorMessage>
          A message with a non-anonymous destination was not sent in the entity body 
          of an HTTP request in a separate HTTP connection as required by the
          (non-anonymous) destination EPR.
              </errorMessage>
              <diagnostic>Complete message</diagnostic>
        </testAssertion>
        
        <testAssertion id="BP1002" enable="true"
                 xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
                 xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
                 xmlns:xsd="http://www.w3.org/2001/XMLSchema";
                 xmlns:xs="http://www.w3.org/2001/XMLSchema";
                 xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
                 xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
                 xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";>
          <description>
            If it is a request, the arg #2 of POST is &lt;HTTP/1.1&gt;
            or &lt;HTTP/1.0&gt;. If absent, first line of the body is:
            HTTP-Version = HTTP/1.1. (or HTTP/1.0). If it is a
            response, it starts with &lt;HTTP/1.1&gt; or
            &lt;HTTP/1.0&gt;
          </description>
          <target>/wsil:testLog/wsil:messageLog/wsil:message[@type = 'request' and 
            fn:contains(wsil:httpHeaders/wsil:requestLine/text(), 'HTTP')]</target>
          <predicate>fn:contains(wsil:httpHeaders/wsil:requestLine/text(), 'HTTP/1.0') or fn:contains(wsil:httpHeaders/wsil:requestLine/text(), 'HTTP/1.1') </predicate>
          <prescription level="mandatory"/>
          <errorMessage>
            The message that is sent over HTTP, is not sent using HTTP/1.1 or HTTP/1.0.
          </errorMessage>
          <diagnostic>All HTTP headers.</diagnostic>
        </testAssertion>

        <testAssertion id="BP1001" enable="true"
                 xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
                 xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
                 xmlns:xsd="http://www.w3.org/2001/XMLSchema";
                 xmlns:xs="http://www.w3.org/2001/XMLSchema";
                 xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
                 xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
                 xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
                 preReq="BP1002">
          <description>
            If it is a request, the arg #2 of POST is
            &lt;HTTP/1.1&gt;. If absent, first line of the body is:
            HTTP-Version = HTTP/1.1. If it is a response, it starts
            with &lt;HTTP/1.1&gt;
          </description>
          <target>/wsil:testLog/wsil:messageLog/wsil:message
          </target>
          <predicate>contains(wsil:httpHeaders/wsil:requestLine/text(), 'HTTP/1.1')</predicate>
          <prescription level="preferred"/>
          <reporting true="passed" false="warning"/>
          <errorMessage>
            The message is not sent using HTTP/1.1.
          </errorMessage>
          <diagnostic>All HTTP headers.</diagnostic>
        </testAssertion>
		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="true"
				   id="BP1006">
		      <description>
			The SOAPAction header contains a quoted string of any
			value, including "".
		      </description>
		      <target>/wsil:testLog/wsil:messageLog/wsil:message[@type = 'request'][wsil:httpHeaders/wsil:contentTypeHeader]
		      </target>
		      <predicate>every $par in wsil:httpHeaders/wsil:contentTypeHeader/wsil:parameter satisfies 
			not($par/@quoted) or 
			not($par/@key eq 'type' or fn:lower-case($par/@key) eq 'start-info' or $par/@key eq 'SOAPAction' or $par/@key eq 'boundary') or
			$par/@quoted = fn:true()</predicate>
		      <!-- predicate>every $value in wsil:httpHeaders/wsil:contentTypeHeader/wsil:parameter/@value satisfies
		      (starts-with($value, &quot;) and ends-with($value, &quot;)) or
		      (starts-with($value, "''") and ends-with($value, "''"))</predicate -->
		      <prescription level="mandatory"/>
		      <errorMessage>
			SOAPAction HTTP header does not contain a quoted string.
		      </errorMessage>
		      <diagnostic>All HTTP headers.</diagnostic>
		    </testAssertion>
		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="false"
				   id="BP1100">
		      <!-- preReq="BP1701" -->
		      <description>
			The message uses a "200 OK" HTTP status code.
		      </description>
		      <target>//wsil:message[@type='response'][wsil:messageContents/soap11:Envelope/soap11:Body[not(soap11:Fault)]]</target>
		      <predicate>contains(wsil:httpHeaders/wsil:requestLine, "200 OK")</predicate>
		      <prescription level="preferred"/>
		      <errorMessage>
			The envelope of the response message does not contain a
			soap11:Fault and the message does not use a "200 OK" HTTP
			status code.
		      </errorMessage>
		      <diagnostic>Complete message.</diagnostic>
		    </testAssertion>
		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="false"
				   id="BP1101">
		      <description>
			The response message, if successfully processed at HTTP
			level, is sent using either a "200 OK" or "202 Accepted"
			HTTP status code.
		      </description>
		      <target>//wsil:message[@type='response'][wsil:messageContents[not(soap11:Envelope)]][not (matches(wsil:httpHeaders/wsil:requestLine, "4[0-9][0-9]"))]</target>
		      <predicate>contains(wsil:httpHeaders/wsil:requestLine, "200 OK") or contains(wsil:httpHeaders/wsil:requestLine, "202 Accepted")</predicate>
		      <prescription level="preferred"/>
		      <errorMessage>
			A response message without a SOAP message, is not using
			either a "200 OK" or "202 Accepted" HTTP status code,
			though successful at HTTP level.
		      </errorMessage>
		      <diagnostic>Complete message.</diagnostic>
		    </testAssertion>
  
		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
           enable="true"
				   id="BP2703">
		      <description>
			The wsdl:definitions is a well-formed XML 1.0 document. The wsdl:definitions namespace has value:
			http://schemas.xmlsoap.org/wsdl/. 
		      </description>
		      <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile[fn:prefix-from-QName(fn:node-name(*:definitions)) eq 'wsdl' or wsdl:definitions]</target>
		      <predicate>fn:namespace-uri-from-QName(fn:node-name(./*:definitions)) eq 'http://schemas.xmlsoap.org/wsdl/' or ./*:bindingTemplate</predicate>
		      <!-- p:match>. instance of schema-element(wsdl:definitions)</p:match -->
		      <prescription level="mandatory"/>
		      <errorMessage>
			The wsdl:definitions is not a well-formed XML 1.0
			document, or WSDL definition does not conform to the schema located at
			http://schemas.xmlsoap.org/wsdl/soap/2003-02-11.xsd for
			some element using the WSDL-SOAP binding namespace, or
			does not conform to the schema located at
			http://schemas.xmlsoap.org/wsdl/2003-02-11.xsd for some
			element using the WSDL namespace.
		      </errorMessage>
		      <diagnostic>
			Error message from the XML parser
		      </diagnostic>
		    </testAssertion>

        <testAssertion id="BP2704" enable="true" 
            xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
            xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
            xmlns:xsd="http://www.w3.org/2001/XMLSchema";
            xmlns:xs="http://www.w3.org/2001/XMLSchema";
            xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
            xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
            xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
            xmlns:wsoap11="http://schemas.xmlsoap.org/wsdl/soap/";
            >
          <description>
            The wsdl:definitions using the WSDL SOAP binding namespace
            (prefixed "wsoap11" in this Profile) MUST be valid according
            to the XML Schema found at "
            <h:a href="http://schemas.xmlsoap.org/wsdl/soap/2004-08-24.xsd";>
            http://schemas.xmlsoap.org/wsdl/soap/2004-08-24.xsd</h:a>". 
          </description>
          <target>
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions[.//wsoap11:*]
          </target>
          <cotarget name="metadata">$target/../@schemaValid</cotarget> 
          <predicate>
            $target/../@schemaValid = fn:true()
          </predicate>
          <prescription level="mandatory"/>
          <errorMessage>
            The wsdl:definitions is using the WSDL SOAP binding namespace
            (prefixed "wsoap11" in this Profile) in a way that is not valid according
            to the XML Schema found at "
            <h:a href="http://schemas.xmlsoap.org/wsdl/soap/2004-08-24.xsd";>
            http://schemas.xmlsoap.org/wsdl/soap/2004-08-24.xsd</h:a>".
          </errorMessage>
          <diagnostic>
            Error message from the XML parser
          </diagnostic>
        </testAssertion>


		    <!-- testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
			 xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
			 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
			 xmlns:xsd="http://www.w3.org/2001/XMLSchema";
			 xmlns:xs="http://www.w3.org/2001/XMLSchema";
			 xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
			 xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
			 xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
			 enable="false"
			 id="BP2704">
		    <description>
		      The wsdl:definitions is a well-formed XML 1.0 document. The wsdl:definitions namespace has value:
		      http://schemas.xmlsoap.org/wsdl/. 
		    </description>
		    <target>
		      /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/descendant::*[namespace='http://schemas.xmlsoap.org/wsdl/soap/']
		    </target>
		    <predicate>every $soap-binding in //*[namespace='http://schemas.xmlsoap.org/wsdl/soap12/' and parent::*[namespace='http://schemas.xmlsoap.org/wsdl/']] satisfies $soap-binding instance of schema-element(wsoap11:operation) or $soap-binding instance of schema-element(wsoap11:binding) or $soap-binding instance of schema-element(wsoap11:body) or $soap-binding instance of schema-element(wsoap11:fault) or $soap-binding instance of schema-element(wsoap11:header) or $soap-binding instance of schema-element(wsoap11:address)</predicate>
		    <prescription level="mandatory"/>
		    <errorMessage>
		      The wsdl:definitions is not a well-formed XML 1.0
		      document, or WSDL definition does not conform to the schema located at
		      http://schemas.xmlsoap.org/wsdl/soap/2003-02-11.xsd for
		      some element using the WSDL-SOAP binding namespace, or
		      does not conform to the schema located at
		      http://schemas.xmlsoap.org/wsdl/2003-02-11.xsd for some
		      element using the WSDL namespace.
		    </errorMessage>
		    <diagnostic>
		      Error message from the XML parser
		    </diagnostic>
		    </testAssertion -->

        <testAssertion id="BP2101" enable="true"
             xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
             xmlns:xsd="http://www.w3.org/2001/XMLSchema";
             xmlns:xs="http://www.w3.org/2001/XMLSchema";
             xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
             xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
             xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
             xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
             >
          <!-- preReq="BP2703" -->
          <description>
            Each wsdl:import statement is only used to import another
            WSDL description.
          </description>
          <target>
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions[wsdl:import]
          </target>
          <predicate>
            every $wsdlImp in $target/wsdl:import  satisfies
            some $wsdlFile in 
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile[@filename=$wsdlImp/@location] 
            satisfies 
            (  (fn:namespace-uri($wsdlFile/*[1])  =  'http://schemas.xmlsoap.org/wsdl/'        ) and
            ( fn:local-name($wsdlFile/*[1])  =  'definitions'   )        
            ) 
          </predicate>
          <prescription level="mandatory"/>
          <errorMessage>
            A wsdl:import element does not contain a reference to
            another WSDL description.
          </errorMessage>
          <diagnostic>
            wsdl:import element(s) that does not reference a WSDL
            description.
          </diagnostic>
        </testAssertion>
        
		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="true"
				   id="BP2803"
				   preReq="BP2703">
		      <description>
			The "namespace" attribute's value is not a relative URI.
		      </description>
		      <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions[wsdl:import]</target>
		      <!-- predicate> fn:count(fn:tokenize($target/@namespace,':')) gt 1</predicate -->
		      <predicate>every $imp in wsdl:import[@namespace] satisfies (starts-with($imp/@namespace, 'http://') or starts-with($imp/@namespace, 'HTTP://') or starts-with($imp/@namespace, 'urn:') or starts-with($imp/@namespace, 'URN:') or starts-with($imp/@namespace, 'ft') or starts-with($imp/@namespace, 'FT'))</predicate>
		      <prescription level="mandatory"/>
		      <errorMessage>The wsdl:import element's "namespace" attribute value is a
			relative URI.</errorMessage>
		      <diagnostic>Defective wsdl:import element.</diagnostic>
		    </testAssertion>

		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="true"
				   id="BP2103">
		      <description>
			For the referenced definitions as well as all imported
			descriptions, The XML schema import statement is only used
			within an xsd:schema element.
		      </description>
		      <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions[descendant::xsd:import]</target>
		      <predicate>every $imp in descendant::xsd:import satisfies ($imp/ancestor::xsd:schema and $imp/ancestor::wsdl:types)</predicate>
		      <prescription level="mandatory"/>
		      <errorMessage>
			A XML schema import element was found outside of an
			xsd:schema element.
		      </errorMessage>
		      <diagnostic>
			Defective XML schema import element.
		      </diagnostic>
		    </testAssertion>

        <testAssertion id="BP2202" enable="true"
             xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
             xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
             xmlns:xsd="http://www.w3.org/2001/XMLSchema";
             xmlns:xs="http://www.w3.org/2001/XMLSchema";
             xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
             xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
             xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
             >
          <description>
            All imported schema  use UTF-8 or UTF-16 for the encoding.
          </description>
          <target>
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions[wsdl:types/xsd:schema/xsd:import]
          </target>
          <predicate>
            every $schImp in $target/wsdl:types/xsd:schema/xsd:import[@schemaLocation]  
            satisfies
            ( some $schFile in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile[@filename=$schImp/@schemaLocation] 
            satisfies (not ($schFile/@encoding) or 
            $schFile/@encoding = 'UTF-8' or 
            $schFile/@encoding = 'UTF-16' or 
            $schFile/@encoding = 'utf-8' or 
            $schFile/@encoding = 'utf-16')
            ) 
          </predicate>
    
          <prescription level="mandatory"/>
          <errorMessage>
            The XML declaration statement within an imported XML
            Schema does not use expected encoding (UTF-8 or UTF-16).
          </errorMessage>
          <diagnostic>XML declaration statement.</diagnostic>
        </testAssertion>

		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
           enable="true"
				   id="BP2098">

		      <description>
			The "location" attribute is specified for the wsdl:import
			element, and has a non-empty value.
		      </description>
		      <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:import</target>
		      <predicate>@location and @location != '' </predicate>
		      <prescription level="mandatory"/>
		      
		      <errorMessage>
			A wsdl:import element does not have a "location"
			attribute, or has an empty value for the location
			attribute.
		      </errorMessage>
		      <diagnostic>Defective wsdl:import element.</diagnostic>

		    </testAssertion>
		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
           enable="true"
				   id="BP2105">
		      <description>
			wsdl:import elements occur either as first children
			elements in the WSDL namespace of the wsdl:defintitions
			element, or they are only preceded by wsdl:documentation
			elements.
		      </description>
		      <target>
			/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions[wsdl:import]
		      </target>
		      <predicate>
            		not(wsdl:import/preceding-sibling::wsdl:*[(local-name-from-QName(node-name(.)) != 'documentation') and 
            		(local-name-from-QName(node-name(.)) != 'import')])
		      </predicate>
		      <prescription level="mandatory"/>
		      <errorMessage>
			A wsdl:import element in the WSDL namespace under the
			wsdl:definitions element, is preceded by child elements
			other than wsdl:documentation elements.
		      </errorMessage>
		      <diagnostic>
			Display the WSDL import element(s) that failed the
			assertion.
		      </diagnostic>
		    </testAssertion>
		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="true"
				   id="BP2018"
				   preReq="BP2703">
		      <description>
			The wsdl:types elements occur either as first children in
			the WSDL namespace of the wsdl:definitions element, or
			they are only preceded by wsdl:documentation element(s)
			and/or wsdl:import(s) element(s).
		      </description>
		      <target>
			/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions[wsdl:types]
		      </target>
		      <predicate>
            		not(wsdl:types/preceding-sibling::wsdl:*[(local-name-from-QName(node-name(.)) != 'documentation') and 
            		(local-name-from-QName(node-name(.)) != 'import') and (local-name-from-QName(node-name(.)) != 'types')])
		      </predicate>
		      <prescription level="mandatory"/>
		      <errorMessage>
			wsdl:types element(s) in the WSDL namespace of the
			wsdl:definitions element were preceded by child elements
			other than wsdl:documentation or wsdl:import elements.
		      </errorMessage>
		      <diagnostic/>
		    </testAssertion>
		    
    	  <testAssertion id="BP2700" enable="false"
           xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
           xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
           xmlns:xsd="http://www.w3.org/2001/XMLSchema";
           xmlns:xs="http://www.w3.org/2001/XMLSchema";
           xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
           xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
           xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
           >
          <description>
            The wsdl:definitions is a well-formed XML 1.0 document.
          </description>
          <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions</target>
          <cotarget name="metadata">$target/../@validXml</cotarget> 
          <predicate>../@validXml=fn:true()</predicate>
          <prescription level="mandatory"/>
          <errorMessage>
            The wsdl:definitions is not a well-formed XML 1.0
            document.
          </errorMessage>
          <diagnostic>
            Error message from the XML parser
          </diagnostic>
        </testAssertion>
        
		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="false"
				   id="BP2034"
				   preReq="BP2703">
		      <description>
			The candidate description does not contain the namespace
			declaration
			xmlns:xml="http://www.w3.org/XML/1998/namespace";.
		      </description>
		      <target>
			/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions
		      </target>
		      <predicate>not(descendant-or-self::*/namespace::node()[1] = 'xmlns:xml="http://www.w3.org/XML/1998/namespace";')</predicate>
		      <prescription level="preferred"/>
		      <errorMessage>
			The candidate description contains the namespace
			declaration
			xmlns:xml="http://www.w3.org/XML/1998/namespace";.
		      </errorMessage>
		      <diagnostic/>
		    </testAssertion>
		    
        <testAssertion id="BP2201" enable="true"
           xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
           xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
           xmlns:xsd="http://www.w3.org/2001/XMLSchema";
           xmlns:xs="http://www.w3.org/2001/XMLSchema";
           xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
           xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
           xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
           >
          <description>
            The XML declaration statement uses UTF-8 or UTF-16 for the
            encoding.
          </description>
          <target>
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions
          </target>
          <cotarget name="metadata">$target/../@encoding</cotarget>
          <predicate>fn:starts-with(fn:lower-case(../@encoding), 'utf-8') or fn:starts-with(fn:lower-case(../@encoding), 'utf-16') </predicate>
          <prescription level="mandatory"/>
          <errorMessage>
            XML declaration statement within WSDL document does not
            use expected encoding (UTF-8 or UTF-16).
          </errorMessage>
          <diagnostic>XML declaration statement.</diagnostic>
        </testAssertion>

		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="true"
				   id="BP2104"
				   preReq="BP2101">
		      <description>
			The targetNamespace attribute on the wsdl:definitions
			element for the imported WSDL description has the same
			value as the namespace attribute on the wsdl:import
			element that imported the WSDL description.
		      </description>
		      <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:import</target>
		      <predicate>some $wimp in . satisfies
			some $descFile in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile[fn:ends-with($wimp/@location, @filename)] satisfies
			($descFile/wsdl:definitions/@targetNamespace = $wimp/@namespace)
		      </predicate>
		      <prescription level="mandatory"/>
		      <errorMessage>
			The targetNamespace attribute on the wsdl:definitions
			element for an imported WSDL description does not have the
			same value as the namespace attribute on the wsdl:import
			element that imported the WSDL description.
		      </errorMessage>
		      <diagnostic>wsdl:import element.</diagnostic>
		    </testAssertion>
		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="false"
				   id="BP2123">
		      <description>
			Contained WSDL extension elements do not use the
			wsdl:required attribute value of "true".
		      </description>
		      <!-- p:target>
		      //wsdl:definitions/descendant::*[namespace-uri(.) != 'http://schemas.xmlsoap.org/wsdl/' and (./ancestor::wsdlortType or ./ancestor::wsdl:binding or ./ancestor::wsdl:message or ./ancestor::wsdl:types or ./ancestor::wsdl:import)]
		      </p:context -->
		      <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/descendant::*
			[namespace-uri(.) != 'http://schemas.xmlsoap.org/wsdl/' and
			not(namespace-uri(.) = 'http://schemas.xmlsoap.org/wsdl/soap/' and
			(local-name(.) = 'binding' or local-name(.) = 'operation' or
			local-name(.) = 'body' or local-name(.) = 'header' or
			local-name(.) = 'headerfault' or local-name(.) = 'fault' or
			local-name(.) = 'address')) and
			(./ancestor::wsdl:portType or ./ancestor::wsdl:binding or
			./ancestor::wsdl:message or ./ancestor::wsdl:types or
			./ancestor::wsdl:import)]</target>
		      <predicate>not(@wsdl:required = fn:true()</predicate>
		      <prescription level="preferred"/>
		      <errorMessage>
			An extension element within a WSDL element that claims
			conformance to the Basic Profile has a wsdl:required
			attribute with a value of "true".
		      </errorMessage>
		      <diagnostic>
			Display the extension element that failed the assertion.
		      </diagnostic>
		    </testAssertion>

		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="true"
				   id="BP2416">
		      <description>A DESCRIPTION MUST NOT use QName references to WSDL components in namespaces that have been neither imported, nor defined in the referring WSDL document.
		      </description>
		      <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions</target>
		      <predicate>(every $qref in $target/wsdl:service/wsdl:port/@binding satisfies 
			( some $ns in fn:namespace-uri-from-QName(fn:resolve-QName (xsd:string($qref),$qref/..) ) satisfies 
			( ($target/@targetNamespace = $ns ) or (some $wimp in $target/wsdl:import satisfies $wimp/@namespace = $ns ) ) ) ) 
			and 
			(every $qref in $target/wsdl:binding/@type satisfies 
			( some $ns in fn:namespace-uri-from-QName(fn:resolve-QName (xsd:string($qref),$qref/..) ) satisfies 
			( ($target/@targetNamespace = $ns ) or (some $wimp in $target/wsdl:import satisfies $wimp/@namespace = $ns ) ) ) ) 
			and 
			(every $qref in $target/wsdl:portType/wsdl:operation/wsdl:input/@message satisfies 
			( some $ns in fn:namespace-uri-from-QName(fn:resolve-QName (xsd:string($qref),$qref/..) ) satisfies 
			( ($target/@targetNamespace = $ns ) or (some $wimp in $target/wsdl:import satisfies $wimp/@namespace = $ns ) ) ) ) 
			and 
			(every $qref in $target/wsdl:portType/wsdl:operation/wsdl:output/@message satisfies 
			( some $ns in fn:namespace-uri-from-QName(fn:resolve-QName (xsd:string($qref),$qref/..) ) satisfies 
			( ($target/@targetNamespace = $ns ) or (some $wimp in $target/wsdl:import satisfies $wimp/@namespace = $ns ) ) ) ) 
			and 
			(every $qref in $target/wsdl:portType/wsdl:operation/wsdl:fault/@message satisfies 
			( some $ns in fn:namespace-uri-from-QName(fn:resolve-QName (xsd:string($qref),$qref/..) ) satisfies 
			( ($target/@targetNamespace = $ns ) or (some $wimp in $target/wsdl:import satisfies $wimp/@namespace = $ns ) ) ) ) 
			and 
			(every $qref in $target/wsdl:binding/wsdl:operation/wsdl:*/wsoap11:header/@message satisfies 
			( some $ns in fn:namespace-uri-from-QName(fn:resolve-QName (xsd:string($qref),$qref/..) ) satisfies 
			( ($target/@targetNamespace = $ns ) or (some $wimp in $target/wsdl:import satisfies $wimp/@namespace = $ns ) ) ) ) 
			and 
			(every $qref in $target/wsdl:binding/wsdl:operation/wsdl:*/wsoap11:headerfault/@message satisfies 
			( some $ns in fn:namespace-uri-from-QName(fn:resolve-QName (xsd:string($qref),$qref/..) ) satisfies 
			( ($target/@targetNamespace = $ns ) or (some $wimp in $target/wsdl:import satisfies $wimp/@namespace = $ns ) ) ) )  
		      </predicate>
		      <prescription level="mandatory"/>
		      <errorMessage>This DESCRIPTION uses QName references to WSDL components in namespaces that are neither imported, nor defined in the referring WSDL document
		      </errorMessage>
		      <diagnostic>Defective QName(s).</diagnostic>
		    </testAssertion>

		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="true"
				   id="BP2417">
		      <description>A QName reference to a Schema component in a DESCRIPTION MUST use the namespace defined in the 
			<h:code>targetNamespace</h:code> 
			attribute on the 
			<h:code>xsd:schema</h:code> 
			element, or to a namespace defined in the 
			<h:code>namespace</h:code> 
			attribute on an 
			<h:code>xsd:import</h:code> 
			element within the 
			<h:code>xsd:schema</h:code> 
			element. 
		      </description>
		      <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions</target>
		      <predicate>(every $qref in $target/wsdl:message/wsdl:part/@element satisfies 
			( some $ns in fn:namespace-uri-from-QName(fn:resolve-QName (xsd:string($qref),$qref/..) ) satisfies 
			( ($target/wsdl:types/xsd:schema/@targetNamespace = $ns ) or 
			(some $simp in $target/wsdl:types/xsd:schema/xsd:import satisfies 
			$simp/@namespace = $ns ) ) ) ) 
			and 
			(every $qref in $target/wsdl:message/wsdl:part/@type satisfies 
			( some $ns in fn:namespace-uri-from-QName(fn:resolve-QName (xsd:string($qref),$qref/..) ) satisfies 
			( ($target/@targetNamespace = $ns ) or 
			(some $simp in $target/wsdl:types/xsd:schema/xsd:import satisfies 
			$simp/@namespace = $ns ) or 
			($ns = 'http://www.w3.org/2001/XMLSchema' ) ) ) )
		      </predicate>
		      <prescription level="mandatory"/>
		      <errorMessage>A QName reference to a Schema component in a DESCRIPTION does not use the namespace defined in the 
			<h:code>targetNamespace</h:code> 
			attribute on the 
			<h:code>xsd:schema</h:code> 
			element, or a namespace defined in the 
			<h:code>namespace</h:code> 
			attribute on an 
			<h:code>xsd:import</h:code> 
			element within the 
			<h:code>xsd:schema</h:code> 
			element. 
		      </errorMessage>
		      <diagnostic>Defective QName(s).</diagnostic>
		    </testAssertion>

        <testAssertion id="BP2106" enable="true"
            xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
            xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
            xmlns:xsd="http://www.w3.org/2001/XMLSchema";
            xmlns:xs="http://www.w3.org/2001/XMLSchema";
            xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
            xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
            xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
            >
          <description>
            In a DESCRIPTION the schemaLocation attribute of an
            xsd:import element MUST NOT resolve to any document whose
            root element is not "schema" from the namespace
            "http://www.w3.org/2001/XMLSchema";.
          </description>
          <target>
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions[wsdl:types/xsd:schema/xsd:import]
          </target>
          <predicate>
            every $schemaImp in $target/wsdl:types/xsd:schema/xsd:import[@schemaLocation] satisfies
            some $impSchemaFile in 
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile[@filename=$schemaImp/@schemaLocation] 
            satisfies
            (
            fn:namespace-uri($impSchemaFile/*[1])='http://www.w3.org/2001/XMLSchema'
            and
            fn:local-name($impSchemaFile/*[1])='schema' 
            ) 
          </predicate>
    
          <prescription level="mandatory"/>
          <errorMessage>
            xsd:import element does not resolve to document whose root element is not "schema" from xsd namespace
          </errorMessage>
          <diagnostic>
            Defective XML schema import element.
          </diagnostic>
        </testAssertion>

		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="true"
				   id="BP2107">
		      <description>
			The xsd:schema element contains a targetNamespace
			attribute with a valid and non-null value unless the
			xsd:schema element has xsd:import and/or xsd:annotation as
			its only child element(s).
		      </description>
		      <target>
			/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions[wsdl:types/xsd:schema] 
		      </target>
		      <predicate>wsdl:types/xsd:schema[@targetNamespace != '' or (count(xsd:import) + count(xsd:annotation)) = count(child::*)]</predicate>
		      <prescription level="mandatory"/>
		      <errorMessage>
			A xsd:schema element contained in a wsdl:types element
			does not have a targetNamespace attribute with a valid and
			non-null value, while having child element(s) other than
			xsd:import or xsd:annotation.
		      </errorMessage>
		      <diagnostic>
			Defective xsd:schema element(s).
		      </diagnostic>
		    </testAssertion>
		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="true"
				   id="BP2108b">
		      <description>
			The type soapenc:Array does not appear in these
			declarations, and the wsdl:arrayType attribute is not used
			in the type declaration.
		      </description>
		      <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:types[xsd:schema] </target>
		      <predicate>not (xsd:schema[descendant::xsd:extension/@base = "soapenc:Array" or descendant::xsd:restriction/@base = "soapenc:Array"])</predicate>
		      <prescription level="mandatory"/>
		      <errorMessage>
			An Array declaration uses - restricts or extends - the
			soapenc:Array type, or the wsdl:arrayType attribute is
			used in the type declaration.
		      </errorMessage>
		      <diagnostic>Defective declaration(s).</diagnostic>
		    </testAssertion>
		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="true"
				   id="BP2108a">
		      <description>
			The type soapenc:Array does not appear in these
			declarations, and the wsdl:arrayType attribute is not used
			in the type declaration.
		      </description>
		      <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:types[xsd:schema]</target>
		      <predicate>not (xsd:schema/descendant::*/@wsdl:arrayType)</predicate>
		      <prescription level="mandatory"/>
		      <errorMessage>
			An Array declaration uses - restricts or extends - the
			soapenc:Array type, or the wsdl:arrayType attribute is
			used in the type declaration.
		      </errorMessage>
		      <diagnostic>Defective declaration(s).</diagnostic>
		    </testAssertion>
		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="false"
				   id="BP2110">
		      <description>
			The declaration does not use the naming convention
			ArrayOfXXX.
		      </description>
		      <target>
			/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions[wsdl:types/xsd:schema]
		      </target>
		      <predicate>not (wsdl:types/xsd:schema/descendant::xsd:element[fn:starts-with(@name, 'ArrayOf')])</predicate>
		      <prescription level="preferred"/>
		      <errorMessage>
			A declaration is using the convention ArrayOfXXX.
		      </errorMessage>
		      <diagnostic>Defective declaration(s).</diagnostic>
		    </testAssertion>


		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="true"
				   id="BP1204">
		      <!-- preReq="BP1701" -->
		      <description>
			The soap11:Body of the envelope does not contain the
			soapenc:arrayType attribute.
		      </description>
		      <target>//soap11:Envelope</target>
		      <predicate>not (descendant::*[@soapenc:arrayType])</predicate>
		      <prescription level="mandatory"/>
		      <errorMessage>
			The soap11:Body of an envelope contains the
			soapenc:arrayType attribute.
		      </errorMessage>
		      <diagnostic>SOAP envelope.</diagnostic>
		    </testAssertion>

		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="false"
				   id="BP2124">
		      <description>
			No two global element declarations share the same
			qualified name.
		      </description>
		      <target>
			/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:types/xsd:schema
		      </target>
		      <predicate>count (xsd:element[@name = preceding-sibling::element/@name]) = 0</predicate>
		      <prescription level="preferred"/>
		      <errorMessage>
			Two or more global element declarations share the same
			qualified name.
		      </errorMessage>
		      <diagnostic>
			The wsdl:operation elements containing the repeated global
			element declarations.
		      </diagnostic>
		    </testAssertion>
		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="false"
				   id="BP2125">
		      <description>
			No two type definitions share the same qualified name.
		      </description>
		      <target>
			/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:types/xsd:schema
		      </target>
		      <predicate>(count (xsd:ComplexType[@name = preceding-sibling::ComplexType/@name]) = 0) and

			(count (xsd:SimpleType[@name = preceding-sibling::SimpleType/@name]) = 0)</predicate>
		      <prescription level="preferred"/>
		      <errorMessage>
			Two or more type definitions share the same qualified
			name.
		      </errorMessage>
		      <diagnostic>
			The elements containing the repeated qualified name.
		      </diagnostic>
		    </testAssertion>
		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
           enable="true"
				   id="BP2111"
				   preReq="BP2017">
		      <description>
			If the "parts" attribute is present, then the
			wsoap11:body element(s) have at most one part listed in
			the parts attribute.
		      </description>
		      <target>
			/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[not(.//wsoap11:*[@style = 'rpc'])]
		      </target>
		      <predicate>not(.//wsoap11:body[@parts and contains(@parts," ")])</predicate>
		      <!-- target>
		      //wsdl:definitions/wsdl:binding[not(descendant::wsoap11:body/@use != 'literal')
		      and (count(descendant::wsoap11:body) = count(descendant::wsoap11:body/@use)) and not(descendant::wsoap11:*/@style != 'document')]
		      </context -->
		      <!-- match>not(descendant::wsoap11:body[@parts and contains(@parts," ")])</match -->
		      <prescription level="mandatory"/>
		      <errorMessage>
			One or more wsoap11:body element(s) in a document-literal
			soabinding does not have at most one part listed in the
			parts attribute.
		      </errorMessage>
		      <diagnostic>
			Defective wsoap11:body element(s).
		      </diagnostic>
		    </testAssertion>
		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
           enable="true"
				   id="BP2119"
				   preReq="BP2017">
		      <!-- preReq="BP2404" -->
		      <description>
			If it does not specify the parts attribute on a
			wsoap11:body element, the corresponding abstract
			wsdl:message defines zero or one wsdl:part.
		      </description>
		      <target>
			/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[not(.//wsoap11:*[@style = 'rpc'])]
		      </target>
		      <predicate>every $sbody in wsdl:operation//wsoap11:body[not(@parts)] satisfies
			some $msgname in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation[@name = $sbody/../../@name]/*[local-name(.) = local-name($sbody/..)]/@message satisfies count(/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[@name = $msgname]/wsdl:part) le 1
		      </predicate>
		      <prescription level="mandatory"/>
		      <errorMessage>
			A document-literal binding which does not specify the
			parts attribute, has more than one wsdl:part in the
			associated wsdl:message element.
		      </errorMessage>
		      <diagnostic>Defective wsdl:binding element.</diagnostic>
		    </testAssertion>
		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
           enable="true"
				   id="BP2013"
				   preReq="BP2017">
		      <description>
			The binding (in wsoap11:body elements) only refers to
			part elements that have been defined using the "type"
			attribute
		      </description>
		      <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[.//wsoap11:*[@style = 'rpc']]</target>
		      <!-- target>
		      //wsdl:definitions/wsdl:binding[not(.//wsoap11:body/@use != 'literal')
		      and (count(.//wsoap11:body) = count(.//wsoap11:body/@use))
		      and not(.//wsoap11:*/@style != 'rpc')]
		      </context -->
		      <predicate>every $sbody in wsdl:operation//wsoap11:body satisfies &#10;
			some $msgname in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation[@name = $sbody/../../@name]/*[local-name(.) = local-name($sbody/..)]/@message &#10;
			satisfies &#10;
			every $mpart in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[@name = $msgname]/wsdl:part
			satisfies $mpart/@type or $sbody/@parts and not(contains($sbody/@parts, $mpart/@name))
		      </predicate>
		      <!-- match>every $sbody in wsdl:operation//wsoap11:body satisfies
		      some $msgname in //wsdl:portType/wsdl:operation[@name = $sbody/../../@name]/*[local-name(.) = local-name($sbody/..)]/@message
		      satisfies
		      every $mpart in //wsdl:definitions/wsdl:message[@name = $msgname]/wsdl:part
		      satisfies $mpart/@type or $sbody/@parts and not(contains($sbody/@parts, $mpart/@name))</match -->
		      <prescription level="mandatory"/>
		      <errorMessage>
			soabinding (in wsoap11:body elements) refers to part(s)
			that do not have the "type" attribute.
		      </errorMessage>
		      <diagnostic>
			{binding}{message with failed part}
		      </diagnostic>
		    </testAssertion>
		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="false"
				   id="BP1211aOLD">
		      <!-- preReq="BP1701" -->
		      <description>
			Part accessor elements in the envelope do not have an
			xsi:nil attribute with a value of "1" or "true".
		      </description>
		      <target>/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap11:Envelope[../../@type='request' and soap11:Body/*]</target>
		      <cotarget name="myOpBinding">
			/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation[@name = local-name-from-QName(node-name($target/soap11:Body/*[1]))]
		      </cotarget>
		      <!-- cotarget name="mybinding">//wsil:descriptionFile/wsdl:definitions/wsdl:binding[wsdl:operation/@name = local-name-from-QName(node-name($target/soap11:Body/*))]
		      </cotarget -->
		      <prerequisite>not($myOpBinding/..//wsoap11:body/@use != 'literal') 
			and (count($myOpBinding/..//wsoap11:body) = count($myOpBinding/..//wsoap11:body/@use)) and not($myOpBinding/..//wsoap11:*/@style != 'rpc')
		      </prerequisite>
		      <!-- prerequisite>not($mybinding//wsoap11:body/@use != 'literal') 
		      and (count($mybinding//wsoap11:body) = count($mybinding//wsoap11:body/@use)) and not($mybinding//wsoap11:*/@style != 'rpc')
		      </prerequisite -->
		      <predicate>not (soap11:Body/*/*[attribute::xsi:nil = '1' or attribute::xsi:nil = fn:true()])</predicate>
		      <prescription level="mandatory"/>
		      <errorMessage>
			Envelope referenced by an rpc-literal binding has part
			accessor elements with an xsi:nil attribute with a value
			of "1" or "true".
		      </errorMessage>
		      <diagnostic/>
		    </testAssertion>

		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="false"
				   id="BP2112">
		      <description>
			No wsdl:part referred by such a wsoap11:body element is
			defined using the "element" attribute.
		      </description>
		      <target>
			For a candidate wsdl:binding, with a style "rpc" attribute
			and containing at least a wsoap11:body element
		      </target>
		      <predicate>TBD</predicate>
		      <prescription level="permitted"/>
		      <errorMessage>
			The referred wsdl:part element uses the "element"
			attribute in an rpc-literal wsoap11:body.
		      </errorMessage>
		      <diagnostic>
			{wsoap11:body}{wsdl:part element(s)}
		      </diagnostic>
		    </testAssertion>
		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
           enable="true"
				   id="BP2012"
				   preReq="BP2017">
		      <!-- preReq="BP2404" -->
		      <description>
			A doc//wsoap11:body/@use != 'literal') and (count($myOpBinding/..//wsoap11:body) = count($myOpBinding/..//wsoap11:body/@use)) and not($myOpBinding/..//wsoap11:*/@style = 'rpc') and $myOpBinding/wsdl:output/wsoap11:body[@parts and (@parts = '' or @parts = ' ' )]
			ument-literal binding only refers in wsoap11:body elements to
			part elements that have been defined using the "element"
			attribute.
		      </description>
		      <target>
			/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[not(.//wsoap11:*[@style = 'rpc'])]
		      </target>
		      <predicate>every $sbody in wsdl:operation//wsoap11:body satisfies
			some $msgname in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation[@name = $sbody/../../@name]/*[local-name(.) = local-name($sbody/..)]/@message satisfies 
			every $mpart in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[@name = $msgname]/wsdl:part
			satisfies $mpart/@element or $sbody/@parts and not(contains($sbody/@parts, $mpart/@name))</predicate>
		      <prescription level="mandatory"/>
		      <errorMessage>
			The binding (in wsoap11:body elements) refers to part(s)
			of a soap11:Body element that do not have the "element"
			attribute.
		      </errorMessage>
		      <diagnostic>
			wsoap11:body element(s) that have non "element" parts
			attributes.
		      </diagnostic>
		    </testAssertion>
		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="true"
				   id="BP1212a">
    	    <!-- preReq="BP1701" -->
          <!-- rpc-lit / request case -->
          <description>
            The Envelope of request message contains exactly one part accessor element
            for each of the wsdl:part elements bound to the envelope's
            corresponding wsoap11:body element.
          </description>
          <target>
            /wsil:testLog/wsil:messageLog/wsil:message
            [@type = 'request'
            and 
            not ( ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo
            [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] )
            ]
            /wsil:messageContents/soap11:Envelope[soap11:Body/* and  not (soap11:Body//soap11:Fault) ]
            [
            some $myenv in . satisfies
            some $message in //wsdl:definitions/wsdl:message satisfies ($message/wsdl:part[1]/@type)
            ]
          </target>
          <!-- assume BP2017 passed for cotarget -->
          <cotarget name="myOpBinding">
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding
            [.//wsoap11:*[@style = 'rpc']]/wsdl:operation[@name =  fn:local-name-from-QName(node-name($target/soap11:Body/*[1]))]
          </cotarget>
          <predicate>
            some $mbody in ./soap11:Body satisfies
            some $dbody in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation[@name = fn:local-name($mbody/*[1])]/wsdl:input/wsoap11:body satisfies
            some $dopmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation[@name = fn:local-name($mbody/*[1])]/*[fn:local-name(.) = 'input'] satisfies
            some $dmesg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[@name = fn:tokenize(xsd:string($dopmsg/@message), ':' )[fn:last()]] satisfies
            ( not(wsdl:part) and not($mbody/*/* )) or
            (every $mpart in $dmesg/wsdl:part satisfies
            fn:count($mbody/*/*[fn:local-name(.) = $mpart/@name]) eq 1  or ($dbody/@parts and not(contains($dbody/@parts, $mpart/@name))))
          </predicate>
          
          <prescription level="mandatory"/>
          <errorMessage>
            The content of the soap11:Body element of request message is inconsistent with
            its description. The envelope does not contain exactly one
            part accessor element for each of the wsdl:part elements
            bound to the envelope's corresponding wsoap11:body
            element.
          </errorMessage>
          <diagnostic/>
		    </testAssertion>

		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="true"
				   id="BP1212b">
        <!-- preReq="BP1701" -->
        <!-- rpc-lit / response case -->
        <description>
          The Envelope of response message contains exactly one part accessor element
          for each of the wsdl:part elements bound to the envelope's
          corresponding wsoap11:body element.
        </description>
        <target>
          /wsil:testLog/wsil:messageLog/wsil:message
          [@type = 'response' 
          or 
          ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo
          [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ]
          ]
          /wsil:messageContents/soap11:Envelope[soap11:Body/* and not (soap11:Body/soap11:Fault)]
          [
          some $myenv in . satisfies
          some $message in //wsdl:definitions/wsdl:message satisfies ($message/wsdl:part[1]/@type)
          ]
        </target>
        <!-- assume BP2017 passed for cotarget -->
        <cotarget name="myOpBinding">
          /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[.//wsoap11:*[@style = 'rpc']]/
          wsdl:operation
          [fn:string-join((@name, 'Response' ),'' ) = fn:local-name-from-QName(node-name($target/soap11:Body/*[1]))]
        </cotarget>
        <predicate>
          some $mbody in ./soap11:Body satisfies
          some $dbody in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation[fn:string-join((@name, 'Response'),'')  = fn:local-name($mbody/*[1])]/wsdl:output/wsoap11:body satisfies
          some $dopmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation[fn:string-join((@name, 'Response'),'') = fn:local-name($mbody/*[1])]/*[fn:local-name(.) = 'output' ] satisfies
          some $dmesg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[@name = fn:tokenize(xsd:string($dopmsg/@message), ':' )[fn:last()] and wsdl:part/@type] satisfies
          every $mpart in $dmesg/wsdl:part satisfies
          fn:count($mbody/*/*[fn:local-name(.) = $mpart/@name]) eq 1  or ($dbody/@parts and not(contains($dbody/@parts, $mpart/@name)))
        </predicate>
        <prescription level="mandatory"/>
        <errorMessage>
          The content of the soap11:Body element of resonse message is inconsistent with
          its description. The envelope does not contain exactly one
          part accessor element for each of the wsdl:part elements
          bound to the envelope's corresponding wsoap11:body
          element.
        </errorMessage>
        <diagnostic/>
        </testAssertion>
        <testAssertion id="BP1213a" enable="true" 
           xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
           xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
           xmlns:xsd="http://www.w3.org/2001/XMLSchema";
           xmlns:xs="http://www.w3.org/2001/XMLSchema";
           xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
           xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
           xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
           >
          <!-- preReq="BP1701" -->
          <description>The request message envelope has no element content in the soap11:Body element 
            if the value of the parts attribute of the wsoap11:body is an empty string in the corresponding doc-literal description.
          </description>
          <target>
            /wsil:testLog/wsil:messageLog/wsil:message
                [@type = 'request'
                and 
                not ( ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo
                  [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] )
                ]
              /wsil:messageContents/soap11:Envelope[soap11:Body[not (soap11:Fault)]]
                [
                some $myenv in .
                satisfies
                  (  every $message in //wsdl:definitions/wsdl:message satisfies ( (not($message/wsdl:part[1]/@type)  )
                  and ( $myenv/soap11:Body/*[1] or $myenv/soap11:Header/wsa:Action ))
                  ) 
                ]
          </target > 
          <!-- assume BP2017 passed for cotarget --> 
          <cotarget name="myOpBinding">
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation
            [
            some $opBinding in . satisfies 
            (if ($target/soap11:Body/*[1] ) then
            (some $dmesg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message
            [wsdl:part[fn:resolve-QName(xsd:string(@element), . ) = fn:node-name($target/soap11:Body/*[1])] ]
            satisfies
            some $dopmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:input
            [fn:local-name-from-QName(fn:resolve-QName(xsd:string(@message), . )) = $dmesg/@name] 
            satisfies
            $opBinding/@name = $dopmsg/../@name
            ) else fn:true()
            )   and
            ( if ($target/soap11:Header/wsa:Action) then
            (  some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:input satisfies
            ($target/soap11:Header/wsa:Action =     
            (    if ($opmsg/@wsam:Action) then $opmsg/@wsam:Action
            else fn:concat($opmsg/../../../@targetNamespace,
            if (not(fn:ends-with($opmsg/../../../@targetNamespace,'/'))) then '/' else '',
            $opmsg/../../@name, 
            '/',
            if($opmsg/@name) then $opmsg/@name
            else fn:concat($opmsg/../@name, 'Request' )  )
            )
            )  and ( $opBinding/@name = $opmsg/../@name  )  )
            else fn:true()
            )
            ]
          </cotarget>
          <prerequisite>
            some $myOpBind in $myOpBinding satisfies
            (
            $myOpBind/../wsoap11:binding[ not (@style = 'rpc' )] and
            $myOpBind/wsoap11:operation[ not (@style = 'rpc' )] and 
            $myOpBind/wsdl:input/wsoap11:body[@parts and (@parts = '' or @parts = ' ' )]
            )
          </prerequisite> 
          <predicate>count(./soap11:Body/*) eq 0</predicate> 
          <prescription level="mandatory"/>
          <errorMessage>The request message soap11:Body element must be empty when, in the corresponding doc-literal description, the value of the parts attribute of wsoap11:body is an empty string.</errorMessage>
          <diagnostic>SOAP envelope</diagnostic>
        </testAssertion>
    
        <testAssertion  id="BP1213b" enable="true"
          xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
          xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
          xmlns:xsd="http://www.w3.org/2001/XMLSchema";
          xmlns:xs="http://www.w3.org/2001/XMLSchema";
          xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
          xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
          xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
          >
          <!-- preReq="BP1701" -->
          <description>
            The response message envelope has no element content in the soap11:Body element if the value 
            of the parts attribute of the wsoap11:body is an empty string in the corresponding doc-literal description.
          </description> 
          <target>
            /wsil:testLog/wsil:messageLog/wsil:message
            [@type = 'response' 
            or 
            ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo
            [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ]
            ]
            /wsil:messageContents/soap11:Envelope[soap11:Body[not (soap11:Fault)]]
            [
            some $myenv in .
            satisfies
            (  every $message in //wsdl:definitions/wsdl:message satisfies ( (not($message/wsdl:part[1]/@type)  )
            and ( $myenv/soap11:Body/*[1] or $myenv/soap11:Header/wsa:Action ))
            ) 
            ]
          </target > 
          <!-- assume bp2017 passed for cotarget -->
          <cotarget name="myOpBinding">
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation
            [
            some $opBinding in . satisfies 
            (if ($target/soap11:Body/*[1] ) then
            (some $dmesg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[wsdl:part[fn:resolve-QName(xsd:string(@element), . ) = fn:node-name($target/soap11:Body/*[1])] ]
            satisfies
            some $dopmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:output
            [fn:local-name-from-QName(fn:resolve-QName(xsd:string(@message), . )) = $dmesg/@name] 
            satisfies
            $opBinding/@name = $dopmsg/../@name
            ) else fn:true()
            )   and
            ( if ($target/soap11:Header/wsa:Action) then
            (  some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:output satisfies
            ($target/soap11:Header/wsa:Action =     
            (    if ($opmsg/@wsam:Action) then $opmsg/@wsam:Action
            else fn:concat($opmsg/../../../@targetNamespace,
            if (not(fn:ends-with($opmsg/../../../@targetNamespace,'/'))) then '/' else '',
            $opmsg/../../@name, 
            '/',
            if($opmsg/@name) then $opmsg/@name
            else fn:concat($opmsg/../@name, 'Response' )  )
            )
            )  and ( $opBinding/@name = $opmsg/../@name  )  )
            else fn:true()
            )
            ]
          </cotarget>
          <prerequisite>
            some $myOpBind in $myOpBinding satisfies
            (
            $myOpBind/../wsoap11:binding[ not (@style = 'rpc' )] and
            $myOpBind/wsoap11:operation[ not (@style = 'rpc' )] and 
            $myOpBind/wsdl:input/wsoap11:body[@parts and (@parts = '' or @parts = ' ' )]
            )
          </prerequisite> 
          <predicate>count(./soap11:Body/*) eq 0</predicate>
          <prescription level="mandatory"/>
          <errorMessage>The response message soap11:Body element must be empty when, in the corresponding doc-literal description, the value of the parts attribute of wsoap11:body is an empty string.</errorMessage>
          <diagnostic>SOAP envelope</diagnostic>
        </testAssertion>

        <testAssertion id="BP1214a" enable="true"
           xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
           xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
           xmlns:xsd="http://www.w3.org/2001/XMLSchema";
           xmlns:xs="http://www.w3.org/2001/XMLSchema";
           xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
           xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
           xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
           >
          <!-- preReq="BP1701" -->
          <description>
            The request message envelope does not contain any part accessor elements
            if the value of the parts attribute of the wsoap11:body
            is an empty string in the corresponding rpc-literal
            description
          </description>
          <target>        
            /wsil:testLog/wsil:messageLog/wsil:message
            [@type = 'request'
            and 
            not ( ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo
            [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] )
            ]
            /wsil:messageContents/soap11:Envelope[soap11:Body/* and  not (soap11:Body/soap11:Fault) ]
            [
            some $myenv in . satisfies
            some $message in //wsdl:definitions/wsdl:message satisfies ($message/wsdl:part[1]/@type)
            ]
          </target>
          <!-- assume BP2017 passed for cotarget -->
          <cotarget name="myOpBinding">
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding
            [.//wsoap11:*[@style = 'rpc']]/wsdl:operation
            [@name =  fn:local-name-from-QName(node-name($target/soap11:Body/*[1]))]
          </cotarget>
          <prerequisite>
            $myOpBinding/wsdl:input/wsoap11:body[@parts and (@parts = '' or @parts =  ' '  )]  
          </prerequisite>
          <predicate>count(./soap11:Body/*/*) eq 0</predicate>
          <prescription level="mandatory"/>
          <errorMessage>
            The content of the request message soap11:Body element is inconsistent with
            its description. The envelope must not have any part
            accessor elements when, in the corresponding rpc-literal
            description, the value of the parts attribute of
            wsoap11:body is an empty string.
          </errorMessage>
          <diagnostic>SOAP envelope</diagnostic>
        </testAssertion>
        
        <!--  NEXT: -->
        <testAssertion id="BP1214b" enable="true"
                 xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
                 xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
                 xmlns:xsd="http://www.w3.org/2001/XMLSchema";
                 xmlns:xs="http://www.w3.org/2001/XMLSchema";
                 xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
                 xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
                 xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
                 >
          <!-- preReq="BP1701" -->
          <description>
            The response message envelope does not contain any part accessor elements
            if the value of the parts attribute of the wsoap11:body
            is an empty string in the corresponding rpc-literal
            description
          </description>
          <target>
            /wsil:testLog/wsil:messageLog/wsil:message
            [@type = 'response' 
            or 
            ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo
            [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ]
            ]
            /wsil:messageContents/
            soap11:Envelope[soap11:Body/* and not (soap11:Body/soap11:Fault)]
            [
            some $myenv in . satisfies
            some $message in //wsdl:definitions/wsdl:message satisfies ($message/wsdl:part[1]/@type)
            ]
          </target>
          
          <!-- assume BP2017 passed for cotarget -->
          <cotarget name="myOpBinding">
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[.//wsoap11:*[@style = 'rpc']]/
            wsdl:operation
            [fn:string-join((@name, 'Response' ),'' ) = fn:local-name-from-QName(node-name($target/soap11:Body/*[1]))]
          </cotarget>
          <prerequisite>
            $myOpBinding/wsdl:output/wsoap11:body[@parts and (@parts = '' or @parts =  ' '  )]  
          </prerequisite>
          <predicate>count(./soap11:Body/*/*) eq 0</predicate>
          <prescription level="mandatory"/>
          <errorMessage>
            The content of the response message soap11:Body element is inconsistent with
            its description. The envelope must not have any part
            accessor elements when, in the corresponding rpc-literal
            description, the value of the parts attribute of
            wsoap11:body is an empty string.
          </errorMessage>
          <diagnostic>SOAP envelope</diagnostic>
        </testAssertion>

		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="true"
				   id="BP2113">
		      <description>
			When they contain references to message parts, the
			wsoap11:header, wsoap11:headerfault and wsoap11:fault
			elements only refer to wsdl:part element(s) that have been
			defined using the "element" attribute.
		      </description>
		      <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[.//wsoap11:header[@part] or .//wsoap11:headerfault[@part] or .//wsdl:fault/wsoap11:fault[@name] ]</target>
		      <predicate>(every $shhf in wsdl:operation//wsoap11:*[local-name(.) = 'header' or local-name(.) = 'headerfault'] satisfies
			some $msguse in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation[@name = $shhf/../../@name]/*[local-name(.) = local-name($shhf/..)]
			satisfies every $mpart in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[@name = local-name-from-QName(resolve-QName(xsd:string($msguse/@message),$msguse))]/wsdl:part
			satisfies $mpart/@element or $shhf/@part and not($shhf/@part = $mpart/@name))
			and (every $sf in wsdl:operation/wsdl:fault/wsoap11:fault 
			satisfies some $msguse in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation[@name = $sf/../../@name]/wsdl:fault[@name = $sf/@name]
			satisfies every $mpart in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[@name = local-name-from-QName(resolve-QName(xsd:string($msguse/@message),$msguse))]/wsdl:part
			satisfies $mpart/@element)
		      </predicate>
		      <prescription level="mandatory"/>
		      <errorMessage>
			The wsoap11:header, wsoap11:headerfault or
			wsoap11:fault elements refer to wsd:part element(s) that
			are not defined using only the "element" attribute.
		      </errorMessage>
		      <diagnostic>
			Defective wsdl:binding and wsdl:part elements.
		      </diagnostic>
		    </testAssertion>
		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="true"
				   id="BP2114">
		      <!-- preReq="BP2118" -->
		      <description>
			Every wsdl:part from each wsdl:message in the associated
			wsdl:portType is referenced either by the wsoap11:body,
			wsoap11:header, wsoap11:fault, or wsoap11:headerfault.
		      </description>
		      <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding</target>
		      <predicate>some $bing in self::node() satisfies
			every $op in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType[local-name-from-QName(resolve-QName(xsd:string($bing/@type),$bing)) = @name]/wsdl:operation satisfies 
			some $bop in $bing/wsdl:operation[@name = $op/@name] satisfies (
			(
			($bop/wsdl:input/wsoap11:body[not(@parts)]) or 
			( every $mpart in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[@name = local-name-from-QName(resolve-QName(xsd:string($op/wsdl:input/@message),$op/wsdl:input))]/wsdl:part satisfies 
			(
			fn:exists(fn:index-of(tokenize($bop/wsdl:input/wsoap11:body/@parts,'\s+'), $mpart/@name)) or
			(some $extra in $bing/wsdl:operation/wsdl:*/wsoap11:*[local-name-from-QName(resolve-QName(xsd:string(@message),.)) = $mpart/../@name] satisfies $mpart/@name = $extra/@part ))
			)
			) 
			and 
			( not($op/wsdl:output) or 
			($bop/wsdl:output/wsoap11:body[not(@parts)]) or
			( every $mpart in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[@name =  local-name-from-QName(resolve-QName(xsd:string($op/wsdl:output/@message),$op/wsdl:output))]/wsdl:part satisfies 
			(
			fn:exists(fn:index-of(tokenize($bop/wsdl:output/wsoap11:body/@parts,'\s+'), $mpart/@name)) or
			(some $extra in $bing/wsdl:operation/wsdl:*/wsoap11:*[local-name-from-QName(resolve-QName(xsd:string(@message),.)) = $mpart/../@name] satisfies 
			$mpart/@name = $extra/@part ))
			) 
			)
			and
			( not($op/wsdl:fault) or 
			(every $flt in $op/wsdl:fault satisfies $flt/@name = $bop/wsdl:fault/wsoap11:fault/@name) )
			)
		      </predicate>
		      <prescription level="mandatory"/>
		      <errorMessage>
			A wsdl:binding does not bind every wsdl:part of a
			wsdl:message in the wsdl:portType to which it refers to
			one of wsoap11:body, wsoap11:header, wsoap11:fault or
			wsoap11:headerfault.
		      </errorMessage>
		      <diagnostic>
			{Defective wsdl:binding element}{message with part(s)
			unbound}
		      </diagnostic>
		    </testAssertion>
		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="true"
				   id="BP2115"
				   >
		      <description>
			An "element" attribute on any wsdl:part element refers to
			a global element declaration.
		      </description>
		      <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[wsdl:part/@element]</target>
		      <predicate>
			every $part in wsdl:part[@element] satisfies 
			some $ged in //xsd:schema/xsd:element satisfies
			(
			( 
			$ged/../@targetNamespace  =   namespace-uri-from-QName( resolve-QName(xsd:string($part/@element),$part)) 
			or 
			(not ($ged/../@targetNamespace)  and not (namespace-uri-from-QName( resolve-QName(xsd:string($part/@element),$part)) ) )
			)
			and
			local-name-from-QName(resolve-QName(xsd:string($part/@element),$part)) = $ged/@name
			)
		      </predicate>
		      <prescription level="mandatory"/>
		      <errorMessage>
			A wsdl:message element containing a wsdl:part element that
			uses the "element" attribute does not refer, via that
			attribute, to a global element declaration.
		      </errorMessage>
		      <diagnostic>Defective wsdl:message element.</diagnostic>
		    </testAssertion>

		    <testAssertion  xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				    xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				    xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				    xmlns:xs="http://www.w3.org/2001/XMLSchema";
				    xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				    xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				    id="BP1012a" enable="true"
				    >
          <!-- rpc-lit / request case -->
          <description>
            The content of the request message 
            envelope matches the definition in the
            WSDL document for rpc-lit binding.  
            The order of the part elements in
            the soap11:Body of the wired message, is same as that of the
            wsdl:partS, in the wsdl:message that describes it for each
            of the wsdl:part elements bound to the envelope's
            corresponding wsoap11:body element.
          </description>
          <target>
            /wsil:testLog/wsil:messageLog/wsil:message
            [@type = 'request'
            and 
            not ( ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo
            [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] )
            ]
            /wsil:messageContents/soap11:Envelope[soap11:Body/* and  not (soap11:Body//soap11:Fault) ]
            [
            some $myenv in . satisfies
            some $message in //wsdl:definitions/wsdl:message satisfies ($message/wsdl:part[1]/@type)
            ]
          </target>
          <!-- assume BP2017 passed for cotarget -->
          <cotarget name="myOpBinding">
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding
            [.//wsoap11:*[@style = 'rpc']]/wsdl:operation[@name =  fn:local-name-from-QName(node-name($target/soap11:Body/*[1]))]
          </cotarget>
          <predicate>
            some $mbody in ./soap11:Body satisfies
            some $dbody in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation[@name = fn:local-name($mbody/*[1])]/wsdl:input/wsoap11:body satisfies
            some $dopmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation[@name = fn:local-name($mbody/*[1])]/*[fn:local-name(.) = 'input'] satisfies
            some $dmesg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[@name = fn:tokenize(xsd:string($dopmsg/@message), ':' )[fn:last()]] satisfies
            ( not(wsdl:part) and not($mbody/*/* )) or 
            (every $tst in
            ( for $i in 1 to fn:count($mbody/*/*) return
            //wsdl:message/wsdl:part[not($dbody/@parts and not(fn:contains($dbody/@parts,@name)))][$i]/@name = 
            fn:local-name($mbody/*/*[$i])
            )
            satisfies $tst = fn:true())
          </predicate>
          
          <prescription level="mandatory"/>
          <errorMessage>
            The content of the request message 
            envelope does not match the
            wsdl:message definition for rpc/lit binding.
            The order of parts in soap11:Body
            does not match the order of wsdl:partS in wsdl:message
            that describes it for each of the wsdl:part elements bound
            to the envelope's corresponding wsoap11:body element.
          </errorMessage>
          <diagnostic>
            Non-matching WSDL operation and envelope.
          </diagnostic>
		    </testAssertion>
		    
		    <testAssertion  xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				    xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				    xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				    xmlns:xs="http://www.w3.org/2001/XMLSchema";
				    xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				    xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				    id="BP1012b" enable="true"
				    >
		      
		      <description>
			The content of the response message 
			envelope matches the definition in the
			WSDL document for rpc-lit binding.  
			The order of the part elements in
			the soap11:Body of the wired message, is same as that of the
			wsdl:partS, in the wsdl:message that describes it for each
			of the wsdl:part elements bound to the envelope's
			corresponding wsoap11:body element.
		      </description>
		      <target>
            /wsil:testLog/wsil:messageLog/wsil:message
            [@type = 'response' 
            or 
            ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo
            [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ]
            ]
            /wsil:messageContents/soap11:Envelope[soap11:Body/* and not (soap11:Body/soap11:Fault)]
            [
            some $myenv in . satisfies
            some $message in //wsdl:definitions/wsdl:message satisfies ($message/wsdl:part[1]/@type)
            ]
		      </target>
		      <!-- assume BP2017 passed for cotarget -->
		      <cotarget name="myOpBinding">
			/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[.//wsoap11:*[@style = 'rpc']]/
			wsdl:operation
			[fn:string-join((@name, 'Response' ),'' ) = fn:local-name-from-QName(node-name($target/soap11:Body/*[1]))]
		      </cotarget>
		      <predicate>
			some $mbody in ./soap11:Body satisfies
			some $dbody in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation[fn:string-join((@name, 'Response'),'')  = fn:local-name($mbody/*[1])]/wsdl:output/wsoap11:body satisfies
			some $dopmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation[fn:string-join((@name, 'Response'),'') = fn:local-name($mbody/*[1])]/*[fn:local-name(.) = 'output' ] satisfies
			some $dmesg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[@name = fn:tokenize(xsd:string($dopmsg/@message), ':' )[fn:last()] and wsdl:part/@type] satisfies
			every $tst in
			( for $i in 1 to fn:count($mbody/*/*) return
			//wsdl:message/wsdl:part[not($dbody/@parts and not(fn:contains($dbody/@parts,@name)))][$i]/@name = 
			fn:local-name($mbody/*/*[$i])
			)
			satisfies $tst = fn:true()
		      </predicate>
		      <prescription level="mandatory"/>
		      <errorMessage>
			The content of the response message 
			envelope does not match the
			wsdl:message definition for rpc/lit binding.
			The order of parts in soap11:Body
			does not match the order of wsdl:partS in wsdl:message
			that describes it for each of the wsdl:part elements bound
			to the envelope's corresponding wsoap11:body element.
		      </errorMessage>
		      <diagnostic>
			Non-matching WSDL operation and envelope.
		      </diagnostic>
		    </testAssertion>

		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="true"
				   id="BP2208"
				   preReq="BP2703">
		      <description>
			The wsdl:operation element is either a WSDL
			request/response or a one-way operation (no Notification
			or Sollicit-Response).
		      </description>
		      <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation
		      </target>
		      <predicate>not(*[local-name-from-QName(node-name(.)) = 'output' and position() = 1])</predicate>
		      <!-- predicate>not(wsdl:output) or (wsdl:output[position() != 1])</predicate -->
		      <prescription level="mandatory"/>
		      <errorMessage>
			wsdl:operation was not a request/response or one-way
			operation.
		      </errorMessage>
		      <diagnostic>Operation.</diagnostic>
		    </testAssertion>
		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="true"
				   id="BP2010"
				   preReq="BP2703">
		      <description>
			name attributes of Operations are unique in the
			wsdl:portType definition
		      </description>
		      <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType
		      </target>
		      <predicate>
            		not(wsdl:operation[@name = preceding-sibling::*/@name]) and 
            		not(wsdl:operation[@name = following-sibling::*/@name])
		      </predicate>
		      <prescription level="mandatory"/>
		      <errorMessage>
			name attributes are not unique within the portType
			definition.
		      </errorMessage>
		      <diagnostic>
			list of duplicate name(s) and of elements that use them.
		      </diagnostic>
		    </testAssertion>
		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="true"
				   id="BP2014"
				   >
		      <description>
			The parameterOrder attribute omits at most 1 part from an
			output wsdl:message.
		      </description>
		      <target>/wsil:testLog//wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation[@parameterOrder]
		      </target>
		      <predicate>for $op in self::node() return
			count( for $mpart in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/*/wsdl:message[@name = $op/wsdl:output/@message]/wsdl:part 
			return index-of(tokenize($op/@parameterOrder,'\s+'), $mpart/@name)) ge 
			count(/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/*/wsdl:message[@name = $op/wsdl:output/@message]/wsdl:part) - 1</predicate>
		      <prescription level="mandatory"/>
		      <errorMessage>
			An operation associated with an rpc-literal binding has a
			parameterOrder attribute that omits more than 1 part.
		      </errorMessage>
		      <diagnostic>
			{defective portType}{output wsdl:message}
		      </diagnostic>
		    </testAssertion>
		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="true"
				   id="BP2116"
				   >
		      <description>
			The wsdl:message element does not contain part elements
			that use both "type" and "element" attributes.
		      </description>
		      <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[wsdl:part]</target>
		      <predicate>not(wsdl:part[@type and @element])</predicate>
		      <prescription level="mandatory"/>
		      <errorMessage>
			A wsdl:message element has at least one wsdl:part element
			that contains both type and element attributes.
		      </errorMessage>
		      <diagnostic>Defective wsdl:message element.</diagnostic>
		    </testAssertion>
		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
           enable="true"
				   id="BP2402"
				   preReq="BP2703">
		      <description>
			The wsdl:binding element has a wsoap11:binding child
			element.
		      </description>
		      <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding</target>
		      <predicate>child::wsoap11:binding</predicate>
		      <prescription level="mandatory"/>
		      <errorMessage>
			The wsdl:binding element does not use a wsoap11:binding
			element as defined in section "3 SOAP Binding." of the
			WSDL 1.1 specification.
		      </errorMessage>
		      <diagnostic>wsdl:binding.</diagnostic>
		    </testAssertion>

		    <testAssertion  xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				    xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				    xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				    xmlns:xs="http://www.w3.org/2001/XMLSchema";
				    xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				    xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
            enable="true"
				    id="BP2403"
				    preReq="BP2703 BP2402">
		      <description>
			The contained soabinding element has a "transport"
			attribute
		      </description>
		      <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[wsoap11:binding]</target>
		      <predicate>wsoap11:binding[@transport]</predicate>
		      <prescription level="mandatory"/>
		      <errorMessage>
			Transport attribute of the soabinding does not exist.
		      </errorMessage>
		      <diagnostic>soabinding element.</diagnostic>
		    </testAssertion>

        <testAssertion id="BP2404"
           xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
           xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
           xmlns:xsd="http://www.w3.org/2001/XMLSchema";
           xmlns:xs="http://www.w3.org/2001/XMLSchema";
           xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
           xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
           xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
           preReq="BP2703 BP2402 BP2403">
          <description>
            The contained soabinding element has a "transport"
            attribute, which has value:
            http://schemas.xmlsoap.org/soap/http.
          </description>
          <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[wsoap11:binding]</target>
          <predicate>wsoap11:binding[@transport = 'http://schemas.xmlsoap.org/soap/http']</predicate>
          <prescription level="mandatory"/>
          <errorMessage>
            Transport attribute of the soabinding does not contain
            http://schemas.xmlsoap.org/soap/http.
          </errorMessage>
          <diagnostic>soabinding element.</diagnostic>
        </testAssertion>
        
		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
           enable="true"
				   id="BP2017"
				   preReq="BP2404">
		      <description>
			The wsdl:binding is either an rpc-literal binding or a document-literal binding.
		      </description>
		      <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[wsoap11:binding]</target>
		      <predicate>not(.//wsoap11:body/@use != 'literal')
			and (count(.//wsoap11:body) = count(.//wsoap11:body/@use)) and 
			((not(.//wsoap11:*/@style != 'rpc') and not(.//wsoap11:operation[not(@style) and not(../../wsoap11:binding/@style)])) or (not(.//wsoap11:*/@style != 'document')))
		      </predicate>
		      <!-- match>@style="document" or @style="rpc"not(.//wsoap11:body/@use != 'literal')
		      and (count(.//wsoap11:body) = count(.//wsoap11:body[@use])) and
		      ((not(.//wsoap11:*/@style != 'rpc') and not(.//wsoap11:operation[not(@style) and not(../../wsoap11:binding/@style)])) or (not(.//wsoap11:*/@style != 'document')))</match -->
		      <prescription level="mandatory"/>
		      <errorMessage>
			The "style" attribute of an operation in soabinding,
			does not have the same value of "document" or "rpc", as
			other operations of the binding.
		      </errorMessage>
		      <diagnostic>defective soabinding element.</diagnostic>
		    </testAssertion>
		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
           enable="true"
				   id="BP2406"
				   preReq="BP2703">
		      <description>
			The use attribute has a value of "literal".
		      </description>
		      <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[wsoap11:binding]
		      </target>
		      <predicate>not(.//*[@use and @use != "literal"])</predicate>
		      <!-- target>
		      /wsdl:binding//wsoap11:body | //wsdl:binding//wsoap11:fault |
		      //wsdl:binding//wsoap11:header | //wsdl:binding//wsoap11:headerfault 
		      </context -->
		      <!-- match>@use="literal"</match -->
		      <prescription level="mandatory"/>
		      <errorMessage>
			The use attribute of a wsoap11:body, wsoap11:fault,
			wsoap11:header and wsoap11:headerfault does not have
			value of "literal".
		      </errorMessage>
		      <diagnostic>
			Defective wsoap11:body, wsoap11:fault, wsoap11:header,
			or wsoap11:headerfault elements.
		      </diagnostic>
		    </testAssertion>

		    <testAssertion id="BP2705" enable="true" 
		       xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
		       xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
		       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
		       xmlns:xsd="http://www.w3.org/2001/XMLSchema";
		       xmlns:xs="http://www.w3.org/2001/XMLSchema";
		       xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
		       xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
		       xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
               xmlns:wsoap11="http://schemas.xmlsoap.org/wsdl/soap/";
		       >
		      <description>
			The wsdl:definitions in namespace http://schemas.xmlsoap.org/wsdl/ 
			is valid in accordance with the wsi version of the wsdl 1.1 schema at 
			http://ws-i.org/profiles/basic/1.1/wsdl-2004-08-24.xsd .
		      </description>
		      <target>
			/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile[wsdl:definitions]
		      </target>
          <cotarget name="metadata">$target/@schemaValid</cotarget> 
          <predicate>
            $target/@schemaValid = fn:true()
          </predicate>
               <!-- The following is a strongly typed schema aware test, which cannot work,
			   since when using schema aware  processing, xslt validation failures are fatal
			   <predicate>
			     every $def in ./wsdl:definitions satisfies
			     $def instance of element(*,wsdl:tDefinitions)
			   </predicate>
			   -->
		      <prescription level="mandatory"/>
		      <errorMessage>
			The description file contains a WSDL definition which does not 
			conform to the schema located at 
			http://ws-i.org/profiles/basic/1.1/wsdl-2004-08-24.xsd
		      </errorMessage>
		      <diagnostic>
			Error message from the XML parser
		      </diagnostic>
		    </testAssertion>

		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="false"
				   id="BP2709"
				   >
		      <description>Driver testable.</description>
		      <target>not(1)</target>
		      <predicate>TBD</predicate>
		      <prescription level="permitted"/>
		      <errorMessage/>
		      <diagnostic/>
		    </testAssertion>
		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="true"
				   id="BP2120b"
				   preReq="BP2017">
		      <!-- rpc-lit case  (request only) -->
		      <!--   Prereq = BP2017
			     For each op, Create a signature image: 
			     ":input:" + opname+accessors + [ ":output:" ]
			     Then make sure not 2 ops have same image.
			-->
		      <description>
			Each operation referenced by the binding results in a
			unique wire signature.
		      </description>
          <target>
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding
            [.//wsoap11:*[@style = 'rpc']]
          </target>
          <cotarget name="imagesig">
            for $bop_1 in $target/wsdl:operation return
            fn:string-join( 
            (  $bop_1/wsdl:input/wsoap11:body/@namespace ,
            $bop_1/@name ,
            for $opmsg in  /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType
            [@name = fn:tokenize(xsd:string($target/@type), ':' )[fn:last()]]/wsdl:operation[@name = $bop_1/@name]/
            wsdl:input return (  
            (    if ($opmsg/@wsam:Action) then $opmsg/@wsam:Action
            else fn:concat($opmsg/../../../@targetNamespace,
            if (not(fn:ends-with($opmsg/../../../@targetNamespace,'/'))) then '/' else '',
            $opmsg/../../@name, 
            '/',
            if($opmsg/@name) then $opmsg/@name
            else fn:concat($opmsg/../@name, 'Request' )  )
            )
            )
            ),',' )
          </cotarget>
		      <predicate>
			fn:count($imagesig) = fn:count(fn:distinct-values($imagesig))
		      </predicate>
		      <prescription level="mandatory"/>
		      <errorMessage>
			A binding has operations that are not unique.
		      </errorMessage>
		      <diagnostic>
			Defective wsdl:operation element(s).
		      </diagnostic>
		    </testAssertion>

		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="true"
				   id="BP2120a"
				   preReq="BP2017">

		      <!-- doc-lit case (request only)  -->
		      <description>
			Each operation referenced by the binding results in a
			unique wire signature.
		      </description>
          <target>
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding
            [not(.//wsoap11:*[@style = 'rpc'])]
          </target>
          <cotarget name="imagesig">
            for $bop_1 in $target/wsdl:operation return
            fn:string-join( 
            (  for $part in 
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message
            [
            @name = ( fn:tokenize(/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType
            [@name = fn:tokenize(xsd:string($target/@type), ':' )[fn:last()]]/wsdl:operation[@name = $bop_1/@name]/
            wsdl:input/@message, ':' )[fn:last()]  )
            ]/wsdl:part[1]
            return (fn:namespace-uri-from-QName(fn:resolve-QName(xsd:string($part/@element), $part)) ,  fn:local-name-from-QName(fn:resolve-QName(xsd:string($part/@element), $part)) ) ,
            for $opmsg in  /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType
            [@name = fn:tokenize(xsd:string($target/@type), ':' )[fn:last()]]/wsdl:operation[@name = $bop_1/@name]/
            wsdl:input return (  
            (    if ($opmsg/@wsam:Action) then $opmsg/@wsam:Action
            else fn:concat($opmsg/../../../@targetNamespace,
            if (not(fn:ends-with($opmsg/../../../@targetNamespace,'/'))) then '/' else '',
            $opmsg/../../@name, 
            '/',
            if($opmsg/@name) then $opmsg/@name
            else fn:concat($opmsg/../@name, 'Request' )  )
            )
            )
            ),',' )
          </cotarget>
          <predicate>
			fn:count($imagesig) = fn:count(fn:distinct-values($imagesig))
		      </predicate>
		      <prescription level="mandatory"/>
		      <errorMessage>
			A binding has operations that are not unique.
		      </errorMessage>
		      <diagnostic>
			Defective wsdl:operation element(s).
		      </diagnostic>
		    </testAssertion>

		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="false"
				   id="BP2711"
				   >
		      <description>don't know why this is listed as Not testable.</description>
		      <target>///wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:service/wsdl:port</target>
		      <predicate>not(wsoap11:address/@location =
			preceding::wsdl:port/wsoap11:address/@location) and
			not(wsoap11:address/@location =
			following::wsdl:port/wsoap11:address/@location)</predicate>
		      <prescription level="preferred"/>
		      <errorMessage/>
		      <diagnostic/>
		    </testAssertion>
  		    
		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="true"
				   id="BP1011a">
          <!-- preReq="BP1701 BP1308" -->
          <description>
            The content of the envelope matches the definition in the
            WSDL document. In case of a doc-lit binding, the child
            element of soap11:body is an instance of the global element
            declaration referenced by the corresponding wsdl:part. It is assumed the 
            doc-lit binding has only 1 part. (NOTE: BP211 assumed prereq for the cotarget)
          </description>
          <target>
            /wsil:testLog/wsil:messageLog/wsil:message
            [@type = 'request'
            and 
            not ( ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo
            [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] )
            ]
            /wsil:messageContents/soap11:Envelope[soap11:Body[not (soap11:Fault)]]
            [
            some $myenv in .
            satisfies
            (  every $message in //wsdl:definitions/wsdl:message satisfies ( (not($message/wsdl:part[1]/@type)  )
            and ( $myenv/soap11:Body/*[1] or $myenv/soap11:Header/wsa:Action ))
            ) 
            ]
          </target >
          <!-- assume BP2017 passed for cotarget --> 
          <cotarget name="myOpBinding">
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation
            [
            some $opBinding in . satisfies 
            (if ($target/soap11:Body/*[1] ) then
            (some $dmesg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message
            [wsdl:part[fn:resolve-QName(xsd:string(@element), . ) = fn:node-name($target/soap11:Body/*[1])] ]
            satisfies
            some $dopmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:input
            [fn:local-name-from-QName(fn:resolve-QName(xsd:string(@message), . )) = $dmesg/@name] 
            satisfies
            $opBinding/@name = $dopmsg/../@name
            ) else fn:true()
            )   and
            ( if ($target/soap11:Header/wsa:Action) then
            (  some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:input satisfies
            ($target/soap11:Header/wsa:Action =     
            (    if ($opmsg/@wsam:Action) then $opmsg/@wsam:Action
            else fn:concat($opmsg/../../../@targetNamespace,
            if (not(fn:ends-with($opmsg/../../../@targetNamespace,'/'))) then '/' else '',
            $opmsg/../../@name, 
            '/',
            if($opmsg/@name) then $opmsg/@name
            else fn:concat($opmsg/../@name, 'Request' )  )
            )
            )  and ( $opBinding/@name = $opmsg/../@name  )  )
            else fn:true()
            )
            ]
          </cotarget>
          <predicate>count(soap11:Body/*) le 1</predicate>
          <prescription level="mandatory"/>
          <errorMessage>
            The content of the envelope associated with a doc-lit WSDL binding 
            does not match the wsdl:message definition. 
            the child element of soap11:body is not an instance of the
            global element declaration referenced by the corresponding
            wsdl:part.
          </errorMessage>
          <diagnostic>
            Non-matching WSDL operation and envelope.
          </diagnostic>
		    </testAssertion>
		    
		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="true"
				   id="BP1011b">
          <!-- case response. preReq="BP1701 BP1308" -->
          <description>
            The content of the response message envelope matches the definition in the
            WSDL document. In case of a doc-lit binding, the child
            element of soap11:Body is an instance of the global element
            declaration referenced by the corresponding wsdl:part. It is assumed the 
            doc-lit binding has only 1 part. (NOTE: BP211 assumed prereq for the cotarget)
          </description>
          <target>
            /wsil:testLog/wsil:messageLog/wsil:message
            [@type = 'response' 
            or 
            ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo
            [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ]
            ]
            /wsil:messageContents/soap11:Envelope[soap11:Body[not (soap11:Fault)]]
            [
            some $myenv in .
            satisfies
            (  every $message in //wsdl:definitions/wsdl:message satisfies ( (not($message/wsdl:part[1]/@type)  )
            and ( $myenv/soap11:Body/*[1] or $myenv/soap11:Header/wsa:Action ))
            ) 
            ]
          </target > 
          <!-- assume bp2017 passed for cotarget -->
          <cotarget name="myOpBinding">
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation
            [
            some $opBinding in . satisfies 
            (if ($target/soap11:Body/*[1] ) then
            (some $dmesg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[wsdl:part[fn:resolve-QName(xsd:string(@element), . ) = fn:node-name($target/soap11:Body/*[1])] ]
            satisfies
            some $dopmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:output
            [fn:local-name-from-QName(fn:resolve-QName(xsd:string(@message), . )) = $dmesg/@name] 
            satisfies
            $opBinding/@name = $dopmsg/../@name
            ) else fn:true()
            )   and
            ( if ($target/soap11:Header/wsa:Action) then
            (  some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:output satisfies
            ($target/soap11:Header/wsa:Action =     
            (    if ($opmsg/@wsam:Action) then $opmsg/@wsam:Action
            else fn:concat($opmsg/../../../@targetNamespace,
            if (not(fn:ends-with($opmsg/../../../@targetNamespace,'/'))) then '/' else '',
            $opmsg/../../@name, 
            '/',
            if($opmsg/@name) then $opmsg/@name
            else fn:concat($opmsg/../@name, 'Response' )  )
            )
            )  and ( $opBinding/@name = $opmsg/../@name  )  )
            else fn:true()
            )
            ]
          </cotarget>
          <predicate>count(soap11:Body/*) le 1</predicate>
          <prescription level="mandatory"/>
          <errorMessage>
            The content of the envelope does not match the
            wsdl:message definition. 
            the child element of soap11:Body is not an instance of the
            global element declaration referenced by the corresponding
            wsdl:part.
          </errorMessage>
          <diagnostic>
            Non-matching WSDL operation and envelope.
          </diagnostic>
		    </testAssertion>

        <testAssertion  
           xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
           xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
           xmlns:xsd="http://www.w3.org/2001/XMLSchema";
           xmlns:xs="http://www.w3.org/2001/XMLSchema";
           xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
           xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
           xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
           id="BP1111a"
           enable="true" >
          <!-- preReq="BP1701 BP1308" -->
          <description>
            The content of the request message envelope matches the definition in the
            WSDL document. In case of a doc-lit binding, the child
            element of soap11:body is an instance of the global element
            declaration referenced by the corresponding wsdl:part. It is assumed the 
            doc-lit binding has only 1 part. (NOTE: BP211 assumed prereq for the cotarget)
          </description>
          <target>
            /wsil:testLog/wsil:messageLog/wsil:message
            [@type = 'request'
            and 
            not ( ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo
            [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] )
            ]
            /wsil:messageContents/soap11:Envelope[soap11:Body[not (soap11:Fault)]]
            [
            some $myenv in .
            satisfies
            (  every $message in //wsdl:definitions/wsdl:message satisfies ( (not($message/wsdl:part[1]/@type)  )
            and ( $myenv/soap11:Body/*[1] or $myenv/soap11:Header/wsa:Action ))
            ) 
            ]
          </target >
          <!-- assume BP2017 passed for cotarget --> 
          <cotarget name="myOpBinding">
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation
            [
            some $opBinding in . satisfies 
            (if ($target/soap11:Body/*[1] ) then
            (some $dmesg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message
            [wsdl:part[fn:resolve-QName(xsd:string(@element), . ) = fn:node-name($target/soap11:Body/*[1])] ]
            satisfies
            some $dopmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:input
            [fn:local-name-from-QName(fn:resolve-QName(xsd:string(@message), . )) = $dmesg/@name] 
            satisfies
            $opBinding/@name = $dopmsg/../@name
            ) else fn:true()
            )   and
            ( if ($target/soap11:Header/wsa:Action) then
            (  some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:input satisfies
            ($target/soap11:Header/wsa:Action =     
            (    if ($opmsg/@wsam:Action) then $opmsg/@wsam:Action
            else fn:concat($opmsg/../../../@targetNamespace,
            if (not(fn:ends-with($opmsg/../../../@targetNamespace,'/'))) then '/' else '',
            $opmsg/../../@name, 
            '/',
            if($opmsg/@name) then $opmsg/@name
            else fn:concat($opmsg/../@name, 'Request' )  )
            )
            )  and ( $opBinding/@name = $opmsg/../@name  )  )
            else fn:true()
            )
            ]
          </cotarget>
          <prerequisite>
            some $myOpBind in $myOpBinding satisfies
            (
            not($myOpBind/..//wsoap11:body/@use != 'literal') 
            and (count($myOpBind/..//wsoap11:body) = count($myOpBind/..//wsoap11:body/@use))  and
            $myOpBind/../wsoap11:binding[ not (@style = 'rpc' )] and
            $myOpBind/wsoap11:operation[ not (@style = 'rpc' )] 
            )
          </prerequisite>          
          <predicate>count(soap11:Body/*) le 1</predicate>
          <prescription level="mandatory"/>
          <errorMessage>
            The content of the request message envelope associated with a doc-lit WSDL binding 
            does not match the wsdl:message definition. 
            the child element of soap11:body is not an instance of the
            global element declaration referenced by the corresponding
            wsdl:part.
          </errorMessage>
          <diagnostic>
            Non-matching WSDL operation and envelope.
          </diagnostic>
        </testAssertion>
        
        <testAssertion 
           xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
           xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
           xmlns:xsd="http://www.w3.org/2001/XMLSchema";
           xmlns:xs="http://www.w3.org/2001/XMLSchema";
           xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
           xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
           xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
           id="BP1111b"
           enable="true">
          <!-- case response. preReq="BP1701 BP1308" -->
          <description>
            The content of the response message envelope matches the definition in the
            WSDL document. In case of a doc-lit binding, the child
            element of soap11:Body is an instance of the global element
            declaration referenced by the corresponding wsdl:part. It is assumed the 
            doc-lit binding has only 1 part. (NOTE: BP211 assumed prereq for the cotarget)
          </description>
          <target>
            /wsil:testLog/wsil:messageLog/wsil:message
            [@type = 'response' 
            or 
            ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo
            [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ]
            ]
            /wsil:messageContents/soap11:Envelope[soap11:Body[not (soap11:Fault)]]
            [
            some $myenv in .
            satisfies
            (  every $message in //wsdl:definitions/wsdl:message satisfies ( (not($message/wsdl:part[1]/@type)  )
            and ( $myenv/soap11:Body/*[1] or $myenv/soap11:Header/wsa:Action ))
            ) 
            ]
          </target > 
          <!-- assume bp2017 passed for cotarget -->
          <cotarget name="myOpBinding">
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation
            [
            some $opBinding in . satisfies 
            (if ($target/soap11:Body/*[1] ) then
            (some $dmesg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[wsdl:part[fn:resolve-QName(xsd:string(@element), . ) = fn:node-name($target/soap11:Body/*[1])] ]
            satisfies
            some $dopmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:output
            [fn:local-name-from-QName(fn:resolve-QName(xsd:string(@message), . )) = $dmesg/@name] 
            satisfies
            $opBinding/@name = $dopmsg/../@name
            ) else fn:true()
            )   and
            ( if ($target/soap11:Header/wsa:Action) then
            (  some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:output satisfies
            ($target/soap11:Header/wsa:Action =     
            (    if ($opmsg/@wsam:Action) then $opmsg/@wsam:Action
            else fn:concat($opmsg/../../../@targetNamespace,
            if (not(fn:ends-with($opmsg/../../../@targetNamespace,'/'))) then '/' else '',
            $opmsg/../../@name, 
            '/',
            if($opmsg/@name) then $opmsg/@name
            else fn:concat($opmsg/../@name, 'Response' )  )
            )
            )  and ( $opBinding/@name = $opmsg/../@name  )  )
            else fn:true()
            )
            ]
          </cotarget>
          <prerequisite>
            some $myOpBind in $myOpBinding satisfies
            (
            not($myOpBind/..//wsoap11:body/@use != 'literal') 
            and (count($myOpBind/..//wsoap11:body) = count($myOpBind/..//wsoap11:body/@use))  and
            $myOpBind/../wsoap11:binding[ not (@style = 'rpc' )] and
            $myOpBind/wsoap11:operation[ not (@style = 'rpc' )] 
            )
          </prerequisite>
          <predicate>count(soap11:Body/*) le 1</predicate>
          <prescription level="mandatory"/>
          <errorMessage>
            The content of the response message envelope does not match the
            wsdl:message definition. 
            the child element of soap11:Body is not an instance of the
            global element declaration referenced by the corresponding
            wsdl:part.
          </errorMessage>
          <diagnostic>
            Non-matching WSDL operation and envelope.
          </diagnostic>
        </testAssertion>

		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="true"
				   id="BP2019"
				   preReq="BP2406">
		      <description>
			For doc/lit binding, the "namespace" attribute is not specified in any
			contained wsoap11:body, wsoap11:header,
			wsoap11::headerfault, wsoap11:fault elements
		      </description>
		      <target>
			/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[not(.//wsoap11:*[@style = 'rpc'])]
		      </target>
		      <predicate> 
			every $wopbind in ( $target//wsoap11:body | $target//wsoap11:fault | $target//wsoap11:header | $target//wsoap11:headerfault )
			satisfies   not($wopbind/@namespace)
		      </predicate>
		      <prescription level="mandatory"/>
		      <errorMessage>
			The binding is of style "document" and use "literal", and
			the "namespace" attribute is specified in some
			wsoap11:body, wsoap11:header, wsoap11::headerfault,
			wsoap11:fault element
		      </errorMessage>
		      <diagnostic>
			Contained element with namespace attribute.
		      </diagnostic>
		    </testAssertion>

		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="true"
				   id="BP2020"
				   preReq="BP2017">
		      <description>
			The namespace attribute is specified on all wsoap11:body
			elements and the value of the namespace attribute is an
			absolute URI.
		      </description>
		      <target>
			/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[.//wsoap11:*[@style = 'rpc']]
		      </target>
		      <predicate>every $wbody in .//wsoap11:body satisfies fn:count(fn:tokenize($wbody/@namespace,':')) > 1</predicate>
		      <!-- predicate>not (//wsoap11:body[not(@namespace)])</predicate -->
		      <prescription level="mandatory"/>
		      <errorMessage>
			A wsoap11:body element does not have a namespace
			attribute, or the namespace attribute value is not an
			absolute URI.
		      </errorMessage>
		      <diagnostic>
			wsoap11:body elements that failed the assertion
		      </diagnostic>
		    </testAssertion>
		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
           enable="true"
				   id="BP2117"
				   preReq="BP2017 BP2406">
		      <description>
			The rpc-literal binding does not have a namespace
			attribute specified on a contained wsoap11:header,
			wsoap11:headerfault, and wsoap11:fault element.
		      </description>
		      <target>
			/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[.//wsoap11:*[@style = 'rpc']]
		      </target>
		      <predicate>not(.//wsoap11:fault[@namespace]) and not(.//wsoap11:header[@namespace]) and not(.//wsoap11:headerfault[@namespace])</predicate>
		      <prescription level="mandatory"/>
		      <errorMessage>
			An rpc-literal binding has the namespace attribute
			specified on contained wsoap11:header,
			wsoap11:headerfault and wsoap11:fault elements.
		      </errorMessage>
		      <diagnostic>
			{Defective wsdl:binding}{defective wsoap11:header,
			wsoap11:headerfault, or wsoap11:fault element}
		      </diagnostic>
		    </testAssertion>

        <testAssertion id="BP2118" enable="true"
                       xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
                       xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
                       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
                       xmlns:xsd="http://www.w3.org/2001/XMLSchema";
                       xmlns:xs="http://www.w3.org/2001/XMLSchema";
                       xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
                       xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
                       xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";>
          <description>
            The list (or set) of wsdl:operation elements for the
            contained wsdl:binding is the same as the list of
            wsdl:operations for the referred wsdl:portType.
          </description>
          <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding</target>
          <cotarget name="myportype">/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType[@name = fn:local-name-from-QName(fn:resolve-QName(xsd:string($target/@type), $target))]</cotarget>
          <predicate>
            (every $operation in $myportype/wsdl:operation satisfies  <br/>
            (some $bop in $target/wsdl:operation satisfies  <br/>
            $bop/@name = $operation/@name)) and <br/>
            (count(wsdl:operation) = count($myportype/wsdl:operation)) and <br/>
            not(wsdl:operation[@name = preceding-sibling::wsdl:operation/@name  ]) 
          </predicate>
          <prescription level="mandatory"/>
          <errorMessage>
            A wsdl:binding does not have the same list of
            wsdl:operations as the wsdl:portType to which it refers.
          </errorMessage>
          <diagnostic>
            {unmatching wsdl:binding element}{unmatching portType
            element}
          </diagnostic>
        </testAssertion>

		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="true"
				   id="BP2021"
				   preReq="BP2703">
		      <description>
			The wsdl:input element and wsdl:output element of each
			operation uses the attribute name "part" with a Schema
			type of "NMTOKEN" and does not use "parts", for both
			wsoap11:header elements and wsoap11:headerfault
			elements.
		      </description>
	          <target>
                /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation[wsdl:input/wsoap11:header or wsdl:input/wsoap11:headerfault or wsdl:output/wsoap11:header or  wsdl:output/wsoap11:headerfault]
		      </target>
		      <predicate>
            		(not(wsdl:input/wsoap11:header) or (wsdl:input/wsoap11:header[@part] and not(wsdl:input/wsoap11:header[@parts]) and
            		not(wsdl:input/wsoap11:header[contains(@part, ' ')]) and not(wsdl:input/wsoap11:header[contains(@part, ',')]))) and 
            		(not(wsdl:input/wsoap11:headerfault) or (wsdl:input/wsoap11:headerfault[@part] and not(wsdl:input/wsoap11:headerfault[@parts]) and
            		not(wsdl:input/wsoap11:headerfault[contains(@part, ' ')]) and not(wsdl:input/wsoap11:headerfault[contains(@part, ',')]))) and 
            		(not(wsdl:output/wsoap11:header) or (wsdl:output/wsoap11:header[@part] and not(wsdl:output/wsoap11:header[@parts]) and 
            		not(wsdl:output/wsoap11:header[contains(@part, ' ')]) and not(wsdl:output/wsoap11:header[contains(@part, ',')]))) and 
            		(not(wsdl:output/wsoap11:headerfault) or (wsdl:output/wsoap11:headerfault[@part] and not(wsdl:output/wsoap11:headerfault[@parts]) and
            		not(wsdl:output/wsoap11:headerfault[contains(@part, ' ')]) and not(wsdl:output/wsoap11:headerfault[contains(@part, ',')]))) 
		      </predicate>
		      <prescription level="mandatory"/>
		      <errorMessage>
			The wsdl:input element or wsdl:output element of an
			operation does not use the attribute name "part" with a
			Schema type of "NMTOKEN" for wsoap11:header elements or
			wsoap11:headerfault elements, or it uses "parts".
		      </errorMessage>
		      <diagnostic>
			wsdl:input element or wsdl:output element of the defective
			operation.
		      </diagnostic>
		    </testAssertion>
		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="true"
				   id="BP2022"
				   >
		      <description>
			the name attribute is specified on the wsoap11:fault
			element.
		      </description>
		      <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation/wsdl:fault/wsoap11:fault</target>
		      <predicate>@name and @name != '' </predicate>
		      <prescription level="mandatory"/>
		      <errorMessage>
			Defective wsoap11:fault element: the name attribute is
			not specified on the wsoap11:fault element.
		      </errorMessage>
		      <diagnostic>
			Defective wsoap11:fault element
		      </diagnostic>
		    </testAssertion>
		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="true"
				   id="BP2032"
				   >
		      <description>
			the name attribute that is specified on the wsoap11:fault
			element matches the value specified on the parent element
			wsdl:fault.
		      </description>
		      <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation/wsdl:fault</target>
		      <predicate>@name = wsoap11:fault/@name</predicate>
		      <prescription level="mandatory"/>
		      <errorMessage>
			Defective wsoap11:fault element: the "name" attribute
			value does not match the value of the "name" attribute on
			the parent element wsdl:fault.
		      </errorMessage>
		      <diagnostic>
			Defective wsoap11:fault element
		      </diagnostic>
		    </testAssertion>

        <testAssertion id="BP1005" enable="true"
          xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
          xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
          xmlns:xsd="http://www.w3.org/2001/XMLSchema";
          xmlns:xs="http://www.w3.org/2001/XMLSchema";
          xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
          xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
          xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
          >
          <!-- preReq="BP1601 BP1202" -->
          <description>
            The envelope has a wrapper element with a name equal to
            the name attribute on the wsdl:operation element suffixed
            with string "Response".
          </description>
          
          <target>
            /wsil:testLog/wsil:messageLog/wsil:message
            [@type = 'response' 
            or 
            ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo
            [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ]
            ]
            /wsil:messageContents/
            soap11:Envelope[soap11:Body/* and not (soap11:Body/soap11:Fault)]
            [
            some $myenv in . satisfies
            some $message in //wsdl:definitions/wsdl:message satisfies ($message/wsdl:part[1]/@type)
            ]
          </target>
          <cotarget name="related-Request">
            /wsil:testLog/wsil:messageLog/wsil:message
            [ @type = 'request' and
            (if (not(./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:MessageID) ) then (
            @conversation = $target/../../@conversation) else
            (./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:MessageID =
            $target/soap11:Header/wsa:RelatesTo
            [@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)]
            ))
            ]/wsil:messageContents/soap11:Envelope[soap11:Body/*]
          </cotarget>
          <!-- assume BP2017 passed for cotarget -->
          <cotarget name="myOpBindings">
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[.//wsoap11:*
            [@style = 'rpc']]/wsdl:operation[@name =   fn:local-name($related-Request[1]/soap11:Body/*[1])]     
          </cotarget>
          <predicate>
            fn:concat(fn:local-name($related-Request[1]/soap11:Body/*[1]), 'Response' ) = 
            fn:local-name($target/soap11:Body/*[1])
          </predicate>
          <prescription level="mandatory"/>
          <errorMessage>
            Wrapper element in the envelope does not have a value
            equal to the name attribute on the wsdl:operation element
            suffixed with string "Response".
          </errorMessage>
          <diagnostic/>
        </testAssertion>

		    <testAssertion id="BP1008a" enable="true"
           xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   >
          <!-- preReq="BP1701" -->
          <description>
            The envelope has part accessor elements for parameters and
            return value, in no namespaces, but the descendants of
            these are namespace qualified as defined by the schema in
            which their types are defined.
          </description>
          <target>
            /wsil:testLog/wsil:messageLog/wsil:message
            [@type = 'request'
            and 
            not ( ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo
            [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] )
            ]
            /wsil:messageContents/soap11:Envelope[soap11:Body/* and  not (soap11:Body//soap11:Fault) ]
            [
            some $myenv in . satisfies
            some $message in //wsdl:definitions/wsdl:message satisfies ($message/wsdl:part[1]/@type)
            ]
          </target>
          <!-- assume BP2017 passed for cotarget -->
          <cotarget name="myOpBinding">
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding
            [.//wsoap11:*[@style = 'rpc']]/wsdl:operation[@name =  fn:local-name-from-QName(node-name($target/soap11:Body/*[1]))]
          </cotarget>
          <predicate>
            every $accessor in $target/soap11:Body/*/* satisfies
            ( fn:namespace-uri-from-QName(fn:node-name($accessor)) = '' or fn:namespace-uri-from-QName(fn:node-name($accessor)) = 'http://www.ws-i.org/testing/2008/02/log/')
          </predicate>
          <prescription level="mandatory"/>
          <errorMessage>
            The request envelope has part accessor elements for  parameters and
            return value, within namespaces.
          </errorMessage>
          <diagnostic/>
		    </testAssertion>
        
		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   id="BP1008b"
				   enable="true">
          <!-- rpc-lit / response case -->
          <!-- preReq="BP1701" -->
          <description>
            The response envelope has part accessor elements for parameters and
            return value, in no namespaces.
          </description>
          <target>
            /wsil:testLog/wsil:messageLog/wsil:message
            [@type = 'response' 
            or 
            ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo
            [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ]
            ]
            /wsil:messageContents/soap11:Envelope[soap11:Body/* and not (soap11:Body/soap11:Fault)]
            [
            some $myenv in . satisfies
            some $message in //wsdl:definitions/wsdl:message satisfies ($message/wsdl:part[1]/@type)
            ]
          </target>
          <!-- assume BP2017 passed for cotarget -->
          <cotarget name="myOpBinding">
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[.//wsoap11:*[@style = 'rpc']]/ <br/>
            wsdl:operation  <br/>
            [fn:string-join((@name, 'Response' ),'' ) = fn:local-name-from-QName(node-name($target/soap11:Body/*[1]))]
          </cotarget>
          <predicate>
            every $accessor in ./soap11:Body/*/* satisfies
            ( fn:namespace-uri-from-QName(fn:node-name($accessor)) = '' or fn:namespace-uri-from-QName(fn:node-name($accessor)) = 'http://www.ws-i.org/testing/2008/02/log/' )
          </predicate>
          <prescription level="mandatory"/>
          <errorMessage>
            The response envelope has part accessor elements for parameters and
            return value, within namespaces.
          </errorMessage>
          <diagnostic/>
		    </testAssertion>
		    
		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="true"
				   id="BP1755a">
          <!-- preReq="BP1701" -->
          <description>
            Each part accessor element in the envelope has a local
            name of the same value as the name attribute of the
            corresponding wsdl:part element.
          </description>
          <target>
            /wsil:testLog/wsil:messageLog/wsil:message
            [@type = 'request'
            and 
            not ( ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo
            [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] )
            ]
            /wsil:messageContents/soap11:Envelope[soap11:Body/* and  not (soap11:Body//soap11:Fault) ]
            [
            some $myenv in . satisfies
            some $message in //wsdl:definitions/wsdl:message satisfies ($message/wsdl:part[1]/@type)
            ]
          </target>
          <!-- assume BP2017 passed for cotarget -->
          <cotarget name="myOpBinding">
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding
            [.//wsoap11:*[@style = 'rpc']]/wsdl:operation[@name =  fn:local-name-from-QName(node-name($target/soap11:Body/*[1]))]
          </cotarget>
          <predicate>
            (some $mbody in ./soap11:Body satisfies
            every $accessor in $mbody/*/* satisfies
            some $dbody in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation
            [@name = fn:local-name($mbody/*[1])]/wsdl:input/wsoap11:body satisfies
            some $dopmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation
            [@name = fn:local-name($mbody/*[1])]/*[fn:local-name(.) = 'input' ] satisfies
            some $dmesg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message
            [@name = fn:tokenize(xsd:string($dopmsg/@message),':' )[fn:last() ] ]satisfies
            some $mpart in $dmesg/wsdl:part satisfies
            $mpart/@name = fn:local-name($accessor)
            )
          </predicate>
          <prescription level="mandatory"/>
          <errorMessage>
            The envelope referenced by an rpc-literal binding has a
            part accessor element with a local name that is not the
            same value as the name attribute of the corresponding
            wsdl:part element.
          </errorMessage>
          <diagnostic/>
		    </testAssertion>

		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="true"
				   id="BP1755b">
          <!-- preReq="BP1701" -->
          <description>
            Each part accessor element in the response envelope has a local
            name of the same value as the name attribute of the
            corresponding wsdl:part element.
          </description>    
          <target>
            /wsil:testLog/wsil:messageLog/wsil:message
            [@type = 'response' 
            or 
            ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo
            [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ]
            ]
            /wsil:messageContents/soap11:Envelope[soap11:Body/* and not (soap11:Body/soap11:Fault)]
            [
            some $myenv in . satisfies
            some $message in //wsdl:definitions/wsdl:message satisfies ($message/wsdl:part[1]/@type)
            ]
          </target>
          <!-- assume BP2017 passed for cotarget -->
          <cotarget name="myOpBinding">
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[.//wsoap11:*[@style = 'rpc']]/
            wsdl:operation
            [fn:string-join((@name, 'Response' ),'' ) = fn:local-name-from-QName(node-name($target/soap11:Body/*[1]))]
          </cotarget>
          <predicate>
            (some $mbody in ./soap11:Body satisfies
            every $accessor in $mbody/*/* satisfies
            some $dbody in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation[fn:string-join((@name, 'Response' ),'')  = fn:local-name($mbody/*[1])]/wsdl:output/wsoap11:body satisfies
            some $dopmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation[fn:string-join((@name, 'Response'),'') = fn:local-name($mbody/*[1])]/*[fn:local-name(.) = 'output' ] satisfies
            some $dmesg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[@name = fn:tokenize(xsd:string($dopmsg/@message),':' )[fn:last() ] ] satisfies
            some $mpart in $dmesg/wsdl:part satisfies
            $mpart/@name = fn:local-name($accessor)
            ) 
          </predicate>
          <prescription level="mandatory"/>
          <errorMessage>
            The response envelope referenced by an rpc-literal binding has a
            part accessor element with a local name that is not the
            same value as the name attribute of the corresponding
            wsdl:part element.
          </errorMessage>
          <diagnostic/>
		    </testAssertion>
		    
		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="false"
				   id="BP1010">
		      <!-- preReq="BP1701" -->
		      <description>
			The envelope has part accessor elements for parameters and
			return value, in no namespaces, but the descendants of
			these are namespace qualified as defined by the schema in
			which their types are defined.
		      </description>
		      <target>
			//soap11:Envelope[every $x in soap11:Body/* satisfies (
			/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation[
			@name=local-name-from-QName(node-name($x))]/wsoap11:operation[@style="rpc"] |
			/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation[
			@name=local-name-from-QName(node-name($x))]/../wsoap11:binding[@style="rpc"])
			]
		      </target>
		      <predicate>every $accessor in (.//soap11:Body/*/*) satisfies (
			for $accessorName in local-name-from-QName(node-name($accessor)) return (
			for $type in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message/wsdl:part[@name=$accessorName]/@type return (
			for $nsTag in substring-before($type, ':') return (
			for $ns in namespace-uri-for-prefix($nsTag, $accessor) return (
			every $accessorChild in $accessor/* satisfies (
			namespace-uri($accessorChild) = $ns
			))))))</predicate>
		      <prescription level="mandatory"/>
		      <errorMessage>
			The envelope has part accessor elements for parameters and
			return value, within namespaces, or the descendants of
			these elements are not namespace qualified as defined by
			the schema in which their types are defined.
		      </errorMessage>
		      <diagnostic/>
		    </testAssertion>

        <testAssertion   id="BP1009a"  enable="true"
             xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
             xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
             xmlns:xsd="http://www.w3.org/2001/XMLSchema";
             xmlns:xs="http://www.w3.org/2001/XMLSchema";
             xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
             xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
             xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
             >
          <!-- preReq="BP1601 BP1202" -->
          <!-- doc-lit / request case -->
          <description>
            The Envelope includes all wsoap11:headers specified in
            the wsdl:input (if request) or wsdl:output (if response)
            of the operation referred to by its wsdl:binding, and may
            also include headers that were not specified.
          </description>
          <target>
            /wsil:testLog/wsil:messageLog/wsil:message
            [@type = 'request'
            and 
            not ( ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo
            [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] )
            ]
            /wsil:messageContents/soap11:Envelope[soap11:Body[not (soap11:Fault)]]
            [
            some $myenv in .
            satisfies
            (  every $message in //wsdl:definitions/wsdl:message satisfies ( (not($message/wsdl:part[1]/@type)  )
            and ( $myenv/soap11:Body/*[1] or $myenv/soap11:Header/wsa:Action ))
            ) 
            ]
          </target >
          <!-- assume BP2017 passed for cotarget --> 
          <cotarget name="myOpBinding">
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation
            [
            some $opBinding in . satisfies
            (if ($target/soap11:Body/*[1] ) then
            (some $dmesg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message
            [wsdl:part[fn:resolve-QName(xsd:string(@element), . ) = fn:node-name($target/soap11:Body/*[1])] ]
            satisfies
            some $dopmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:input
            [fn:local-name-from-QName(fn:resolve-QName(xsd:string(@message), . )) = $dmesg/@name]
            satisfies
            $opBinding/@name = $dopmsg/../@name
            ) else fn:true()
            )   and
            ( if ($target/soap11:Header/wsa:Action) then
            (  some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:input satisfies 
            ($target/soap11:Header/wsa:Action =   
            (    if ($opmsg/@wsam:Action) then $opmsg/@wsam:Action
            else fn:concat($opmsg/../../../@targetNamespace,
            if (not(fn:ends-with($opmsg/../../../@targetNamespace,'/'))) then '/' else '',
            $opmsg/../../@name, 
            '/',
            if($opmsg/@name) then $opmsg/@name
            else fn:concat($opmsg/../@name, 'Request' )  )
            )
            )  and ( $opBinding/@name = $opmsg/../@name  )  )
            else fn:true() 
            )
            ]
          </cotarget>
          <prerequisite>
            $myOpBinding/wsdl:input/wsoap11:header
          </prerequisite>
          <predicate>
            some $myOpBind in $myOpBinding satisfies
            (
            every $inputhdr in $myOpBind/wsdl:input/wsoap11:header satisfies
            some $mpart in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message
            [@name = fn:local-name-from-QName(fn:resolve-QName(xsd:string($inputhdr/@message), $inputhdr)) ]
            /wsdl:part[ @name  = $inputhdr/@part] 
            satisfies  
            some $headerblk in $target/soap11:Header/* satisfies
            ( fn:resolve-QName(xsd:string($mpart/@element), $mpart ) = fn:node-name($headerblk) )
            )
          </predicate>
          <prescription level="mandatory"/>
          <errorMessage>
            Envelope does not include all wsoap11:headers specified
            in the wsdl:input (of request) of its bound operation.
          </errorMessage>
          <diagnostic/>
        </testAssertion>
      
        <testAssertion id="BP1009b" enable="true"
          xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
          xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
          xmlns:xsd="http://www.w3.org/2001/XMLSchema";
          xmlns:xs="http://www.w3.org/2001/XMLSchema";
          xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
          xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
          xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
          >
          <!-- preReq="BP1601 BP1202" -->
          <!-- doc-lit / response case -->
          <description>
            The Envelope includes all wsoap11:headers specified in
            the wsdl:input (if request) or wsdl:output (if response)
            of the operation referred to by its wsdl:binding, and may
            also include headers that were not specified.
          </description>
          <target>
            /wsil:testLog/wsil:messageLog/wsil:message
            [@type = 'response' 
            or 
            ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo
            [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ]
            ]
            /wsil:messageContents/soap11:Envelope[soap11:Body[not (soap11:Fault)]]
            [
            some $myenv in .
            satisfies
            (  every $message in //wsdl:definitions/wsdl:message satisfies ( (not($message/wsdl:part[1]/@type)  )
            and ( $myenv/soap11:Body/*[1] or $myenv/soap11:Header/wsa:Action ))
            ) 
            ]
          </target > 
          <!-- assume bp2017 passed for cotarget -->
          <cotarget name="myOpBinding">
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation
            [
            some $opBinding in . satisfies 
            (if ($target/soap11:Body/*[1] ) then
            (some $dmesg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[wsdl:part[fn:resolve-QName(xsd:string(@element), . ) = fn:node-name($target/soap11:Body/*[1])] ]
            satisfies
            some $dopmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:output
            [fn:local-name-from-QName(fn:resolve-QName(xsd:string(@message), . )) = $dmesg/@name] 
            satisfies
            $opBinding/@name = $dopmsg/../@name
            ) else fn:true()
            )   and
            ( if ($target/soap11:Header/wsa:Action) then
            (  some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:output satisfies
            ($target/soap11:Header/wsa:Action =     
            (    if ($opmsg/@wsam:Action) then $opmsg/@wsam:Action
            else fn:concat($opmsg/../../../@targetNamespace,
            if (not(fn:ends-with($opmsg/../../../@targetNamespace,'/'))) then '/' else '',
            $opmsg/../../@name, 
            '/',
            if($opmsg/@name) then $opmsg/@name
            else fn:concat($opmsg/../@name, 'Response' )  )
            )
            )  and ( $opBinding/@name = $opmsg/../@name  )  )
            else fn:true()
            )
            ]
          </cotarget>
          <prerequisite>
            $myOpBinding/wsdl:output/wsoap11:header
          </prerequisite>
          <predicate>
            some $myOpBind in $myOpBinding satisfies
            (
            every $outputhdr in $myOpBind/wsdl:output/wsoap11:header satisfies
            some $mpart in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message
            [@name = fn:local-name-from-QName(fn:resolve-QName(xsd:string($outputhdr/@message), $outputhdr)) ]
            /wsdl:part[ @name  = $outputhdr/@part] 
            satisfies  
            some $headerblk in $target/soap11:Header/* satisfies
            ( fn:resolve-QName(xsd:string($mpart/@element), $mpart ) = fn:node-name($headerblk) )
            )
          </predicate>
          <prescription level="mandatory"/>
          <errorMessage>
            Envelope does not include all wsoap11:headers specified
            in the wsdl:input (if request) or wsdl:output (if
            response) of its bound operation.
          </errorMessage>
          <diagnostic/>
        </testAssertion>

        <testAssertion id="BP1009c" enable="true"
           xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
           xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
           xmlns:xsd="http://www.w3.org/2001/XMLSchema";
           xmlns:xs="http://www.w3.org/2001/XMLSchema";
           xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
           xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
           xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
           >
          <!-- preReq="BP1601 BP1202" -->
          <!-- rpc-lit / request case -->
          <description>
            The Envelope includes all wsoap11:headers specified in
            the wsdl:input (for request)
            of the operation referred to by its wsdl:binding, and may
            also include headers that were not specified.
          </description>
          <target>
            /wsil:testLog/wsil:messageLog/wsil:message
            [@type = 'request' 
            and 
            not (./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo
            [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] )
            ]
            /wsil:messageContents/soap11:Envelope[soap11:Body/* and not (soap11:Body//soap11:Fault)]
            [
            some $myenv in . satisfies
            some $message in //wsdl:definitions/wsdl:message satisfies ($message/wsdl:part[1]/@type)
            ]
          </target>
          <!-- assume BP2017 passed for cotarget -->
          <cotarget name="myOpBinding">
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[.//wsoap11:*[@style = 'rpc']]/
            wsdl:operation[@name =  fn:local-name-from-QName(node-name($target/soap11:Body/*[1]))]
          </cotarget>
          <prerequisite>
            $myOpBinding/wsdl:input/wsoap11:header
          </prerequisite>
          <predicate>
            some $myOpBind in $myOpBinding satisfies
            (
            every $inputhdr in $myOpBind/wsdl:input/wsoap11:header satisfies
            some $mpart in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message
            [@name = fn:local-name-from-QName(fn:resolve-QName(xsd:string($inputhdr/@message), $inputhdr)) ]
            /wsdl:part[ @name  = $inputhdr/@part] 
            satisfies  
            some $headerblk in $target/soap11:Header/* satisfies
            ( fn:resolve-QName(xsd:string($mpart/@element), $mpart ) = fn:node-name($headerblk) )
            )
          </predicate>
          <prescription level="mandatory"/>
          <errorMessage>
            Envelope does not include all wsoap11:headers specified
            in the wsdl:input (if request) or wsdl:output (if
            response) of its bound operation.
          </errorMessage>
          <diagnostic/>
        </testAssertion>

        <testAssertion id="BP1009d" enable="true"
           xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
           xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
           xmlns:xsd="http://www.w3.org/2001/XMLSchema";
           xmlns:xs="http://www.w3.org/2001/XMLSchema";
           xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
           xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
           xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
           >
          <!-- preReq="BP1601 BP1202" -->
          <!-- rpc-lit / response case -->
          <description>
            The Envelope includes all wsoap11:headers specified in
            the  wsdl:output (for response)
            of the operation referred to by its wsdl:binding, and may
            also include headers that were not specified.
          </description>
          <target>
            /wsil:testLog/wsil:messageLog/wsil:message
            [@type = 'response'
            or 
            ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo
            [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ]
            ]
            /wsil:messageContents/soap11:Envelope[soap11:Body/* and  not (soap11:Body//soap11:Fault) ]
            [
            some $myenv in . satisfies
            some $message in //wsdl:definitions/wsdl:message satisfies ($message/wsdl:part[1]/@type)
            ]
          </target>
          <!-- assume BP2017 passed for cotarget -->
          <cotarget name="myOpBinding">
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding
            [.//wsoap11:*[@style = 'rpc']]/wsdl:operation
            [fn:string-join((@name, 'Response' ),'' ) = fn:local-name-from-QName(node-name($target/soap11:Body/*[1]))]
          </cotarget>
          <prerequisite>
            $myOpBinding/wsdl:output/wsoap11:header
          </prerequisite>
          <predicate>
            some $myOpBind in $myOpBinding satisfies
            (
            every $outputhdr in $myOpBind/wsdl:output/wsoap11:header satisfies
            some $mpart in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message
            [@name = fn:local-name-from-QName(fn:resolve-QName(xsd:string($outputhdr/@message), $outputhdr)) ]
            /wsdl:part[ @name  = $outputhdr/@part] 
            satisfies  
            some $headerblk in $target/soap11:Header/* satisfies
            ( fn:resolve-QName(xsd:string($mpart/@element), $mpart ) = fn:node-name($headerblk) )
            )
          </predicate>
          <prescription level="mandatory"/>
          <errorMessage>
            Envelope does not include all wsoap11:headers specified
            in the wsdl:input (if request) or wsdl:output (if
            response) of its bound operation.
          </errorMessage>
          <diagnostic/>
        </testAssertion>

        <testAssertion id="BP1116a" enable="true"
                       xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
                       xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
                       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
                       xmlns:xsd="http://www.w3.org/2001/XMLSchema";
                       xmlns:xs="http://www.w3.org/2001/XMLSchema";
                       xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
                       xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
                       xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
                       preReq="BP1006">
          <!-- doc-lit "logical" request case -->
          <description>
            The SOAPAction parameter on the Content-Type header if present
            has value equal to the value of the corresponding
            wsoap11:operation/@soapAction attribute, and an empty
            string ("") if there is no such attribute.
          </description>
          <target>
            /wsil:testLog/wsil:messageLog/wsil:message
            [wsil:httpHeaders/wsil:contentTypeHeader/wsil:parameter/@key = 'SOAPAction' 
            (: and @type = 'request' :)
            and 
            not ( ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo
            [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] )
            ]
            /wsil:messageContents/soap11:Envelope[soap11:Body[not (soap11:Fault)]]
            [
            some $myenv in .
            satisfies
            (  every $message in //wsdl:definitions/wsdl:message satisfies ( (not($message/wsdl:part[1]/@type)  )
            and ( $myenv/soap11:Body/*[1] or $myenv/soap11:Header/wsa:Action ))
            ) 
            ]
          </target >
          <cotarget name="myOpBinding">
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation
            [
            some $opBinding in . satisfies 
            (if ($target/soap11:Body/*[1] ) then
            (some $dmesg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message
            [wsdl:part[fn:resolve-QName(xsd:string(@element), . ) = fn:node-name($target/soap11:Body/*[1])] ]
            satisfies
            some $dopmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:input
            [fn:local-name-from-QName(fn:resolve-QName(xsd:string(@message), . )) = $dmesg/@name] 
            satisfies
            $opBinding/@name = $dopmsg/../@name
            ) else fn:true()
            )   and
            ( if ($target/soap11:Header/wsa:Action) then
            (  some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:input satisfies
            ($target/soap11:Header/wsa:Action =     
            (    if ($opmsg/@wsam:Action) then $opmsg/@wsam:Action
            else fn:concat($opmsg/../../../@targetNamespace,
            if (not(fn:ends-with($opmsg/../../../@targetNamespace,'/'))) then '/' else '',
            $opmsg/../../@name, 
            '/',
            if($opmsg/@name) then $opmsg/@name
            else fn:concat($opmsg/../@name, 'Request' )  )
            )
            )  and ( $opBinding/@name = $opmsg/../@name  )  )
            else fn:true()
            )
            ]
          </cotarget>
          <predicate>
            some $myOpBind in $myOpBinding satisfies
            (
            ($myOpBind/wsoap11:operation/@soapAction = $target/../../wsil:httpHeaders/wsil:contentTypeHeader/wsil:parameter
            [@key = 'SOAPAction']/@value) or (not ($myOpBind/wsoap11:operation/@soapAction ) and 
            $target/../../wsil:httpHeaders/wsil:contentTypeHeader/wsil:parameter[@key = 'SOAPAction']/@value = '') 
            )
          </predicate>
          <prescription level="mandatory"/>
          <errorMessage>
            The SOAPAction parameter on the Content-Type header if present
            does not match wsoap11:operation/@soapAction attribute. 
          </errorMessage>
          <diagnostic>
            {All HTTP headers}{soapAction value from the
            soabinding}.
          </diagnostic>
        </testAssertion>
    
        <testAssertion id="BP1116b" enable="true"
                       xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
                       xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
                       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
                       xmlns:xsd="http://www.w3.org/2001/XMLSchema";
                       xmlns:xs="http://www.w3.org/2001/XMLSchema";
                       xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
                       xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
                       xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
                       preReq="BP1006">
          <!-- rpc-lit / "logical" request case -->
    
          <description>
            The SOAPAction parameter on the Content-Type header if present
            has value equal to the value of the corresponding
            wsoap11:operation/@soapAction attribute, and an empty
            string ("") if there is no such attribute.
          </description>
          <target>
            /wsil:testLog/wsil:messageLog/wsil:message
            [wsil:httpHeaders/wsil:contentTypeHeader/wsil:parameter/@key = 'SOAPAction'  
            (: and @type = 'request' :)
            and 
            not ( ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo
            [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] )
            ]
            /wsil:messageContents/soap11:Envelope[soap11:Body/* and  not (soap11:Body//soap11:Fault) ]
            [
            some $myenv in . satisfies
            some $message in //wsdl:definitions/wsdl:message satisfies ($message/wsdl:part[1]/@type)
            ]
          </target>
          <cotarget name="myOpBinding">
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding
            [.//wsoap11:*[@style = 'rpc']]/wsdl:operation[@name =  fn:local-name-from-QName(node-name($target/soap11:Body/*[1]))]
          </cotarget>
          <predicate>
            some $myOpBind in $myOpBinding satisfies
            (
            ($myOpBind/wsoap11:operation/@soapAction = $target/../../wsil:httpHeaders/wsil:contentTypeHeader/wsil:parameter
            [@key = 'SOAPAction']/@value) or (not ($myOpBind/wsoap11:operation/@soapAction ) and 
            $target/../../wsil:httpHeaders/wsil:contentTypeHeader/wsil:parameter[@key = 'SOAPAction']/@value = '') 
            )
          </predicate>
          <prescription level="mandatory"/>
          <errorMessage>
            The SOAPAction parameter on the Content-Type header if present
            does not match wsoap11:operation/@soapAction attribute. 
          </errorMessage>
          <diagnostic>
            {All HTTP headers}{soapAction value from the
            soabinding}.
          </diagnostic>
        </testAssertion>

        <testAssertion id="BP2122" enable="true"
           xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
           xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
           xmlns:xsd="http://www.w3.org/2001/XMLSchema";
           xmlns:xs="http://www.w3.org/2001/XMLSchema";
           xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
           xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
           xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
           xmlns:wsoap11="http://schemas.xmlsoap.org/wsdl/soap/";
           >
          <description>
            The data type definition if any within the wsdl:types
            element is an XML schema definition defined in the XML
            Schema 1.0 Recommendation with the namespace URI
            "http://www.w3.org/2001/XMLSchema";.
          </description>
          <target>
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile[wsdl:definitions//xsd:schema]
          </target>
          <cotarget name="metadata">$target/@schemaValid</cotarget> 
          <predicate>
                  $target/@schemaValid = fn:true()
          </predicate>
          <!-- The following is a strongly typed schema aware test, which cannot work,
               since when using schema aware  processing, xslt validation failures are fatal
               <predicate>
                 every $s in .//xsd:schema satisfies $s instance of  schema-element(xsd:schema)     
          </predicate-
             -->
          <prescription level="mandatory"/>
          <errorMessage>
            A wsdl:types element contained a data type definition that
            is not an XML schema definition.
          </errorMessage>
          <diagnostic>Defective data type definition.</diagnostic>
        </testAssertion>

       <testAssertion id="BP1090a"  enable="true"
                      xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
                      xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
                      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
                      xmlns:xsd="http://www.w3.org/2001/XMLSchema";
                      xmlns:xs="http://www.w3.org/2001/XMLSchema";
                      xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
                      xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";>
         <!-- doc-lit fault case -->
         <description>
           For a Fault response message with a wsa:Action element, defined using a doc/lit binding, the following must hold:
           - The wsa:Action value in the soap11:Header must equal to that specified from the WSDL. 
         </description>
         <target>
           /wsil:testLog/wsil:messageLog/wsil:message
           [@type = 'response' 
           or 
           ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo
           [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ]
           ]
           /wsil:messageContents/soap11:Envelope[soap11:Body/soap11:Fault and soap11:Header[wsa:Action]]
           [
           some $myenv in .
           satisfies
           (  every $message in //wsdl:definitions/wsdl:message satisfies ( (not($message/wsdl:part[1]/@type)  )
           and ( $myenv/soap11:Body/*[1] or $myenv/soap11:Header/wsa:Action ))
           ) 
           ]
         </target >       
         <cotarget name="relatedRequest">
           /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/
           wsil:messageContents/soap11:Envelope[soap11:Header/wsa:MessageID = 
           $target/soap11:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)]   ][1]
         </cotarget>
         <!-- assume BP2017 passed for cotarget -->
         <cotarget name="myOpBinding">
           /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation
           [
           some $opBinding in . satisfies 
           (if ($relatedRequest/soap11:Body/*[1] ) then
           (some $dmesg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message
           [wsdl:part[fn:resolve-QName(xsd:string(@element), . ) = fn:node-name($relatedRequest[1]/soap11:Body/*[1])] ]
           satisfies
           some $dopmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:input
           [fn:local-name-from-QName(fn:resolve-QName(xsd:string(@message), . )) = $dmesg/@name] 
           satisfies
           $opBinding/@name = $dopmsg/../@name
           ) else fn:true()
           )   and
           ( if ($relatedRequest/soap11:Header/wsa:Action) then
           (  some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:input satisfies
           ($relatedRequest/soap11:Header/wsa:Action =     
           (    if ($opmsg/@wsam:Action) then $opmsg/@wsam:Action
           else fn:concat($opmsg/../../../@targetNamespace,
            if (not(fn:ends-with($opmsg/../../../@targetNamespace,'/'))) then '/' else '',
            $opmsg/../../@name, 
            '/',
            if($opmsg/@name) then $opmsg/@name
            else fn:concat($opmsg/../@name, 'Request' )  )
           )
           )  and ( $opBinding/@name = $opmsg/../@name  )  )
           else fn:true()
           )
           ]
         </cotarget >
         <predicate> 
           (: correct wsa:Action value :)
           not(/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation[ $myOpBinding/@name = @name ]/wsdl:fault)
           or
           (some $detailQName in fn:node-name($target/soap11:Body/soap11:Fault/detail/*[1]) 
           satisfies
           some $msgDef in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message
           [ wsdl:part[1][fn:resolve-QName(xsd:string(@element),.) = $detailQName  ]]  
           satisfies
           (some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation[ $myOpBinding/@name = @name ] satisfies
           (not
           ($opmsg/wsdl:fault[ fn:local-name-from-QName(fn:resolve-QName(xsd:string(./@message),.)) = $msgDef/@name ])
           or
           (some $flt in $opmsg/wsdl:fault[ fn:local-name-from-QName(fn:resolve-QName(xsd:string(./@message),.)) = $msgDef/@name ]
           satisfies
           ($target/soap11:Header/wsa:Action =     
           ( if ($flt/@wsam:Action) then $flt/@wsam:Action
           else fn:concat($opmsg/../../@targetNamespace,
           if (not(fn:ends-with($opmsg/../../@targetNamespace,'/'))) then '/' else '',
           $opmsg/../@name, '/', $opmsg/@name, '/Fault/', $flt/@name )
           )
           ) )) 
           ))
         </predicate>
         <prescription level="mandatory"/>
         <reporting true="passed" false="warning"/>
         <errorMessage>
           A Fault response message defined using a doc/lit binding has a wsa:Action value that is
           not equal to that specified in the WSDL. This may be due to the fact that the fault was
           generated by some infrastructure component (e.g. WS-Addressing, WS-RM, etc.). Verify
           that the fault was generated by some WS-* infrastructure component and not by the
           application.
         </errorMessage>
         <diagnostic>Complete message.</diagnostic>
       </testAssertion>
   
       <testAssertion id="BP1090b" enable="true"
                      xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
                      xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
                      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
                      xmlns:xsd="http://www.w3.org/2001/XMLSchema";
                      xmlns:xs="http://www.w3.org/2001/XMLSchema";
                      xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
                      xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";>
         <!-- rpc-lit / fault case -->
         <description>
           For a Fault response message with a wsa:Action element, defined using a doc/lit binding,
           the following must hold: - The wsa:Action value in the soap11:Header must equal to that
           specified from the WSDL.
         </description>
         <target>
           /wsil:testLog/wsil:messageLog/wsil:message
           [@type = 'response' 
           or 
           ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo
           [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ]
           ]
           /wsil:messageContents/soap11:Envelope[ (soap11:Body/soap11:Fault) and soap11:Header[wsa:Action]]
           [
           some $myenv in . satisfies
           some $message in //wsdl:definitions/wsdl:message satisfies ($message/wsdl:part[1]/@type)
           ]
         </target>
         <cotarget name ="relatedRequest">
           /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/
           wsil:messageContents/soap11:Envelope[soap11:Header/wsa:MessageID = 
           $target/soap11:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] ][1]  
         </cotarget>
         <!-- assume BP2017 passed for cotarget -->
         <cotarget name="myOpBinding">
           /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding
           [.//wsoap11:*[@style = 'rpc']]/wsdl:operation[@name =  fn:local-name-from-QName(node-name($relatedRequest[1]/soap11:Body/*[1]))]
         </cotarget>
         <predicate> 
           (: correct wsa:Action value :)
           some $detailQName in fn:node-name($target/soap11:Body/soap11:Fault/detail/*[1]) 
           satisfies
           some $msgDef in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message
           [ wsdl:part[1][fn:resolve-QName(xsd:string(@element),.) = $detailQName  ]]  
           satisfies
           (some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/
           wsdl:operation[ $myOpBinding/@name = @name ]/
           wsdl:fault[ fn:local-name-from-QName(fn:resolve-QName(xsd:string(./@message),.)) = $msgDef/@name ] 
           satisfies
           ($target/soap11:Header/wsa:Action =     
           ( if ($opmsg/@wsam:Action) then $opmsg/@wsam:Action
           else fn:concat($opmsg/../../../@targetNamespace,
           if (not(fn:ends-with($opmsg/../../../@targetNamespace,'/'))) then '/' else '',
           $opmsg/../../@name, '/', $opmsg/../@name, '/Fault/', $opmsg/@name )
           ) ) 
           )
         </predicate>
         <prescription level="mandatory"/>
         <reporting true="passed" false="warning"/>
         <errorMessage>
           A Fault response message defined using a rpc/lit binding has a wsa:Action value that is
           not equal to that specified in the WSDL. This may be due to the fact that the fault was
           generated by some infrastructure component (e.g. WS-Addressing, WS-RM, etc.). Verify
           that the fault was generated by some WS-* infrastructure component and not by the
           application.
         </errorMessage>
         <diagnostic>Complete message.</diagnostic>
       </testAssertion>

        <testAssertion id="BP2801" enable="true"
                       xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
                       xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
                       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
                       xmlns:xsd="http://www.w3.org/2001/XMLSchema";
                       xmlns:xs="http://www.w3.org/2001/XMLSchema";
                       xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
                       xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";>
          <description>
            The value (either actual or computed) of wsam:Action attribute for the wsdl:input
            element contained in the target wsdl:operation of the wsdl:portType MUST equal the
            value of the non-empty soapAction attribute inside the wsoap11:operation element
            contained in the target wsdl:operation of the wsdl:binding.
          </description>
          <target>
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation
            [wsoap11:operation[@soapAction] and wsoap11:operation/@soapAction ne '' and
            (some $bop in . satisfies
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation
            [@name = $bop/@name]/wsdl:input[@wsam:Action])]   
          </target>
          <cotarget name="myOpDefinition">
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation[@name = $target/@name] 
          </cotarget>
          <predicate>
            $target/wsoap11:operation[@soapAction = 
            (if ($myOpDefinition/wsdl:input/@wsam:Action)
            then $myOpDefinition/wsdl:input/@wsam:Action
            else 
            fn:concat($myOpDefinition/../../@targetNamespace,
            if (not(fn:ends-with($myOpDefinition/../../@targetNamespace,'/'))) then '/' else '',
            $myOpDefinition/../@name, '/',
            if($myOpDefinition/wsdl:input/@name)
            then $myOpDefinition/wsdl:input/@name
            else fn:concat($myOpDefinition/@name, 'Request' ))
            )
            ]
          </predicate>
          <prescription level="mandatory"/>
          <errorMessage>
            Bad value (either actual or computed) of wsam:Action attribute for the wsdl:input element contained in the target wsdl:operation of the wsdl portType. 
          </errorMessage>
          <diagnostic>Operation.</diagnostic>
        </testAssertion>

		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="false"
				   id="BP3002"
				   >
		      <description>
			The uddi:bindingTemplate element contains a
			uddi:accessPoint element, with a non-empty value.
		      </description>
		      <target>For a candidate uddi:bindingTemplate</target>
		      <predicate>TBD</predicate>
		      <prescription level="mandatory"/>
		      <errorMessage>
			The uddi:bindingTemplate does not contain an
			uddi:accessPoint element, or it is empty.
		      </errorMessage>
		      <diagnostic>bindingTemplate key</diagnostic>
		    </testAssertion>
		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="false"
				   id="BP3001"
				   >
		      <description>
			The uddi:tModel element uses WSDL as the description
			language and the uddi:tModel contains a reference to a
			WSDL binding. The uddi:overviewDoc/uddi:overviewURL
			element contains a reference to a WSDL definition, which
			uses a namespace of http://schemas.xmlsoap.org/wsdl/. The
			uddi:overviewURL may use the fragment notation to resolve
			to a specific wsdl:binding.
		      </description>
		      <target>For a candidate uddi:tModel</target>
		      <predicate>TBD</predicate>
		      <prescription level="mandatory"/>
		      <errorMessage>
			The uddi:tModel does not reference a WSDL based Web
			service definition or the uddi:tModel does not reference a
			wsdl:binding.
		      </errorMessage>
		      <diagnostic>{tModel key}{uddi:overviewDoc}</diagnostic>
		    </testAssertion>
		    <testAssertion xmlns:p="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:t="http://www.ws-i.org/testing/2004/07/assertions/";
				   xmlns:xalan="http://xml.apache.org/xslt";
				   xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="false"
				   id="BP3003"
				   >
		      <description>
			The uddi:tModel is categorized using the uddi:types
			taxonomy, as "wsdlSpec": the uddi:keyedReference element
			has a tModelKey attribute value equal to
			"uuid:C1ACF26D-9672-4404-9D70-39B756E62AB4" and a keyValue
			attribute value equal to "wsdlSpec".
		      </description>
		      <target>For a candidate uddi:tModel</target>
		      <predicate>TBD</predicate>
		      <prescription level="mandatory"/>
		      <errorMessage>
			The uddi:tModel is not categorized using the uddi:types
			taxonomy with a categorization of "wsdlSpec".
		      </errorMessage>
		      <diagnostic>{tModel key}{categoryBag}</diagnostic>
		    </testAssertion>
		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="true"
				   id="BP1211a">
		      <!-- preReq="BP1701" -->
		      <!-- rpc-lit / request case -->
		      <description>
			Part accessor elements in the envelope do not have an
			xsi:nil attribute with a value of "1" or "true".
		      </description>
          <target>
            /wsil:testLog/wsil:messageLog/wsil:message
            [@type = 'request'
            and 
            not ( ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo
            [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] )
            ]
            /wsil:messageContents/soap11:Envelope[soap11:Body/* and  not (soap11:Body//soap11:Fault) ]
            [
            some $myenv in . satisfies
            some $message in //wsdl:definitions/wsdl:message satisfies ($message/wsdl:part[1]/@type)
            ]
          </target>
          <!-- assume BP2017 passed for cotarget -->
          <cotarget name="myOpBinding">
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding
            [.//wsoap11:*[@style = 'rpc']]/wsdl:operation[@name =  fn:local-name-from-QName(node-name($target/soap11:Body/*[1]))]
          </cotarget>		      
              <predicate>not (soap11:Body/*/*[attribute::xsi:nil = '1' or attribute::xsi:nil = fn:true()])</predicate>
		      <prescription level="mandatory"/>
		      <errorMessage>
			Envelope referenced by an rpc-literal binding has part
			accessor elements with an xsi:nil attribute with a value
			of "1" or "true".
		      </errorMessage>
		      <diagnostic/>
		    </testAssertion>

		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="true"
				   id="BP1211b">
          <!-- preReq="BP1701" -->
          <!-- rpc-lit / response case -->
          <description>
            Part accessor elements in the response envelope do not have an
            xsi:nil attribute with a value of "1" or "true".
          </description>
          <target>
            /wsil:testLog/wsil:messageLog/wsil:message
            [@type = 'response' 
            or 
            ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo
            [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ]
            ]
            /wsil:messageContents/soap11:Envelope[soap11:Body/* and not (soap11:Body/soap11:Fault)]
            [
            some $myenv in . satisfies
            some $message in //wsdl:definitions/wsdl:message satisfies ($message/wsdl:part[1]/@type)
            ]
          </target>
          <!-- assume BP2017 passed for cotarget -->
          <cotarget name="myOpBinding">
            /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[.//wsoap11:*[@style = 'rpc']]/
            wsdl:operation
            [fn:string-join((@name, 'Response' ),'' ) = fn:local-name-from-QName(node-name($target/soap11:Body/*[1]))]
          </cotarget>
          <predicate>not (soap11:Body/*/*[attribute::xsi:nil = '1' or attribute::xsi:nil = fn:true()])</predicate>
          <prescription level="mandatory"/>
          <errorMessage>
            response Envelope referenced by an rpc-literal binding has part
            accessor elements with an xsi:nil attribute with a value
            of "1" or "true".
          </errorMessage>
          <diagnostic/>
		    </testAssertion>

		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="true"
				   id="BP1205">
		      <description>
				An ENVELOPE MUST NOT contain <h:code>soap11:encodingStyle</h:code> 
	    		attributes on any of the elements whose namespace name is "http://schemas.xmlsoap.org/soap/envelope/";.
		      </description>
		      <target>
				/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap11:Envelope
		      </target>
		      <predicate>every $attrib in (self::node()/attribute::*, ./soap11:Body/attribute::*, ./soap11:Body//node()/attribute::*) satisfies
		    	(fn:namespace-uri($attrib) != 'http://schemas.xmlsoap.org/soap/envelope/' or fn:local-name($attrib) != 'encodingStyle')</predicate>
		      <prescription level="mandatory"/>
		      <errorMessage>
				Envelope node whose namespace name is "http://schemas.xmlsoap.org/soap/envelope/"; contains soap11:encodingStyle.
		      </errorMessage>
		      <diagnostic/>
		    </testAssertion>

		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="true"
				   id="BP1013">
		      <description>
				An ENVELOPE containing a <h:code>soap11:mustUnderstand</h:code> attribute MUST only use the lexical forms 
				"0" and "1".
		      </description>
		      <target>
				/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap11:Envelope
		      </target>
		      <predicate>every $attrib in (self::node()/attribute::soap11:mustUnderstand, .//node()/attribute::soap11:mustUnderstand) satisfies
		    	($attrib = '1' or $attrib = '0')</predicate>
		      <prescription level="mandatory"/>
		      <errorMessage>
				An Envelope containing a <h:code>soap11:mustUnderstand</h:code> attribute has a value other than 1 or 0.
		      </errorMessage>
		      <diagnostic/>
		    </testAssertion>
		    
		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				   xmlns:xs="http://www.w3.org/2001/XMLSchema";
				   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				   xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				   enable="true"
				   id="BP1126">
		      <description>
				An INSTANCE MUST return a 500 "Internal Server Error" HTTP status code if 
				the response envelope is a Fault.
		      </description>
		      <target>
				/wsil:testLog/wsil:messageLog/wsil:message
                [
                  (
                    @type = 'response' 
                  ) 
                  and wsil:messageContents/soap11:Envelope/soap11:Body/soap11:Fault
                ] 
		      </target>
		      <predicate>fn:contains(wsil:httpHeaders/wsil:requestLine/text(), '500')</predicate>
		      <prescription level="mandatory"/>
		      <errorMessage>
				An message containing a Fault was returned with an HTTP status code that was not 500 "Internal Server Error"
		      </errorMessage>
		      <diagnostic/>
		    </testAssertion>
		    
		                <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				           xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				           xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				           xmlns:xs="http://www.w3.org/2001/XMLSchema";
				           xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				           xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				           xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				           enable="true"
				           id="BP1260">
		      <description>
				When an ENVELOPE is a Fault, the <h:code>soap11:Fault</h:code> element MUST NOT have element children other than
	            <h:code>faultcode</h:code>, <h:code>faultstring</h:code>, <h:code>faultactor</h:code> and <h:code>detail</h:code>.
		      </description>
		      <target>
				/wsil:testLog/wsil:messageLog/wsil:message[wsil:messageContents/soap11:Envelope/soap11:Body/soap11:Fault]
		      </target>
		      <predicate>
		        not( exists($target/wsil:messageContents/soap11:Envelope/soap11:Body/soap11:Fault/*
		        [
		          local-name() != 'faultcode' and
		          local-name() != 'faultstring' and
		          local-name() != 'faultactor' and 
		          local-name() != 'detail'
		        ]
		        ))
		      </predicate>
		      <prescription level="mandatory"/>
		      <errorMessage>
				A Fault was found with children other than <h:code>faultcode</h:code>, <h:code>faultstring</h:code>, 
				<h:code>faultactor</h:code>, or <h:code>detail</h:code>.
		      </errorMessage>
		      <diagnostic/>
		    </testAssertion>

            <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				           xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				           xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				           xmlns:xs="http://www.w3.org/2001/XMLSchema";
				           xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				           xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				           xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				           enable="true"
				           id="BP1261">
		      <description>
                When an ENVELOPE is a Fault, the element children of the <h:code>soap11:Fault</h:code> element MUST be unqualified.
		      </description>
		      <target>
				/wsil:testLog/wsil:messageLog/wsil:message[wsil:messageContents/soap11:Envelope/soap11:Body/soap11:Fault]
		      </target>
		      <predicate>
		        not( exists($target/wsil:messageContents/soap11:Envelope/soap11:Body/soap11:Fault/*
		        [
		          namespace-uri() != ''
		        ]
		        ))
		      </predicate>
		      <prescription level="mandatory"/>
		      <errorMessage>
				A Fault was found with children that are qualified with a namespace.
		      </errorMessage>
		      <diagnostic/>
		    </testAssertion>
		    
		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				           xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				           xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				           xmlns:xs="http://www.w3.org/2001/XMLSchema";
				           xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				           xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				           xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				           enable="true"
				           id="BP1262">
		      <description>
		        A MESSAGE MUST NOT use the HTTP Extension Framework (RFC2774), which includes the M-POST method
		      </description>
		      <target>
				/wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']
		      </target>
		      <predicate>
		        not( starts-with($target/wsil:httpHeaders/wsil:requestLine/text(), "M-POST"))
		      </predicate>
		      <prescription level="mandatory"/>
		      <errorMessage>
				A message uses the M-POST method from the HTTP Extension Framework outlined in RFC2774
		      </errorMessage>
		      <diagnostic/>
		    </testAssertion>
		    
		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				           xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				           xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				           xmlns:xs="http://www.w3.org/2001/XMLSchema";
				           xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				           xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				           xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				           enable="true"
				           id="BP1263">
		      <description>
                An ENVELOPE MUST NOT have any element children of <h:code>soap11:Envelope</h:code> following the
                <h:code>soap11:Body</h:code> element.
		      </description>
		      <target>
				/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap11:Envelope[soap11:Body]
		      </target>
		      <predicate>
		        every $sibling in $target/* satisfies
		    	(
		    	  not ($sibling >> $target/soap11:Body)
		    	)
		      </predicate>
		      <prescription level="mandatory"/>
		      <errorMessage>
				The <h:code>soap11:Body</h:code> element is followed by a sibling element
		      </errorMessage>
		      <diagnostic/>
		    </testAssertion>
		    
		    <testAssertion xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
				           xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
				           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
				           xmlns:xsd="http://www.w3.org/2001/XMLSchema";
				           xmlns:xs="http://www.w3.org/2001/XMLSchema";
				           xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
				           xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
				           xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
				           enable="true"
				           id="BP1264">
		      <description>
		        A HTTP Request MESSAGE MUST use the HTTP POST method.
		      </description>
		      <target>
				/wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']
		      </target>
		      <predicate>
		        starts-with($target/wsil:httpHeaders/wsil:requestLine/text(), "POST")
		      </predicate>
		      <prescription level="mandatory"/>
		      <errorMessage>
				A request message does not use the POST method
		      </errorMessage>
		      <diagnostic/>
		    </testAssertion>

    <testAssertion id="BP1149a"
                   enable="true"
                   xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
                   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
                   xmlns:xs="http://www.w3.org/2001/XMLSchema";
                   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
                   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";>
      <!-- request with non-anon response EPRs to an instance that only accepts anon -->
      <description>
        This assertion tests one aspect of R1149. Specifically, if a consumer sends a request
        message with a non-anonymous response EPR to an instance which advertises that it only
        supports anonymous EPRs, any response from that instance must be the SOAP fault described
        by <h:a href="http://www.w3.org/TR/2006/REC-ws-addr-soap-20060509/#id2270777";>Section
        6.4.1.7 of the Web Services Addressing 1.0 - SOAP Binding</h:a>. Other possible fault
        conditions, such as invalid addresses, are not tested for by this assertion.
      </description>
      <target>
        /wsil:testLog/wsil:messageLog/wsil:message
          [@type = 'response' or
            ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo
            [not (@RelationshipType) or (@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply')]
          ]
        /wsil:messageContents/soap11:Envelope
          [/wsil:testLog/wsil:descriptionFiles/wsil:feature[@name="http://www.w3.org/ns/ws-policy/Policy"]/wsil:alternative/wsil:feature[@name="http://www.w3.org/2007/05/addressing/metadata/Addressing"]/wsil:alternative/wsil:feature[@name="http://www.w3.org/2007/05/addressing/metadata/AnonymousResponses"; and @mode="required"]
        ]
      </target>
      <cotarget name ="related-Request">
        /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/
        wsil:messageContents/soap11:Envelope[soap11:Header/wsa:MessageID = 
        $target/soap11:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] ]
      </cotarget>
      <predicate>
        (
        if<br/>
        (
          ($related-Request/soap11:Header/wsa:ReplyTo and not ($related-Request/soap11:Header/wsa:ReplyTo/wsa:Address = 'http://www.w3.org/2005/08/addressing/anonymous')) or
          ($related-Request/soap11:Header/wsa:FaultTo and not ($related-Request/soap11:Header/wsa:FaultTo/wsa:Address = 'http://www.w3.org/2005/08/addressing/anonymous'))
        )<br/>
        then<br/>
        (
          <!-- non-Fault case is picked up by BP1149b -->
          not ($target/soap11:Body/soap11:Fault) or
          fn:ends-with($target/soap11:Body/soap11:Fault/faultcode, 'OnlyAnonymousAddressSupported')
        )<br/>
        else fn:true()<br/>
        )
      </predicate>
      <prescription level="mandatory"/>
      <reporting true="passed" false="warning"/>
      <errorMessage>
        The service requires the use of WS-Addressing with anonymous response EPRs. The response to
        a request with non-anonymous response EPRs must be the fault defined by Section 6.4.1.7 of
        the "WS-Addressing 1.0 - SOAP Binding" specification. Altough the transmitted response is a
        fault, it does not match the definition in Section 6.4.1.7. This could be due to some
        other, overriding error such as a MustUnderstand fault. Inspect the response message and
        verify that this is the case. If not, the service is acting incorrectly by not
        transimitting the proper fault.
      </errorMessage>
      <diagnostic>Complete message.</diagnostic>
    </testAssertion>

    <testAssertion id="BP1149b"
                   enable="true"
                   xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
                   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
                   xmlns:xs="http://www.w3.org/2001/XMLSchema";
                   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
                   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";>
      <!-- request with non-anon response EPRs to an instance that only accepts anon -->
      <description>
        This assertion tests one aspect of R1149. Specifically, if a consumer sends a request
        message with a non-anonymous response EPR to an instance which advertises that it only
        supports anonymous EPRs, any response from that instance must be the SOAP fault described
        by <h:a href="http://www.w3.org/TR/2006/REC-ws-addr-soap-20060509/#id2270777";>Section
        6.4.1.7 of the Web Services Addressing 1.0 - SOAP Binding</h:a>. Other possible fault
        conditions, such as invalid addresses, are not tested for by this assertion.
      </description>
      <target>
        /wsil:testLog/wsil:messageLog/wsil:message
          [@type = 'response' or
            ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo
            [not (@RelationshipType) or (@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply')]
          ]
        /wsil:messageContents/soap11:Envelope
          [/wsil:testLog/wsil:descriptionFiles/wsil:feature[@name="http://www.w3.org/ns/ws-policy/Policy"]/wsil:alternative/wsil:feature[@name="http://www.w3.org/2007/05/addressing/metadata/Addressing"]/wsil:alternative/wsil:feature[@name="http://www.w3.org/2007/05/addressing/metadata/AnonymousResponses"; and @mode="required"]
        ]
      </target>
      <cotarget name ="related-Request">
        /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/
        wsil:messageContents/soap11:Envelope[soap11:Header/wsa:MessageID = 
        $target/soap11:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] ]
      </cotarget>
      <predicate>
        (
        if<br/>
        (
          ($related-Request/soap11:Header/wsa:ReplyTo and not ($related-Request/soap11:Header/wsa:ReplyTo/wsa:Address = 'http://www.w3.org/2005/08/addressing/anonymous')) or
          ($related-Request/soap11:Header/wsa:FaultTo and not ($related-Request/soap11:Header/wsa:FaultTo/wsa:Address = 'http://www.w3.org/2005/08/addressing/anonymous'))
        )<br/>
        then<br/>
        (
          $target/soap11:Body/soap11:Fault
        )<br/>
        else fn:true()<br/>
        )
      </predicate>
      <prescription level="mandatory"/>
      <reporting true="passed" false="failed"/>
      <errorMessage>
        The service requires the use of WS-Addressing with anonymous response EPRs. Any response
        to a request with non-anonymous response EPRs must be the fault defined by Section 6.4.1.7
        of the "WS-Addressing 1.0 - SOAP Binding" specification. The transmitted response is either
        not a fault or does not match the definition of this fault.
      </errorMessage>
      <diagnostic>Complete message.</diagnostic>
    </testAssertion>

    <testAssertion id="BP1149c"
                   enable="true"
                   xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
                   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
                   xmlns:xs="http://www.w3.org/2001/XMLSchema";
                   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
                   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";>
      <!-- request with anon response EPRs to an instance that only accepts non-anon -->
      <description>
        This assertion tests one aspect of R1149. Specifically, if a consumer sends a request
        message with an anonymous response EPR to an instance which advertises that it only supports
        non-anonymous EPRs, any response from that instance must be the SOAP fault described by
        <h:a href="http://www.w3.org/TR/2006/REC-ws-addr-soap-20060509/#id2270788";>Section 6.4.1.8
        of the Web Services Addressing 1.0 - SOAP Binding</h:a>. Other possible fault conditions,
        such as invalid addresses, are not tested for by this assertion.
      </description>
      <target>
        /wsil:testLog/wsil:messageLog/wsil:message
          [@type = 'response' or
            ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo
            [not (@RelationshipType) or (@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply')]
          ]
        /wsil:messageContents/soap11:Envelope
          [/wsil:testLog/wsil:descriptionFiles/wsil:feature[@name="http://www.w3.org/ns/ws-policy/Policy"]/wsil:alternative/wsil:feature[@name="http://www.w3.org/2007/05/addressing/metadata/Addressing"]/wsil:alternative/wsil:feature[@name="http://www.w3.org/2007/05/addressing/metadata/NonAnonymousResponses"; and @mode="required"]
        ]
      </target>
      <cotarget name ="related-Request">
        /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/
        wsil:messageContents/soap11:Envelope[soap11:Header/wsa:MessageID = 
        $target/soap11:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] ]
      </cotarget>
      <predicate>
        (
        if<br/>
        (
          not ($related-Request/soap11:Header/wsa:ReplyTo) or 
          $related-Request/soap11:Header/wsa:ReplyTo/wsa:Address='http://www.w3.org/2005/08/addressing/anonymous' or
          $related-Request/soap11:Header/wsa:FaultTo/wsa:Address='http://www.w3.org/2005/08/addressing/anonymous'
        )<br/>
        then<br/>
        (
          <!-- non-Fault case is picked up by BP1149d -->
          not ($target/soap11:Body/soap11:Fault) or
          fn:ends-with($target/soap11:Body/soap11:Fault/faultcode, 'OnlyNonAnonymousAddressSupported')
        )<br/>
        else fn:true()<br/>
        )
      </predicate>
      <prescription level="mandatory"/>
      <reporting true="passed" false="warning"/>
      <errorMessage>
        The service requires the use of WS-Addressing with non-anonymous response EPRs. The
        response to a request with anonymous response EPRs must be the fault defined by Section
        6.4.1.8 of the "WS-Addressing 1.0 - SOAP Binding" specification. Altough the transmitted
        response is a fault, it does not match the definition in Section 6.4.1.8. This could be due
        to some other, overriding error such as a MustUnderstand fault. Inspect the response
        message and verify that this is the case. If not, the service is acting incorrectly by not
        transimitting the proper fault.
      </errorMessage>
      <diagnostic>Complete message.</diagnostic>
    </testAssertion>

    <testAssertion id="BP1149d"
                   enable="true"
                   xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305";
                   xmlns:h="http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd";
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
                   xmlns:xs="http://www.w3.org/2001/XMLSchema";
                   xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
                   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";>
      <!-- request with anon response EPRs to an instance that only accepts non-anon -->
      <description>
        This assertion tests one aspect of R1149. Specifically, if a consumer sends a request
        message with an anonymous response EPR to an instance which advertises that it only supports
        non-anonymous EPRs, any response from that instance must be the SOAP fault described by
        <h:a href="http://www.w3.org/TR/2006/REC-ws-addr-soap-20060509/#id2270788";>Section 6.4.1.8
        of the Web Services Addressing 1.0 - SOAP Binding</h:a>. Other possible fault conditions,
        such as invalid addresses, are not tested for by this assertion.
      </description>
      <target>
        /wsil:testLog/wsil:messageLog/wsil:message
          [@type = 'response' or
            ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo
            [not (@RelationshipType) or (@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply')]
          ]
        /wsil:messageContents/soap11:Envelope
          [/wsil:testLog/wsil:descriptionFiles/wsil:feature[@name="http://www.w3.org/ns/ws-policy/Policy"]/wsil:alternative/wsil:feature[@name="http://www.w3.org/2007/05/addressing/metadata/Addressing"]/wsil:alternative/wsil:feature[@name="http://www.w3.org/2007/05/addressing/metadata/NonAnonymousResponses"; and @mode="required"]
        ]
      </target>
      <cotarget name ="related-Request">
        /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/
        wsil:messageContents/soap11:Envelope[soap11:Header/wsa:MessageID = 
        $target/soap11:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] ]
      </cotarget>
      <predicate>
        (
        if<br/>
        (
          not ($related-Request/soap11:Header/wsa:ReplyTo) or 
          $related-Request/soap11:Header/wsa:ReplyTo/wsa:Address='http://www.w3.org/2005/08/addressing/anonymous' or
          $related-Request/soap11:Header/wsa:FaultTo/wsa:Address='http://www.w3.org/2005/08/addressing/anonymous'
        )<br/>
        then<br/>
        (
          $target/soap11:Body/soap11:Fault
        )<br/>
        else fn:true()<br/>
        )
      </predicate>
      <prescription level="mandatory"/>
      <reporting true="passed" false="failed"/>
      <errorMessage>
        The service requires the use of WS-Addressing with non-anonymous response EPRs. The
        response to a request with anonymous response EPRs must be the fault defined by Section
        6.4.1.8 of the "WS-Addressing 1.0 - SOAP Binding" specification. The transmitted response
        is not a SOAP Fault message.
      </errorMessage>
      <diagnostic>Complete message.</diagnostic>
    </testAssertion>


    <guide topic="testAssertion"> 
      <item name="description">
        <p><i>[<b>markup: testAssertion/description </b>]</i>     (optional)</p> 
        <p>A plain text description of the current test assertion. 
        At minimum expressing the TA predicate.</p>
      </item> 
      <item name="comments">
        <p><i>[<b>markup: testAssertion/comments </b>]</i>    (optional)</p> 
        A plain text comment about the TA script and how well it covers the profile requirement. Explanation material for users, and developers (what could be improved, etc.). 
      </item> 
      <item name="target">
        <p><i>[<b>markup: testAssertion/target </b>]</i>    (required)</p> 
        The artifacts to be tested, defined by an XPath expression that 
        returns a list of XML nodes from the log file in input. 
        For every artifact (node) selected by the Target expression, 
        there will be a report entry for this TA in the test report, with a result 
        of either:
        <ul>
          <li><b>passed</b></li>
          <li><b>failed</b></li>
          <li><b>warning</b></li>
          <li><b>notApplicable</b></li>
          <li><b>notApplicable</b></li>
          <li><b>notRelevant</b></li>
          <li><b>missingInput</b></li>
          <li><b>undetermined</b></li>
        </ul>

        <p>See the "reporting" item for the meaning of these results.</p>
      </item> 
      <item name="cotarget">
        <p><i>[<b>markup: testAssertion/cotarget </b>]</i>    (optional)</p> 
        <p>Artifact that is related to the target, and that needs be accessed for the testing.
        Identified by an XPath expression that may refer to the related target node using the
        variable '$target'. </p>
        <p>For example, the target can be a SOAP message and the cotarget the
        WSDL file that describes this SOAP message.</p>
        <p>A cotarget must have a @name attribute that identifies it.
        The value of this attribute can be used as a variable (when prepending '$' to it) by subsequently defined cotargets, prerequisite and predicate.</p>
      </item> 
      <item name="prerequisite">
        <p><i>[<b>markup: testAssertion/@preReq </b>]</i>    (optional)</p> 
        <p><i>[<b>markup: testAssertion/prerequisite </b>]</i>    (optional)</p> 
        <p>The pre-condition for evaluating this Test Assertion on this target. If the prerequisite evaluates to "false" then the target does not qualify for this Test Assertion (the test report is "notRelevant")</p> 
        <p>The first part (preReq attribute) is an enumeration of Test Assertion IDs. Each one of the prerequisite TAs must either use the same target (e.g. SOAP Envelope, or WSDL binding, etc.) as this TA, or a target that is of a more general type than the main TA target. The target must "pass" each one of these prerequisite TAs in order to qualify for this TA.</p> 
        <p>(e.g. the target of TA t1 can be a WSDL 
        binding while the target of a TA t2 prerequisite of t1, can be the entire WSDL file).</p>
        <p>The second part ("prerequisite" element) is an XPath (boolean) expression of the same nature as the predicate. If present, it must evaluate to "true" for the target to qualify. If it fails, the result for the current TA in the report will be "notRelevant". Otherwise, the target can be further evaluated by the predicate of the main TA. The expression may refer to the target explicitly using the variable name "$target", or to any cotarget using its name as variable name ($[name]).</p>
      </item> 
      <item name="TA_Id">
        <p><i>[<b>markup: testAssertion/@id</b>]</i>      (required)</p> 
        A unique ID for the current test assertion. 
      </item> 
      <item name="predicate">
        <p><i>[<b>markup: testAssertion/predicate</b>]</i>     required element]</p> 
        <p>A logical expression that evaluates whether this target is fulfilling 
        the profile requirement addressed by this test Assertion. By default: </p>
        - A result of <b>true</b> means the requirement is fulfilled 
        (reported as a "passed" in the test report). <br/>
        - A result of <b>false</b> means the requirement is violated 
        (reported as a "failed" in the test report). <br/>
        <p>However, in some cases and for testability reasons, the predicate 
        may be designed as a partial indicator e.g. only indicates some cases of 
        fulfillment, or some cases of violation. As a result, when "true" indicates 
        fulfillment it may be that "false" is unconclusive, or conversely "false" 
        will indicate violation, but "true" is unconclusive. 
        In such cases, the "Reporting" element specifies the meaning of the 
        predicate result w/r to the profile requirement.</p> 
        <p>The predicate expression implicitly refers to the target (whic is its "XPath context") although it may explicitly refer to it using the variable name "$target". It may refer to any cotarget using its name as variable name ($[name]).</p>
      </item> 
      <item name="prescription">
        <p><i>[<b>markup: testAssertion/prescription/@level </b>]</i>    (required)</p> 
        Conveys the level of prescription associated with the profile requirement. 
        At least three values may be used: 
        <ul>
          <li><b>mandatory</b>: maps to RFC2119 keywords MUST, MUST NOT, SHALL, 
          SHALL NOT, REQUIRED (and sometimes MAY NOT) </li>
          <li><b>preferred</b>: maps to RFC2119 keywords SHOULD, SHOULD NOT, 
          RECOMMENDED, NOT RECOMMENDED </li>
          <li><b>permitted</b>: maps to RFC2119 keywords MAY, OPTIONAL. </li>
        </ul>
      </item> 
      <item name="reporting">
        <p><i>[<b>markup: testAssertion/reporting </b>]</i>    (optional)</p>
        <p>For each possible outcome of the predicate (true or false), 
        specifies how it must be interpreted w/r to the profile feature. 
        Two attributes are used that both must be present, when this element 
        is present: </p>
        <ul>
          <li><b>@true attribute</b>: may take values among {passed, failed, warning, undetermined}
          (default is 'passed') </li>
          <li><b>@false attribute</b>: may take values among {passed, failed, warning, undetermined}
          (default is 'failed') </li>
        </ul>
        The reported outcomes have the following meaning:<BR/>
        <ul>
          <li><b>passed</b>: the target passes the test and can be considered as 
          fulfilling the profile feature.</li>
          <li><b>failed</b>: the target fails the test and can be considered as 
          violating (or not exhibiting) the profile feature.</li>
          <li><b>warning</b>: the test result is inconclusive. There is a possibility of profile requirement violation, that deserved further investigation.</li>
          <li><b>undetermined</b>: the test result is inconclusive for this predicate value.</li>
        </ul>
        <p>NOTES: the predicate of the TA may be worded in a negative way so that @false='passed' although that is not recommended. The result of a test should not be related to the prescription level, e.g. a "preferred" or "permitted" level should not imply that @false='warning'.</p>
        <p>Other test results that are automatically generated and not controlled by the "reporting" element are:</p>
        <ul>
          <li><b>notRelevant</b>: the target failed the prerequisite condition and therefore does not
          qualify for further testing (i.e. the predicate expression is NOT evaluated on it).</li>
          <li><b>missingInput</b>: a cotarget expression returned an empty node set.</li>
          <li><b>notApplicable</b>: this target was not even selected by the target XPath expression, 
          while being of the same general artifact type (e.g. message type).</li>
        </ul>
      </item> 
      <item name="errorMessage">
        <p><i>[<b>markup: testAssertion/errorMessage </b>]</i>    (required)</p>
        Specifies the standard error message to be reported for all targets failing this TA. 
      </item> 
      <item name="diagnostic">
        <p><i>[<b>markup: testAssertion/diagnostic </b>]</i>    (optional)</p> 
        Specifies how to extract detailed failure information from the testing
        of this specific target instance. These diagnostic details will vary 
        from one target to the other. 
      </item> 
    </guide>

  </testAssertions>

</profile>


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]