Hi Michael,
WST (Web Standard Tools) is a sub project of WTP (Web Tools Platform), which is a sub project of Eclipse. WST provides users with some good structured editing capabilities and this includes editing of XML files. In cases where a grammar (either DTD or Schema) is specified, it supports the user also with nice things like "validation as you type" and code completion/suggestion. Unfortunately it does not yet support XInclude, but I need it and so I am currently writing an extension that supports XInclude and that will become the base for a group of structured editors. WST provides a mechanism that allows to plug in new validating components and the association between validating component and file is made by file name patterns, usually extensions. So I have registered my validating component with the extension *.ixml, this is more or less just a test case right now. If I now have two files with identical content, one named test.xml and the other named test.ixml and I validate both from within the Eclipse environment, test.xml is validated by the build-in validating component of WST and test.ixml is validated by my own validating component. This has nothing to with Xerces, but with the associations made by the framework.
This is the background.
I want to use XNI not only because of support for XInclude (JAXP would be sufficient), but also because I see some more advantages that are related to the flexible design of XNI. I want to cache the parsed grammars to improve speed and later I might wrap something around the XInclude components of XNI to enhance the user percepted response times by checking file modification timestamps of xincluded files and skip their revalidation if they haven't been touched since a recent validation run. Or I might put some own components into the pipeline that collect information during the validation process that can later be used i.e. for code suggestions. I have had my validating component already working using JAXP, but then I read about XNI and thought this might be the better way to move on. Now I am struggling with this weird effect, but I don't want to give up at this point and switch back to JAXP. At least not so fast. Perhaps I should really give a priest a chance to fix this issue with some prayers, if it would not help, it would not harm either ;-) And I am using Xerces directly. Perhaps the problem is related to the fact that there are different Xerces implementations in my environment. But then I would expect a class cast exception at some point and not what I actually get.
Thanks and regards.

Michael Glavassevich schrieb:
Hi Stefan,

Not being a user of WST, I'm not sure what "Xerces based" validation with WST implies. Are you actually using Xerces directly or is there something else calling into it? Perhaps WST is causing this failure. Xerces' behaviour certainly isn't sensitive to file extensions.

Thanks.

Michael Glavassevich
XML Parser Development
IBM Toronto Lab
E-mail: [EMAIL PROTECTED]
E-mail: [EMAIL PROTECTED]

Stefan Eder <[EMAIL PROTECTED]> wrote on 04/18/2007 01:59:52 PM:

Hi Michael,
It is really weird and it is not a well-formedness error, or at least I cannot see it. I can validate the identical content with an extension of *.xml without errors, but if I rename the file to *.ixml (that triggers the validation I am building with Xerces within my environment), I get this strange behavior. The working validation is also Xerces based (Eclipse/WST), but I want to get the advantages of grammar caching, xinclude etc. And in fact, the working validation method does not allow the workaround for the buggy validation method like:
     <xddl:column-ref name="column">
     </xddl:column-ref>
Then I get the error: cvc-complex-type.2.1: Element 'xddl:column-
ref' must have no character or element information item [children], because the type's content type is empty. This is an error that makes sense to me.
It must be:
    <xddl:column-ref name="column"></xddl:column-ref>
or, what I want, simply:
    <xddl:column-ref name="column"/>
to pass the working validation without errors, but this doesn't work
for the buggy one.
I am already thinking about to call the nearest priest and ask him to hunt the devil out of my box ;-)
This is the complete file:
<?xml version="1.0" encoding="UTF-8"?>
<xddl:logical-group xmlns:xddl="http://schemas.ebuconnect.com/xddl"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:schemaLocation="http://schemas.ebuconnect.com/xddl xddl.xsd"
    name="root">
    <xddl:logical-group name="sub1">
        <xddl:table name="table1">
            <xddl:column name="column1" type="varchar" size="20"/>
            <xddl:column name="column2" type="varchar" size="20"/>
            <xddl:primary-key name="pk_table1">
                <xddl:column-ref name="column1"/>
                <xddl:column-ref name="column2"/>
            </xddl:primary-key>
        </xddl:table>
    </xddl:logical-group>
    <xddl:logical-group name="sub2">
        <xddl:table name="table1">
            <xddl:column name="column1" type="varchar" size="20"/>
            <xddl:column name="column2" type="varchar" size="20"/>
            <xddl:primary-key name="pk_table1">
                <xddl:column-ref name="column1"/>
            </xddl:primary-key>
            <xddl:foreign-key name="fk_table1">
<xddl:constraint-ref contstraint="pk_table1" table="/root/sub1/table1"/>
                <xddl:column-ref name="column1"/>
                <xddl:column-ref name="column2"/>
            </xddl:foreign-key>
        </xddl:table>
    </xddl:logical-group>
</xddl:logical-group>

I have some key constraints within my Schema that enforce unique names of several elements. Not globally, but within the scope of their parent elements and some keyref constraints to ensure the existence of matching counterparts for some references on those
elements.
Also I am using substitution group constructs like this:
    <xs:element name="constraint" abstract="true"/>
    <xs:element name="non-primary-key" substitutionGroup="xddl:
constraint" abstract="true"/>
    <xs:element name="index" substitutionGroup="xddl:non-primary-key">
    <!-- ... -->
    </xs:element>
    <xs:element name="unique" substitutionGroup="xddl:non-primary-key">
    <!-- ... -->
    </xs:element>
<xs:element name="foreign-key"
substitutionGroup="xddl:non-primary-key">
    <!-- ... -->
    </xs:element>
    <xs:element name="table">
        <xs:complexType>
            <xs:sequence>
<xs:element ref="xddl:column" minOccurs="1" maxOccurs="unbounded"/> <xs:element ref="xddl:primary-key" minOccurs="0" maxOccurs="1"/>
                <xs:element ref="xddl:non-primary-key" minOccurs="0"
maxOccurs="unbounded"/>
            </xs:sequence>
            <xs:attribute name="name" type="xs:string" use="required"/>
            <!-- ... -->
            <xs:attributeGroup ref="xml:specialAttrs"/>
        </xs:complexType>
    <!-- ... -->
    </xs:element>

But all in all the Schema is neither big nor complex, just work in progress (unfortunately not so much progress at the moment). Thanks for your response, any further ideas/hints/suggestions will be very appreciated.
Regards, Stefan


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


Reply via email to