1 /****************************************************************************
3 ** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
4 ** Contact: http://www.qt-project.org/legal
6 ** This file is part of the documentation of the Qt Toolkit.
8 ** $QT_BEGIN_LICENSE:BSD$
9 ** You may use this file under the terms of the BSD license as follows:
11 ** "Redistribution and use in source and binary forms, with or without
12 ** modification, are permitted provided that the following conditions are
14 ** * Redistributions of source code must retain the above copyright
15 ** notice, this list of conditions and the following disclaimer.
16 ** * Redistributions in binary form must reproduce the above copyright
17 ** notice, this list of conditions and the following disclaimer in
18 ** the documentation and/or other materials provided with the
20 ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
21 ** of its contributors may be used to endorse or promote products derived
22 ** from this software without specific prior written permission.
25 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
26 ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
27 ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
28 ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
29 ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
30 ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
31 ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
32 ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
33 ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
34 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
35 ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
39 ****************************************************************************/
42 QXmlNamePool namePool(query.namePool());
43 query.bindVariable(QXmlName(namePool, localName), value);
49 QByteArray myDocument;
50 QBuffer buffer(&myDocument); // This is a QIODevice.
51 buffer.open(QIODevice::ReadOnly);
53 query.bindVariable("myDocument", &buffer);
54 query.setQuery("doc($myDocument)");
60 QIODevice *device = 0;
62 QXmlNamePool namePool(query.namePool());
63 query.bindVariable(QXmlName(namePool, localName), device);
69 QIODevice *myOutputDevice = 0;
71 QFile xq("myquery.xq");
74 query.setQuery(&xq, QUrl::fromLocalFile(xq.fileName()));
76 QXmlSerializer serializer(query, myOutputDevice);
77 query.evaluateTo(&serializer);
82 QIODevice *myOutputDevice = 0;
84 QFile xq("myquery.xq");
85 QString fileName("the filename");
86 QString publisherName("the publisher");
87 qlonglong year = 1234;
91 query.bindVariable("file", QVariant(fileName));
92 query.bindVariable("publisher", QVariant(publisherName));
93 query.bindVariable("year", QVariant(year));
95 query.setQuery(&xq, QUrl::fromLocalFile(xq.fileName()));
97 QXmlSerializer serializer(query, myOutputDevice);
98 query.evaluateTo(&serializer);
104 QFile xq("myquery.xq");
105 QString fileName("the filename");
106 QString publisherName("the publisher");
107 qlonglong year = 1234;
111 query.bindVariable("file", QVariant(fileName));
112 query.bindVariable("publisher", QVariant(publisherName));
113 query.bindVariable("year", QVariant(year));
115 query.setQuery(&xq, QUrl::fromLocalFile(xq.fileName()));
117 QXmlResultItems result;
118 query.evaluateTo(&result);
119 QXmlItem item(result.next());
120 while (!item.isNull()) {
121 if (item.isAtomicValue()) {
122 QVariant v = item.toAtomicValue();
124 case QVariant::LongLong:
127 case QVariant::String:
135 else if (item.isNode()) {
137 QXmlNodeModelIndex i = item.toNodeModelIndex();
141 item = result.next();
148 QFile xq("myquery.xq");
151 query.setQuery(&xq, QUrl::fromLocalFile(xq.fileName()));
153 QXmlResultItems result;
154 query.evaluateTo(&result);
155 QXmlItem item(result.next());
156 while (!item.isNull()) {
157 if (item.isAtomicValue()) {
158 QVariant v = item.toAtomicValue();
160 case QVariant::LongLong:
163 case QVariant::String:
167 if (v.userType() == qMetaTypeId<QXmlName>()) {
169 QXmlName n = qvariant_cast<QXmlName>(v);
170 // process QXmlName n...
179 else if (item.isNode()) {
181 QXmlNodeModelIndex i = item.toNodeModelIndex();
185 item = result.next();
193 QXmlQuery query(QXmlQuery::XSLT20);
194 query.setFocus(QUrl("myInput.xml"));
195 query.setQuery(QUrl("myStylesheet.xsl"));
196 query.evaluateTo(out);