| 1 | // |
| 2 | // SAXParserTest.cpp |
| 3 | // |
| 4 | // Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. |
| 5 | // and Contributors. |
| 6 | // |
| 7 | // SPDX-License-Identifier: BSL-1.0 |
| 8 | // |
| 9 | |
| 10 | |
| 11 | #include "SAXParserTest.h" |
| 12 | #include "Poco/CppUnit/TestCaller.h" |
| 13 | #include "Poco/CppUnit/TestSuite.h" |
| 14 | #include "Poco/SAX/SAXParser.h" |
| 15 | #include "Poco/SAX/InputSource.h" |
| 16 | #include "Poco/SAX/EntityResolver.h" |
| 17 | #include "Poco/SAX/SAXException.h" |
| 18 | #include "Poco/SAX/WhitespaceFilter.h" |
| 19 | #include "Poco/XML/XMLWriter.h" |
| 20 | #include "Poco/Latin9Encoding.h" |
| 21 | #include "Poco/FileStream.h" |
| 22 | #include <sstream> |
| 23 | |
| 24 | |
| 25 | using Poco::XML::SAXParser; |
| 26 | using Poco::XML::XMLWriter; |
| 27 | using Poco::XML::XMLReader; |
| 28 | using Poco::XML::InputSource; |
| 29 | using Poco::XML::EntityResolver; |
| 30 | using Poco::XML::XMLString; |
| 31 | using Poco::XML::SAXParseException; |
| 32 | using Poco::XML::WhitespaceFilter; |
| 33 | |
| 34 | |
| 35 | class TestEntityResolver: public EntityResolver |
| 36 | { |
| 37 | public: |
| 38 | InputSource* resolveEntity(const XMLString* publicId, const XMLString& systemId) |
| 39 | { |
| 40 | if (systemId == "include.xml" ) |
| 41 | { |
| 42 | std::istringstream* istr = new std::istringstream(SAXParserTest::INCLUDE); |
| 43 | InputSource* pIS = new InputSource(*istr); |
| 44 | pIS->setSystemId(systemId); |
| 45 | return pIS; |
| 46 | } |
| 47 | else if (systemId == "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent" ) |
| 48 | { |
| 49 | std::istringstream* istr = new std::istringstream(SAXParserTest::XHTML_LATIN1_ENTITIES); |
| 50 | InputSource* pIS = new InputSource(*istr); |
| 51 | pIS->setSystemId(systemId); |
| 52 | return pIS; |
| 53 | } |
| 54 | return 0; |
| 55 | } |
| 56 | |
| 57 | void releaseInputSource(InputSource* pSource) |
| 58 | { |
| 59 | delete pSource->getByteStream(); |
| 60 | delete pSource; |
| 61 | } |
| 62 | }; |
| 63 | |
| 64 | |
| 65 | SAXParserTest::SAXParserTest(const std::string& name): CppUnit::TestCase(name) |
| 66 | { |
| 67 | } |
| 68 | |
| 69 | |
| 70 | SAXParserTest::~SAXParserTest() |
| 71 | { |
| 72 | } |
| 73 | |
| 74 | |
| 75 | void SAXParserTest::testSimple1() |
| 76 | { |
| 77 | SAXParser parser; |
| 78 | std::string xml = parse(parser, XMLWriter::CANONICAL, SIMPLE1); |
| 79 | assertTrue (xml == "<foo/>" ); |
| 80 | } |
| 81 | |
| 82 | |
| 83 | void SAXParserTest::testSimple2() |
| 84 | { |
| 85 | SAXParser parser; |
| 86 | std::string xml = parse(parser, XMLWriter::CANONICAL, SIMPLE2); |
| 87 | assertTrue (xml == "<foo/>" ); |
| 88 | } |
| 89 | |
| 90 | |
| 91 | void SAXParserTest::testAttributes() |
| 92 | { |
| 93 | SAXParser parser; |
| 94 | std::string xml = parse(parser, XMLWriter::CANONICAL, ATTRIBUTES); |
| 95 | assertTrue (xml == ATTRIBUTES); |
| 96 | } |
| 97 | |
| 98 | |
| 99 | void SAXParserTest::testCDATA() |
| 100 | { |
| 101 | SAXParser parser; |
| 102 | std::string xml = parse(parser, XMLWriter::CANONICAL, CDATA); |
| 103 | assertTrue (xml == CDATA); |
| 104 | } |
| 105 | |
| 106 | |
| 107 | void SAXParserTest::() |
| 108 | { |
| 109 | SAXParser parser; |
| 110 | std::string xml = parse(parser, XMLWriter::CANONICAL, COMMENT); |
| 111 | assertTrue (xml == COMMENT); |
| 112 | } |
| 113 | |
| 114 | |
| 115 | void SAXParserTest::testPI() |
| 116 | { |
| 117 | SAXParser parser; |
| 118 | std::string xml = parse(parser, XMLWriter::CANONICAL, PROCESSING_INSTRUCTION); |
| 119 | assertTrue (xml == PROCESSING_INSTRUCTION); |
| 120 | } |
| 121 | |
| 122 | |
| 123 | void SAXParserTest::testDTD() |
| 124 | { |
| 125 | SAXParser parser; |
| 126 | std::string xml = parse(parser, XMLWriter::CANONICAL, DTD); |
| 127 | assertTrue (xml == "<!DOCTYPE test SYSTEM \"test.dtd\"><foo/>" ); |
| 128 | } |
| 129 | |
| 130 | |
| 131 | void SAXParserTest::testInternalEntity() |
| 132 | { |
| 133 | SAXParser parser; |
| 134 | std::string xml = parse(parser, XMLWriter::CANONICAL, INTERNAL_ENTITY); |
| 135 | assertTrue (xml == "<!DOCTYPE sample><root>\n\t<company>Applied Informatics</company>\n</root>" ); |
| 136 | } |
| 137 | |
| 138 | |
| 139 | void SAXParserTest::testNotation() |
| 140 | { |
| 141 | SAXParser parser; |
| 142 | std::string xml = parse(parser, XMLWriter::CANONICAL, NOTATION); |
| 143 | assertTrue (xml == "<!DOCTYPE test [<!NOTATION mov SYSTEM \"quicktime\">" |
| 144 | "<!NOTATION xml PUBLIC \"-//W3C//NOTATION XML 1.0//EN\">]>" |
| 145 | "<foo/>" ); |
| 146 | } |
| 147 | |
| 148 | |
| 149 | void SAXParserTest::testExternalUnparsed() |
| 150 | { |
| 151 | SAXParser parser; |
| 152 | std::string xml = parse(parser, XMLWriter::CANONICAL, EXTERNAL_UNPARSED); |
| 153 | assertTrue (xml == "<!DOCTYPE test [<!NOTATION mov SYSTEM \"quicktime\">" |
| 154 | "<!ENTITY movie SYSTEM \"movie.mov\" NDATA mov>]>" |
| 155 | "<sample/>" ); |
| 156 | } |
| 157 | |
| 158 | |
| 159 | void SAXParserTest::testExternalParsed() |
| 160 | { |
| 161 | SAXParser parser; |
| 162 | TestEntityResolver resolver; |
| 163 | parser.setEntityResolver(&resolver); |
| 164 | parser.setFeature(XMLReader::FEATURE_EXTERNAL_GENERAL_ENTITIES, true); |
| 165 | std::string xml = parse(parser, XMLWriter::CANONICAL, EXTERNAL_PARSED); |
| 166 | assertTrue (xml == "<!DOCTYPE test><sample>\n\t<elem>\n\tAn external entity.\n</elem>\n\n</sample>" ); |
| 167 | } |
| 168 | |
| 169 | |
| 170 | void SAXParserTest::testDefaultNamespace() |
| 171 | { |
| 172 | SAXParser parser; |
| 173 | std::string xml = parse(parser, XMLWriter::CANONICAL, DEFAULT_NAMESPACE); |
| 174 | assertTrue (xml == DEFAULT_NAMESPACE); |
| 175 | } |
| 176 | |
| 177 | |
| 178 | void SAXParserTest::testNamespaces() |
| 179 | { |
| 180 | SAXParser parser; |
| 181 | parser.setFeature(XMLReader::FEATURE_NAMESPACES, true); |
| 182 | parser.setFeature(XMLReader::FEATURE_NAMESPACE_PREFIXES, true); |
| 183 | std::string xml = parse(parser, XMLWriter::CANONICAL, NAMESPACES); |
| 184 | assertTrue (xml == NAMESPACES); |
| 185 | } |
| 186 | |
| 187 | |
| 188 | void SAXParserTest::testNamespacesNoPrefixes() |
| 189 | { |
| 190 | SAXParser parser; |
| 191 | parser.setFeature(XMLReader::FEATURE_NAMESPACES, true); |
| 192 | parser.setFeature(XMLReader::FEATURE_NAMESPACE_PREFIXES, false); |
| 193 | std::string xml = parse(parser, XMLWriter::CANONICAL, NAMESPACES); |
| 194 | assertTrue (xml == NAMESPACES); |
| 195 | } |
| 196 | |
| 197 | |
| 198 | void SAXParserTest::testNoNamespaces() |
| 199 | { |
| 200 | SAXParser parser; |
| 201 | parser.setFeature(XMLReader::FEATURE_NAMESPACES, false); |
| 202 | std::string xml = parse(parser, XMLWriter::CANONICAL, NAMESPACES); |
| 203 | assertTrue (xml == NAMESPACES); |
| 204 | } |
| 205 | |
| 206 | |
| 207 | void SAXParserTest::testUndeclaredNamespace() |
| 208 | { |
| 209 | SAXParser parser; |
| 210 | parser.setFeature(XMLReader::FEATURE_NAMESPACES, true); |
| 211 | parser.setFeature(XMLReader::FEATURE_NAMESPACE_PREFIXES, true); |
| 212 | try |
| 213 | { |
| 214 | std::string xml = parse(parser, XMLWriter::CANONICAL, UNDECLARED_NAMESPACE); |
| 215 | fail("undeclared namespace - must throw exception" ); |
| 216 | } |
| 217 | catch (SAXParseException&) |
| 218 | { |
| 219 | } |
| 220 | } |
| 221 | |
| 222 | |
| 223 | void SAXParserTest::testUndeclaredNamespaceNoPrefixes() |
| 224 | { |
| 225 | SAXParser parser; |
| 226 | parser.setFeature(XMLReader::FEATURE_NAMESPACES, true); |
| 227 | parser.setFeature(XMLReader::FEATURE_NAMESPACE_PREFIXES, false); |
| 228 | try |
| 229 | { |
| 230 | std::string xml = parse(parser, XMLWriter::CANONICAL, UNDECLARED_NAMESPACE); |
| 231 | fail("undeclared namespace - must throw exception" ); |
| 232 | } |
| 233 | catch (SAXParseException&) |
| 234 | { |
| 235 | } |
| 236 | } |
| 237 | |
| 238 | |
| 239 | void SAXParserTest::testUndeclaredNoNamespace() |
| 240 | { |
| 241 | SAXParser parser; |
| 242 | parser.setFeature(XMLReader::FEATURE_NAMESPACES, false); |
| 243 | std::string xml = parse(parser, XMLWriter::CANONICAL, UNDECLARED_NAMESPACE); |
| 244 | assertTrue (xml == UNDECLARED_NAMESPACE); |
| 245 | } |
| 246 | |
| 247 | |
| 248 | void SAXParserTest::() |
| 249 | { |
| 250 | SAXParser parser; |
| 251 | WhitespaceFilter filter(&parser); |
| 252 | TestEntityResolver resolver; |
| 253 | filter.setEntityResolver(&resolver); |
| 254 | parser.setFeature(XMLReader::FEATURE_EXTERNAL_GENERAL_ENTITIES, true); |
| 255 | parser.setFeature(XMLReader::FEATURE_EXTERNAL_PARAMETER_ENTITIES, true); |
| 256 | |
| 257 | std::istringstream istr(RSS); |
| 258 | Poco::FileOutputStream ostr("rss.xml" ); |
| 259 | XMLWriter writer(ostr, XMLWriter::CANONICAL | XMLWriter::PRETTY_PRINT); |
| 260 | filter.setContentHandler(&writer); |
| 261 | filter.setDTDHandler(&writer); |
| 262 | filter.setProperty(XMLReader::PROPERTY_LEXICAL_HANDLER, static_cast<Poco::XML::LexicalHandler*>(&writer)); |
| 263 | InputSource source(istr); |
| 264 | filter.parse(&source); |
| 265 | } |
| 266 | |
| 267 | |
| 268 | void SAXParserTest::testEncoding() |
| 269 | { |
| 270 | SAXParser parser; |
| 271 | Poco::Latin9Encoding encoding; |
| 272 | parser.addEncoding("ISO-8859-15" , &encoding); |
| 273 | |
| 274 | std::istringstream istr(ENCODING); |
| 275 | std::ostringstream ostr; |
| 276 | XMLWriter writer(ostr, XMLWriter::WRITE_XML_DECLARATION, "ISO-8859-15" , encoding); |
| 277 | parser.setContentHandler(&writer); |
| 278 | parser.setDTDHandler(&writer); |
| 279 | parser.setProperty(XMLReader::PROPERTY_LEXICAL_HANDLER, static_cast<Poco::XML::LexicalHandler*>(&writer)); |
| 280 | InputSource source(istr); |
| 281 | parser.parse(&source); |
| 282 | |
| 283 | std::string xml = ostr.str(); |
| 284 | assertTrue (xml == ENCODING); |
| 285 | } |
| 286 | |
| 287 | |
| 288 | void SAXParserTest::testCharacters() |
| 289 | { |
| 290 | static const XMLString xml("<textnode> TEXT & AMPERSAND </textnode>" ); |
| 291 | SAXParser parser; |
| 292 | parser.setFeature(XMLReader::FEATURE_NAMESPACES, false); |
| 293 | std::string result = parse(parser, XMLWriter::CANONICAL, xml); |
| 294 | assertTrue (result == xml); |
| 295 | } |
| 296 | |
| 297 | |
| 298 | void SAXParserTest::testParseMemory() |
| 299 | { |
| 300 | SAXParser parser; |
| 301 | std::string xml = parseMemory(parser, XMLWriter::CANONICAL | XMLWriter::PRETTY_PRINT, WSDL); |
| 302 | assertTrue (xml == WSDL); |
| 303 | } |
| 304 | |
| 305 | |
| 306 | void SAXParserTest::testParsePartialReads() |
| 307 | { |
| 308 | SAXParser parser; |
| 309 | parser.setFeature("http://www.appinf.com/features/enable-partial-reads" , true); |
| 310 | |
| 311 | std::string xml = parse(parser, XMLWriter::CANONICAL | XMLWriter::PRETTY_PRINT, WSDL); |
| 312 | assertTrue (xml == WSDL); |
| 313 | } |
| 314 | |
| 315 | |
| 316 | void SAXParserTest::setUp() |
| 317 | { |
| 318 | } |
| 319 | |
| 320 | |
| 321 | void SAXParserTest::tearDown() |
| 322 | { |
| 323 | } |
| 324 | |
| 325 | |
| 326 | std::string SAXParserTest::parse(XMLReader& reader, int options, const std::string& data) |
| 327 | { |
| 328 | std::istringstream istr(data); |
| 329 | std::ostringstream ostr; |
| 330 | XMLWriter writer(ostr, options); |
| 331 | writer.setNewLine(XMLWriter::NEWLINE_LF); |
| 332 | reader.setContentHandler(&writer); |
| 333 | reader.setDTDHandler(&writer); |
| 334 | reader.setProperty(XMLReader::PROPERTY_LEXICAL_HANDLER, static_cast<Poco::XML::LexicalHandler*>(&writer)); |
| 335 | InputSource source(istr); |
| 336 | reader.parse(&source); |
| 337 | return ostr.str(); |
| 338 | } |
| 339 | |
| 340 | |
| 341 | std::string SAXParserTest::parseMemory(XMLReader& reader, int options, const std::string& data) |
| 342 | { |
| 343 | std::ostringstream ostr; |
| 344 | XMLWriter writer(ostr, options); |
| 345 | writer.setNewLine(XMLWriter::NEWLINE_LF); |
| 346 | reader.setContentHandler(&writer); |
| 347 | reader.setDTDHandler(&writer); |
| 348 | reader.setProperty(XMLReader::PROPERTY_LEXICAL_HANDLER, static_cast<Poco::XML::LexicalHandler*>(&writer)); |
| 349 | reader.parseMemoryNP(data.data(), data.size()); |
| 350 | return ostr.str(); |
| 351 | } |
| 352 | |
| 353 | |
| 354 | CppUnit::Test* SAXParserTest::suite() |
| 355 | { |
| 356 | CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("SAXParserTest" ); |
| 357 | |
| 358 | CppUnit_addTest(pSuite, SAXParserTest, testSimple1); |
| 359 | CppUnit_addTest(pSuite, SAXParserTest, testSimple2); |
| 360 | CppUnit_addTest(pSuite, SAXParserTest, testAttributes); |
| 361 | CppUnit_addTest(pSuite, SAXParserTest, testCDATA); |
| 362 | CppUnit_addTest(pSuite, SAXParserTest, testComment); |
| 363 | CppUnit_addTest(pSuite, SAXParserTest, testPI); |
| 364 | CppUnit_addTest(pSuite, SAXParserTest, testDTD); |
| 365 | CppUnit_addTest(pSuite, SAXParserTest, testInternalEntity); |
| 366 | CppUnit_addTest(pSuite, SAXParserTest, testNotation); |
| 367 | CppUnit_addTest(pSuite, SAXParserTest, testExternalUnparsed); |
| 368 | CppUnit_addTest(pSuite, SAXParserTest, testExternalParsed); |
| 369 | CppUnit_addTest(pSuite, SAXParserTest, testDefaultNamespace); |
| 370 | CppUnit_addTest(pSuite, SAXParserTest, testNamespaces); |
| 371 | CppUnit_addTest(pSuite, SAXParserTest, testNamespacesNoPrefixes); |
| 372 | CppUnit_addTest(pSuite, SAXParserTest, testNoNamespaces); |
| 373 | CppUnit_addTest(pSuite, SAXParserTest, testUndeclaredNamespace); |
| 374 | CppUnit_addTest(pSuite, SAXParserTest, testUndeclaredNamespaceNoPrefixes); |
| 375 | CppUnit_addTest(pSuite, SAXParserTest, testUndeclaredNoNamespace); |
| 376 | CppUnit_addTest(pSuite, SAXParserTest, testRSS); |
| 377 | CppUnit_addTest(pSuite, SAXParserTest, testEncoding); |
| 378 | CppUnit_addTest(pSuite, SAXParserTest, testCharacters); |
| 379 | CppUnit_addTest(pSuite, SAXParserTest, testParseMemory); |
| 380 | CppUnit_addTest(pSuite, SAXParserTest, testParsePartialReads); |
| 381 | |
| 382 | return pSuite; |
| 383 | } |
| 384 | |
| 385 | |
| 386 | const std::string SAXParserTest::SIMPLE1 = |
| 387 | "<foo/>\n" ; |
| 388 | |
| 389 | |
| 390 | const std::string SAXParserTest::SIMPLE2 = |
| 391 | "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" |
| 392 | "<foo/>\n" ; |
| 393 | |
| 394 | |
| 395 | const std::string SAXParserTest::ATTRIBUTES = |
| 396 | "<root a1=\"v1\">\n" |
| 397 | "\t<elem a1=\"v1\" a2=\"v2\"/>\n" |
| 398 | "</root>" ; |
| 399 | |
| 400 | |
| 401 | const std::string SAXParserTest::CDATA = |
| 402 | "<data>\n" |
| 403 | "<![CDATA[\n" |
| 404 | "\tThe following <tag attr=\"value\">is inside a CDATA section</tag>.\n" |
| 405 | "]]>\n" |
| 406 | "</data>" ; |
| 407 | |
| 408 | |
| 409 | const std::string SAXParserTest:: = |
| 410 | "<!--this is a comment-->" |
| 411 | "<root>\n" |
| 412 | "\t<!--another comment-->\n" |
| 413 | "\t<elem/>\n" |
| 414 | "</root>" ; |
| 415 | |
| 416 | |
| 417 | const std::string SAXParserTest::PROCESSING_INSTRUCTION = |
| 418 | "<html>\n" |
| 419 | "\t<head>\n" |
| 420 | "\t\t<?xml-stylesheet href=\"style.css\" type=\"text/css\"?>\n" |
| 421 | "\t\t<title>test</title>\n" |
| 422 | "\t</head>\n" |
| 423 | "\t<body>\n" |
| 424 | "\t\t<p>this is a test</p>\n" |
| 425 | "\t</body>\n" |
| 426 | "</html>" ; |
| 427 | |
| 428 | |
| 429 | const std::string SAXParserTest::DTD = |
| 430 | "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" |
| 431 | "<!DOCTYPE test SYSTEM \"test.dtd\">\n" |
| 432 | "<foo/>" ; |
| 433 | |
| 434 | |
| 435 | const std::string SAXParserTest::INTERNAL_ENTITY = |
| 436 | "<!DOCTYPE sample [\n" |
| 437 | "\t<!ENTITY appinf \"Applied Informatics\">\n" |
| 438 | "]>\n" |
| 439 | "<root>\n" |
| 440 | "\t<company>&appinf;</company>\n" |
| 441 | "</root>" ; |
| 442 | |
| 443 | |
| 444 | const std::string SAXParserTest::NOTATION = |
| 445 | "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" |
| 446 | "<!DOCTYPE test [\n" |
| 447 | "\t<!NOTATION mov SYSTEM \"quicktime\">\n" |
| 448 | "\t<!NOTATION xml PUBLIC \"-//W3C//NOTATION XML 1.0//EN\">\n" |
| 449 | "]>\n" |
| 450 | "<foo/>" ; |
| 451 | |
| 452 | |
| 453 | const std::string SAXParserTest::EXTERNAL_UNPARSED = |
| 454 | "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" |
| 455 | "<!DOCTYPE test [\n" |
| 456 | "\t<!NOTATION mov SYSTEM \"quicktime\">\n" |
| 457 | "\t<!ENTITY movie SYSTEM \"movie.mov\" NDATA mov>\n" |
| 458 | "]>\n" |
| 459 | "<sample/>" ; |
| 460 | |
| 461 | |
| 462 | const std::string SAXParserTest::EXTERNAL_PARSED = |
| 463 | "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" |
| 464 | "<!DOCTYPE test [\n" |
| 465 | "\t<!ENTITY include SYSTEM \"include.xml\">\n" |
| 466 | "]>\n" |
| 467 | "<sample>\n" |
| 468 | "\t&include;\n" |
| 469 | "</sample>\n" ; |
| 470 | |
| 471 | |
| 472 | const std::string SAXParserTest::INCLUDE = |
| 473 | "<elem>\n" |
| 474 | "\tAn external entity.\n" |
| 475 | "</elem>\n" ; |
| 476 | |
| 477 | |
| 478 | const std::string SAXParserTest::DEFAULT_NAMESPACE = |
| 479 | "<root xmlns=\"urn:ns1\">\n" |
| 480 | "\t<elem>data</elem>\n" |
| 481 | "</root>" ; |
| 482 | |
| 483 | |
| 484 | const std::string SAXParserTest::NAMESPACES = |
| 485 | "<ns1:root xmlns:ns1=\"urn:ns1\" xmlns:ns2=\"urn:ns2\">\n" |
| 486 | "\t<ns2:elem>data</ns2:elem>\n" |
| 487 | "\t<ns3:elem a1=\"v1\" ns2:a2=\"v2\" xmlns:ns3=\"urn:ns3\">\n" |
| 488 | "\t\tmore data\n" |
| 489 | "\t</ns3:elem>\n" |
| 490 | "</ns1:root>" ; |
| 491 | |
| 492 | |
| 493 | const std::string SAXParserTest::UNDECLARED_NAMESPACE = |
| 494 | "<ns1:root xmlns:ns1=\"urn:ns1\" xmlns:ns2=\"urn:ns2\">\n" |
| 495 | "\t<ns2:elem>data</ns2:elem>\n" |
| 496 | "\t<ns3:elem a1=\"v1\" ns2:a2=\"v2\" xmlns:ns3=\"urn:ns3\">\n" |
| 497 | "\t\tmore data\n" |
| 498 | "\t</ns3:elem>\n" |
| 499 | "\t<ns4:elem/>\n" |
| 500 | "</ns1:root>" ; |
| 501 | |
| 502 | |
| 503 | const std::string SAXParserTest::XHTML_LATIN1_ENTITIES = |
| 504 | "<!-- Portions (C) International Organization for Standardization 1986\n" |
| 505 | " Permission to copy in any form is granted for use with\n" |
| 506 | " conforming SGML systems and applications as defined in\n" |
| 507 | " ISO 8879, provided this notice is included in all copies.\n" |
| 508 | "-->\n" |
| 509 | "<!-- Character entity set. Typical invocation:\n" |
| 510 | " <!ENTITY % HTMLlat1 PUBLIC\n" |
| 511 | " \"-//W3C//ENTITIES Latin 1 for XHTML//EN\"\n" |
| 512 | " \"http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent\">\n" |
| 513 | " %HTMLlat1;\n" |
| 514 | "-->\n" |
| 515 | "\n" |
| 516 | "<!ENTITY nbsp \" \"> <!-- no-break space = non-breaking space,\n" |
| 517 | " U+00A0 ISOnum -->\n" |
| 518 | "<!ENTITY iexcl \"¡\"> <!-- inverted exclamation mark, U+00A1 ISOnum -->\n" |
| 519 | "<!ENTITY cent \"¢\"> <!-- cent sign, U+00A2 ISOnum -->\n" |
| 520 | "<!ENTITY pound \"£\"> <!-- pound sign, U+00A3 ISOnum -->\n" |
| 521 | "<!ENTITY curren \"¤\"> <!-- currency sign, U+00A4 ISOnum -->\n" |
| 522 | "<!ENTITY yen \"¥\"> <!-- yen sign = yuan sign, U+00A5 ISOnum -->\n" |
| 523 | "<!ENTITY brvbar \"¦\"> <!-- broken bar = broken vertical bar,\n" |
| 524 | " U+00A6 ISOnum -->\n" |
| 525 | "<!ENTITY sect \"§\"> <!-- section sign, U+00A7 ISOnum -->\n" |
| 526 | "<!ENTITY uml \"¨\"> <!-- diaeresis = spacing diaeresis,\n" |
| 527 | " U+00A8 ISOdia -->\n" |
| 528 | "<!ENTITY copy \"©\"> <!-- copyright sign, U+00A9 ISOnum -->\n" |
| 529 | "<!ENTITY ordf \"ª\"> <!-- feminine ordinal indicator, U+00AA ISOnum -->\n" |
| 530 | "<!ENTITY laquo \"«\"> <!-- left-pointing double angle quotation mark\n" |
| 531 | " = left pointing guillemet, U+00AB ISOnum -->\n" |
| 532 | "<!ENTITY not \"¬\"> <!-- not sign = angled dash,\n" |
| 533 | " U+00AC ISOnum -->\n" |
| 534 | "<!ENTITY shy \"­\"> <!-- soft hyphen = discretionary hyphen,\n" |
| 535 | " U+00AD ISOnum -->\n" |
| 536 | "<!ENTITY reg \"®\"> <!-- registered sign = registered trade mark sign,\n" |
| 537 | " U+00AE ISOnum -->\n" |
| 538 | "<!ENTITY macr \"¯\"> <!-- macron = spacing macron = overline\n" |
| 539 | " = APL overbar, U+00AF ISOdia -->\n" |
| 540 | "<!ENTITY deg \"°\"> <!-- degree sign, U+00B0 ISOnum -->\n" |
| 541 | "<!ENTITY plusmn \"±\"> <!-- plus-minus sign = plus-or-minus sign,\n" |
| 542 | " U+00B1 ISOnum -->\n" |
| 543 | "<!ENTITY sup2 \"²\"> <!-- superscript two = superscript digit two\n" |
| 544 | " = squared, U+00B2 ISOnum -->\n" |
| 545 | "<!ENTITY sup3 \"³\"> <!-- superscript three = superscript digit three\n" |
| 546 | " = cubed, U+00B3 ISOnum -->\n" |
| 547 | "<!ENTITY acute \"´\"> <!-- acute accent = spacing acute,\n" |
| 548 | " U+00B4 ISOdia -->\n" |
| 549 | "<!ENTITY micro \"µ\"> <!-- micro sign, U+00B5 ISOnum -->\n" |
| 550 | "<!ENTITY para \"¶\"> <!-- pilcrow sign = paragraph sign,\n" |
| 551 | " U+00B6 ISOnum -->\n" |
| 552 | "<!ENTITY middot \"·\"> <!-- middle dot = Georgian comma\n" |
| 553 | " = Greek middle dot, U+00B7 ISOnum -->\n" |
| 554 | "<!ENTITY cedil \"¸\"> <!-- cedilla = spacing cedilla, U+00B8 ISOdia -->\n" |
| 555 | "<!ENTITY sup1 \"¹\"> <!-- superscript one = superscript digit one,\n" |
| 556 | " U+00B9 ISOnum -->\n" |
| 557 | "<!ENTITY ordm \"º\"> <!-- masculine ordinal indicator,\n" |
| 558 | " U+00BA ISOnum -->\n" |
| 559 | "<!ENTITY raquo \"»\"> <!-- right-pointing double angle quotation mark\n" |
| 560 | " = right pointing guillemet, U+00BB ISOnum -->\n" |
| 561 | "<!ENTITY frac14 \"¼\"> <!-- vulgar fraction one quarter\n" |
| 562 | " = fraction one quarter, U+00BC ISOnum -->\n" |
| 563 | "<!ENTITY frac12 \"½\"> <!-- vulgar fraction one half\n" |
| 564 | " = fraction one half, U+00BD ISOnum -->\n" |
| 565 | "<!ENTITY frac34 \"¾\"> <!-- vulgar fraction three quarters\n" |
| 566 | " = fraction three quarters, U+00BE ISOnum -->\n" |
| 567 | "<!ENTITY iquest \"¿\"> <!-- inverted question mark\n" |
| 568 | " = turned question mark, U+00BF ISOnum -->\n" |
| 569 | "<!ENTITY Agrave \"À\"> <!-- latin capital letter A with grave\n" |
| 570 | " = latin capital letter A grave,\n" |
| 571 | " U+00C0 ISOlat1 -->\n" |
| 572 | "<!ENTITY Aacute \"Á\"> <!-- latin capital letter A with acute,\n" |
| 573 | " U+00C1 ISOlat1 -->\n" |
| 574 | "<!ENTITY Acirc \"Â\"> <!-- latin capital letter A with circumflex,\n" |
| 575 | " U+00C2 ISOlat1 -->\n" |
| 576 | "<!ENTITY Atilde \"Ã\"> <!-- latin capital letter A with tilde,\n" |
| 577 | " U+00C3 ISOlat1 -->\n" |
| 578 | "<!ENTITY Auml \"Ä\"> <!-- latin capital letter A with diaeresis,\n" |
| 579 | " U+00C4 ISOlat1 -->\n" |
| 580 | "<!ENTITY Aring \"Å\"> <!-- latin capital letter A with ring above\n" |
| 581 | " = latin capital letter A ring,\n" |
| 582 | " U+00C5 ISOlat1 -->\n" |
| 583 | "<!ENTITY AElig \"Æ\"> <!-- latin capital letter AE\n" |
| 584 | " = latin capital ligature AE,\n" |
| 585 | " U+00C6 ISOlat1 -->\n" |
| 586 | "<!ENTITY Ccedil \"Ç\"> <!-- latin capital letter C with cedilla,\n" |
| 587 | " U+00C7 ISOlat1 -->\n" |
| 588 | "<!ENTITY Egrave \"È\"> <!-- latin capital letter E with grave,\n" |
| 589 | " U+00C8 ISOlat1 -->\n" |
| 590 | "<!ENTITY Eacute \"É\"> <!-- latin capital letter E with acute,\n" |
| 591 | " U+00C9 ISOlat1 -->\n" |
| 592 | "<!ENTITY Ecirc \"Ê\"> <!-- latin capital letter E with circumflex,\n" |
| 593 | " U+00CA ISOlat1 -->\n" |
| 594 | "<!ENTITY Euml \"Ë\"> <!-- latin capital letter E with diaeresis,\n" |
| 595 | " U+00CB ISOlat1 -->\n" |
| 596 | "<!ENTITY Igrave \"Ì\"> <!-- latin capital letter I with grave,\n" |
| 597 | " U+00CC ISOlat1 -->\n" |
| 598 | "<!ENTITY Iacute \"Í\"> <!-- latin capital letter I with acute,\n" |
| 599 | " U+00CD ISOlat1 -->\n" |
| 600 | "<!ENTITY Icirc \"Î\"> <!-- latin capital letter I with circumflex,\n" |
| 601 | " U+00CE ISOlat1 -->\n" |
| 602 | "<!ENTITY Iuml \"Ï\"> <!-- latin capital letter I with diaeresis,\n" |
| 603 | " U+00CF ISOlat1 -->\n" |
| 604 | "<!ENTITY ETH \"Ð\"> <!-- latin capital letter ETH, U+00D0 ISOlat1 -->\n" |
| 605 | "<!ENTITY Ntilde \"Ñ\"> <!-- latin capital letter N with tilde,\n" |
| 606 | " U+00D1 ISOlat1 -->\n" |
| 607 | "<!ENTITY Ograve \"Ò\"> <!-- latin capital letter O with grave,\n" |
| 608 | " U+00D2 ISOlat1 -->\n" |
| 609 | "<!ENTITY Oacute \"Ó\"> <!-- latin capital letter O with acute,\n" |
| 610 | " U+00D3 ISOlat1 -->\n" |
| 611 | "<!ENTITY Ocirc \"Ô\"> <!-- latin capital letter O with circumflex,\n" |
| 612 | " U+00D4 ISOlat1 -->\n" |
| 613 | "<!ENTITY Otilde \"Õ\"> <!-- latin capital letter O with tilde,\n" |
| 614 | " U+00D5 ISOlat1 -->\n" |
| 615 | "<!ENTITY Ouml \"Ö\"> <!-- latin capital letter O with diaeresis,\n" |
| 616 | " U+00D6 ISOlat1 -->\n" |
| 617 | "<!ENTITY times \"×\"> <!-- multiplication sign, U+00D7 ISOnum -->\n" |
| 618 | "<!ENTITY Oslash \"Ø\"> <!-- latin capital letter O with stroke\n" |
| 619 | " = latin capital letter O slash,\n" |
| 620 | " U+00D8 ISOlat1 -->\n" |
| 621 | "<!ENTITY Ugrave \"Ù\"> <!-- latin capital letter U with grave,\n" |
| 622 | " U+00D9 ISOlat1 -->\n" |
| 623 | "<!ENTITY Uacute \"Ú\"> <!-- latin capital letter U with acute,\n" |
| 624 | " U+00DA ISOlat1 -->\n" |
| 625 | "<!ENTITY Ucirc \"Û\"> <!-- latin capital letter U with circumflex,\n" |
| 626 | " U+00DB ISOlat1 -->\n" |
| 627 | "<!ENTITY Uuml \"Ü\"> <!-- latin capital letter U with diaeresis,\n" |
| 628 | " U+00DC ISOlat1 -->\n" |
| 629 | "<!ENTITY Yacute \"Ý\"> <!-- latin capital letter Y with acute,\n" |
| 630 | " U+00DD ISOlat1 -->\n" |
| 631 | "<!ENTITY THORN \"Þ\"> <!-- latin capital letter THORN,\n" |
| 632 | " U+00DE ISOlat1 -->\n" |
| 633 | "<!ENTITY szlig \"ß\"> <!-- latin small letter sharp s = ess-zed,\n" |
| 634 | " U+00DF ISOlat1 -->\n" |
| 635 | "<!ENTITY agrave \"à\"> <!-- latin small letter a with grave\n" |
| 636 | " = latin small letter a grave,\n" |
| 637 | " U+00E0 ISOlat1 -->\n" |
| 638 | "<!ENTITY aacute \"á\"> <!-- latin small letter a with acute,\n" |
| 639 | " U+00E1 ISOlat1 -->\n" |
| 640 | "<!ENTITY acirc \"â\"> <!-- latin small letter a with circumflex,\n" |
| 641 | " U+00E2 ISOlat1 -->\n" |
| 642 | "<!ENTITY atilde \"ã\"> <!-- latin small letter a with tilde,\n" |
| 643 | " U+00E3 ISOlat1 -->\n" |
| 644 | "<!ENTITY auml \"ä\"> <!-- latin small letter a with diaeresis,\n" |
| 645 | " U+00E4 ISOlat1 -->\n" |
| 646 | "<!ENTITY aring \"å\"> <!-- latin small letter a with ring above\n" |
| 647 | " = latin small letter a ring,\n" |
| 648 | " U+00E5 ISOlat1 -->\n" |
| 649 | "<!ENTITY aelig \"æ\"> <!-- latin small letter ae\n" |
| 650 | " = latin small ligature ae, U+00E6 ISOlat1 -->\n" |
| 651 | "<!ENTITY ccedil \"ç\"> <!-- latin small letter c with cedilla,\n" |
| 652 | " U+00E7 ISOlat1 -->\n" |
| 653 | "<!ENTITY egrave \"è\"> <!-- latin small letter e with grave,\n" |
| 654 | " U+00E8 ISOlat1 -->\n" |
| 655 | "<!ENTITY eacute \"é\"> <!-- latin small letter e with acute,\n" |
| 656 | " U+00E9 ISOlat1 -->\n" |
| 657 | "<!ENTITY ecirc \"ê\"> <!-- latin small letter e with circumflex,\n" |
| 658 | " U+00EA ISOlat1 -->\n" |
| 659 | "<!ENTITY euml \"ë\"> <!-- latin small letter e with diaeresis,\n" |
| 660 | " U+00EB ISOlat1 -->\n" |
| 661 | "<!ENTITY igrave \"ì\"> <!-- latin small letter i with grave,\n" |
| 662 | " U+00EC ISOlat1 -->\n" |
| 663 | "<!ENTITY iacute \"í\"> <!-- latin small letter i with acute,\n" |
| 664 | " U+00ED ISOlat1 -->\n" |
| 665 | "<!ENTITY icirc \"î\"> <!-- latin small letter i with circumflex,\n" |
| 666 | " U+00EE ISOlat1 -->\n" |
| 667 | "<!ENTITY iuml \"ï\"> <!-- latin small letter i with diaeresis,\n" |
| 668 | " U+00EF ISOlat1 -->\n" |
| 669 | "<!ENTITY eth \"ð\"> <!-- latin small letter eth, U+00F0 ISOlat1 -->\n" |
| 670 | "<!ENTITY ntilde \"ñ\"> <!-- latin small letter n with tilde,\n" |
| 671 | " U+00F1 ISOlat1 -->\n" |
| 672 | "<!ENTITY ograve \"ò\"> <!-- latin small letter o with grave,\n" |
| 673 | " U+00F2 ISOlat1 -->\n" |
| 674 | "<!ENTITY oacute \"ó\"> <!-- latin small letter o with acute,\n" |
| 675 | " U+00F3 ISOlat1 -->\n" |
| 676 | "<!ENTITY ocirc \"ô\"> <!-- latin small letter o with circumflex,\n" |
| 677 | " U+00F4 ISOlat1 -->\n" |
| 678 | "<!ENTITY otilde \"õ\"> <!-- latin small letter o with tilde,\n" |
| 679 | " U+00F5 ISOlat1 -->\n" |
| 680 | "<!ENTITY ouml \"ö\"> <!-- latin small letter o with diaeresis,\n" |
| 681 | " U+00F6 ISOlat1 -->\n" |
| 682 | "<!ENTITY divide \"÷\"> <!-- division sign, U+00F7 ISOnum -->\n" |
| 683 | "<!ENTITY oslash \"ø\"> <!-- latin small letter o with stroke,\n" |
| 684 | " = latin small letter o slash,\n" |
| 685 | " U+00F8 ISOlat1 -->\n" |
| 686 | "<!ENTITY ugrave \"ù\"> <!-- latin small letter u with grave,\n" |
| 687 | " U+00F9 ISOlat1 -->\n" |
| 688 | "<!ENTITY uacute \"ú\"> <!-- latin small letter u with acute,\n" |
| 689 | " U+00FA ISOlat1 -->\n" |
| 690 | "<!ENTITY ucirc \"û\"> <!-- latin small letter u with circumflex,\n" |
| 691 | " U+00FB ISOlat1 -->\n" |
| 692 | "<!ENTITY uuml \"ü\"> <!-- latin small letter u with diaeresis,\n" |
| 693 | " U+00FC ISOlat1 -->\n" |
| 694 | "<!ENTITY yacute \"ý\"> <!-- latin small letter y with acute,\n" |
| 695 | " U+00FD ISOlat1 -->\n" |
| 696 | "<!ENTITY thorn \"þ\"> <!-- latin small letter thorn,\n" |
| 697 | " U+00FE ISOlat1 -->\n" |
| 698 | "<!ENTITY yuml \"ÿ\"> <!-- latin small letter y with diaeresis,\n" |
| 699 | " U+00FF ISOlat1 -->\n" ; |
| 700 | |
| 701 | const std::string SAXParserTest:: = |
| 702 | "<?xml version=\"1.0\"?>\n" |
| 703 | "\n" |
| 704 | "<!DOCTYPE rdf:RDF [\n" |
| 705 | "<!ENTITY % HTMLlat1 PUBLIC\n" |
| 706 | " \"-//W3C//ENTITIES Latin 1 for XHTML//EN\"\n" |
| 707 | " \"http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent\">\n" |
| 708 | "%HTMLlat1;\n" |
| 709 | "]>\n" |
| 710 | "\n" |
| 711 | "<rdf:RDF \n" |
| 712 | " xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" \n" |
| 713 | " xmlns:dc=\"http://purl.org/dc/elements/1.1/\"\n" |
| 714 | " xmlns:sy=\"http://purl.org/rss/1.0/modules/syndication/\"\n" |
| 715 | " xmlns=\"http://purl.org/rss/1.0/\"\n" |
| 716 | "> \n" |
| 717 | "\n" |
| 718 | " <channel rdf:about=\"http://meerkat.oreillynet.com/\">\n" |
| 719 | " <title>XML.com</title> \n" |
| 720 | " <link>http://www.xml.com/</link>\n" |
| 721 | " <description>XML.com features a rich mix of information and services for the XML community.</description>\n" |
| 722 | " <sy:updatePeriod>hourly</sy:updatePeriod>\n" |
| 723 | " <sy:updateFrequency>2</sy:updateFrequency>\n" |
| 724 | " <sy:updateBase>2000-01-01T12:00+00:00</sy:updateBase>\n" |
| 725 | "\n" |
| 726 | " <image rdf:resource=\"http://meerkat.oreillynet.com/icons/meerkat-powered.jpg\" />\n" |
| 727 | "\n" |
| 728 | " <items>\n" |
| 729 | " <rdf:Seq>\n" |
| 730 | " <rdf:li rdf:resource=\"http://www.xml.com/pub/a/2005/02/09/xforms.html\" />\n" |
| 731 | " <rdf:li rdf:resource=\"http://www.xml.com/pub/a/2005/02/09/cssorxsl.html\" />\n" |
| 732 | " <rdf:li rdf:resource=\"http://www.xml.com/pub/a/2005/02/09/xml-http-request.html\" />\n" |
| 733 | " <rdf:li rdf:resource=\"http://www.xml.com/pub/a/2005/02/02/xpath2.html\" />\n" |
| 734 | " <rdf:li rdf:resource=\"http://www.xml.com/pub/a/2005/02/02/silent.html\" />\n" |
| 735 | " <rdf:li rdf:resource=\"http://www.xml.com/pub/a/2005/02/02/xpath2.html\" />\n" |
| 736 | " <rdf:li rdf:resource=\"http://www.xml.com/pub/a/2005/02/02/tmapi.html\" />\n" |
| 737 | " <rdf:li rdf:resource=\"http://www.xml.com/pub/a/2005/01/26/formtax.html\" />\n" |
| 738 | " <rdf:li rdf:resource=\"http://www.xml.com/pub/a/2005/01/26/hacking-ooo.html\" />\n" |
| 739 | " <rdf:li rdf:resource=\"http://www.xml.com/pub/a/2005/01/26/simile.html\" />\n" |
| 740 | " <rdf:li rdf:resource=\"http://www.xml.com/pub/a/2005/01/19/amara.html\" />\n" |
| 741 | " <rdf:li rdf:resource=\"http://www.xml.com/pub/a/2005/01/19/print.html\" />\n" |
| 742 | " <rdf:li rdf:resource=\"http://www.xml.com/pub/a/2005/01/19/review.html\" />\n" |
| 743 | " <rdf:li rdf:resource=\"http://www.xml.com/pub/a/2005/01/12/saml2.html\" />\n" |
| 744 | " <rdf:li rdf:resource=\"http://www.xml.com/pub/a/2005/01/12/comega.html\" />\n" |
| 745 | " </rdf:Seq>\n" |
| 746 | " </items>\n" |
| 747 | " \n" |
| 748 | " <textinput rdf:resource=\"http://meerkat.oreillynet.com/\" />\n" |
| 749 | "\n" |
| 750 | " </channel>\n" |
| 751 | "\n" |
| 752 | " <image rdf:about=\"http://meerkat.oreillynet.com/icons/meerkat-powered.jpg\">\n" |
| 753 | " <title>Meerkat Powered!</title>\n" |
| 754 | " <url>http://meerkat.oreillynet.com/icons/meerkat-powered.jpg</url>\n" |
| 755 | " <link>http://meerkat.oreillynet.com</link>\n" |
| 756 | " </image>\n" |
| 757 | "\n" |
| 758 | " <item rdf:about=\"http://www.xml.com/pub/a/2005/02/09/xforms.html\">\n" |
| 759 | " <title>Features: Top 10 XForms Engines</title>\n" |
| 760 | " <link>http://www.xml.com/pub/a/2005/02/09/xforms.html</link>\n" |
| 761 | " <description>\n" |
| 762 | " Micah Dubinko, one of the gurus of XForms, offers a rundown on the state of XForms engines for 2005.\n" |
| 763 | " </description>\n" |
| 764 | " <dc:source>XML.com</dc:source>\n" |
| 765 | " <dc:creator>Micah Dubinko</dc:creator>\n" |
| 766 | " <dc:subject>Web, Applications</dc:subject>\n" |
| 767 | " <dc:publisher>O'Reilly Media, Inc.</dc:publisher>\n" |
| 768 | " <dc:date>2005-02-09</dc:date>\n" |
| 769 | " <dc:type>Features</dc:type>\n" |
| 770 | " <dc:format>text/html</dc:format>\n" |
| 771 | " <dc:language>en-us</dc:language>\n" |
| 772 | " <dc:rights>Copyright 2005, O'Reilly Media, Inc.</dc:rights>\n" |
| 773 | " </item>\n" |
| 774 | "\n" |
| 775 | " <item rdf:about=\"http://www.xml.com/pub/a/2005/02/09/cssorxsl.html\">\n" |
| 776 | " <title>Features: Comparing CSS and XSL: A Reply from Norm Walsh</title>\n" |
| 777 | " <link>http://www.xml.com/pub/a/2005/02/09/cssorxsl.html</link>\n" |
| 778 | " <description>\n" |
| 779 | " Norm Walsh responds to a recent article about CSS and XSL, explaining how and when and why you'd want to use XSLFO or CSS or XSLT.\n" |
| 780 | " </description>\n" |
| 781 | " <dc:source>XML.com</dc:source>\n" |
| 782 | " <dc:creator>Norman Walsh</dc:creator>\n" |
| 783 | " <dc:subject>Style</dc:subject>\n" |
| 784 | " <dc:publisher>O'Reilly Media, Inc.</dc:publisher>\n" |
| 785 | " <dc:date>2005-02-09</dc:date>\n" |
| 786 | " <dc:type>Features</dc:type>\n" |
| 787 | " <dc:format>text/html</dc:format>\n" |
| 788 | " <dc:language>en-us</dc:language>\n" |
| 789 | " <dc:rights>Copyright 2005, O'Reilly Media, Inc.</dc:rights>\n" |
| 790 | " </item>\n" |
| 791 | "\n" |
| 792 | " <item rdf:about=\"http://www.xml.com/pub/a/2005/02/09/xml-http-request.html\">\n" |
| 793 | " <title>Features: Very Dynamic Web Interfaces</title>\n" |
| 794 | " <link>http://www.xml.com/pub/a/2005/02/09/xml-http-request.html</link>\n" |
| 795 | " <description>\n" |
| 796 | " Drew McLellan explains how to use XMLHTTPRequest and Javascript to create web applications with very dynamic, smooth interfaces.\n" |
| 797 | " </description>\n" |
| 798 | " <dc:source>XML.com</dc:source>\n" |
| 799 | " <dc:creator>Drew McLellan</dc:creator>\n" |
| 800 | " <dc:subject>Web Development, Instruction</dc:subject>\n" |
| 801 | " <dc:publisher>O'Reilly Media, Inc.</dc:publisher>\n" |
| 802 | " <dc:date>2005-02-09</dc:date>\n" |
| 803 | " <dc:type>Features</dc:type>\n" |
| 804 | " <dc:format>text/html</dc:format>\n" |
| 805 | " <dc:language>en-us</dc:language>\n" |
| 806 | " <dc:rights>Copyright 2005, O'Reilly Media, Inc.</dc:rights>\n" |
| 807 | " </item>\n" |
| 808 | "\n" |
| 809 | " <item rdf:about=\"http://www.xml.com/pub/a/2005/02/02/xpath2.html\">\n" |
| 810 | " <title>Transforming XML: The XPath 2.0 Data Model</title>\n" |
| 811 | " <link>http://www.xml.com/pub/a/2005/02/02/xpath2.html</link>\n" |
| 812 | " <description>\n" |
| 813 | " Bob DuCharme, in his latest Transforming XML column, examines the XPath 2.0, hence the XSLT 2.0, data model.\n" |
| 814 | " </description>\n" |
| 815 | " <dc:source>XML.com</dc:source>\n" |
| 816 | " <dc:creator>Bob DuCharme</dc:creator>\n" |
| 817 | " <dc:subject>Style, Style</dc:subject>\n" |
| 818 | " <dc:publisher>O'Reilly Media, Inc.</dc:publisher>\n" |
| 819 | " <dc:date>2005-02-02</dc:date>\n" |
| 820 | " <dc:type>Transforming XML</dc:type>\n" |
| 821 | " <dc:format>text/html</dc:format>\n" |
| 822 | " <dc:language>en-us</dc:language>\n" |
| 823 | " <dc:rights>Copyright 2005, O'Reilly Media, Inc.</dc:rights>\n" |
| 824 | " </item>\n" |
| 825 | "\n" |
| 826 | " <item rdf:about=\"http://www.xml.com/pub/a/2005/02/02/silent.html\">\n" |
| 827 | " <title>XML Tourist: The Silent Soundtrack</title>\n" |
| 828 | " <link>http://www.xml.com/pub/a/2005/02/02/silent.html</link>\n" |
| 829 | " <description>\n" |
| 830 | " In this installation of XML Tourist, John E. Simpson presents an overview of the types of sound-to-text captioning available. Pinpointing closed captioning as the most suitable for use with computerized multimedia, he then explains how XML-based solutions address synchronization issues.\n" |
| 831 | " </description>\n" |
| 832 | " <dc:source>XML.com</dc:source>\n" |
| 833 | " <dc:creator>John E. Simpson</dc:creator>\n" |
| 834 | " <dc:subject>Graphics, Vertical Industries</dc:subject>\n" |
| 835 | " <dc:publisher>O'Reilly Media, Inc.</dc:publisher>\n" |
| 836 | " <dc:date>2005-02-02</dc:date>\n" |
| 837 | " <dc:type>XML Tourist</dc:type>\n" |
| 838 | " <dc:format>text/html</dc:format>\n" |
| 839 | " <dc:language>en-us</dc:language>\n" |
| 840 | " <dc:rights>Copyright 2005, O'Reilly Media, Inc.</dc:rights>\n" |
| 841 | " </item>\n" |
| 842 | "\n" |
| 843 | " <item rdf:about=\"http://www.xml.com/pub/a/2005/02/02/xpath2.html\">\n" |
| 844 | " <title>Transforming XML: The XML 2.0 Data Model</title>\n" |
| 845 | " <link>http://www.xml.com/pub/a/2005/02/02/xpath2.html</link>\n" |
| 846 | " <description>\n" |
| 847 | " Bob DuCharme, in his latest Transforming XML column, examines the XPath 2.0, hence the XSLT 2.0, data model.\n" |
| 848 | " </description>\n" |
| 849 | " <dc:source>XML.com</dc:source>\n" |
| 850 | " <dc:creator>Bob DuCharme</dc:creator>\n" |
| 851 | " <dc:subject>Style, Style</dc:subject>\n" |
| 852 | " <dc:publisher>O'Reilly Media, Inc.</dc:publisher>\n" |
| 853 | " <dc:date>2005-02-02</dc:date>\n" |
| 854 | " <dc:type>Transforming XML</dc:type>\n" |
| 855 | " <dc:format>text/html</dc:format>\n" |
| 856 | " <dc:language>en-us</dc:language>\n" |
| 857 | " <dc:rights>Copyright 2005, O'Reilly Media, Inc.</dc:rights>\n" |
| 858 | " </item>\n" |
| 859 | "\n" |
| 860 | " <item rdf:about=\"http://www.xml.com/pub/a/2005/02/02/tmapi.html\">\n" |
| 861 | " <title>Features: An Introduction to TMAPI</title>\n" |
| 862 | " <link>http://www.xml.com/pub/a/2005/02/02/tmapi.html</link>\n" |
| 863 | " <description>\n" |
| 864 | " TMAPI, a Java Topic Map API, is the standard way to interact with XML Topic Maps programmatically from Java. This article provides a tutorial for TMAPI. \n" |
| 865 | " </description>\n" |
| 866 | " <dc:source>XML.com</dc:source>\n" |
| 867 | " <dc:creator>Robert Barta, Oliver Leimig</dc:creator>\n" |
| 868 | " <dc:subject>Metadata, Metadata</dc:subject>\n" |
| 869 | " <dc:publisher>O'Reilly Media, Inc.</dc:publisher>\n" |
| 870 | " <dc:date>2005-02-02</dc:date>\n" |
| 871 | " <dc:type>Features</dc:type>\n" |
| 872 | " <dc:format>text/html</dc:format>\n" |
| 873 | " <dc:language>en-us</dc:language>\n" |
| 874 | " <dc:rights>Copyright 2005, O'Reilly Media, Inc.</dc:rights>\n" |
| 875 | " </item>\n" |
| 876 | "\n" |
| 877 | " <item rdf:about=\"http://www.xml.com/pub/a/2005/01/26/formtax.html\">\n" |
| 878 | " <title>Features: Formal Taxonomies for the U.S. Government</title>\n" |
| 879 | " <link>http://www.xml.com/pub/a/2005/01/26/formtax.html</link>\n" |
| 880 | " <description>\n" |
| 881 | " Mike Daconta, Metadata Program Manager at the Department of Homeland Security, introduces the notion of a formal taxonomy in the context of the Federal Enteriprise Architecture's Data Reference Model.\n" |
| 882 | " </description>\n" |
| 883 | " <dc:source>XML.com</dc:source>\n" |
| 884 | " <dc:creator>Michael Daconta</dc:creator>\n" |
| 885 | " <dc:subject>Metadata, Metadata</dc:subject>\n" |
| 886 | " <dc:publisher>O'Reilly Media, Inc.</dc:publisher>\n" |
| 887 | " <dc:date>2005-01-26</dc:date>\n" |
| 888 | " <dc:type>Features</dc:type>\n" |
| 889 | " <dc:format>text/html</dc:format>\n" |
| 890 | " <dc:language>en-us</dc:language>\n" |
| 891 | " <dc:rights>Copyright 2005, O'Reilly Media, Inc.</dc:rights>\n" |
| 892 | " </item>\n" |
| 893 | "\n" |
| 894 | " <item rdf:about=\"http://www.xml.com/pub/a/2005/01/26/hacking-ooo.html\">\n" |
| 895 | " <title>Features: Hacking Open Office</title>\n" |
| 896 | " <link>http://www.xml.com/pub/a/2005/01/26/hacking-ooo.html</link>\n" |
| 897 | " <description>\n" |
| 898 | " Peter Sefton shows us how to use XML tools to hack Open Office file formats.\n" |
| 899 | " </description>\n" |
| 900 | " <dc:source>XML.com</dc:source>\n" |
| 901 | " <dc:creator>Peter Sefton</dc:creator>\n" |
| 902 | " <dc:subject>Programming, Tools, Publishing</dc:subject>\n" |
| 903 | " <dc:publisher>O'Reilly Media, Inc.</dc:publisher>\n" |
| 904 | " <dc:date>2005-01-26</dc:date>\n" |
| 905 | " <dc:type>Features</dc:type>\n" |
| 906 | " <dc:format>text/html</dc:format>\n" |
| 907 | " <dc:language>en-us</dc:language>\n" |
| 908 | " <dc:rights>Copyright 2005, O'Reilly Media, Inc.</dc:rights>\n" |
| 909 | " </item>\n" |
| 910 | "\n" |
| 911 | " <item rdf:about=\"http://www.xml.com/pub/a/2005/01/26/simile.html\">\n" |
| 912 | " <title>Features: SIMILE: Practical Metadata for the Semantic Web</title>\n" |
| 913 | " <link>http://www.xml.com/pub/a/2005/01/26/simile.html</link>\n" |
| 914 | " <description>\n" |
| 915 | " Digital libraries and generic metadata form part of the background assumptions and forward-looking goals of the Semantic Web. SIMILE is an interesting project aimed at realizing some of those goals.\n" |
| 916 | " </description>\n" |
| 917 | " <dc:source>XML.com</dc:source>\n" |
| 918 | " <dc:creator>Stephen Garland, Ryan Lee, Stefano Mazzocchi</dc:creator>\n" |
| 919 | " <dc:subject>Semantic Web, Metadata</dc:subject>\n" |
| 920 | " <dc:publisher>O'Reilly Media, Inc.</dc:publisher>\n" |
| 921 | " <dc:date>2005-01-26</dc:date>\n" |
| 922 | " <dc:type>Features</dc:type>\n" |
| 923 | " <dc:format>text/html</dc:format>\n" |
| 924 | " <dc:language>en-us</dc:language>\n" |
| 925 | " <dc:rights>Copyright 2005, O'Reilly Media, Inc.</dc:rights>\n" |
| 926 | " </item>\n" |
| 927 | "\n" |
| 928 | " <item rdf:about=\"http://www.xml.com/pub/a/2005/01/19/amara.html\">\n" |
| 929 | " <title>Python and XML: Introducing the Amara XML Toolkit</title>\n" |
| 930 | " <link>http://www.xml.com/pub/a/2005/01/19/amara.html</link>\n" |
| 931 | " <description>\n" |
| 932 | " Uche Ogbuji introduces Amara, his new collection of XML tools for Python.\n" |
| 933 | " </description>\n" |
| 934 | " <dc:source>XML.com</dc:source>\n" |
| 935 | " <dc:creator>Uche Ogbuji</dc:creator>\n" |
| 936 | " <dc:subject>Programming, Programming</dc:subject>\n" |
| 937 | " <dc:publisher>O'Reilly Media, Inc.</dc:publisher>\n" |
| 938 | " <dc:date>2005-01-19</dc:date>\n" |
| 939 | " <dc:type>Python and XML</dc:type>\n" |
| 940 | " <dc:format>text/html</dc:format>\n" |
| 941 | " <dc:language>en-us</dc:language>\n" |
| 942 | " <dc:rights>Copyright 2005, O'Reilly Media, Inc.</dc:rights>\n" |
| 943 | " </item>\n" |
| 944 | "\n" |
| 945 | " <item rdf:about=\"http://www.xml.com/pub/a/2005/01/19/print.html\">\n" |
| 946 | " <title>Features: Printing XML: Why CSS Is Better than XSL</title>\n" |
| 947 | " <link>http://www.xml.com/pub/a/2005/01/19/print.html</link>\n" |
| 948 | " <description>\n" |
| 949 | " One of the old school debates among XML developers is &quot;CSS versus XSLT.&quot; H&aring;kun Wium Lie and Michael Day revive that debate with a shot across XSL's bow.\n" |
| 950 | " </description>\n" |
| 951 | " <dc:source>XML.com</dc:source>\n" |
| 952 | " <dc:creator>Michael Day, H&aring;kon Wium Lie</dc:creator>\n" |
| 953 | " <dc:subject>Style, Publishing</dc:subject>\n" |
| 954 | " <dc:publisher>O'Reilly Media, Inc.</dc:publisher>\n" |
| 955 | " <dc:date>2005-01-19</dc:date>\n" |
| 956 | " <dc:type>Features</dc:type>\n" |
| 957 | " <dc:format>text/html</dc:format>\n" |
| 958 | " <dc:language>en-us</dc:language>\n" |
| 959 | " <dc:rights>Copyright 2005, O'Reilly Media, Inc.</dc:rights>\n" |
| 960 | " </item>\n" |
| 961 | "\n" |
| 962 | " <item rdf:about=\"http://www.xml.com/pub/a/2005/01/19/review.html\">\n" |
| 963 | " <title>Features: Reviewing the Architecture of the World Wide Web</title>\n" |
| 964 | " <link>http://www.xml.com/pub/a/2005/01/19/review.html</link>\n" |
| 965 | " <description>\n" |
| 966 | " Harry Halpin reviews the final published edition of the W3C TAG's Architecture of the World Wide Web document.\n" |
| 967 | " </description>\n" |
| 968 | " <dc:source>XML.com</dc:source>\n" |
| 969 | " <dc:creator>Harry Halpin</dc:creator>\n" |
| 970 | " <dc:subject>Web, Perspectives</dc:subject>\n" |
| 971 | " <dc:publisher>O'Reilly Media, Inc.</dc:publisher>\n" |
| 972 | " <dc:date>2005-01-19</dc:date>\n" |
| 973 | " <dc:type>Features</dc:type>\n" |
| 974 | " <dc:format>text/html</dc:format>\n" |
| 975 | " <dc:language>en-us</dc:language>\n" |
| 976 | " <dc:rights>Copyright 2005, O'Reilly Media, Inc.</dc:rights>\n" |
| 977 | " </item>\n" |
| 978 | "\n" |
| 979 | " <item rdf:about=\"http://www.xml.com/pub/a/2005/01/12/saml2.html\">\n" |
| 980 | " <title>Features: SAML 2: The Building Blocks of Federated Identity</title>\n" |
| 981 | " <link>http://www.xml.com/pub/a/2005/01/12/saml2.html</link>\n" |
| 982 | " <description>\n" |
| 983 | " Paul Madsen reports on the developments in web services security, including a new major release of SAML, which provides the basis for building federated identity.\n" |
| 984 | " </description>\n" |
| 985 | " <dc:source>XML.com</dc:source>\n" |
| 986 | " <dc:creator>Paul Madsen</dc:creator>\n" |
| 987 | " <dc:subject>Web Services, Specifications</dc:subject>\n" |
| 988 | " <dc:publisher>O'Reilly Media, Inc.</dc:publisher>\n" |
| 989 | " <dc:date>2005-01-12</dc:date>\n" |
| 990 | " <dc:type>Features</dc:type>\n" |
| 991 | " <dc:format>text/html</dc:format>\n" |
| 992 | " <dc:language>en-us</dc:language>\n" |
| 993 | " <dc:rights>Copyright 2005, O'Reilly Media, Inc.</dc:rights>\n" |
| 994 | " </item>\n" |
| 995 | "\n" |
| 996 | " <item rdf:about=\"http://www.xml.com/pub/a/2005/01/12/comega.html\">\n" |
| 997 | " <title>Features: Introducing Comega</title>\n" |
| 998 | " <link>http://www.xml.com/pub/a/2005/01/12/comega.html</link>\n" |
| 999 | " <description>\n" |
| 1000 | " Dare Obasanjo explains some of the ways in which C&omega;--a new language from Microsoft Research--makes XML processing easier and more natural.\n" |
| 1001 | " </description>\n" |
| 1002 | " <dc:source>XML.com</dc:source>\n" |
| 1003 | " <dc:creator>Dare Obasanjo</dc:creator>\n" |
| 1004 | " <dc:subject>Programming, Instruction</dc:subject>\n" |
| 1005 | " <dc:publisher>O'Reilly Media, Inc.</dc:publisher>\n" |
| 1006 | " <dc:date>2005-01-12</dc:date>\n" |
| 1007 | " <dc:type>Features</dc:type>\n" |
| 1008 | " <dc:format>text/html</dc:format>\n" |
| 1009 | " <dc:language>en-us</dc:language>\n" |
| 1010 | " <dc:rights>Copyright 2005, O'Reilly Media, Inc.</dc:rights>\n" |
| 1011 | " </item>\n" |
| 1012 | "\n" |
| 1013 | "\n" |
| 1014 | " <textinput rdf:about=\"http://meerkat.oreillynet.com/\">\n" |
| 1015 | " <title>Search</title>\n" |
| 1016 | " <description>Search Meerkat...</description>\n" |
| 1017 | " <name>s</name>\n" |
| 1018 | " <link>http://meerkat.oreillynet.com/</link>\n" |
| 1019 | " </textinput>\n" |
| 1020 | "\n" |
| 1021 | "</rdf:RDF>\n" ; |
| 1022 | |
| 1023 | |
| 1024 | const std::string SAXParserTest::ENCODING = |
| 1025 | "<?xml version=\"1.0\" encoding=\"ISO-8859-15\"?>" |
| 1026 | "<euro-sign>\244</euro-sign>" ; |
| 1027 | |
| 1028 | const std::string SAXParserTest::WSDL = |
| 1029 | "<!-- WSDL description of the Google Web APIs.\n" |
| 1030 | " The Google Web APIs are in beta release. All interfaces are subject to\n" |
| 1031 | " change as we refine and extend our APIs. Please see the terms of use\n" |
| 1032 | " for more information. -->\n" |
| 1033 | "<!-- Revision 2002-08-16 -->\n" |
| 1034 | "<ns1:definitions name=\"GoogleSearch\" targetNamespace=\"urn:GoogleSearch\" xmlns:ns1=\"http://schemas.xmlsoap.org/wsdl/\">\n" |
| 1035 | "\t<!-- Types for search - result elements, directory categories -->\n" |
| 1036 | "\t<ns1:types>\n" |
| 1037 | "\t\t<ns2:schema targetNamespace=\"urn:GoogleSearch\" xmlns:ns2=\"http://www.w3.org/2001/XMLSchema\">\n" |
| 1038 | "\t\t\t<ns2:complexType name=\"GoogleSearchResult\">\n" |
| 1039 | "\t\t\t\t<ns2:all>\n" |
| 1040 | "\t\t\t\t\t<ns2:element name=\"documentFiltering\" type=\"xsd:boolean\"/>\n" |
| 1041 | "\t\t\t\t\t<ns2:element name=\"searchComments\" type=\"xsd:string\"/>\n" |
| 1042 | "\t\t\t\t\t<ns2:element name=\"estimatedTotalResultsCount\" type=\"xsd:int\"/>\n" |
| 1043 | "\t\t\t\t\t<ns2:element name=\"estimateIsExact\" type=\"xsd:boolean\"/>\n" |
| 1044 | "\t\t\t\t\t<ns2:element name=\"resultElements\" type=\"typens:ResultElementArray\"/>\n" |
| 1045 | "\t\t\t\t\t<ns2:element name=\"searchQuery\" type=\"xsd:string\"/>\n" |
| 1046 | "\t\t\t\t\t<ns2:element name=\"startIndex\" type=\"xsd:int\"/>\n" |
| 1047 | "\t\t\t\t\t<ns2:element name=\"endIndex\" type=\"xsd:int\"/>\n" |
| 1048 | "\t\t\t\t\t<ns2:element name=\"searchTips\" type=\"xsd:string\"/>\n" |
| 1049 | "\t\t\t\t\t<ns2:element name=\"directoryCategories\" type=\"typens:DirectoryCategoryArray\"/>\n" |
| 1050 | "\t\t\t\t\t<ns2:element name=\"searchTime\" type=\"xsd:double\"/>\n" |
| 1051 | "\t\t\t\t</ns2:all>\n" |
| 1052 | "\t\t\t</ns2:complexType>\n" |
| 1053 | "\t\t\t<ns2:complexType name=\"ResultElement\">\n" |
| 1054 | "\t\t\t\t<ns2:all>\n" |
| 1055 | "\t\t\t\t\t<ns2:element name=\"summary\" type=\"xsd:string\"/>\n" |
| 1056 | "\t\t\t\t\t<ns2:element name=\"URL\" type=\"xsd:string\"/>\n" |
| 1057 | "\t\t\t\t\t<ns2:element name=\"snippet\" type=\"xsd:string\"/>\n" |
| 1058 | "\t\t\t\t\t<ns2:element name=\"title\" type=\"xsd:string\"/>\n" |
| 1059 | "\t\t\t\t\t<ns2:element name=\"cachedSize\" type=\"xsd:string\"/>\n" |
| 1060 | "\t\t\t\t\t<ns2:element name=\"relatedInformationPresent\" type=\"xsd:boolean\"/>\n" |
| 1061 | "\t\t\t\t\t<ns2:element name=\"hostName\" type=\"xsd:string\"/>\n" |
| 1062 | "\t\t\t\t\t<ns2:element name=\"directoryCategory\" type=\"typens:DirectoryCategory\"/>\n" |
| 1063 | "\t\t\t\t\t<ns2:element name=\"directoryTitle\" type=\"xsd:string\"/>\n" |
| 1064 | "\t\t\t\t</ns2:all>\n" |
| 1065 | "\t\t\t</ns2:complexType>\n" |
| 1066 | "\t\t\t<ns2:complexType name=\"ResultElementArray\">\n" |
| 1067 | "\t\t\t\t<ns2:complexContent>\n" |
| 1068 | "\t\t\t\t\t<ns2:restriction base=\"soapenc:Array\">\n" |
| 1069 | "\t\t\t\t\t\t<ns2:attribute ns1:arrayType=\"typens:ResultElement[]\" ref=\"soapenc:arrayType\"/>\n" |
| 1070 | "\t\t\t\t\t</ns2:restriction>\n" |
| 1071 | "\t\t\t\t</ns2:complexContent>\n" |
| 1072 | "\t\t\t</ns2:complexType>\n" |
| 1073 | "\t\t\t<ns2:complexType name=\"DirectoryCategoryArray\">\n" |
| 1074 | "\t\t\t\t<ns2:complexContent>\n" |
| 1075 | "\t\t\t\t\t<ns2:restriction base=\"soapenc:Array\">\n" |
| 1076 | "\t\t\t\t\t\t<ns2:attribute ns1:arrayType=\"typens:DirectoryCategory[]\" ref=\"soapenc:arrayType\"/>\n" |
| 1077 | "\t\t\t\t\t</ns2:restriction>\n" |
| 1078 | "\t\t\t\t</ns2:complexContent>\n" |
| 1079 | "\t\t\t</ns2:complexType>\n" |
| 1080 | "\t\t\t<ns2:complexType name=\"DirectoryCategory\">\n" |
| 1081 | "\t\t\t\t<ns2:all>\n" |
| 1082 | "\t\t\t\t\t<ns2:element name=\"fullViewableName\" type=\"xsd:string\"/>\n" |
| 1083 | "\t\t\t\t\t<ns2:element name=\"specialEncoding\" type=\"xsd:string\"/>\n" |
| 1084 | "\t\t\t\t</ns2:all>\n" |
| 1085 | "\t\t\t</ns2:complexType>\n" |
| 1086 | "\t\t</ns2:schema>\n" |
| 1087 | "\t</ns1:types>\n" |
| 1088 | "\t<!-- Messages for Google Web APIs - cached page, search, spelling. -->\n" |
| 1089 | "\t<ns1:message name=\"doGetCachedPage\">\n" |
| 1090 | "\t\t<ns1:part name=\"key\" type=\"xsd:string\"/>\n" |
| 1091 | "\t\t<ns1:part name=\"url\" type=\"xsd:string\"/>\n" |
| 1092 | "\t</ns1:message>\n" |
| 1093 | "\t<ns1:message name=\"doGetCachedPageResponse\">\n" |
| 1094 | "\t\t<ns1:part name=\"return\" type=\"xsd:base64Binary\"/>\n" |
| 1095 | "\t</ns1:message>\n" |
| 1096 | "\t<ns1:message name=\"doSpellingSuggestion\">\n" |
| 1097 | "\t\t<ns1:part name=\"key\" type=\"xsd:string\"/>\n" |
| 1098 | "\t\t<ns1:part name=\"phrase\" type=\"xsd:string\"/>\n" |
| 1099 | "\t</ns1:message>\n" |
| 1100 | "\t<ns1:message name=\"doSpellingSuggestionResponse\">\n" |
| 1101 | "\t\t<ns1:part name=\"return\" type=\"xsd:string\"/>\n" |
| 1102 | "\t</ns1:message>\n" |
| 1103 | "\t<!-- note, ie and oe are ignored by server; all traffic is UTF-8. -->\n" |
| 1104 | "\t<ns1:message name=\"doGoogleSearch\">\n" |
| 1105 | "\t\t<ns1:part name=\"key\" type=\"xsd:string\"/>\n" |
| 1106 | "\t\t<ns1:part name=\"q\" type=\"xsd:string\"/>\n" |
| 1107 | "\t\t<ns1:part name=\"start\" type=\"xsd:int\"/>\n" |
| 1108 | "\t\t<ns1:part name=\"maxResults\" type=\"xsd:int\"/>\n" |
| 1109 | "\t\t<ns1:part name=\"filter\" type=\"xsd:boolean\"/>\n" |
| 1110 | "\t\t<ns1:part name=\"restrict\" type=\"xsd:string\"/>\n" |
| 1111 | "\t\t<ns1:part name=\"safeSearch\" type=\"xsd:boolean\"/>\n" |
| 1112 | "\t\t<ns1:part name=\"lr\" type=\"xsd:string\"/>\n" |
| 1113 | "\t\t<ns1:part name=\"ie\" type=\"xsd:string\"/>\n" |
| 1114 | "\t\t<ns1:part name=\"oe\" type=\"xsd:string\"/>\n" |
| 1115 | "\t</ns1:message>\n" |
| 1116 | "\t<ns1:message name=\"doGoogleSearchResponse\">\n" |
| 1117 | "\t\t<ns1:part name=\"return\" type=\"typens:GoogleSearchResult\"/>\n" |
| 1118 | "\t</ns1:message>\n" |
| 1119 | "\t<!-- Port for Google Web APIs, \"GoogleSearch\" -->\n" |
| 1120 | "\t<ns1:portType name=\"GoogleSearchPort\">\n" |
| 1121 | "\t\t<ns1:operation name=\"doGetCachedPage\">\n" |
| 1122 | "\t\t\t<ns1:input message=\"typens:doGetCachedPage\"/>\n" |
| 1123 | "\t\t\t<ns1:output message=\"typens:doGetCachedPageResponse\"/>\n" |
| 1124 | "\t\t</ns1:operation>\n" |
| 1125 | "\t\t<ns1:operation name=\"doSpellingSuggestion\">\n" |
| 1126 | "\t\t\t<ns1:input message=\"typens:doSpellingSuggestion\"/>\n" |
| 1127 | "\t\t\t<ns1:output message=\"typens:doSpellingSuggestionResponse\"/>\n" |
| 1128 | "\t\t</ns1:operation>\n" |
| 1129 | "\t\t<ns1:operation name=\"doGoogleSearch\">\n" |
| 1130 | "\t\t\t<ns1:input message=\"typens:doGoogleSearch\"/>\n" |
| 1131 | "\t\t\t<ns1:output message=\"typens:doGoogleSearchResponse\"/>\n" |
| 1132 | "\t\t</ns1:operation>\n" |
| 1133 | "\t</ns1:portType>\n" |
| 1134 | "\t<!-- Binding for Google Web APIs - RPC, SOAP over HTTP -->\n" |
| 1135 | "\t<ns1:binding name=\"GoogleSearchBinding\" type=\"typens:GoogleSearchPort\">\n" |
| 1136 | "\t\t<ns3:binding style=\"rpc\" transport=\"http://schemas.xmlsoap.org/soap/http\" xmlns:ns3=\"http://schemas.xmlsoap.org/wsdl/soap/\"/>\n" |
| 1137 | "\t\t<ns1:operation name=\"doGetCachedPage\" xmlns:ns3=\"http://schemas.xmlsoap.org/wsdl/soap/\">\n" |
| 1138 | "\t\t\t<ns3:operation soapAction=\"urn:GoogleSearchAction\"/>\n" |
| 1139 | "\t\t\t<ns1:input>\n" |
| 1140 | "\t\t\t\t<ns3:body encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" namespace=\"urn:GoogleSearch\" use=\"encoded\"/>\n" |
| 1141 | "\t\t\t</ns1:input>\n" |
| 1142 | "\t\t\t<ns1:output>\n" |
| 1143 | "\t\t\t\t<ns3:body encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" namespace=\"urn:GoogleSearch\" use=\"encoded\"/>\n" |
| 1144 | "\t\t\t</ns1:output>\n" |
| 1145 | "\t\t</ns1:operation>\n" |
| 1146 | "\t\t<ns1:operation name=\"doSpellingSuggestion\" xmlns:ns3=\"http://schemas.xmlsoap.org/wsdl/soap/\">\n" |
| 1147 | "\t\t\t<ns3:operation soapAction=\"urn:GoogleSearchAction\"/>\n" |
| 1148 | "\t\t\t<ns1:input>\n" |
| 1149 | "\t\t\t\t<ns3:body encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" namespace=\"urn:GoogleSearch\" use=\"encoded\"/>\n" |
| 1150 | "\t\t\t</ns1:input>\n" |
| 1151 | "\t\t\t<ns1:output>\n" |
| 1152 | "\t\t\t\t<ns3:body encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" namespace=\"urn:GoogleSearch\" use=\"encoded\"/>\n" |
| 1153 | "\t\t\t</ns1:output>\n" |
| 1154 | "\t\t</ns1:operation>\n" |
| 1155 | "\t\t<ns1:operation name=\"doGoogleSearch\" xmlns:ns3=\"http://schemas.xmlsoap.org/wsdl/soap/\">\n" |
| 1156 | "\t\t\t<ns3:operation soapAction=\"urn:GoogleSearchAction\"/>\n" |
| 1157 | "\t\t\t<ns1:input>\n" |
| 1158 | "\t\t\t\t<ns3:body encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" namespace=\"urn:GoogleSearch\" use=\"encoded\"/>\n" |
| 1159 | "\t\t\t</ns1:input>\n" |
| 1160 | "\t\t\t<ns1:output>\n" |
| 1161 | "\t\t\t\t<ns3:body encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" namespace=\"urn:GoogleSearch\" use=\"encoded\"/>\n" |
| 1162 | "\t\t\t</ns1:output>\n" |
| 1163 | "\t\t</ns1:operation>\n" |
| 1164 | "\t</ns1:binding>\n" |
| 1165 | "\t<!-- Endpoint for Google Web APIs -->\n" |
| 1166 | "\t<ns1:service name=\"GoogleSearchService\">\n" |
| 1167 | "\t\t<ns1:port binding=\"typens:GoogleSearchBinding\" name=\"GoogleSearchPort\">\n" |
| 1168 | "\t\t\t<ns4:address location=\"http://api.google.com/search/beta2\" xmlns:ns4=\"http://schemas.xmlsoap.org/wsdl/soap/\"/>\n" |
| 1169 | "\t\t</ns1:port>\n" |
| 1170 | "\t</ns1:service>\n" |
| 1171 | "</ns1:definitions>\n" ; |
| 1172 | |