You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-dev@xerces.apache.org by xe...@xml.apache.org on 2004/09/16 12:34:38 UTC
[jira] Commented: (XERCESC-1263) Abstract type not handled correctly by cached grammar
The following comment has been added to this issue:
Author: Matthew Berry
Created: Thu, 16 Sep 2004 3:34 AM
Body:
>From debugging I observed that although I have set 'fgXercesSchema', for the document element IGXMLScanner::fValidator is of type DTDValidator. When we then process a child element, its is of type SchemaValidator.
A workaround is to force the parser to use the Schema validator using:
setProperty(XMLUni::fgXercesScannerName, XMLUni::fgSGXMLScanner)
---------------------------------------------------------------------
View this comment:
http://issues.apache.org/jira/browse/XERCESC-1263?page=comments#action_53132
---------------------------------------------------------------------
View the issue:
http://issues.apache.org/jira/browse/XERCESC-1263
Here is an overview of the issue:
---------------------------------------------------------------------
Key: XERCESC-1263
Summary: Abstract type not handled correctly by cached grammar
Type: Bug
Status: Unassigned
Priority: Major
Project: Xerces-C++
Components:
Validating Parser (Schema) (Xerces 1.5 or up only)
Versions:
2.3.0
2.5.0
Assignee:
Reporter: Matthew Berry
Created: Tue, 24 Aug 2004 5:14 AM
Updated: Thu, 16 Sep 2004 3:34 AM
Description:
Details:
--------
I have managed to narrow the problem I am having to a simple test case. In the schema, I have an abstract type defined and am using xsi:type with a concrete type in the data file.
If I have a xsi:schemaLocation attribute in my data file, then the test Xml file passes the validation. (I have used DOMCount to verify this)
If I remove xsi:schemaLocation and instead from my source code call loadGrammar() and setFeature(XMLUni::fgXercesUseCachedGrammarInParse, true), I am getting the following error messages:
Message: Element paramInstance is declared with a type that is
abstract. Use xsi:type to specify a non-abstract type
Message: Attribute 'name' is not declared for
element 'paramInstance'
Schema:
-------
<xsd:schema targetNamespace="http://www.temp.org" xmlns:tmp="http://www.temp.org" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<!--
Define a 'paramInstance' element
NOTE: We use an abstract base to allow for extension
-->
<xsd:complexType name="ParamInstanceType" abstract="true" />
<xsd:element name="paramInstance" type="ParamInstanceType" />
<!--
Specifying a concrete type
-->
<xsd:complexType name="ConcreteParamInstance">
<xsd:complexContent>
<xsd:extension base="tmp:ParamInstanceType">
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:schema>
Test data file:
---------------
<paramInstance xmlns="http://www.temp.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ConcreteParamInstance" name="param1" />
---------------------------------------------------------------------
JIRA INFORMATION:
This message is automatically generated by JIRA.
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
If you want more information on JIRA, or have a bug to report see:
http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-c-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-c-dev-help@xml.apache.org