- From: Eddie Robertsson <eddie@allette.com.au>
- Date: Thu, 17 May 2001 16:21:14 +1000
- To: O.Geisser@ceyoniq.com
- CC: xmlschema-dev@w3.org
Hi Oliver,
> <?xml version="1.0" encoding="UTF-8"?>
> <tree:tree xmlns:tree="urn:tree"
> xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance">
> <tree:leaf xsi:type="tree:extendedLeafType">
> <tree:name>eins</tree:name>
> <tree:info>Test</tree:info>
> </tree:leaf>
> </tree:tree>
>
> Up until here there is no problem.
You'll need to give XML Spy an indication of where to locate your schema as
well. You do this with the xsi:schemaLocation attribute. So, the above example
would be:
<?xml version="1.0" encoding="UTF-8"?>
<tree:tree xmlns:tree="urn:tree"
xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
xsi:schemaLocation="urn:tree leafSchema.xsd">
<tree:leaf xsi:type="tree:extendedLeafType">
<tree:name>eins</tree:name>
<tree:info>Test</tree:info>
</tree:leaf>
</tree:tree>
> Now I want to do the following, but I don't know if it is possible. And if it
> is possible I don't know how
> to do it:
>
> The definition of the derived "extendedLeafType" should be in another
> namespace and therefor in another schema. Let's call the schema custom.xsd.
> The custom.xsd needs to import the tree.xsd schema.
> The tree.xsd should not know anything about the custom.xsd, because the
> custom.xsd is defined later (by some third party).
>
> But I want to write instance documents that use the derived type. So I tried
> the following:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <tree:tree xmlns:tree="urn:tree" xmlns:custom="urn:custom"
> xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance">
> <tree:leaf xsi:type="custom:extendedLeafType">
> <tree:name>eins</tree:name>
> <custom:info>Test</tree:info>
> </tree:leaf>
> </tree:tree>
>
> This does not work!
> I've tried to validate this with XML Spy and get the error: "Unknown type
> custom:extendedLeafType" (or something similiar).
Sure it will. You just have to add the xsi:schemaLocation attribute so your
instance will be:
<?xml version="1.0" encoding="UTF-8"?>
<tree:tree xmlns:tree="urn:tree" xmlns:custom="urn:custom"
xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
xsi:schemaLocation="urn:custom custom.xsd">
<tree:leaf xsi:type="custom:extendedLeafType">
<tree:name>eins</tree:name>
<custom:info>Test</custom:info>
</tree:leaf>
</tree:tree>
At the end you'll also find the two schemas.
Hope this helps
/Eddie
leafType.xsd
-------------
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="urn:tree"
xmlns:xsd="http://www.w3.org/2000/10/XMLSchema" xmlns:tns="urn:tree"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xsd:element name="tree" type="tns:branchType"/>
<xsd:complexType name="leafType">
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="branchType">
<xsd:choice maxOccurs="unbounded">
<xsd:element name="leaf" type="tns:leafType"/>
<xsd:element name="branch" type="tns:branchType"/>
</xsd:choice>
</xsd:complexType>
</xsd:schema>
custom.xsd
-----------
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"
elementFormDefault="qualified" xmlns:custom="urn:custom"
targetNamespace="urn:custom" xmlns:tns="urn:tree">
<xsd:import namespace="urn:tree" schemaLocation="leafType.xsd"/>
<xsd:complexType name="extendedLeafType">
<xsd:complexContent>
<xsd:extension base="tns:leafType">
<xsd:sequence>
<xsd:element name="info"
type="xsd:string"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:schema>
Received on Thursday, 17 May 2001 02:23:35 UTC