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

 


Help: OASIS Mailing Lists Help | MarkMail Help

wsrf message

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


Subject: New Issue: Bug in ServiceGroup WSDL


An issue discovered by one of our developers:

I just discovered a bug in the service group WSDL when trying to compile
its schema section using the XMLBeans schema compiler. The error message
given by the scema compiler was:

    [schema-compiler] [ERROR]
src/specifications/WS-ServiceGroup-1_2.wsdl:0: error: String:
'./*MembershipContentRule
[namespace-uri()='http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-Servic
eGroup-1.2-draft-01.xsd']' does not match pattern for type of xpath
attribute in type of element xs:selector


Here is the definition of the xs:selector element from the XMLSchema
schema:

<xs:element name="selector" id="selector">
  <xs:annotation>
   <xs:documentation
source="http://www.w3.org/TR/xmlschema-1/#element-selector"/>
  </xs:annotation>
  <xs:complexType>
  <xs:complexContent>
   <xs:extension base="xs:annotated">
     <xs:attribute name="xpath" use="required">
      <xs:simpleType>
       <xs:annotation>
        <xs:documentation>A subset of XPath expressions for use in
selectors</xs:documentation>
        <xs:documentation>A utility type, not for public
use</xs:documentation>
       </xs:annotation>
       <xs:restriction base="xs:token">
        <xs:annotation>
         <xs:documentation>The following pattern is intended to allow
XPath
                           expressions per the following EBNF:
          Selector    ::=    Path ( '|' Path )*  
          Path    ::=    ('.//')? Step ( '/' Step )*  
          Step    ::=    '.' | NameTest  
          NameTest    ::=    QName | '*' | NCName ':' '*'  
                           child:: is also allowed
         </xs:documentation>
        </xs:annotation>
        <xs:pattern
value="(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c
*:)?(\i\c*|\*)))|\.))*(\|(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/
(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*)*">
        </xs:pattern>
       </xs:restriction>
      </xs:simpleType>
     </xs:attribute>
   </xs:extension>
  </xs:complexContent>
 </xs:complexType>
 </xs:element>


In particular, note the following annotations:

 <xs:documentation>A subset of XPath expressions for use in
selectors</xs:documentation>  <xs:documentation>A utility type, not for
public use</xs:documentation>


So, the wssg WSDL probably should not even be using the xs:selector type
at all. But if you do want to continue using that type, I found the
following modification to the wsdl does the trick:

        <xsd:element name="ServiceGroupRP">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element ref="wssg:MembershipContentRule"
                           minOccurs="0" maxOccurs="unbounded"/>
              <xsd:element ref="wssg:Entry" 
                           minOccurs="0" maxOccurs="unbounded"/>
            </xsd:sequence>
          </xsd:complexType>
          <xsd:unique name="UniqueInterfaces">
            <xsd:selector xpath="wssg:MembershipContentRule"/>
<-------(mod)
            <xsd:field xpath="@MemberInterface"/>
          </xsd:unique>
        </xsd:element>


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