You can use sequence types when declaring variables for the return or parameter types of functions.
In the XML API, sequence types are represented using XSequenceType objects. XSequenceType objects can represent the same set of sequence types as the SequenceType syntax defined in XPath 2.0. XSequenceType objects are created through the XSequenceTypeFactory interface. You can obtain an instance of XSequenceTypeFactory using the getSequenceTypeFactory() method on an XFactory instance.
Method Signature | Example Sequence Types | Comments |
---|---|---|
emptySequence() | empty-sequence() | |
item(OccurrenceIndicator cardinality) | item()* | |
atomic(QName typeName, OccurrenceIndicator cardinality) | xs:integer | "sc:type" is a QName referring to a user-defined schema type. |
sc:type+ | ||
documentNode(OccurrenceIndicator cardinality) | document-node()? | |
documentNodeWithElement(QName elementNameOrWildcard, QName typeName, boolean nillable, OccurrenceIndicator cardinality) | document-node(element()) | "ns:elem" is a QName
representing an element name, and "sc:type" is a QName referring to
a user-defined schema type. The elementNameOrWildcard and typeName parameters are optional; use null if the element name or type does not matter. |
document-node(element(ns:elem))? | ||
document-node(element(*, sc:type?)) | ||
documentNodeWithSchemaElement(QName elementName, OccurrenceIndicator cardinality) | document-node(schema-element(sc:elemDecl)) | "sc:elemDecl" is a QName referring to a global element declaration in a schema. |
element(QName elementNameOrWildcard, QName typeName, boolean nillable, OccurrenceIndicator cardinality) | element(*) | "ns:elem" is a QName
representing an element name, and "sc:type" is a QName referring to
a user-defined schema type. The elementNameOrWildcard and typeName parameters are optional; use null if the element name or type does not matter. |
element(ns:elem, sc:type)* | ||
attribute(QName attributeNameOrWildcard, QName typeName, OccurrenceIndicator cardinality) | attribute()+ | "ns:attrib" is a QName
representing an attribute name. The attributeNameOrWildcard and typeName parameters are optional; use null if the attribute name or type does not matter. |
attribute(ns:attrib) | ||
attribute(ns:attrib, xs:string)? | ||
schemaElement(QName elementName, OccurrenceIndicator cardinality) | schema-element(sc:elemDecl)* | "sc:elemDecl" is a QName referring to a global element declaration in a schema. |
schemaAttribute(QName attributeName, OccurrenceIndicator cardinality) | schema-attribute(sc:attribDecl) | "sc:attribDecl" is a QName referring to a global attribute declaration in a schema. |
processingInstruction(QName piNCName, OccurrenceIndicator cardinality) | processing-instruction()? | "pinst" is an NCName representing the name of a processing instruction. |
processing-instruction("pinst") | ||
processing-instruction(pinst) | ||
comment(OccurrenceIndicator cardinality) | comment() | |
text(OccurrenceIndicator cardinality) | text()+ | |
node(OccurrenceIndicator cardinality) | node()* |
// 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);
<?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>
In this information ... | IBM Redbooks, demos, education, and more(Index) |