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 Ken Gettler <kg...@sonicsoftware.com> on 2001/09/20 21:07:33 UTC
Problem parsing schema with xerces 141 and 143
I am attempting to parse xsd documents with the objective of finding
elements in user-defined xsd files. So far I have had no luck. Keep
getting exceptions thrown during the parse(). Finally I took one of the
sample xsd files that comes with XML Spy 4.0beta3 and while XML Spy
could parse the file, I could not with xerces 1.4.1. Is there something
that I am doing incorrectly or is this a parser problem? My code is as
follows:
Thanks
Ken
Element element = null;
try
{
DocumentBuilder builder = DOMUtils.getDocumentBuilder(true);
Document document =
builder.parse(URLUtil.makeFileURL(xmlfile));
element = document.getDocumentElement();
}
catch (Exception e)
{
e.printStackTrace();
}
return element;
where DOMUtils method is:
public static DocumentBuilder getDocumentBuilder(boolean validating)
throws ParserConfigurationException
{
DocumentBuilderFactory factory =
DocumentBuilderFactory.newInstance();
factory.setValidating(validating);
factory.setNamespaceAware(true);
DocumentBuilder builder = factory.newDocumentBuilder();
builder.setErrorHandler(errorHandler);
return builder;
}
and,
private static ErrorHandler errorHandler = new
DOMParserErrorHandlerImpl();
EXCEPTION:
==========
org.xml.sax.SAXParseException: An invalid second ':' was found in the
element type or attribute name.
at
org.apache.xerces.framework.XMLParser.reportError(XMLParser.java:1196)
at
org.apache.xerces.framework.XMLDocumentScanner.scanAttributeName(XMLDocumentScanner.java:2143)
at
org.apache.xerces.framework.XMLDocumentScanner.scanElement(XMLDocumentScanner.java:1807)
at
org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.dispatch(XMLDocumentScanner.java:1005)
at
org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentScanner.java:381)
at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1081)
at
org.apache.xerces.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:195)
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:184)
at
com.sonicsw.xs.config.XSFileConfig.readXMLFile(XSFileConfig.java:153)
at com.sonicsw.xs.config.XSFileConfig.main(XSFileConfig.java:170)
Exception caught by debugger. Exception: java.lang.NullPointerException
Exception caught by debugger. Exception: java.lang.NullPointerException
Exception caught by debugger. Exception: java.lang.NullPointerException
Sample XSD used:
=============
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XML Spy v4.0 NT beta 2 build Jul 24 2001
(http://www.xmlspy.com) by Vladislav Gavrielov (Altova) -->
<!--W3C Schema generated by XML Spy v3.5 NT (http://www.xmlspy.com)-->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified"
version="2.1">
<xsd:element name="bold">
<xsd:complexType mixed="true">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="italic"/>
<xsd:element ref="bold"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
<xsd:element name="copyright" type="TextualData"/>
<xsd:element name="datasheet">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="documentid">
<xsd:annotation>
<xsd:documentation>Document IDs are assigned by central IT Admin -
call 555-1212 for a new ID</xsd:documentation>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value=".{3}-.{4}-.*"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="manufacturer" type="xsd:string"/>
<xsd:element name="website" type="xsd:anyURI"/>
<xsd:element name="productline" type="xsd:string"/>
<xsd:element ref="security"/>
<xsd:element ref="tracking"/>
<xsd:element ref="title"/>
<xsd:element ref="description"/>
<xsd:element ref="diagrams"/>
<xsd:element ref="models"/>
<xsd:element ref="copyright"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="description" type="TextualData"/>
<xsd:element name="diagrams">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="diagram" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="title"/>
<xsd:element ref="source"/>
<xsd:element ref="description" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="kind">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="drawing"/>
<xsd:enumeration value="3d"/>
<xsd:enumeration value="chart"/>
<xsd:enumeration value="photo"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="italic">
<xsd:complexType mixed="true">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="italic"/>
<xsd:element ref="bold"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
<xsd:element name="models">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="model" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Name" type="xsd:string"/>
<xsd:element name="MaxTakeoffWeight" type="xsd:int">
<xsd:annotation>
<xsd:documentation>Specify in lb</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="MaxLandingWeight" type="xsd:int"/>
<xsd:element name="MaxZeroFuelWeight" type="xsd:int"/>
<xsd:element name="EngineOfferings" type="xsd:string"/>
<xsd:element name="FuelCapacity" type="xsd:int"/>
<xsd:element name="CruiseMach" type="xsd:decimal"/>
<xsd:element name="Passengers">
<xsd:simpleType>
<xsd:restriction base="xsd:short">
<xsd:minInclusive value="200"/>
<xsd:maxInclusive value="900"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="DesignRange" type="xsd:short"/>
<xsd:element name="LowerHoldVolume" type="xsd:short"/>
<xsd:element name="Pallets" type="xsd:byte"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="para">
<xsd:complexType mixed="true">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="bold"/>
<xsd:element ref="italic"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
<xsd:element name="security">
<xsd:annotation>
<xsd:documentation>Define security classification as per corporate
guidelines document B98265-Z0</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element name="classification">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="public"/>
<xsd:enumeration value="confidential"/>
<xsd:enumeration value="eyes only"/>
<xsd:enumeration value="restricted"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="level">
<xsd:simpleType>
<xsd:restriction base="xsd:byte">
<xsd:minInclusive value="1"/>
<xsd:maxInclusive value="3"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="effective" type="xsd:date"/>
<xsd:element name="use">
<xsd:complexType>
<xsd:attribute name="internal" type="xsd:boolean"/>
<xsd:attribute name="external" type="xsd:boolean"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="source">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value=".*\.(gif|jpg)"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="title">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="25"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="tracking">
<xsd:annotation>
<xsd:documentation>All editors are required to log changes to each
production document</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element name="modification" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="date" type="xsd:date"/>
<xsd:element name="time" type="xsd:time"/>
<xsd:element name="by" type="xsd:string"/>
<xsd:element name="department">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Marketing"/>
<xsd:enumeration value="IT"/>
<xsd:enumeration value="IT Admin"/>
<xsd:enumeration value="Engineering"/>
<xsd:enumeration value="Graphics Design"/>
<xsd:enumeration value="Auditing"/>
<xsd:enumeration value="Aerospace"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="status">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="in progress"/>
<xsd:enumeration value="for review"/>
<xsd:enumeration value="final"/>
<xsd:enumeration value="for editing"/>
<xsd:enumeration value="for archive"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="changes" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="operation" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="approved"/>
<xsd:enumeration value="created"/>
<xsd:enumeration value="deleted"/>
<xsd:enumeration value="edited"/>
<xsd:enumeration value="rejected"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="TextualData">
<xsd:sequence>
<xsd:element ref="para" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>