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:
Cuando un esquema XML defina un elemento XML en base a tipos derivados,deberá especificar el tipo derivado (o tipo de sustitución) que se espera para el elemento XML durante el tiempo de ejecución. En el ejemplo de esquema XML anterior, deberá especificar el tipo del elemento <forma>: circle (círculo) o rectangle (rectángulo). En Studio, especifique el tipo de sustitución esperado para un elemento XML mediante la opción de menú Sustituir nodo con...:
  • 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.

En el ejemplo anterior, el tipo base se define como abstracto, pero también se soporta la sustitución de los tipos derivados basados en un tipo base que no es abstracto. Para convertir el tipo de complejo denominado shapeType en un tipo que no sea abstracto en el esquema XML de ejemplo, elimine el atributo abstract=true como se muestra en el siguiente fragmento de esquema XML:
<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.

Atención: La sustitución de tipo para los tipos complejos está admitida en los paneles de correlación de las actividades para las variables. Sin embargo, la derivación de elementos por ampliación mediante grupos de sustitución no se admite en los paneles de correlación de las actividades o con las variables. Para obtener más información, consulte Características del esquema XML no soportadas.

Ejemplo de esquema XML

El ejemplo de esquema XML utilizado en este tema se suministra como referencia:
<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>



Comentarios | Notices


Icono de fecha y hora Última actualización: Friday, November 8, 2013


http://pic.dhe.ibm.com/infocenter/wci/v7r0m0/topic/com.ibm.wci.doc/map_Selecting_a_Substitution_Type.html