[Home] [By Thread] [By Date] [Recent Entries]
Hi, I want to extend an XML schema. An element exits in the base schema, which is defined to be of a certain complexType. I want to use this element but to extend its type. I do this with the files below but when I validate an instance of the extended schema , I get problems. The base schema (IPDRDoc3.5.xsd) is as follows; ===================================== <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.ipdr.org/namespaces/IPDR" xmlns:ipdr="http://www.ipdr.org/namespaces/IPDR" version="3.5"> <include schemaLocation="http://www.ipdr.org/public/IPDRTypes.xsd" /> - <complexType name="IPDRType" final="restriction"> - <annotation> <documentation>This is the base type for the IPDR element. The service-specific schema can extend this by deriving from it.</documentation> </annotation> - <sequence> <element ref="ipdr:IPDRCreationTime" minOccurs="0" /> <element ref="ipdr:seqNum" minOccurs="0" /> </sequence> </complexType> - <element name="IPDR" type="ipdr:IPDRType"> - <annotation> <documentation>An IPDR describes an event between a service consumer and a service element. Details of the event are contained within this record. All IPDR elements have a time indicating when the event occurred.</documentation> </annotation> </element> </schema> I want to use the IPDR element but extend the IPDRType complexType. My Extending schema(filename -> ExtendedIPDR.xsd); ========================================= <?xml version = "1.0" encoding = "UTF-8"?> <schema xmlns = "http://www.w3.org/2001/XMLSchema" targetNamespace = "http://www.mySchema.com/ccf" xmlns:ccf = "http://www.mySchema.com/ccf xmlns:ipdr = "http://www.ipdr.org/namespaces/IPDR"> <import namespace="http://www.ipdr.org/namespaces/IPDR" schemaLocation="http://www.ipdr.org/public/IPDRDoc3.5.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> </schema> Now I create an XML instance of my extended schema; ======================================== <?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 C:\myDownloads\myFiles\ExtendedIPDR.xsd"> <ipdr:IPDRCreationTime>2001-0531T13: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> Now my problem is when I validate the instance above against the extended schema(I am using Xselerator to do my validation). The error I'm getting is; ' The element 'transactionID' is used but not declared in the schema'. But transactionID is defined and I even tried to prefix it with 'ccf' xmlns:ccf="http://www.mySchema.com/ccf" in the instance document and it still dosen't work. Do I need to redefine the IPDR element itself to be of type 'IPDRTypeExtended'?? Any help appreciated. Best Regards, Chris.
|

Cart



