Sequenztypen verwenden

Wenn Sie Variablen für Rückgaben oder Parametertypen von Funktionen deklarieren, können Sie Sequenztypen verwenden.

Informationen zu diesem Vorgang

In der API XML werden Sequenztypen mit XSequenceType-Objekten dargestellt. XSequenceType-Objekte können dieselben Sequenztypen wie die in XPath 2.o definierte SequenceType-Syntax repräsentieren. XSequenceType-Objekte werden mithilfe des Interface XSequenceTypeFactory erstellt. Mit der Methode getSequenceTypeFactory() für eine XFactory-Instanz können Sie eine Instanz von XSequenceTypeFactory anfordern.

Vorgehensweise

Beispiel

Tabelle 1. Methoden von XSequenceTypeFactory und Beispiele für Sequenztypen. In der folgenden Tabelle sind die einzelnen Methoden von XSequenceTypeFactory aufgelistet. Außerdem enthält die Tabelle Beispiele für Sequenztypen (mit SequenceType-Syntax), die von der jeweiligen Methode erstellt werden können.
Methodensignatur Beispiele für Sequenztypen Kommentare
emptySequence() empty-sequence()  
item(OccurrenceIndicator cardinality) item()*  
atomic(QName typeName, OccurrenceIndicator cardinality) xs:integer "sc:type" ist ein QName, der auf einen benutzerdefinierten Schematyp verweist.
sc:type+
documentNode(OccurrenceIndicator cardinality) document-node()?  
documentNodeWithElement(QName elementNameOrWildcard, QName typeName, boolean nillable, OccurrenceIndicator cardinality) document-node(element()) "ns:elem" ist ein QName, der einen Elementnamen repräsentiert, und "sc:type" ist ein QName, der auf einen benutzerdefinierten Schematyp verweist.

Die Parameter elementNameOrWildcard und typeName sind optional. Wenn der Elementname oder -typ keine Rolle spielt, können Sie null verwenden.

document-node(element(ns:elem))?
document-node(element(*, sc:type?))
documentNodeWithSchemaElement(QName elementName, OccurrenceIndicator cardinality) document-node(schema-element(sc:elemDecl)) "sc:elemDecl" ist ein QName, die auf eine globale Elementdeklaration in einem Schema verweist.
element(QName elementNameOrWildcard, QName typeName, boolean nillable, OccurrenceIndicator cardinality) element(*) "ns:elem" ist ein QName, der einen Elementnamen repräsentiert, und "sc:type" ist ein QName, der auf einen benutzerdefinierten Schematyp verweist.

Die Parameter elementNameOrWildcard und typeName sind optional. Wenn der Elementname oder -typ keine Rolle spielt, können Sie null verwenden.

element(ns:elem, sc:type)*
attribute(QName attributeNameOrWildcard, QName typeName, OccurrenceIndicator cardinality) attribute()+ "ns:attrib" ist ein QName, der einen Attributnamen repräsentiert.

Die Parameter attributeNameOrWildcard und typeName sind optional. Wenn der Attributname oder -typ keine Rolle spielt, können Sie null verwenden.

attribute(ns:attrib)
attribute(ns:attrib, xs:string)?
schemaElement(QName elementName, OccurrenceIndicator cardinality) schema-element(sc:elemDecl)* "sc:elemDecl" ist ein QName, die auf eine globale Elementdeklaration in einem Schema verweist.
schemaAttribute(QName attributeName, OccurrenceIndicator cardinality) schema-attribute(sc:attribDecl) "sc:attribDecl" ist ein QName, der auf eine globale Attributdeklaration in einem Schema verweist.
processingInstruction(QName piNCName, OccurrenceIndicator cardinality) processing-instruction()? "pinst" ist ein NCName, der den Namen einer Verarbeitungsanweisung repräsentiert.
processing-instruction("pinst")
processing-instruction(pinst)
comment(OccurrenceIndicator cardinality) comment()  
text(OccurrenceIndicator cardinality) text()+  
node(OccurrenceIndicator cardinality) node()*  
Das folgende Beispiel veranschaulicht die Erstellung von XSequenceType-Objekten für verschiedene Sequenztypen. Einige der Ergebnisse verweisen auf Typen und Deklarationen in einem Schema. Im Beispiel wird vorausgesetzt, dass das Schema über das Quellenobjekt schemaSource verfügbar ist.
// Factory erstellen
XFactory factory = XFactory.newInstance();

// Instanz von XSeqeuenceTypeFactory anfordern
XSequenceTypeFactory stFactory = factory.getSequenceTypeFactory();

// Sequenztyp für eine Sequenz von xs:integer-Werten, "xs:integer*", erstellen
XSequenceType integerSequenceType = stFactory.atomic(
        XTypeConstants.INTEGER_QNAME,
        XSequenceType.OccurrenceIndicator.ZERO_OR_MORE);

// Sequenztyp für einen einzelnen Knoten, "node()", erstellen
XSequenceType nodeType = stFactory.node(OccurrenceIndicator.ONE);

// Konstante für den Zielnamespace eines Schemas mit benutzerdefinierten Typen und Deklarationen definieren
final String targetNamespace = "http://www.example.org/schema/";

// Schema in der XFactory registrieren
factory.registerSchema(schemaSource);

// Sequenztyp für genau einen Dokumentknoten mit einem Element des Typs "employeeRecord" aus dem Schema
// "document-node(element(*, ns:employeeRecord))" erstellen
XSequenceType employeeRecordDocumentType = stFactory.documentNodeWithElement(
        null, 
        new QName(targetNamespace, "employeeRecord"),
        false,
        XSequenceType.OccurrenceIndicator.ONE);

// Sequenztyp für ein optionales Attribut erstellen, das mit der Attributdeklaration "type" im Schema
// "schema-attribute(ns:type)?" übereinstimmt
XSequenceType optionalEmployeeType = stFactory.schemaAttribute(
        new QName(targetNamespace, "type"),
        XSequenceType.OccurrenceIndicator.ZERO_OR_ONE);

// Sequenztyp für mindestens einen atomaren Wert des Typs "telephoneNumber" aus dem Schema
// "ns:telephoneNumber+" erstellen
XSequenceType telephoneNumbersType = stFactory.atomic(
        new QName(targetNamespace, "telephoneNumber"),
        XSequenceType.OccurrenceIndicator.ONE_OR_MORE);
Beispielinhalt eines Schemas:
<?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>

Symbol, das den Typ des Artikels anzeigt. Taskartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=txml_sequence_types
Dateiname:txml_sequence_types.html