XQuery-Basisoperationen ausführen

Für die Auswertung von XQuery-Ausdrücken können Sie die mit XFactory.prepareXQuery-Methoden erstellten Instanzen von XQueryExecutable verwenden.

Informationen zu diesem Vorgang

XQuery-Ausdrücke können mit einem JAXP-Objekt oder einem einfachen Java™-Zeichenfolgeobjekt an die Methode XFactory.prepareXQuery übergeben werden. Die resultierende XQueryExecutable-Instanz ist threadsicher und kann für die Auswertung eines XQuery-Ausdrucks in mehreren XML-Dokumenten wiederverwendet werden.

Vorgehensweise

Beispiel

Das folgende Basisbeispiel zeigt die Vorbereitung und Ausführung eines interpretierten XQuery-Ausdrucks.
// Zeichenfolge für den XQuery-Ausdruck erstellen
String expression = "/doc/name[@first='David']";

// Factory erstellen
XFactory factory = XFactory.newInstance();

// XQueryExecutable erstellen
XQueryExecutable xQueryExecutable = factory.prepareXQuery(expression);

// XML-Eingabequelle erstellen
String xml = "<doc<name first='John'>Wrong</name><name first='David'>Correct</name></doc>";

// Ausdruck ausführen und Ergebnisse in einem XSequenceCursor speichern
XSequenceCursor xSequenceCursor = xQueryExecutable.execute(new StreamSource(new ByteArrayInputStream(xml.getBytes())));
Das folgende Basisbeispiel zeigt die Vorbereitung und Ausführung eines kompilierten XQuery-Ausdrucks.
// Zeichenfolge für den XQuery-Ausdruck erstellen
String expression = "/doc/name[@first='David']";

// Factory erstellen
XFactory factory = XFactory.newInstance();

// Neuen statischen Kontext aus der Factory erstellen
XStaticContext xStaticContext = factory.newStaticContext();

// Kompilierungsmodus für den Prozessor festlegen
xStaticContext.setUseCompiler(true);

// XQueryExecutable erstellen
XQueryExecutable xQueryExecutable = factory.prepareXQuery(expression, xStaticContext);

// XML-Eingabequelle erstellen
String xml = "<doc><name first='John'>Wrong</name><name first='David'>Correct</name></doc>";

// Ausdruck ausführen und Ergebnisse in einem XSequenceCursor speichern
XSequenceCursor xSequenceCursor = xQueryExecutable.execute(new StreamSource(new ByteArrayInputStream(xml.getBytes())));
Das folgende Basisbeispiel zeigt die Vorbereitung und Ausführung von interpretierten XQuery-Ausdrücken mit Schemaerkennung.
// Zeichenfolge für den XQuery-Ausdruck erstellen
String expression = "/my:doc/name[@first='David']/@first";
    
// Factory erstellen
XFactory factory = XFactory.newInstance();
    
// Schemaquelle erstellen
String schema = "<xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'" +
            " targetNamespace='http://www.schematype.ibm.com/UDSimple'" +
            " xmlns:my='http://www.schematype.ibm.com/UDSimple'" +
            " xmlns:smokey='http://www.schematype.ibm.com/UDSimple'>"
                    +" <xsd:element name='doc'>"
                    +   "<xsd:complexType> "
                    +   "<xsd:sequence>"
                    +   "<xsd:element name='name' minOccurs='0' maxOccurs='unbounded'>"
                    +  "<xsd:complexType>"
                    +   "<xsd:attribute name='first' type='xsd:string' use='optional'/>"
                    +  "</xsd:complexType>"
                    +   "</xsd:element>"
                    +  "</xsd:sequence>"
                    +  "</xsd:complexType>"
                    + "</xsd:element>"
                    + "</xsd:schema>";
            
// Schema laden
factory.registerSchema(new StreamSource(new ByteArrayInputStream(schema.getBytes())));
            
// Validierung aktivieren
factory.setValidating(true);
            
// Neuen statischen Kontext aus der Factory erstellen
XStaticContext xStaticContext = factory.newStaticContext();
            
// Neuen Namespace hinzufügen
xStaticContext.declareNamespace("my", "http://www.schematype.ibm.com/UDSimple");
            
// XQueryExecutable erstellen
XQueryExecutable xQueryExecutable = factory.prepareXQuery(expression, xStaticContext);
    
// XML-Eingabequelle erstellen
String xml = "<my:doc xmlns:my='http://www.schematype.ibm.com/UDSimple'>" +
            		"<name first='John'/><name first='David'/></my:doc>";
    
// Ausdruck ausführen und Ergebnisse in einem XSequenceCursor speichern
XSequenceCursor xSequenceCursor = xQueryExecutable.execute(new StreamSource(new ByteArrayInputStream(xml.getBytes())));

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_ops_xquery
Dateiname:txml_ops_xquery.html