Jump to content

References across namespaces


Recommended Posts

I have a first schema with a unique targetNamespace, a default namespace that of "http://www.w3.org/2001/XMLSchema",'>http://www.w3.org/2001/XMLSchema", and a global element "<element name="X"/>".The purpose of the first schema is simply to define some base element types. It's imported by a bunch of other schemas.I have a second schema, it too has a unique targetNamespace and a default namespace of "http://www.w3.org/2001/XMLSchema" that imports the first and its namespace. I also have a prefix qualified with the first schema's targetNamespace. Within the second, I reference X "<element ref="first:X"/>".The purpose of the second is to define types that are much more specific to a job. It too is imported by a bunch of schemas that are like the third described below.I have a third schema, which does this all again, and my xml file is validated against this. The purpose of this third is to describe elements specific to the xml file and more importantly the STRUCTURE of the root element of the xml file.I didn't choose this hierarchy, thats how it is in the production code.My problem is that the second element gets the error message about the first: "Message: Element must have a name or a ref attribute - element ignored". Did I qualify the reference wrong? Can anyone see the problem with my logic? Here are the example files:Three.xml--<?xml version="1.0" encoding="UTF-8"?><Three_Root xmlns="http://www.company.com/Three.xsd"targetNamespace="http://www.company.com/Three.xsd"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.company.com/Three.xsd Three.xsd"> <X>7</X></Three_Root>Three.xsd--<?xml version="1.0" encoding="UTF-8"?><schema xmlns="http://www.w3.org/2001/XMLSchema"xmlns:Three_ns="http://www.company.com/Three.xsd"xmlns:Two_ns="http://www.company.com/Two.xsd"targetNamespace="http://www.company.com/Three.xsd"> <import schemaLocation="Two.xsd" namespace="http://www.company.com/Two.xsd"/> <element name="Three_Root"> <complexType> <sequence> <element ref="Two_ns:X"/> </sequence> </complexType> </element></schema>Two.xsd--<?xml version="1.0" encoding="UTF-8"?><schema xmlns="http://www.w3.org/2001/XMLSchema"xmlns:Two_ns="http://www.company.com/Two.xsd"xmlns:One_ns="http://www.company.com/One.xsd"targetNamespace="http://www.company.com/Two.xsd"> <import schemaLocation="One.xsd" namespace="http://www.company.com/One.xsd"/> <element ref="One_ns:X"/></schema>One.xsd--<?xml version="1.0" encoding="UTF-8"?><schema xmlns="http://www.w3.org/2001/XMLSchema"xmlns:One_ns="http://www.company.com/One.xsd"targetNamespace="http://www.company.com/One.xsd"> <element name="X" type="integer"/></schema>

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Create New...