You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-dev@xerces.apache.org by Nick Betteridge <n....@syntactics.com> on 2003/07/30 16:56:44 UTC
Scope and getEnclosingCTDefinition() bug?
Hi
I'm not too sure if this is a bug - I have a simple schema, and if I parse the schema and begin to traverse down through the schemagrammer, I get to the first complexType. Xerces tells me that the element "responsemodel" is a XSElementDecl.SCOPE_GLOBAL. Is this correct? Surely it should be a XSElementDecl.SCOPE_LOCAL? As a consequence, I cannot get the complexType.
I'm using the latest version of xercesImpl.jar (29-Jul-2003)
Regards
Nick
grammer = (SchemaGrammar)preparser.preparseGrammar(XMLGrammarDescription.XML_SCHEMA, xmlInputSource);
xsNamedMap = grammer.getComponents(XSConstants.ELEMENT_DECLARATION);
for (int i=0; i<xsNamedMap.getLength(); i++ ) {
XSObject object = xsNamedMap.item(i);
XSElementDecl xsElementDecl = (XSElementDecl)object;
if (xsElementDecl.getScope()==XSElementDecl.SCOPE_GLOBAL) {
..... etc
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
attributeFormDefault="unqualified" elementFormDefault="qualified">
<xs:element name="responsemodel">
<xs:complexType>
<xs:sequence>
<xs:element name="response" type="xs:string"/>
<xs:element name="exceptionThrown" type="xs:boolean"/>
<xs:element name="exceptionMessage" minOccurs="0" type="xs:string"/>
<xs:sequence>
<xs:element name="children" minOccurs="0"
maxOccurs="unbounded" type="xs:string"/>
</xs:sequence>
<xs:element name="booleanResponse" minOccurs="0" type="xs:boolean"/>
<xs:element name="byteResponse" minOccurs="0" type="xs:base64Binary"/>
<xs:element name="calendarResponse" minOccurs="0" type="xs:date"/>
<xs:element name="longResponse" minOccurs="0" type="xs:int"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Re: Scope and getEnclosingCTDefinition() bug?
Posted by Nick Betteridge <n....@syntactics.com>.
Sorry, I've just realised that my problem was poorly stated - I'm trying to traverse down the schema and when I try to get the XSComplexTypeDecl which should be accessible via xsElementDecl.getEnclosingCTDefinition(), all I get is a null.
----- Original Message -----
From: Maksym Kovalenko
To: xerces-j-dev@xml.apache.org
Sent: Wednesday, July 30, 2003 4:08 PM
Subject: Re: Scope and getEnclosingCTDefinition() bug?
Element responsemodel has global scope and its type has local scope.
To get element's type use
(XSComplexTypeDeclaration) xsElementDecl.getType()
Nick Betteridge wrote:
Hi
I'm not too sure if this is a bug - I have a simple schema, and if I parse the schema and begin to traverse down through the schemagrammer, I get to the first complexType. Xerces tells me that the element "responsemodel" is a XSElementDecl.SCOPE_GLOBAL. Is this correct? Surely it should be a XSElementDecl.SCOPE_LOCAL? As a consequence, I cannot get the complexType.
I'm using the latest version of xercesImpl.jar (29-Jul-2003)
Regards
Nick
grammer = (SchemaGrammar)preparser.preparseGrammar(XMLGrammarDescription.XML_SCHEMA, xmlInputSource);
xsNamedMap = grammer.getComponents(XSConstants.ELEMENT_DECLARATION);
for (int i=0; i<xsNamedMap.getLength(); i++ ) {
XSObject object = xsNamedMap.item(i);
XSElementDecl xsElementDecl = (XSElementDecl)object;
if (xsElementDecl.getScope()==XSElementDecl.SCOPE_GLOBAL) {
..... etc
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
attributeFormDefault="unqualified" elementFormDefault="qualified">
<xs:element name="responsemodel">
<xs:complexType>
<xs:sequence>
<xs:element name="response" type="xs:string"/>
<xs:element name="exceptionThrown" type="xs:boolean"/>
<xs:element name="exceptionMessage" minOccurs="0" type="xs:string"/>
<xs:sequence>
<xs:element name="children" minOccurs="0"
maxOccurs="unbounded" type="xs:string"/>
</xs:sequence>
<xs:element name="booleanResponse" minOccurs="0" type="xs:boolean"/>
<xs:element name="byteResponse" minOccurs="0" type="xs:base64Binary"/>
<xs:element name="calendarResponse" minOccurs="0" type="xs:date"/>
<xs:element name="longResponse" minOccurs="0" type="xs:int"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
--
------------------------------------------------------------------------------
Maksym Kovalenko
Software Engineer
Marketswitch Corporation
http://www.marketswitch.com
108 Powers Court, Suite 225
Dulles, VA 20166
Phone: +1 (703) 444-6750 ext. 302
Fax: +1 (703) 444-6812
Re: Scope and getEnclosingCTDefinition() bug?
Posted by Maksym Kovalenko <mk...@marketswitch.com>.
Element responsemodel has global scope and its type has local scope.
To get element's type use
(XSComplexTypeDeclaration) xsElementDecl.getType()
Nick Betteridge wrote:
> Hi
>
> I'm not too sure if this is a bug - I have a simple schema, and if I
> parse the schema and begin to traverse down through the schemagrammer,
> I get to the first complexType. Xerces tells me that the element
> "responsemodel" is a XSElementDecl.SCOPE_GLOBAL. Is this correct?
> Surely it should be a XSElementDecl.SCOPE_LOCAL? As a consequence, I
> cannot get the complexType.
>
> I'm using the latest version of xercesImpl.jar (29-Jul-2003)
>
> Regards
> Nick
>
> grammer =
> (SchemaGrammar)preparser.preparseGrammar(XMLGrammarDescription.XML_SCHEMA,
> xmlInputSource);
> xsNamedMap = grammer.getComponents(XSConstants.ELEMENT_DECLARATION);
> for (int i=0; i<xsNamedMap.getLength(); i++ ) {
> XSObject object = xsNamedMap.item(i);
> XSElementDecl xsElementDecl = (XSElementDecl)object;
> if (xsElementDecl.getScope()==XSElementDecl.SCOPE_GLOBAL) {
> ..... etc
>
> <?xml version="1.0" encoding="UTF-8"?>
> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
> attributeFormDefault="unqualified" elementFormDefault="qualified">
> <xs:element name="responsemodel">
> <xs:complexType>
> <xs:sequence>
> <xs:element name="response" type="xs:string"/>
> <xs:element name="exceptionThrown" type="xs:boolean"/>
> <xs:element name="exceptionMessage" minOccurs="0"
> type="xs:string"/>
> <xs:sequence>
> <xs:element name="children" minOccurs="0"
> maxOccurs="unbounded" type="xs:string"/>
> </xs:sequence>
> <xs:element name="booleanResponse" minOccurs="0"
> type="xs:boolean"/>
> <xs:element name="byteResponse" minOccurs="0"
> type="xs:base64Binary"/>
> <xs:element name="calendarResponse" minOccurs="0"
> type="xs:date"/>
> <xs:element name="longResponse" minOccurs="0"
> type="xs:int"/>
> </xs:sequence>
> </xs:complexType>
> </xs:element>
> </xs:schema>
--
------------------------------------------------------------------------
Maksym Kovalenko
Software Engineer
Marketswitch Corporation
http://www.marketswitch.com <http://www.marketswitch.com/>
108 Powers Court, Suite 225
Dulles, VA 20166
Phone: +1 (703) 444-6750 ext. 302
Fax: +1 (703) 444-6812