【发布时间】:2020-06-24 18:57:43
【问题描述】:
这 2 个模式文件是我为理解 xml/xsd 中的扩展过程而编写的示例。第一个具有基本定义并且只有一个元素。在第二个模式中,我想将特定元素从第一个“扩展”到嵌套结构中。这些文件位于不同的命名空间中。
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>
我想在“IdentificacaoTipo”中添加元素“Genero”,但得到以下 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>
有可能吗?我该怎么做?
【问题讨论】: