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>