Subjects
Home
VOTE Move XML Commons to Xerces
Commented: (XERCESJ 589) Bug with pattern restriction on long strings
: Xerces J 2 8 1 Release on Wednesday, September 13th
: Xerces J 2 9 0 Release on Wednesday, November 22nd
Commented: (XERCESJ 1066) Restriction+choice+substitutionGroup error
Commented: (XERCESJ 1178) Error getting prefix for an attribute with no n
Updated: (XERCESJ 1244) XMLSchemaValidator does not contribute element 's
Some consideration about the xerces DOM implementation
Updated: (XERCESJ 1066) Restriction+choice+substitutionGroup error
Commented: (XERCESJ 1227) Poor performance / OutOfMemoryError for sequenc
retain exception stack traces
Updated: (XERCESJ 1193) NPE or hang when parsing using the "continue afte
Future of NekoHTML
Commented: (XERCESJ 1203) NPE in XMLDTDProcessor
DOM Level 3 APIs for Xalan J and a new Xalan release (2 7 1)
: xml commons external 1 3 04 Release on Wednesday, November 22nd
Commented: (XERCESJ 1247) Incorrect location information on SAX when usin
XInclude exceptions how to mirror Xerces J functionality into Xerces C++?
First proposal on SoC project "Add support for the StAX (JSR 173) cursor API
: xml commons resolver 1 2 Release on Wednesday, November 22nd
Typo in RangeToken java Please check
Validator features
java lang ClassCastException when adopting Node
using the org apache xerces impl xs identity package
Updated: (XERCESJ 1257) buffer overflow in UTF8Reader for characters out
Problem with ref attributes and schema validation
Updated: (XERCESJ 122) XMLSchemaValidator does not contribute element 's d
Performance problem under load Xerces with Weblogic 9 x
remove ignored memory allocation
Commented: (XERCESJ 1177) SAXXMLStreamReader doesn 't always report namesp
Commented: (XERCESJ 977) Null pointer exception during DOM parsing
Commented: (XERCESJ 1197) Code cleanup for org apache xml serialize
Commented: (XERCESJ 1201) Initial contribution for StAX Event API
Updated: (XERCESJ 1061) Regex "$ " and "^ " characters treated as special c
Commented: (XERCESJ 1199) SAXXMLStreamReader should attempt to register a
Commented: (XERCESJ 1061) Regex "$ " and "^ " characters treated as special
Updated: (XERCESJ 589) Bug with pattern restriction on long strings
StackOverflow
xerces Range unnecessarily not garbage collectable if not detached
Updated: (XERCESJ 1178) Error getting prefix for an attribute with no nam
Bug in xs:redefine
Commented: (XERCESJ 1204) Can not set XMLEntityResolver for LSParser
Updated: (XERCESJ 1253) Prototype for SoC2007 project "Add support for th
Updated: (XERCESJ 1259) Add SteamFilter Function to SoC2007 project "Add
Assigned: (XERCESJ 444) SAXException thrown by EntityResolver is reported
Google Summer of Code 2007
Xerces J and XInclude relative path issue
Assigned: (XERCESJ 206) Stack overflow when using a schema validation
Commented: (XERCESJ 1215) Restrictions involving two levels of substituti
Closed: (XERCESJ 1203) NPE in XMLDTDProcessor
non overriding equals methoda
Resolved: (XERCESJ 1079) invalid value returned for TOTALDIGITS facet in
Xerces AS3 port
Updated: (XERCESJ 325) Regular Expression; Pattern "| " clause order de
Updated: (XERCESJ 1196) Javadoc generation fails on Java SE 5 0
Closed: (XERCESJ 1202) DTD validation on XIncluded documents when the sch
Created: (XERCESJ 1124) Nonspecific schema error message
a bug in xerces
Updated: (XERCESJ 1201) Initial contribution for StAX Event API
Closed: (XERCESJ 1254) Empty uris in targetNamespace attribute not report
Links
Home
Oracle database error code
 
Search:  
Power your search with and, or, +, -, or "some phrase" operators.
exploring the innards of a WXS derived complex type definition

exploring the innards of a WXS derived complex type definition

2003-07-25       - By Jeff Greif
Reply:     1     2     3  

Lots of Web Services using SOAP contain XML Schema type definitions like this:

     <xsd:complexType name="ResultElementArray">
       <xsd:complexContent>
         <xsd:restriction base="soapenc:Array">
            <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens
:ResultElement[]"/>
         </xsd:restriction>
       </xsd:complexContent>
     </xsd:complexType>

(The base type is given below).

When a SOAP/WSDL processor reads this type, it can determine via special
knowledge (out of band as far as WXS is concerned) based on presence of the
soapenc:arrayType attribute and the wsdl:arrayType attribute value that an
element of type ResultElementArray may contain an unrestricted number of child
elements (with any name allowed -- see the base type) of type ResultElement.

When an instance document is encountered, it might look like this
<return arrayType="ResultElement[3]" xsi:type="ResultElementArray">
  <item xsi:type="ResultElement">...</item>
  <item xsi:type="ResultElement">...</item>
  <item xsi:type="ResultElement">...</item>
</return>
and the SOAP processor can determine from the arrayType value that there will
be three child elements of type ResultElement.

The question is, if I get the grammar containing this type and convert it to an
XSModel, how can I find the all-important wsdl:arrayType attribute value, (and
thus be able to emulate the SOAP/WSDL processor's knowledge of the content,
without having an instance document to look at)?  Is this information captured
somewhere in the XSModel?  Is it possible to examine the contents of the
restriction, rather than only determine the base type and the derivation method
?

Jeff

Note:
The base type, somewhat simplified, is from the SOAP-Encoding spec:
 <xs:complexType name="Array" >
   <xs:sequence>
     <xs:any namespace="##any" minOccurs="0" maxOccurs="unbounded"
processContents="lax" />
   </xs:sequence>
   <xs:attribute name="arrayType" type="xs:string" />
   <xs:attribute name="arrayOffset" type="xs:string"/>
   <xs:anyAttribute namespace="##other" processContents="lax" />
 </xs:complexType>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.2800.1170" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT face=Verdana size=2>Lots of Web Services using SOAP contain XML
Schema type definitions like this:</FONT></DIV>
<DIV><FONT face=Verdana size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Verdana size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xsd:complexType
name="ResultElementArray"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xsd:complexContent&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;
&lt;xsd:restriction
base="soapenc:Array"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xsd:attribute ref="soapenc:arrayType"
wsdl:arrayType="typens:ResultElement[]"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xsd:restriction&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xsd:complexContent&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xsd:complexType&gt;</FONT></DIV>
<DIV><FONT face=Verdana size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Verdana size=2>(The base type is given below).</FONT></DIV>
<DIV><FONT face=Verdana size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Verdana size=2>When a SOAP/WSDL processor reads this type, it
can determine via special knowledge (out of band as far as WXS is concerned)
based on presence of the soapenc:arrayType attribute and the wsdl:arrayType
attribute value that an element of type ResultElementArray&nbsp;may contain an
unrestricted number of child elements (with any name allowed -- see the base
type) of type ResultElement.</FONT></DIV>
<DIV><FONT face=Verdana size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Verdana size=2>When an instance document is encountered, it
might look like this</FONT></DIV>
<DIV><FONT face=Verdana size=2>&lt;return arrayType="ResultElement[3]"
xsi:type="ResultElementArray"&gt;</FONT></DIV>
<DIV><FONT face=Verdana size=2>&nbsp;&nbsp; &lt;item
xsi:type="ResultElement"&gt;...&lt;/item&gt;</FONT></DIV>
<DIV><FONT face=Verdana size=2>
<DIV><FONT face=Verdana size=2>&nbsp;&nbsp; &lt;item
xsi:type="ResultElement"&gt;...&lt;/item&gt;</FONT></DIV>
<DIV>
<DIV><FONT face=Verdana size=2>&nbsp;&nbsp; &lt;item
xsi:type="ResultElement"&gt;...&lt;/item&gt;</FONT></DIV>
<DIV>&lt;/return&gt;</DIV>
<DIV>and the SOAP processor can determine from the arrayType value that there
will be three child elements of type ResultElement.</DIV>
<DIV>&nbsp;</DIV></DIV></FONT></DIV>
<DIV><FONT face=Verdana size=2>The question is, if I get the grammar containing
this type and convert it to an XSModel, how can I find the all-important
wsdl:arrayType attribute value, (and thus be able to emulate the SOAP/WSDL
processor's knowledge of the content, without having an instance document to
look at)?&nbsp; Is this information captured somewhere in the XSModel?&nbsp; Is
it possible to examine the contents of the restriction, rather than only
determine the base type and the derivation method?</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Verdana size=2>Jeff</FONT></DIV>
<DIV><FONT face=Verdana size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Verdana size=2>Note:</FONT></DIV>
<DIV><FONT face=Verdana size=2>The base type, somewhat simplified, is from the
SOAP-Encoding spec:</FONT></DIV>
<DIV><FONT face=Verdana size=2>&nbsp; &lt;xs:complexType name="Array"
&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;xs:sequence&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp
;
&lt;xs:any namespace="##any" minOccurs="0" maxOccurs="unbounded"
processContents="lax"
/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/xs:sequence&gt;<BR>&nbsp;&nbsp;&nbsp;
&lt;xs:attribute&nbsp;name="arrayType"
type="xs:string"&nbsp;/&gt;<BR>&nbsp;&nbsp;&nbsp;
&lt;xs:attribute&nbsp;name="arrayOffset" type="xs:string"/&gt;</FONT></DIV>
<DIV><FONT face=Verdana size=2>&nbsp;&nbsp;&nbsp; &lt;xs:anyAttribute
namespace="##other" processContents="lax" /&gt;<BR>&nbsp;
&lt;/xs:complexType&gt; <BR></FONT><FONT face=Verdana
size=2></DIV></FONT></BODY></HTML>