Selecionando um Tipo de Substituição
A especificação do Esquema XML suporta a capacidade de derivar tipos complexos por extensão.
No documento da instância XML, você declara o tipo de um elemento XML a partir de um conjunto de tipos que são todos derivados do mesmo tipo de base, em vez de declarar explicitamente o tipo para o elemento XML no Esquema XML. O tipo do elemento é definido usando o atributo type, conforme mostrado pelo seguinte documento da instância XML de exemplo:
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns="http://shapesrus.com/example" xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance" xsd:type="circle">
<color xmlns="">blue</color>
<diameter xmlns="">10</diameter>
</shape>
No documento da instância XML anterior, o elemento <shape> é declarado como um tipo circle. O elemento <shape> no documento da instância XML também pode ser definido como um tipo rectangle, conforme definido no seguinte documento da instância XML de exemplo:
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns="http://shapesrus.com/example" xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance" xsd:type="rectangle">
<color xmlns="">blue</color>
<length xmlns="">5</length>
<width xmlns="">8</width>
</shape>
Neste exemplo, o elemento <shape> é
baseado em um dos tipos derivados do tipo de base shapeType. Os tipos derivados de shapeType são nomeados circle e rectangle,
conforme mostrado no seguinte Esquema XML de exemplo:
- Para uma variável baseada em um tipo de substabelecimento - Selecione o tipo esperado do elemento XML clicando com o botão direito do mouse no nó na área de janela Esquema de na guia Variáveis e selecionando na opção Substituir Nó por ... do menu. Para obter informações adicionais, consulte Selecionando um Tipo de Substituição para Variáveis.
- Para um nó baseado em tipo de substituição em uma área de janela de mapeamento - Selecione o tipo esperado de elemento XML clicando com o botão direito no nó na área de janela Esquema de na guia Variáveis e selecionando a opção Substituir Nó por ... no menu, conforme descrito no procedimento a seguir.
No Esquema XML do exemplo anterior, o tipo de base chamado <shapeType> é definido como abstrato. Um tipo de base abstrato não pode ser usado no documento da instância XML para definir o tipo para o elemento - um dos tipos derivados deve ser especificado no lugar. Neste exemplo, o elemento <shape> no documento da instância XML não pode ser declarado como shapeType, ele deve ser declarado como um dos tipos derivados; circle ou rectangle.
<xsd:complexType name="shapeType">
<xsd:sequence>
<xsd:element name="color" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
Um WSDL é um Esquema XML específico
que define um Serviço da Web. O uso da substituição de tipo com um WSDL também
é suportado.É possível especificar o tipo de substituição para uma ocorrência expandida de um nó de destino recorrente. Essa substituição de tipo de uma ocorrência expandida é suportada apenas para os nós de destino recorrentes. Os nós de destino estão localizados no lado direito das áreas de janela de mapeamento.
Esquema XML de Exemplo
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://shapesrus.com/example"
xmlns:sru="http://shapesrus.com/example">
<xsd:element name="shape" type="sru:shapeType"/>
<xsd:complexType name="shapeType" abstract="true">
<xsd:sequence>
<xsd:element name="color" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="circle">
<xsd:complexContent>
<xsd:extension base="sru:shapeType">
<xsd:sequence>
<xsd:element name="diameter" type="xsd:integer"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="rectangle">
<xsd:complexContent>
<xsd:extension base="sru:shapeType">
<xsd:sequence>
<xsd:element name="length" type="xsd:integer"/>
<xsd:element name="width" type="xsd:integer"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:schema>