<definitions name="demoService"
 targetNamespace="http://tempuri.org/4s4c/1/3/wsdl/def/demoService"
 xmlns="http://schemas.xmlsoap.org/wsdl/"
 xmlns:xsd="http://www.w3.org/1999/XMLSchema"
 xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
 xmlns:tns="http://tempuri.org/4s4c/1/3/wsdl/def/demoService"
 xmlns:ns1="http://tempuri.org/4s4c/1/3/wsdl/types/">
<portType name="structsPortType">
  <operation name="GetPerson">
    <input  message="tns:GetPersonRequest" name="GetPerson"/>
    <output message="tns:GetPersonResponse" name="GetPersonResponse"/>
  </operation>
</portType>
<binding name="structsBinding" type="tns:structsPortType">
 <soap:binding style="rpc"
        transport="http://schemas.xmlsoap.org/soap/http"/>
  <operation name="GetPerson">
    <soap:operation soapAction="urn:demoService#GetPerson"/>
    <input><soap:body use="encoded"
        namespace="http://simon.fell.com/structs"
        encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
    </input>
    <output><soap:body use="encoded"
        namespace="http://simon.fell.com/structs"
        encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
    </output>
  </operation>
</binding>
<binding name="structsBinding" type="tns:Not-specified">
 <soap:binding style="rpc"
        transport="http://schemas.xmlsoap.org/soap/http"/>
  <operation name="GetPerson">
    <soap:operation soapAction="urn:demoService#GetPerson"/>
    <input><soap:body use="encoded"
        namespace="http://simon.fell.com/structs"
        encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
    </input>
    <output><soap:body use="encoded"
        namespace="http://simon.fell.com/structs"
        encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
    </output>
  </operation>
</binding>
</definitions>
<sch:schema xmlns:sch="http://www.ascc.net/xml/schematron"
            xmlns:zvon="http://zvon.org/schematron"
            xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> 

   <sch:title>Test 8 - key</sch:title>

   <sch:key name="type" match="wsdl:portType" use="@name"/>

   <sch:pattern name="The first pattern" see="someDoc1">
      <sch:rule context="wsdl:binding/@type">
          <sch:report test="key('type',substring-after(.,':'))"><sch:name zvon:fullPath='yes'/> Match O.K.</sch:report>
          <sch:assert test="key('type',substring-after(.,':'))"><sch:name zvon:fullPath='yes'/> not matched.</sch:assert>
      </sch:rule>
   </sch:pattern>

</sch:schema>