I tried your files with Xerces-2, and didn't see the behavior you
described. Then I tried it on Xerces 1.4.4, and did see the error.
Obviously it's a bug in Xerces-1.

Is it possible for you to upgrade to Xerces-2? It's supposed to have better
schema support than Xerces-1. It's not likely that bugs will be fixed in
Xerces-1 code base, because most committers are working on Xerces-2. Of
course, if you find a fix to the problem and post a patch to the list, I'd
be more than happy to commit it.

And if you do want to upgrade to Xerces-2, you need to add one more line to
your program:

      dbf.setAttribute("http://apache.org/xml/features/validation/schema";,
Boolean.TRUE);

The reason is that the default of schema-validation is on in Xerces-1, but
off in Xerces-2.

Hope this helps,
Sandy Gao
Software Developer, IBM Canada
(1-905) 413-3255
[EMAIL PROTECTED]



                                                                                       
                          
                    Yuri de Wit                                                        
                          
                    <yuri.dewit@metas       To:     "'[EMAIL PROTECTED]'"    
                          
                    erver.com>               <[EMAIL PROTECTED]>             
                          
                                            cc:                                        
                          
                    02/20/2002 08:59        Subject:     RE: xsi:type and validation 
of polymorphic types in XML 
                    PM                       instances                                 
                          
                    Please respond to                                                  
                          
                    xerces-j-dev                                                       
                          
                                                                                       
                          
                                                                                       
                          



Thanks, for your reply!

That's what I thought, but trying out an example did not work out as
expected. The parser did not seem to bother with a xsd:float as a 'Yuri' in
param1 (if I coment out param2 and param3 it parses without problems) and
it
seems to be mixing the float declared in param1 with the Item in param2.

SOURCE CODE:
------------
      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
      dbf.setNamespaceAware(true);
      dbf.setValidating(true);
      DocumentBuilder db = dbf.newDocumentBuilder();

      Document doc = db.parse(new File("test.xml"));

RESULT:
-------
Warning: validation was turned on but an org.xml.sax.ErrorHandler was not
set, which is probably not what is desired.  Parser will use a default
ErrorHandler to print the first 10 errors.  Please call
the 'setErrorHandler' method to fix this.
Error: URI=file:e:/source/java/test.xml Line=15: Datatype error: In element
'my:Item' : my item is not a float.
----------------------------------------------------------------------------

-----------

TEST.XML
----------------------------------------------------------------------------

-----------
<?xml version="1.0"?>
<base:OPERATION
    xmlns:base="urn:base"
    xmlns:my="urn:myschema"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema";
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
    xsi:schemaLocation="urn:base base.xsd urn:myschema myschema.xsd">

    <base:PARAMETER name="myParam1">
           <base:VALUE xsi:type="xsd:float">Yuri</base:VALUE>
    </base:PARAMETER>

    <base:PARAMETER name="myParam2">
           <base:VALUE xsi:type="my:PurchaseOrderType">
                     <my:Item>my item</my:Item>
           </base:VALUE>
    </base:PARAMETER>

    <base:PARAMETER name="myParam3">
           <my:PurchaseOrder>
                     <my:Item>my item</my:Item>
           </my:PurchaseOrder>
            </base:PARAMETER>
</base:OPERATION>
----------------------------------------------------------------------------

-----------

BASE.XSD
----------------------------------------------------------------------------

-----------
<?xml version = "1.0" encoding = "UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema";
            targetNamespace="urn:base"
            xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
            elementFormDefault="qualified">

    <element name = "OPERATION">
        <complexType>
            <sequence>
                <element name="PARAMETER" minOccurs="0"
maxOccurs="unbounded">
                          <complexType>
                                    <choice>
                                               <element name="VALUE"/>
                                               <any/>
                                    </choice>
                                          <attribute name = "name" use
= "required"
type = "Name"/>
                                 </complexType>
                </element>
            </sequence>
        </complexType>
    </element>
</schema>
----------------------------------------------------------------------------

-----------
MYSCHEMA.XSD
----------------------------------------------------------------------------

-----------
<?xml version = "1.0" encoding = "UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema";
                               xmlns:tns="urn:myschema"
            targetNamespace="urn:myschema"
            xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
                                          elementFormDefault="qualified">

             <complexType name="PurchaseOrderType">
                               <sequence>
                                           <element name="Item" type
="string"/>
                               </sequence>
             </complexType>

    <element name = "PurchaseOrder" type="tns:PurchaseOrderType"/>

</schema>
----------------------------------------------------------------------------

-----------

-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, February 20, 2002 15:09
To: [EMAIL PROTECTED]
Subject: Re: xsi:type and validation of polymorphic types in XML
instances


You mean validate "Me" against type "float"? Sure Xerces does that. This is
the reason why xsi:type exists.

I suspect that you meant xsi:type="xsd:float", where xsd is bound to the
schema namespace.

Sandy Gao
Software Developer, IBM Canada
(1-905) 413-3255
[EMAIL PROTECTED]





                    Yuri de Wit

                    <yuri.dewit@metas       To:
"'[EMAIL PROTECTED]'"
                    erver.com>               <[EMAIL PROTECTED]>

                                            cc:

                    02/20/2002 02:34        Subject:     xsi:type and
validation of polymorphic types in XML
                    PM                       instances

                    Please respond to

                    xerces-j-dev








Can Xerces validate types, as opposed to elements and attributes, in XML
instances?

...
<parameter name="param1">
           <default-value xsi:type="float">Me</default-value>
</parameter>
...

Lets say the schema has something like this:

...
<xsd:element name="parameter">
           <xsd:complexType>
                     <xsd:sequence>
                               <xsd:element name="default-value"
type="xsd:anyType"/>
                     </xsd:sequence>
           </xsd:complexType>
</xsd:element>
....

WILL XERCES VALIDATE <default-value> CONTENT? I need a way to validate
parameter default values being them simple types or complex types in my XML
instance that is not known in the schema at design time.

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





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

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





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

Reply via email to