Using non-native attributes

I am trying to use a non-native schema attribute and it doesn't seem
to work how I thought it would. The only reference with substance I
can find on the subject is Priscilla Walmsley's book Definitive XML
Schema. I am trying to annotate a schema with some custom attributes
to validate an idea and have run into some trouble.

When I edit an XML Schema using WebSphere Development Studio's (WDS)
Schema editor, I get an error "Unknown attribute xxx:yyy". After a lot
of trial and error, I downloaded a similar example from the Definitive
XML Schema Web site. That example (chapter 6 5/6) fails with the same
error (and a missing type). At this point, I have to believe that WDS
is unable to work with non-native attributes.

Here is the example XML Document and XML Schema:

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        xmlns:doc="http://example.org/doc"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://example.org/doc example0606.xsd">
   <xsd:element name="product" type="xsd:string" 
            doc:description="This element represents a product."/>
</xsd:schema>

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        xmlns="http://example.org/doc"
        targetNamespace="http://example.org/doc">
   <xsd:attribute name="description" type="xsd:string"/>
</xsd:schema>

The next thing I tried was to use a Java program to programatically
validate this Schema with the XML Schema Schema. I receive the
fillowing "Caused by: org.xml.sax.SAXParseException: cvc-elt.1: Cannot
find the declaration of element 'xsd:schema'." I can use this same
program to validate conventional XML documents against an XML Schema
and it works fine. I am using Xerces 1.6.2 and JDOM 1.0.  I have tried
using an entity resolver to pick up a local copy of XMLSchema.xsd as
well as from the URL: http://www.w3.org/2001/XMLSchema.xsd.

Here is some of the code:

       SAXBuilder builder =
           new SAXBuilder("org.apache.xerces.parsers.SAXParser", true);
     builder.setEntityResolver(new SchemaLoader());
       builder.setFeature(
           "http://apache.org/xml/features/validation/schema",
           true);
       builder.setProperty(
           "http://apache.org/xml/properties/schema/external-schemaLocation",
           "http://www.w3.org/2001/XMLSchema.xsd");
       Document doc = builder.build(xmlFile);

Thanks for your help,

David Morris

Received on Tuesday, 7 December 2004 10:32:03 UTC