These 2 schemas files are examples that I've written to understand the process of extension in xml/xsd. The first one has the basic definitions and with only one element. In the second schema I want to "extend" a specific element into nested structure from first one. These files are in different namespaces.
Myschema1.xsd
<?xml version="1.0"?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
targetNamespace="myschema1"
xmlns="myschema1">
<xs:complexType name="EnderecoTipo">
<xs:sequence>
<xs:element name="Logradouro" type="xs:string"></xs:element>
<xs:element name="CEP" type="xs:string"></xs:element>
<xs:element name="Cidade" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="IdentificacaoTipo">
<xs:sequence>
<xs:element name="Nome" type="xs:string"></xs:element>
<xs:element name="Idade" type="xs:int"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="CartaoTipo">
<xs:sequence>
<xs:element name="Identificacao" type="IdentificacaoTipo"></xs:element>
<xs:element name="Endereco" type="EnderecoTipo"></xs:element>
</xs:sequence>
<xs:attribute name="idioma" type="xs:string" default="pt-BR"></xs:attribute>
</xs:complexType>
<xs:complexType name="EmpresaTipo">
<xs:sequence>
<xs:element name="Nome" type="xs:string"></xs:element>
<xs:element name="Cartao" type="CartaoTipo"></xs:element>
</xs:sequence>
<xs:attribute name="origem" type="xs:string" default="nacional"></xs:attribute>
</xs:complexType>
<xs:element name="Empresa" type="EmpresaTipo"/>
</xs:schema>
Myschema3.xsd:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
targetNamespace="myschema3"
xmlns="myschema3"
xmlns:sch="myschema1">
<xs:import namespace="myschema1" schemaLocation="Myschema1.xsd"></xs:import>
<xs:complexType name="Companhia">
<xs:complexContent>
<xs:extension base="sch:EmpresaTipo">
<xs:sequence>
<xs:element name="Cartao">
<xs:complexType>
<xs:complexContent>
<xs:extension base="sch:CartaoTipo">
<xs:sequence>
<xs:element name="Identificacao">
<xs:complexType>
<xs:complexContent>
<xs:extension base="sch:IdentificacaoTipo">
<xs:sequence>
<xs:element name="Genero" type="xs:string" default="M"></xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="Companhia" type="Companhia"/>
</xs:schema>
I would like to add the element 'Genero' inside of 'IdentificacaoTipo', but I get the following XML.
<?xml version="1.0" encoding="UTF-8"?>
<p:Companhia origem="nacional" xmlns:p="myschema3" xmlns:p1="myschema1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="myschema3 Myschema3.xsd ">
<p1:Nome>p1:Nome</p1:Nome>
<p1:Cartao idioma="pt-BR">
<p1:Identificacao>
<p1:Nome>p1:Nome</p1:Nome>
<p1:Idade>0</p1:Idade>
</p1:Identificacao>
<p1:Endereco>
<p1:Logradouro>p1:Logradouro</p1:Logradouro>
<p1:CEP>p1:CEP</p1:CEP>
<p1:Cidade>p1:Cidade</p1:Cidade>
</p1:Endereco>
</p1:Cartao>
<p:Cartao idioma="pt-BR">
<p1:Identificacao>
<p1:Nome>p1:Nome</p1:Nome>
<p1:Idade>0</p1:Idade>
</p1:Identificacao>
<p1:Endereco>
<p1:Logradouro>p1:Logradouro</p1:Logradouro>
<p1:CEP>p1:CEP</p1:CEP>
<p1:Cidade>p1:Cidade</p1:Cidade>
</p1:Endereco>
<p:Identificacao>
<p1:Nome>p1:Nome</p1:Nome>
<p1:Idade>0</p1:Idade>
<p:Genero>M</p:Genero>
</p:Identificacao>
</p:Cartao>
</p:Companhia>
Is possible do that? How can I do it?