Selección de un tipo de sustitución
La especificación del esquema XML admite la capacidad de derivar tipos complejos por ampliación.
En el documento de instancia XML, declare el tipo de un elemento XML a partir de un conjunto de tipos derivados todos ellos del mismo tipo base, en lugar de declarar de forma explícita el tipo del elemento XML en el esquema XML. El tipo del elemento se define con el atributo type, como se muestra en el siguiente ejemplo de documento de instancia XML:
<?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>
En el documento de instancia XML anterior, el elemento <forma> se declara como de tipo círculo. El elemento <forma> del documento de instancia XML también se puede definir como de tipo rectángulo en el siguiente ejemplo de documento de instancia XML:
<?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>
En este ejemplo, el elemento <forma> se basa en
uno de los tipos derivados del tipo base shapeType. Los tipos derivados de shapeType se denominan círculo y rectángulo,
como se muestra en el siguiente ejemplo de esquema XML:
- En el caso de una variable basada en un tipo de sustitución, seleccione el tipo esperado del elemento XML pulsando con el botón derecho del ratón sobre el nodo en el panel Esquema de en el separador Variables y seleccionando la opción Sustituir nodo con... en el menú. Para obtener más información, consulte Selección de un tipo de sustitución para variables.
- En el caso de un nodo basado en un tipo de sustitución en un panel de correlación - Seleccione el tipo esperado del elemento XML pulsando con el botón derecho en el nodo en el panel Esquema de en la pestaña Variables y seleccionando la opción Sustituir nodo con... del menú, tal y como se describe en el procedimiento siguiente.
En el ejemplo de esquema XML anterior, el tipo base denominado <shapeType> se define como abstracto. No se puede utilizar un tipo base abstracto en el documento de instancia XML para definir el tipo del elemento; es necesario especificar uno de los tipos derivados en su lugar. En este ejemplo, el elemento <forma> en el documento de instancia XML no se puede declarar como shapeType, debe declararse como uno de los tipos derivados: círculo o rectángulo.
<xsd:complexType name="shapeType">
<xsd:sequence>
<xsd:element name="color" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
Un WSDL es un esquema XML específico
que define un servicio web. El uso de una sustitución de tipos con un WSDL también
se admite.Puede especificar el tipo de sustitución de una aparición expandida de un nodo de destino recurrente. Esta sustitución de tipo de una aparición expandida solo se admite con los nodos de destino recurrentes. Los nodos de destino se encuentran situados en la parte derecha de los paneles de correlación.
Ejemplo de esquema XML
<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>