Hi Ken and Hayden,
There isn't any easy way in Xerces1 to validate a schema document
independent of an instance document. Xerces1's primary goal in life is to
validate instance documents according to grammars, and it validates the
grammars along the way. So DOMCount's behaviour when run on your xsd file
in validating mode is expected.
This behaviour should be good enough if you just want to create valid
schemas--you can always (or almost always anyway) easily create a trivial
instance document to validate with the schema, and Xerces will tell you how
your schema fared. If what you're interested in though is getting
information from the schema, then you'll have a tough time with
Xerces1--and, until DOM level 3 introduces an API for the PSVI, you're
likely to have a tough time with most general-purpose parsers.
Hope that helps,
Neil
Neil Graham
XML Parser Development
IBM Toronto Lab
Phone: 905-413-3519, T/L 969-3519
E-mail: [EMAIL PROTECTED]
"Ken Gettler" <[EMAIL PROTECTED]> on 09/23/2001 02:36:03 PM
Please respond to [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
cc:
Subject: Re: Problem parsing schema with xerces 141 and 143
Hi Hayden
Well, misery loves company. So far I haven't had any luck. I tried
running
DOMCount against an xsd doc and failed with the error:
E:\xerces-1_4_1\data>java dom.DOMCount -v kens.xsd
[Error] kens.xsd:2:56: General Schema Error: Grammar with uri 2:
http://www.w3.o
rg/2001/XMLSchema , can not be found.
[Error] kens.xsd:2:56: Element type "xs:schema" must be declared.
etc... etc..
Someone else told me that he is able to run DOMCount against an xsd file.
I'm waiting to compare environments and code with him to see if this is
really possible.
I will follow-up on your validator.schema idea as well. If you have any
luck, please let me know. I will do the same.
Thanks
Ken
Hayden Marchant wrote:
> 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]
(See attached file: kgettler.vcf)
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
kgettler.vcf
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]