Hi Ken,

I'm new to this group, but I noticed your posting: Are you parsing XML
Schema documents using Xerces? I need to do the same thing. I was hoping
that there was a specific API out there that represents a Schema, other
than parsing the XML and working it out. I assume that you looked and
did not find anything? If so, then how did you approach the problem -
are you just parsing the XML Schema doc yourself and analyzing for all
the types of XML Schema language constructs? Did you look ever think of
using org.apache.xerces.validators.schema.TraverseSchema class in
Xerces?

I'm about to embark on the same type of head-ache of parsing XML schemas
so I would really appreciate soeme feedback on problems you encountered
doing this.

Thanks,
Hayden  

-----Original Message-----
From: Ken Gettler [mailto:[EMAIL PROTECTED]]
Sent: Thursday, September 20, 2001 9:08 PM
To: xerces developer group
Subject: 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(XMLDocu
mentScanner.java:2143)

    at
org.apache.xerces.framework.XMLDocumentScanner.scanElement(XMLDocumentSc
anner.java:1807)

    at
org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.dispatc
h(XMLDocumentScanner.java:1005)

    at
org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentScan
ner.java:381)

    at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1081)
    at
org.apache.xerces.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.jav
a: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>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to