All,
 
I have the following types defined in a schema:
 
 <xsd:complexType name="AttributedString">
  <xsd:simpleContent>
   <xsd:extension base="xsd:string">
    <xsd:attribute ref="wsu:Id"/>
    <xsd:anyAttribute namespace="##other" processContents="lax"/>
   </xsd:extension>
  </xsd:simpleContent>
 </xsd:complexType>

 <xsd:complexType name="EncodedString">
  <xsd:simpleContent>
   <xsd:extension base="wsse:AttributedString">
    <xsd:attribute name="EncodingType" type="xsd:anyURI"/>
   </xsd:extension>
  </xsd:simpleContent>
 </xsd:complexType>

 <xsd:complexType name="UsernameTokenType">
  <xsd:sequence>
   <xsd:element name="Username" type="wsse:AttributedString"/>
   <xsd:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
  </xsd:sequence>
  <xsd:attribute ref="wsu:Id"/>
  <xsd:anyAttribute namespace="##other" processContents="lax"/>
 </xsd:complexType>
Note that EncodedString is derived from AttributedString.
 
The following passes XML Validation:
 
 <ns1:UsernameToken>
  <ns1:Username xsi:type="ns1:AttributedString" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
my username</ns1:Username>
 </ns1:UsernameToken>
And so does this:
 
 <ns1:UsernameToken>
  <ns1:Username>my username</ns1:Username>
 </ns1:UsernameToken>
 
But Xerces throws an error on the following:
 
 <ns1:UsernameToken>
  <ns1:Username EncodingType="someType" xsi:type="ns1:EncodedString" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">my username</ns1:Username>
 </ns1:UsernameToken>
Xerces says:
 
cvc-elt.4.3: Type 'ns1:EncodedString' is not validly derived from the type definition, 'AttributedString', of element 'ns1:Username'.
 
It's not clear to me what is wrong with the XML.  Can someone shed some light? 
 
Thanks.

--
Jeehong Min
Software Engineer
SOAPtest Development
Parasoft Corporation
 
"We Make Software Work"

Reply via email to