[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] 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:IPDRCreationTime> <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/ > >
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|