Utilización de tipos de secuencia

Puede utilizar tipos de secuencia cuando declare variables para su devolución o tipos de parámetros de funciones.

Acerca de esta tarea

En la API XML, los tipos de secuencia se representan utilizando objetos XSequenceType. Los objetos XSequenceType pueden representar el mismo conjunto de tipos de secuencia igual que la sintaxis de SequenceType definida en XPath 2.0. Los objetos XSequenceType se crean a través de la interfaz XSequenceTypeFactory. Puede obtener una instancia de XSequenceTypeFactory utilizando el método getSequenceTypeFactory() en una instancia XFactory.

Procedimiento

Ejemplo

Tabla 1. Métodos XSequenceTypeFactory y ejemplos de tipos de secuencia. En la tabla siguiente se lista cada método de XSequenceTypeFactory y ofrece ejemplos de los tipos de secuencia (utilizando la sintaxis de SequenceType) que cada uno puede crear.
Firma de método Tipos de secuencia de ejemplo Comentarios
emptySequence() empty-sequence()  
item(OccurrenceIndicator cardinality) item()*  
atomic(QName typeName, OccurrenceIndicator cardinality) xs:integer "sc:type" es un QName que hace referencia al tipo de esquema definido por el usuario.
sc:type+
documentNode(OccurrenceIndicator cardinality) document-node()?  
documentNodeWithElement(QName elementNameOrWildcard, QName typeName, boolean nillable, OccurrenceIndicator cardinality) document-node(element()) "ns:elem" es un QName que representa un nombre de elemento y "sc:type" es un QName que hace referencia a un tipo de esquema definido por el usuario.

Los parámetros elementNameOrWildcard y typeName son opcionales; utilizan null si el nombre o tipo de elemento no importan.

document-node(element(ns:elem))?
document-node(element(*, sc:type?))
documentNodeWithSchemaElement(QName elementName, OccurrenceIndicator cardinality) document-node(schema-element(sc:elemDecl)) "sc:elemDecl" es un QName que hace referencia a una declaración de elementos global en un esquema.
element(QName elementNameOrWildcard, QName typeName, boolean nillable, OccurrenceIndicator cardinality) element(*) "ns:elem" es un QName que representa un nombre de elemento y "sc:type" es un QName que hace referencia a un tipo de esquema definido por el usuario.

Los parámetros elementNameOrWildcard y typeName son opcionales; utilizan null si el nombre o tipo de elemento no importan.

element(ns:elem, sc:type)*
attribute(QName attributeNameOrWildcard, QName typeName, OccurrenceIndicator cardinality) attribute()+ "ns:attrib" es un QName que representa un nombre de atributo.

Los parámetros attributeNameOrWildcard y typeName son opcionales; utilice null si el nombre o el tipo de atributo no importan.

attribute(ns:attrib)
attribute(ns:attrib, xs:string)?
schemaElement(QName elementName, OccurrenceIndicator cardinality) schema-element(sc:elemDecl)* "sc:elemDecl" es un QName que hace referencia a una declaración de elementos global en un esquema.
schemaAttribute(QName attributeName, OccurrenceIndicator cardinality) schema-attribute(sc:attribDecl) "sc:attribDecl" es un QName que hace referencia a una declaración de atributos global en un esquema.
processingInstruction(QName piNCName, OccurrenceIndicator cardinality) processing-instruction()? "pinst" es un NCName que representa el nombre de una instrucción de proceso.
processing-instruction("pinst")
processing-instruction(pinst)
comment(OccurrenceIndicator cardinality) comment()  
text(OccurrenceIndicator cardinality) text()+  
node(OccurrenceIndicator cardinality) node()*  
En el ejemplo siguiente se muestra cómo crear objetos XSequenceType para representar diversos tipos de secuencia. Algunos resultados hacen referencia a los tipos y declaraciones de un esquema. El ejemplo supone que el esquema está disponible a través del objeto origen schemaSource.
// Create the factory
XFactory factory = XFactory.newInstance();

// Obtain an XSeqeuenceTypeFactory instance
XSequenceTypeFactory stFactory = factory.getSequenceTypeFactory();

// Create a sequence type for a sequence of xs:integer values: "xs:integer*"
XSequenceType integerSequenceType = stFactory.atomic(
        XTypeConstants.INTEGER_QNAME,
        XSequenceType.OccurrenceIndicator.ZERO_OR_MORE);

// Create a sequence type for a single node: "node()"
XSequenceType nodeType = stFactory.node(OccurrenceIndicator.ONE);

// Define a constant for the target namespace of a schema containing user-defined types and declarations
final String targetNamespace = "http://www.example.org/schema/";

// Register the schema with the XFactory
factory.registerSchema(schemaSource);

// Create a sequence type for exactly one document node with an element of type "employeeRecord" from the schema:
// "document-node(element(*, ns:employeeRecord))"
XSequenceType employeeRecordDocumentType = stFactory.documentNodeWithElement(
        null,
        new QName(targetNamespace, "employeeRecord"),
        false,
        XSequenceType.OccurrenceIndicator.ONE);

// Create a sequence type for an optional attribute matching the attribute declaration "type" in the schema:
// "schema-attribute(ns:type)?"
XSequenceType optionalEmployeeType = stFactory.schemaAttribute(
        new QName(targetNamespace, "type"),
        XSequenceType.OccurrenceIndicator.ZERO_OR_ONE);

// Create a sequence type for one or more atomic values of type "telephoneNumber" from the schema:
// "ns:telephoneNumber+"
XSequenceType telephoneNumbersType = stFactory.atomic(
        new QName(targetNamespace, "telephoneNumber"),
        XSequenceType.OccurrenceIndicator.ONE_OR_MORE);
Contenido de un esquema de ejemplo:
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://www.example.org/schema/" targetNamespace="http://www.example.org/schema/">
    <complexType name="employeeRecord">
        <sequence>
            <element name="name" type="string"></element>
            <element name="id" type="int"></element>
            <element name="telephone" type="ns:telephoneNumber"></element>
        </sequence>
        <attribute ref="ns:type"></attribute>
    </complexType>

    <simpleType name="telephoneNumber">
        <restriction base="string">
            <pattern value="\d{3}-\d{3}-\d{4}"></pattern>
        </restriction>
    </simpleType>

    <element name="employee" type="ns:employeeRecord"></element>

    <simpleType name="employeeType">
        <restriction base="string">
            <enumeration value="full-time"></enumeration>
            <enumeration value="part-time"></enumeration>
            <enumeration value="seasonal"></enumeration>
        </restriction>
    </simpleType>

    <attribute name="type" type="ns:employeeType"></attribute>
</schema>

Icon that indicates the type of topic Task topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=txml_sequence_types
File name: txml_sequence_types.html