Re: [xml-dev] referring child element of a complex element

From
ram <>
To
Michael Kay <>
Date
2016-02-09T21:16:41Z
ID
<>
Thread
Re: [xml-dev] referring child element of a complex element
Thanks Michael.  My intention is to refer local elements of schema a.xsd in  b.xsd.    The whole idea is we generate schema's from our database tables.   When we had a look into the schema, table name is coming as root element and column names as child elements.

We dont want to create same local/child elements in b.xsd , if we do so then there is no point in creating schema's from database.
More over we thought if database coulmn changes happens , we can change the table schema(a.xsd) at one place and we are good with it.

     Looks like we have to make changes multiple places.   Is there any other option to refer  local/child elements.
       


On Tuesday, 9 February 2016 3:03 PM, Michael Kay <[email protected]> wrote:


An element cannot have both a "name" and a "ref" attribute.

Furthermore, if it has a "ref" attribute, then there must be a global element declaration with this name: you can't refer to a local element declaration (i.e one that is nested within a complexType). If you want your element declarations to be reusable in this way, make them global.

Michael Kay
Saxonica


On 9 Feb 2016, at 20:28, ram <[email protected]> wrote:

Hi,
           can i refer a child element of complex element in another schema.  when i try to save b.xsd , it is showing errors.

a.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="name">
<xs:complexType>
<xs:sequence>
<xs:element name="fname">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="5"/>
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="lname">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="7"/>
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:complexType>
</xs:element>
</xs:schema>


b.xsd


<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">

<xs:include schemaLocation="file:///C:/a.xsd"/>
<xs:element name="person">
<xs:annotation>
<xs:documentation>Comment describing your root element</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
  <xs:element name="name" ref="fname"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>