Latest web development tutorials

Substitua os elementos de esquema XML

Por XML Schema, um elemento pode ser substituído por outro elemento.


elementos substituídos

Vamos ilustrar: os nossos clientes do Reino Unido e Noruega. Queremos ter a capacidade de permitir que os usuários optam por usar os nomes dos elementos da Noruega no documento XML ou o nome Inglês do elemento.

Para resolver este problema, podemos definir uma substitutionGroup no esquema XML. Em primeiro lugar, nós declaramos o elemento principal, então vamos declarar elementos menores, esses elementos podem ser declarados, uma vez que são capazes de substituir o elemento primário.

<xs:element name="name" type="xs:string"/>
<xs:element name="navn" substitutionGroup="name"/>

No exemplo acima, "nome" é o elemento principal, "navn" elemento pode substituir elemento "name".

Considere-se um fragmento de esquema XML:

<xs:element name="name" type="xs:string"/>
<xs:element name="navn" substitutionGroup="name"/>

<xs:complexType name="custinfo">
<xs:sequence>
<xs:element ref="name"/>
</xs:sequence>
</xs:complexType>

<xs:element name="customer" type="custinfo"/>
<xs:element name="kunde" substitutionGroup="customer"/>

documento XML válido como este (de acordo com o esquema acima):

<customer>
<name>John Smith</name>
</customer>

Ou algo parecido com isto:

<kunde>
<navn>John Smith</navn>
</kunde>


Substitua o elemento de paragem

Para evitar que outros elementos substituir um elemento específico, use as propriedades do bloco:

<xs:element name="name" type="xs:string" block="substitution"/>

Ver um fragmento de esquema XML:

<xs:element name="name" type="xs:string" block="substitution"/>
<xs:element name="navn" substitutionGroup="name"/>

<xs:complexType name="custinfo">
<xs:sequence>
<xs:element ref="name"/>
</xs:sequence>
</xs:complexType>

<xs:element name="customer" type="custinfo" block="substitution"/>
<xs:element name="kunde" substitutionGroup="customer"/>

documento XML válido deve olhar como este (de acordo com o esquema acima):

<customer>
<name>John Smith</name>
</customer>

No entanto, o documento seguinte já não é legítima:

<kunde>
<navn>John Smith</navn>
</kunde>


Use substitutionGroup

elementos substituíveis devem ser os principais elementos do mesmo tipo, ou derivados do elemento principal. Se o tipo pode substituir elementos dos principais elementos do mesmo tipo, você não terá que especificar o tipo do elemento pode ser substituído.

Por favor note, substitutionGroup todos os elementos nas (elementos primários e elementos substituíveis) devem ser declarados como elementos globais, caso contrário não vai funcionar!


Qual é o elemento global (Global Elements)?

elemento global refere-se aos elementos filhos diretos do elemento "esquema"! Os elementos locais (elementos locais) refere-se aos elementos aninhados em outros elementos.