[
Lists Home |
Date Index |
Thread Index
]
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@saxonica.com> 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/
>
>
|