Change copyrights from Nokia to Digia
[profile/ivi/qtxmlpatterns.git] / doc / src / snippets / code / src_xmlpatterns_api_qxmlquery.cpp
1 /****************************************************************************
2 **
3 ** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
4 ** Contact: http://www.qt-project.org/legal
5 **
6 ** This file is part of the documentation of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:BSD$
9 ** You may use this file under the terms of the BSD license as follows:
10 **
11 ** "Redistribution and use in source and binary forms, with or without
12 ** modification, are permitted provided that the following conditions are
13 ** met:
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
19 **     distribution.
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.
23 **
24 **
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."
36 **
37 ** $QT_END_LICENSE$
38 **
39 ****************************************************************************/
40
41 //! [0]
42     QXmlNamePool namePool(query.namePool());
43     query.bindVariable(QXmlName(namePool, localName), value);
44 //! [0]
45
46
47 {
48 //! [1]
49     QByteArray myDocument;
50     QBuffer buffer(&myDocument); // This is a QIODevice.
51     buffer.open(QIODevice::ReadOnly);
52     QXmlQuery query;
53     query.bindVariable("myDocument", &buffer);
54     query.setQuery("doc($myDocument)");
55 //! [1]
56 }
57
58
59 {
60     QIODevice *device = 0;
61 //! [2]
62     QXmlNamePool namePool(query.namePool());
63     query.bindVariable(QXmlName(namePool, localName), device);
64 //! [2]
65
66 }
67
68 {
69     QIODevice *myOutputDevice = 0;
70 //! [3]
71     QFile xq("myquery.xq");
72
73     QXmlQuery query;
74     query.setQuery(&xq, QUrl::fromLocalFile(xq.fileName()));
75
76     QXmlSerializer serializer(query, myOutputDevice);
77     query.evaluateTo(&serializer);
78 //! [3]
79 }
80
81 {
82     QIODevice *myOutputDevice = 0;
83 //! [4]
84     QFile xq("myquery.xq");
85     QString fileName("the filename");
86     QString publisherName("the publisher");
87     qlonglong year = 1234;
88
89     QXmlQuery query;
90
91     query.bindVariable("file", QVariant(fileName));
92     query.bindVariable("publisher", QVariant(publisherName));
93     query.bindVariable("year", QVariant(year));
94
95     query.setQuery(&xq, QUrl::fromLocalFile(xq.fileName()));
96
97     QXmlSerializer serializer(query, myOutputDevice);
98     query.evaluateTo(&serializer);
99 //! [4]
100 }
101
102 {
103 //! [5]
104     QFile xq("myquery.xq");
105     QString fileName("the filename");
106     QString publisherName("the publisher");
107     qlonglong year = 1234;
108
109     QXmlQuery query;
110
111     query.bindVariable("file", QVariant(fileName));
112     query.bindVariable("publisher", QVariant(publisherName));
113     query.bindVariable("year", QVariant(year));
114
115     query.setQuery(&xq, QUrl::fromLocalFile(xq.fileName()));
116
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();
123             switch (v.type()) {
124                 case QVariant::LongLong:
125                     // xs:integer
126                     break;
127                 case QVariant::String:
128                     // xs:string
129                     break;
130                 default:
131                     // error
132                     break;
133             }
134         }
135         else if (item.isNode()) {
136 #ifdef qdoc
137             QXmlNodeModelIndex i = item.toNodeModelIndex();
138             // process node
139 #endif // qdoc
140         }
141         item = result.next();
142     }
143 //! [5]
144 }
145
146 {
147 //! [6]
148     QFile xq("myquery.xq");
149
150     QXmlQuery query;
151     query.setQuery(&xq, QUrl::fromLocalFile(xq.fileName()));
152
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();
159             switch (v.type()) {
160                 case QVariant::LongLong:
161                     // xs:integer
162                     break;
163                 case QVariant::String:
164                     // xs:string
165                     break;
166                 default:
167                     if (v.userType() == qMetaTypeId<QXmlName>()) {
168 #ifdef qdoc
169                         QXmlName n = qvariant_cast<QXmlName>(v);
170                         // process QXmlName n...
171 #endif // qdoc
172                     }
173                     else {
174                         // error
175                     }
176                     break;
177             }
178         }
179         else if (item.isNode()) {
180 #ifdef qdoc
181             QXmlNodeModelIndex i = item.toNodeModelIndex();
182             // process node
183 #endif // qdoc
184         }
185         item = result.next();
186     }
187 //! [6]
188 }
189
190 {
191     QIODevice *out = 0;
192 //! [7]
193     QXmlQuery query(QXmlQuery::XSLT20);
194     query.setFocus(QUrl("myInput.xml"));
195     query.setQuery(QUrl("myStylesheet.xsl"));
196     query.evaluateTo(out);
197 //! [7]
198 }