[Home] [By Thread] [By Date] [Recent Entries]


I can't immediately see anything wrong with it. What do other validators
say?

Michael Kay
http://www.saxonica.com/ 

> -----Original Message-----
> From: Christopher Foley [mailto:ccfoley@g...] 
> Sent: 25 July 2006 11:19
> To: xml-dev@l...; Michael Kay
> Subject: Re:  Schema Extension and validation of an instance
> 
> Hi,
> 
> Thanks to all for the info. The redefinition of the IPDR 
> element works fine.
> 
> But I am getting some difficulty when using the xsi:type alternative;
> 
> My new complex type is as follows(newComplexType.xsd);
> *************
> <?xml version = "1.0" encoding = "UTF-8"?> <schema 
> xmlns="http://www.w3.org/2001/XMLSchema"
>   targetNamespace="http://www.ipdr.org/namespaces/IPDR"
>   xmlns:ccf="http://www.mySchema.com/ccf"
>   xmlns:ipdr="http://www.ipdr.org/namespaces/IPDR">
> 
> <import namespace="http://www.mySchema.com/ccf" 
> schemaLocation="ccf.xsd"/>
> 
> <complexType name="IPDRTypeExtended">
> <complexContent>
> <extension base="ipdr:IPDRType">
> <sequence>
>        <element name="ccf:transactionID" type="string" minOccurs="0"/>
>        <element name="ccf:serviceID" type="string" minOccurs="0" />
>        <element name="ccf:serviceName" type="string" minOccurs="0" />
>        <element name="ccf:customerID" type="string" minOccurs="0" />
>        <element name="ccf:sessionID" type="string" minOccurs="0" />
>        <element name="ccf:timeZoneOffset" type="string" 
> minOccurs="0" /> </sequence> </extension> </complexContent> 
> </complexType>
> 
> I don't redefine the IPDR element, I just use the xsi:type 
> method in the instance document as follows;
> *****************************
> <?xml version="1.0"?>
> <ipdr:IPDR xmlns="http://www.mySchema.com/ccf"
>   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>   xmlns:ipdr="http://www.ipdr.org/namespaces/IPDR"
>   xsi:schemaLocation="http://www.mySchema.com/ccf
>   ccf.xsd http://www.ipdr.org/namespaces/IPDR newComplexType.xsd"
>   xsi:type="ipdr:IPDRTypeExtended">
> 
>   
> <ipdr:IPDRCreationTime>2001-05-31T13:20:00.561Z</ipdr:IPDRCrea
> tionTime>
>   <ipdr:seqNum>1</ipdr:seqNum>
>   <transactionID>1</transactionID>
>   <serviceID>1</serviceID>
>   <serviceName>New</serviceName>
>   <customerID>Chris</customerID>
>   <sessionID>1</sessionID>
>   <timeZoneOffset>12</timeZoneOffset>
> </ipdr:IPDR>
> 
> On validating this instance, it tells me that
> 
> 'Type {http://www.ipdr.org/namespaces/IPDR}IPDRTypeExtended 
> is not found in schema.'
> 
> This is coming from -> xsi:type="ipdr:IPDRTypeExtended"
> 
> But it is defined in the schema(newComplexType.xsd). And it 
> is also part of the http://www.ipdr.org/namespaces/IPDR 
> namespace. I have looked at the specs for sample uses of 
> xsi:type and what I'm doing looks correct, I think!!!
> 
> I am somewhat confused as to why it is not validating(using 
> Xselerator to do the validation).
> 
> Any pointers??
> 
> Best Regards,
> Chris.
> On 7/18/06, Michael Kay <mike@s...> wrote:
> > > Do I need to redefine the IPDR element itself to be of type 
> > > 'IPDRTypeExtended'??
> >
> > Yes. You've defined an extended type, but the element declaration 
> > still refers to the original type. You can create an instance that 
> > conforms to the extended type by giving it an xsi:type attribute.
> >
> > Michael Kay
> > http://www.saxonica.com/
> >
> >


Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member