diff options
author | Mike Hommey <glandium@debian.org> | 2005-09-05 17:10:35 +0000 |
---|---|---|
committer | Mike Hommey <glandium@debian.org> | 2005-09-05 17:10:35 +0000 |
commit | a464d9993e2acd5b8e1089b218ba74c6fcf215c5 (patch) | |
tree | 72fe00eb59147367a1d660b90d08172357e0dffc | |
parent | 112cb5bb5475afec1c1cbf1d6728ce4880d0fee8 (diff) | |
download | libxml2-a464d9993e2acd5b8e1089b218ba74c6fcf215c5.tar.gz |
Load /usr/tmp/tmp.CMoFff/libxml2-2.6.21 intoupstream/2.6.21
packages/libxml2/branches/upstream/current.
453 files changed, 13784 insertions, 2149 deletions
@@ -1,3 +1,616 @@ +Sun Sep 4 23:36:45 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * NEWS elfgcchack.h testapi.c doc/*: updated the docs and rebuild + releasing 2.6.21 + * include/libxml/threads.h threads.c: removed xmlIsThreadsEnabled() + * threads.c include/libxml/threads.h xmllint.c: added the more + generic xmlHasFeature() as suggested by Bjorn Reese, xmllint uses it. + +Sun Sep 4 22:45:49 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * configure.in doc/* configure.in: prepare for release + * xpath.c: work for #303289, fix a formatting bug for MIN_INT + +Sun Sep 4 15:48:57 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: real fix for #314881 and #314759 is was a bit more complex + than initially expected as ctxt->error == NULL had behaviour side + effects at the compilation level itself. + +Sun Sep 4 14:01:00 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * pattern.c xpath.c include/libxml/pattern.h: fixing yet another + pattern induced XPath bug #314282 + * relaxng.c: reverted back last change it was seriously broken + +Sat Sep 3 16:51:55 CEST 2005 Rob Richards <rrichards@ctindustries.net> + + * xmlsave.c: check for NULL to prevent crash with meta elements + +Sat Sep 3 16:26:55 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: structured error reporting problem with Relax-NG + should fix #314881 and #314759 + +Sat Sep 3 15:42:29 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * pattern.c: fixes a portability problem raised by C370 on Z/OS + +Sat Sep 3 15:26:31 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * SAX2.c tree.c valid.c: fixing a number of issues raised by xml:id + but more generally related to attributes and ID handling, fixes + #314358 among other things + +Fri Sep 2 14:26:43 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * encoding.c parserInternals.c: avoid passing a char[] as snprintf + first argument. + * threads.c include/libxml/threads.h: implemented xmlIsThreadsEnabled() + based on Andrew W. Nosenko idea. + * doc/* elfgcchack.h: regenerated the API + +Thu Sep 1 14:44:42 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * configure.in: the use of AM_PATH_PYTHON is not portable enough + reverting back to AM_PATH_PROG + +Thu Sep 1 11:42:39 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: Applied the last patch from Gary Coady for #304637 + changing the behaviour when text nodes are found in body + * result/HTML/*: this changes the output of some tests + +Thu Sep 1 11:22:37 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * doc/downloads.html doc/xml.html: adding reference to Bull AIX rpms + c.f. #160598 + +Wed Aug 31 11:39:02 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xml2-config.in: removed the obsolete --libtool-libs option, c.f. + bug #314853 + +Fri Aug 26 17:33:26 CEST 2005 Rob Richards <rrichards@ctindustries.net> + + * xmlsave.c: move handling of meta element for http-equiv in XHTML docs + to serialization and no longer modify internal tree. + +Fri Aug 26 00:51:58 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * libxml.spec.in: the profiling usually don't work, disabled + * doc/*: rebuilt + +Thu Aug 25 23:47:55 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * configure.in: trying to fix the first part of #310033 by + detecting gcc <= 3.2 + +Thu Aug 25 22:13:37 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * error.c: fixed bug #310033, the URI extraction code given a + node is a bit twisted and broke in the last months. + +Thu Aug 25 16:18:15 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * debugXML.c result/XPath/xptr/strrange2: uninitialized field and + fix on test. + +Thu Aug 25 16:03:05 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * debugXML.c: change verbosity depending on API + * result/XPath/tests/* result/XPath/xptr/* result/xmlid/*: get back + to previous outputs + +Thu Aug 25 15:14:56 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c parser.c SAX2.c debugXML.c tree.c valid.c xmlreader.c + xmllint.c include/libxml/HTMLparser.h include/libxml/parser.h: + added a parser XML_PARSE_COMPACT option to allocate small + text nodes (less than 8 bytes on 32bits, less than 16bytes on 64bits) + directly within the node, various changes to cope with this. + * result/XPath/tests/* result/XPath/xptr/* result/xmlid/*: this + slightly change the output + +Thu Aug 25 12:16:26 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * configure.in: patch from Andrew W. Nosenko, use se $GCC = 'yes' + instead of $CC = 'gcc' because GCC may have a different name + +Thu Aug 25 00:18:20 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * configure.in: changes the way the python binary is found, should + also fix bug #308004 + +Wed Aug 24 16:44:41 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * parser.c: found another bug while looking at #309616 on missing + entities. + * result/ent2.sax* result/ent7.sax* result/xml2.sax*: this changed the + SAX stream in missing conditions for a few tests + +Wed Aug 24 16:19:00 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * encoding.c: applied the patch suggested #309565 which can avoid + looping in error conditions. + +Wed Aug 24 16:04:17 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * SAX2.c tree.c: line numbers are now carried by most nodes, fixing + xmlGetLineNo() c.f. bug #309205 + +Wed Aug 24 14:43:34 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * encoding.c error.c include/libxml/xmlerror.h: finally converted + the encoding module to the common error reporting mechanism + * doc/* doc/html/libxml-xmlerror.html: rebuilt + +Wed Aug 24 11:35:26 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xpath.c: removed a potentially uninitialized variable error + * python/generator.py: fixed a deprecation warning + * python/tests/tstLastError.py: silent the damn test when Okay ! + +Wed Aug 24 00:11:16 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * SAX2.c globals.c runtest.c testC14N.c testapi.c tree.c + include/libxml/SAX2.h include/libxml/xmlregexp.h: fixed compilation + when configured --without-sax1 and other cleanups fixes bug #172683 + * doc/* elfgcchack.h: regenerated + +Tue Aug 23 20:05:05 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * parser.c: fixed bug #170489 reported by Jirka Kosek + * test/valid/objednavka.xml test/valid/dtds/objednavka.dtd + result/valid/objednavka*: added the test to the regression suite. + +Tue Aug 23 18:04:08 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c include/libxml/HTMLparser.h: added a recovery mode + for the HTML parser based on the suggestions of bug #169834 by + Paul Loberg + +Tue Aug 23 15:38:46 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * elfgcchack.h testapi.c doc/*: regenerated + * schematron.c: fixed a compilation problem + * xmlregexp.c include/libxml/xmlregexp.h: some cleanups and one bug fix + * result/expr/base: slightly changes the number of Cons. + +Mon Aug 22 23:19:50 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * elfgcchack.h testapi.c doc/*: rescanned code and rebuilt + * xmlregexp.c: small cleanup + * include/libxml/schematron.h include/libxml/xmlexports.h + include/libxml/xmlversion.h.in: cleanup problems from code scanner + +Mon Aug 22 18:00:18 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlschemastypes.c: applied patch from Kuba Nowakowski fixing bug + #313982 + * result/schemas/bug313982* test/schemas/bug313982*: also added + the test case to the regression suite. + +Mon Aug 22 17:50:20 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * testRegexp.c: printed the wrong string + +Mon Aug 22 16:42:07 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * testRegexp.c xmlregexp.c include/libxml/xmlregexp.h: exported + xmlExpExpDerive(), added it to the testRegexp command line + tool when providing multiple expressions. + +Mon Aug 22 14:57:13 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * Makefile.am result/expr/base test/expr/base: added the first + regression test suite set for the new expression support + +Mon Aug 22 13:49:18 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * valid.c: fixed an uninitialized variable + * xmlregexp.c include/libxml/xmlregexp.h: extended the API to + add the parser, serializer and some debugging + * include/libxml/xmlversion.h.in: made the new support compiled + by default if Schemas is included + * testRegexp.c: cleanup and integration of the first part of the + new code with a special switch + * xmllint.c: show up Expr in --version if compiled in + * include/libxml/tree.h: moved the xmlBuffer definition up + +Mon Aug 22 12:11:10 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Some preparation for the creation of a graph + of imported/included/redefined schemas; this is needed for + at least the redefinitions. + Centralized the creation of the parser context in one function. + +Mon Aug 22 02:19:33 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlregexp.c include/libxml/xmlregexp.h: pushing the formal expression + handling code to have it in CVs from now. Not plugged, and misses + APIs it's not compiled in yet. + +Sat Aug 20 23:13:27 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c: applied another patch from Rob Richards to fix + xmlTextReaderGetAttributeNs and xmlTextReaderMoveToAttributeNs + +Wed Aug 17 09:06:33 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c: applied patch from Rob Richards to fix + xmlTextReaderGetAttribute behaviour with namespace declarations + +Fri Aug 12 14:12:56 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c include/libxml/xmlerror.h: + Changed output for keyref-match errors; the target-node will + be now reported rather than the scope-node of the keyref + definition - allowing easier chasing of instance errors. + This was reported by Guy Fabrice to the mailing list. + Some initial parsing code for schema redefinitions. + * result/schemas/bug303566_1_1.err + result/schemas/bug312957_1_0.err: Adapted test results due + to the keyref changes. + +Fri Aug 12 12:17:52 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * valid.c: applied patch from Derek Poon fixing bug #310692 + +Wed Aug 10 23:39:02 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c: fix for bug #312945 as pointed by Dean Hill, the + context type was not always properly initialized. + +Wed Aug 10 18:21:41 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: fixed bug #307377 about validation of choices in + list values. + * test/relaxng/307377* result/relaxng/307377* Makefile.am runtest.c: + added examples to the regression tests, problem is that streaming + version gives slightly more informations. + +Wed Aug 10 15:25:53 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xinclude.c: fixed bug #302302, nasty but the fix is rather simple. + +Wed Aug 10 11:59:46 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * result/schemas/any6_1_0*: Added missing test results. + +Tue Aug 9 23:37:22 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlregexp.c: fixed a determinism detection problem exposed by + ##other tests commited by Kasimier, also added a small speedup + of determinism detection. + * test/results/any6_2_0* any8_1_0* any7_1_2* any7_2_2*: added + the results to the regression tests now + +Tue Aug 9 15:54:09 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * test/schemas/any7_2.xml test/schemas/any6_2.xsd + test/schemas/any8_1.xsd test/schemas/any8_0.xml: + Added some more tests for element wildcards. + +Tue Aug 9 14:22:47 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Fixed #312957 reported by Carol Hunter: + streaming XPath states were not popped in every case, + thus failed to resolve correctly for subsequent input. + * test/schemas/bug312957* result/schemas/bug312957*: + Added the test submitted by Carol Hunter. + +Tue Aug 9 13:07:27 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlregexp.c xmlschemas.c: trying to nail down the remaining + ##other issues + * result/schemas/any7* test/schemas/any7: completed the tests + and added the results + * result/schemas/any3_0_0.err result/schemas/any5_0_0.err + result/schemas/any5_1_0.err: this slightly chnages the output + from 3 existing tests + +Mon Aug 8 22:33:08 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * nanoftp.c nanohttp.c xmlschemastypes.c: applied patch from + Marcus Boerger to remove warnings on Windows. + +Mon Aug 8 16:43:04 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlsave.c include/libxml/xmlsave.h: fixed #145092 by adding + an xmlSaveOption to omit XML declaration + +Mon Aug 8 15:44:54 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * HTMLtree.c: fixed bug #310333 with a patch close to the provided + patch for HTML UTF-8 serialization + * result/HTML/script2.html: this changed the output of that test + +Mon Aug 8 15:01:51 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlregexp.c: fixed bug #310264, basically it's about reentrancy + of count based transition, when going though the counter must + be reset to 0 + * test/schemas/bug310264* result/schemas/bug310264*: added the + regression test. + +Mon Aug 8 14:40:52 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Fixed a memory leak: xmlSchemaFreeAnnot() was + only freeing the first annotation in the list. + +Mon Aug 8 09:44:34 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c: applied patch from Rob Richards fixing + xmlTextReaderGetAttribute + +Mon Aug 8 01:41:53 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: fixed an uninitialized memory access spotted by + valgrind + +Sun Aug 7 12:39:35 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * test/relaxng/docbook_0.xml: get rid of the dependancy on a locally + installed DTD + * uri.c include/libxml/uri.h xmlIO.c nanoftp.c nanohttp.c: try to + cleanup the Path/URI conversion mess, needed fixing in various + layers and a new API to the uri module which also fixes #306861 + * runtest.c: integrated a regression test specific to check the + URI conversions done before calling the I/O handlers. + +Sat Aug 6 11:06:24 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * doc/XSLT.html doc/xml.html: small doc fix for #312647 + +Tue Aug 2 13:26:42 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * win32/configure.js: applied patch from Rob Richards to allow + disabling modules in win32, fixes #304071 + +Mon Aug 1 07:18:53 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * python/libxml.c: applied fix from Jakub Piotr Clapa for + xmlAttr.parent(), closing #312181 + +Sun Jul 31 18:48:55 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * schematron.c: report improvement + * test/schematron/zvon* result/schematron/zvon*: more tests + +Sun Jul 31 16:02:59 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * win32/Makefile.msvc win32/configure.js: applied patch from Rob + Richards to add schematron to the build on Windows + * test/schematron/zvon3* result/schematron/zvon3*: second test + * test/schematron/zvon10* result/schematron/zvon10*: this is the + real second test 10 and 2 are swapped. + +Sun Jul 31 15:42:31 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * schematron.c: more bug fixes, improve the error reporting. + * test/schematron/zvon2* result/schematron/zvon2*: second test + +Sun Jul 31 14:15:31 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * schematron.c xmllint.c: fixing the loop bug, fixing schematron + text error rendering + * Makefile.am result/schematron/* test/schematron/zvon1*.sct: + started integrating within "make tests" + +Sat Jul 30 17:26:58 EDT 2005 Daniel Veillard <daniel@veillard.com> + + * test/schematron/*: a few first tests from Zvon unfortunately + with the old syntax + +Sat Jul 30 17:08:07 EDT 2005 Daniel Veillard <daniel@veillard.com> + + * schematron.c xmllint.c include/libxml/schematron.h: commiting + work done on the plane last week-end + +Sat Jul 30 15:16:29 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * runtest.c: allows an extra argument to subset the tests + * xmlregexp.c: big speedup for validation, basically avoided + transition creation explosion when removing epsilon transition + +Sat Jul 30 00:00:46 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * Makefile.am globals.c parserInternals.c xmlreader.c xmlunicode.c + xmlwriter.c: more cleanups based on sparse reports, added + "make sparse" + +Fri Jul 29 12:11:25 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * python/libxml.c: don't output any message on failed resolver lookups, + better done by the python user provided resolver layer. + +Fri Jul 29 01:48:02 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c SAX2.c encoding.c globals.c parser.c relaxng.c + runsuite.c runtest.c schematron.c testHTML.c testReader.c + testRegexp.c testSAX.c testThreads.c valid.c xinclude.c xmlIO.c + xmllint.c xmlmodule.c xmlschemas.c xpath.c xpointer.c: a lot of + small cleanups based on Linus' sparse check output. + +Thu Jul 28 21:28:33 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * include/libxml/Makefile.am: added schematron.h, oops ... + +Thu Jul 28 02:38:21 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemastypes.c: Added creation of the content type of + xs:anyType. This is needed when trying to extend xs:anyType + (although it makes no sense to extend it; IMHO the schema + people should have ruled this out). This was reported + by Yong Chen to the mailing list. + * xmlschemas.c: Fixed handling of xs:anyType in + xmlSchemaCheckCOSCTExtends() (reported by Young Chen). Tiny + adjustment to an error report output. + * test/schemas/extension2* result/schemas/extension2*: + Added a test case provided by Young Chen. + +Mon Jul 25 11:41:18 PDT 2005 William Brack <wbrack@mmm.com.hk> + + * uri.c: enhanced xmlBuildRelativeURI to allow the URI and the + base to be in "relative" form + +Sun Jul 24 10:25:41 EDT 2005 Daniel Veillard <daniel@veillard.com> + + * schematron.c xmllint.c: started adding schematron to the xmllint + tool, the report infrastructure is gonna be fun. + +Sat Jul 23 23:23:51 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * test/schemas/any6* test/schemas/any7*: Added regression tests + (they fail currently), but did not added results yet. + +Sat Jul 23 23:07:05 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Removed the workaround code in + xmlSchemaValidateElemWildcard() for the <any> wildcard + with namespace == ##other. Support for such wildcards was + implemented by Daniel at the automaton level recently, and + the workaround code iterfered with it. + +Sat Jul 23 10:55:50 EDT 2005 Daniel Veillard <daniel@veillard.com> + + * pattern.c include/libxml/pattern.h: changed xmlPatterncompile + signature to pass an int and not an enum since it can generate + ABI compat troubles. + * include/libxml/schematron.h schematron.c: adding the new + schematron code, work in progress lots to be left and needing + testing + * include/libxml/xmlversion.h.in include/libxml/xmlwin32version.h.in + Makefile.am configure.in: integration of schematron into the + build + * xpath.c include/libxml/xpath.h: adding flags to control compilation + options right now just XML_XPATH_CHECKNS. + +Sat Jul 23 16:39:35 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Removed an "internal error" message from + xmlSchemaBuildAContentModel() when an empty model group + definition is hit. + +Sat Jul 23 00:34:07 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * pattern.c: Changed xmlCompileStepPattern() and + xmlCompileAttributeTest() to handle the "xml" prefix without + caring if the XML namespace was supplied by the user. + +Fri Jul 22 00:08:43 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Fixed xmlSchemaPSimpleTypeErr(), which did not + output the given string arguments correctly. + +Thu Jul 21 09:21:00 EDT 2005 Daniel Veillard <daniel@veillard.com> + + * error.c globals.c parser.c runtest.c testHTML.c testSAX.c + threads.c valid.c xmllint.c xmlreader.c xmlschemas.c xmlstring.c + xmlwriter.c include/libxml/parser.h include/libxml/relaxng.h + include/libxml/valid.h include/libxml/xmlIO.h + include/libxml/xmlerror.h include/libxml/xmlexports.h + include/libxml/xmlschemas.h: applied a patch from Marcus Boerger + to fix problems with calling conventions on Windows this should + fix #309757 + +Wed Jul 20 14:45:39 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * parser.c: an optimization of the char data inner loop, + can gain up to 10% in pure SAX2 parsing speed + * xmlschemas.c: applied patch from Kupriyanov Anatolij fixing + a bug in XML Schemas facet comparison #310893 + +Tue Jul 19 17:27:26 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlregexp.c xmlschemas.c: fixed the error reporting for + not transitions + * result/schemas/any5_0_0* result/schemas/any5_0_2* + result/schemas/any5_1_0*: fixed output + +Tue Jul 19 15:34:12 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlregexp.c xmlschemas.c include/libxml/xmlautomata.h: fixing + bug #172215 about foreign namespaces by adding support for + negated string transitions. Error messages still need to be + improved. + * test/schemas/any5* result/schemas/any5*: adding regression + tests for this. + +Tue Jul 19 12:33:31 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * tree.c: applied patch from Alexander Pohoyda fixing xmlGetNodePath + on namespaced attributes #310417. + +Mon Jul 18 23:01:15 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * doc/xmllint.1 doc/xmllint.html doc/xmllint.xml: --nonet was + ducplicated + +Mon Jul 18 20:49:28 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c: fixed xsd:all when used in conjunction with + substitution groups + * test/schemas/allsg_* result/schemas/allsg_*: adding specific + regression tests, strangely missing from NIST/Sun/Microsoft + testsuites + +Sun Jul 17 07:11:27 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c: fixed bug #307508, a bad automata was built but + this showed as an indeterminist result + +Thu Jul 14 17:53:02 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlschemastypes.c: found the last bug raised by NIST tests in + comparing base64 strings, result from runsuite: + ## NIST test suite for Schemas version NIST2004-01-14 + Ran 23170 tests (3953 schemata), no errors + +Thu Jul 14 14:57:36 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * testRegexp.c: fixed where xmlMemoryDump() should be called. + * xmlregexp.c: fixed handling of {0}, \n, \r and \t, two bugs + affecting NIST regression tests + +Thu Jul 14 11:30:24 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * configure.in: applied a patch from Gerrit P. Haase to add + module support on cygwin + +Thu Jul 14 10:56:42 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: fixed a potential buffer overrun error introduced + on last commit to htmlParseScript() c.f. #310229 + +Thu Jul 14 23:48:17 PDT 2005 William Brack <wbrack@mmm.com.hk> + + * xpath.c: Changed the behaviour of xmlXPathEqualNodeSetFloat to + return TRUE if a nodeset with a numeric value of NaN is compared + for inequality with any numeric value (bug 309914). + +Thu Jul 14 01:03:03 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * error.c relaxng.c xmlreader.c xmlschemas.c include/libxml/relaxng.h + include/libxml/xmlschemas.h: applied patch from Marcus Boerger + to route relaxng and schemas error messages when using the reader + through the structured interface if activated. + * elfgcchack.h doc/* testapi.c: rebuilt since this add new APIs + to test. + +Wed Jul 13 18:35:47 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: applied UTF-8 script parsing bug #310229 fix from + Jiri Netolicky + * result/HTML/script2.html* test/HTML/script2.html: added the test + case from the regression suite + +Tue Jul 12 17:08:11 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * nanohttp.c: fixed bug #310105 with http_proxy environments with + patch provided by Peter Breitenlohner + Mon Jul 11 00:28:10 CEST 2005 Daniel Veillard <daniel@veillard.com> * Makefile.am NEWS configure.in doc/*: preparing release 2.6.20 diff --git a/HTMLparser.c b/HTMLparser.c index c6115d0..d11ae08 100644 --- a/HTMLparser.c +++ b/HTMLparser.c @@ -192,16 +192,16 @@ htmlnamePop(htmlParserCtxtPtr ctxt) const xmlChar *ret; if (ctxt->nameNr <= 0) - return (0); + return (NULL); ctxt->nameNr--; if (ctxt->nameNr < 0) - return (0); + return (NULL); if (ctxt->nameNr > 0) ctxt->name = ctxt->nameTab[ctxt->nameNr - 1]; else ctxt->name = NULL; ret = ctxt->nameTab[ctxt->nameNr]; - ctxt->nameTab[ctxt->nameNr] = 0; + ctxt->nameTab[ctxt->nameNr] = NULL; return (ret); } @@ -964,7 +964,6 @@ NULL static const char *htmlNoContentElements[] = { "html", "head", - "body", NULL }; @@ -2042,6 +2041,7 @@ static int areBlanks(htmlParserCtxtPtr ctxt, const xmlChar *str, int len) { unsigned int i; int j; xmlNodePtr lastChild; + xmlDtdPtr dtd; for (j = 0;j < len;j++) if (!(IS_BLANK_CH(str[j]))) return(0); @@ -2054,8 +2054,17 @@ static int areBlanks(htmlParserCtxtPtr ctxt, const xmlChar *str, int len) { return(1); if (xmlStrEqual(ctxt->name, BAD_CAST"head")) return(1); - if (xmlStrEqual(ctxt->name, BAD_CAST"body")) - return(1); + + /* Only strip CDATA children of the body tag for strict HTML DTDs */ + if (xmlStrEqual(ctxt->name, BAD_CAST "body") && ctxt->myDoc != NULL) { + dtd = xmlGetIntSubset(ctxt->myDoc); + if (dtd != NULL && dtd->ExternalID != NULL) { + if (!xmlStrcasecmp(dtd->ExternalID, BAD_CAST "-//W3C//DTD HTML 4.01//EN") || + !xmlStrcasecmp(dtd->ExternalID, BAD_CAST "-//W3C//DTD HTML 4//EN")) + return(1); + } + } + if (ctxt->node == NULL) return(0); lastChild = xmlGetLastChild(ctxt->node); while ((lastChild) && (lastChild->type == XML_COMMENT_NODE)) @@ -2627,12 +2636,12 @@ htmlParsePubidLiteral(htmlParserCtxtPtr ctxt) { */ static void htmlParseScript(htmlParserCtxtPtr ctxt) { - xmlChar buf[HTML_PARSER_BIG_BUFFER_SIZE + 1]; + xmlChar buf[HTML_PARSER_BIG_BUFFER_SIZE + 5]; int nbchar = 0; - xmlChar cur; + int cur,l; SHRINK; - cur = CUR; + cur = CUR_CHAR(l); while (IS_CHAR_CH(cur)) { if ((cur == '<') && (NXT(1) == '!') && (NXT(2) == '-') && (NXT(3) == '-')) { @@ -2648,20 +2657,39 @@ htmlParseScript(htmlParserCtxtPtr ctxt) { } nbchar = 0; htmlParseComment(ctxt); - cur = CUR; + cur = CUR_CHAR(l); continue; } else if ((cur == '<') && (NXT(1) == '/')) { - /* - * One should break here, the specification is clear: - * Authors should therefore escape "</" within the content. - * Escape mechanisms are specific to each scripting or - * style sheet language. - */ - if (((NXT(2) >= 'A') && (NXT(2) <= 'Z')) || - ((NXT(2) >= 'a') && (NXT(2) <= 'z'))) - break; /* while */ + /* + * One should break here, the specification is clear: + * Authors should therefore escape "</" within the content. + * Escape mechanisms are specific to each scripting or + * style sheet language. + * + * In recovery mode, only break if end tag match the + * current tag, effectively ignoring all tags inside the + * script/style block and treating the entire block as + * CDATA. + */ + if (ctxt->recovery) { + if (xmlStrncasecmp(ctxt->name, ctxt->input->cur+2, + xmlStrlen(ctxt->name)) == 0) + { + break; /* while */ + } else { + htmlParseErr(ctxt, XML_ERR_TAG_NAME_MISMATCH, + "Element %s embbeds close tag\n", + ctxt->name, NULL); + } + } else { + if (((NXT(2) >= 'A') && (NXT(2) <= 'Z')) || + ((NXT(2) >= 'a') && (NXT(2) <= 'z'))) + { + break; /* while */ + } + } } - buf[nbchar++] = cur; + COPY_BUF(l,buf,nbchar,cur); if (nbchar >= HTML_PARSER_BIG_BUFFER_SIZE) { if (ctxt->sax->cdataBlock!= NULL) { /* @@ -2673,9 +2701,10 @@ htmlParseScript(htmlParserCtxtPtr ctxt) { } nbchar = 0; } - NEXT; - cur = CUR; + NEXTL(l); + cur = CUR_CHAR(l); } + if (!(IS_CHAR_CH(cur))) { htmlParseErrInt(ctxt, XML_ERR_INVALID_CHAR, "Invalid char in CDATA 0x%X\n", cur); @@ -2743,6 +2772,8 @@ htmlParseCharData(htmlParserCtxtPtr ctxt) { } } if (nbchar != 0) { + buf[nbchar] = 0; + /* * Ok the segment is to be consumed as chars. */ @@ -3578,6 +3609,15 @@ htmlParseEndTag(htmlParserCtxtPtr ctxt) if ((!IS_CHAR_CH(CUR)) || (CUR != '>')) { htmlParseErr(ctxt, XML_ERR_GT_REQUIRED, "End tag : expected '>'\n", NULL, NULL); + if (ctxt->recovery) { + /* + * We're not at the ending > !! + * Error, unless in recover mode where we search forwards + * until we find a > + */ + while (CUR != '\0' && CUR != '>') NEXT; + NEXT; + } } else NEXT; @@ -5176,10 +5216,18 @@ htmlParseChunk(htmlParserCtxtPtr ctxt, const char *chunk, int size, (ctxt->input->buf != NULL) && (ctxt->instate != XML_PARSER_EOF)) { int base = ctxt->input->base - ctxt->input->buf->buffer->content; int cur = ctxt->input->cur - ctxt->input->base; + int res; - xmlParserInputBufferPush(ctxt->input->buf, size, chunk); + res = xmlParserInputBufferPush(ctxt->input->buf, size, chunk); + if (res < 0) { + ctxt->errNo = XML_PARSER_EOF; + ctxt->disableSAX = 1; + return (XML_PARSER_EOF); + } ctxt->input->base = ctxt->input->buf->buffer->content + base; ctxt->input->cur = ctxt->input->base + cur; + ctxt->input->end = + &ctxt->input->buf->buffer->content[ctxt->input->buf->buffer->use]; #ifdef DEBUG_PUSH xmlGenericError(xmlGenericErrorContext, "HPP: pushed %d\n", size); #endif @@ -5777,6 +5825,14 @@ htmlCtxtUseOptions(htmlParserCtxtPtr ctxt, int options) ctxt->options |= XML_PARSE_NOBLANKS; } else ctxt->keepBlanks = 1; + if (options & HTML_PARSE_RECOVER) { + ctxt->recovery = 1; + } else + ctxt->recovery = 0; + if (options & HTML_PARSE_COMPACT) { + ctxt->options |= HTML_PARSE_COMPACT; + options -= HTML_PARSE_COMPACT; + } ctxt->dictNames = 0; return (options); } @@ -552,6 +552,8 @@ htmlDocDumpMemory(xmlDocPtr cur, xmlChar**mem, int *size) { *size = 0; return; } + } else { + handler = xmlFindCharEncodingHandler(encoding); } } @@ -1026,6 +1028,8 @@ htmlDocDump(FILE *f, xmlDocPtr cur) { handler = xmlFindCharEncodingHandler(encoding); if (handler == NULL) return(-1); + } else { + handler = xmlFindCharEncodingHandler(encoding); } } diff --git a/Makefile.am b/Makefile.am index 69dba11..ee09a7b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -27,7 +27,8 @@ libxml2_la_SOURCES = SAX.c entities.c encoding.c error.c parserInternals.c \ catalog.c globals.c threads.c c14n.c xmlstring.c \ xmlregexp.c xmlschemas.c xmlschemastypes.c xmlunicode.c \ triostr.c trio.c xmlreader.c relaxng.c dict.c SAX2.c \ - xmlwriter.c legacy.c chvalid.c pattern.c xmlsave.c xmlmodule.c + xmlwriter.c legacy.c chvalid.c pattern.c xmlsave.c \ + xmlmodule.c schematron.c else libxml2_la_SOURCES = SAX.c entities.c encoding.c error.c parserInternals.c \ parser.c tree.c hash.c list.c xmlIO.c xmlmemory.c uri.c \ @@ -37,7 +38,7 @@ libxml2_la_SOURCES = SAX.c entities.c encoding.c error.c parserInternals.c \ xmlregexp.c xmlschemas.c xmlschemastypes.c xmlunicode.c \ xmlreader.c relaxng.c dict.c SAX2.c \ xmlwriter.c legacy.c chvalid.c pattern.c xmlsave.c \ - xmlmodule.c + xmlmodule.c schematron.c endif DEPS = $(top_builddir)/libxml2.la @@ -158,7 +159,7 @@ check-local: all tests testall : tests SVGtests SAXtests -tests: XMLtests XMLenttests NStests IDtests Errtests APItests @READER_TEST@ @TEST_SAX@ @TEST_PUSH@ @TEST_HTML@ @TEST_PHTML@ @TEST_VALID@ URItests @TEST_PATTERN@ @TEST_XPATH@ @TEST_XPTR@ @TEST_XINCLUDE@ @TEST_C14N@ @TEST_DEBUG@ @TEST_CATALOG@ @TEST_REGEXPS@ @TEST_SCHEMAS@ @TEST_THREADS@ Timingtests @TEST_VTIME@ @PYTHON_TESTS@ @TEST_MODULES@ +tests: XMLtests XMLenttests NStests IDtests Errtests APItests @READER_TEST@ @TEST_SAX@ @TEST_PUSH@ @TEST_HTML@ @TEST_PHTML@ @TEST_VALID@ URItests @TEST_PATTERN@ @TEST_XPATH@ @TEST_XPTR@ @TEST_XINCLUDE@ @TEST_C14N@ @TEST_DEBUG@ @TEST_CATALOG@ @TEST_REGEXPS@ @TEST_SCHEMAS@ @TEST_SCHEMATRON@ @TEST_THREADS@ Timingtests @TEST_VTIME@ @PYTHON_TESTS@ @TEST_MODULES@ @(if [ "@PYTHON_SUBDIR@" != "" ] ; then cd python ; \ $(MAKE) MAKEFLAGS+=--silent tests ; fi) @(cd doc/examples ; $(MAKE) MAKEFLAGS+=--silent tests) @@ -821,6 +822,21 @@ Regexptests: testRegexp$(EXEEXT) if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ rm result.$$name ; \ fi ; fi ; done) + @echo "## Formal expresssions regression tests" + -@(for i in $(srcdir)/test/expr/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/expr/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/testRegexp --expr -i $$i > $(srcdir)/result/expr/$$name; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/testRegexp --expr -i $$i 2>&1 > result.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/expr/$$name result.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name ; \ + fi ; fi ; done) Automatatests: testAutomata$(EXEEXT) @(echo > .memdump) @@ -997,7 +1013,7 @@ Relaxtests: xmllint$(EXEEXT) > res.$$name 2> err.$$name;\ grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ diff $(srcdir)/result/relaxng/"$$name"_"$$xno" res.$$name;\ - if [ "$$name" != "tutor10_1" -a "$$name" != "tutor10_2" -a "$$name" != "tutor3_2" ] ; then \ + if [ "$$name" != "tutor10_1" -a "$$name" != "tutor10_2" -a "$$name" != "tutor3_2" -a "$$name" != "307377" ] ; then \ diff $(srcdir)/result/relaxng/"$$name"_"$$xno".err \ err.$$name | grep -v "error detected at";\ fi ; grep Unimplemented err.$$name`; \ @@ -1006,6 +1022,35 @@ Relaxtests: xmllint$(EXEEXT) fi ; fi ; \ done; done) +Schematrontests: xmllint$(EXEEXT) + @(echo > .memdump) + @echo "## Schematron regression tests" + -@(for i in $(srcdir)/test/schematron/*.sct ; do \ + name=`basename $$i | sed 's+\.sct++'`; \ + for j in $(srcdir)/test/schematron/"$$name"_*.xml ; do \ + if [ -f $$j ] ; then \ + xno=`basename $$j | sed 's+.*_\(.*\).xml+\1+'`; \ + if [ ! -f $(srcdir)/result/schematron/"$$name"_"$$xno" ]; \ + then \ + echo New test file "$$name"_"$$xno" ; \ + $(CHECKER) $(top_builddir)/xmllint$(EXEEXT) --schematron $$i $$j \ + > $(srcdir)/result/schematron/"$$name"_"$$xno" \ + 2> $(srcdir)/result/schematron/"$$name"_"$$xno".err; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint$(EXEEXT) --schematron $$i $$j \ + > res.$$name 2> err.$$name;\ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/schematron/"$$name"_"$$xno" \ + res.$$name;\ + diff $(srcdir)/result/schematron/"$$name"_"$$xno".err \ + err.$$name | grep -v "error detected at";\ + grep Unimplemented err.$$name`; \ + if [ -n "$$log" ] ; then echo "$$name"_"$$xno" result ; echo $$log ; fi ; \ + rm res.$$name err.$$name ; \ + fi ; fi ; \ + done; done) + RelaxNGPythonTests: @(if [ -x $(PYTHON) ] ; then \ PYTHONPATH=$(top_builddir)/python:$(top_builddir)/python/.libs:$$PYTHONPATH ; \ @@ -1134,3 +1179,6 @@ install-data-local: tst: tst.c $(CC) $(CFLAGS) -Iinclude -o tst tst.c .libs/libxml2.a -lpthread -lm -lz + +sparse: clean + $(MAKE) CC=cgcc diff --git a/Makefile.in b/Makefile.in index 5c831ad..3e66d17 100644 --- a/Makefile.in +++ b/Makefile.in @@ -88,7 +88,8 @@ am__libxml2_la_SOURCES_DIST = SAX.c entities.c encoding.c error.c \ DOCBparser.c catalog.c globals.c threads.c c14n.c xmlstring.c \ xmlregexp.c xmlschemas.c xmlschemastypes.c xmlunicode.c \ xmlreader.c relaxng.c dict.c SAX2.c xmlwriter.c legacy.c \ - chvalid.c pattern.c xmlsave.c xmlmodule.c triostr.c trio.c + chvalid.c pattern.c xmlsave.c xmlmodule.c schematron.c \ + triostr.c trio.c @WITH_TRIO_SOURCES_FALSE@am_libxml2_la_OBJECTS = SAX.lo entities.lo \ @WITH_TRIO_SOURCES_FALSE@ encoding.lo error.lo \ @WITH_TRIO_SOURCES_FALSE@ parserInternals.lo parser.lo tree.lo \ @@ -103,7 +104,7 @@ am__libxml2_la_SOURCES_DIST = SAX.c entities.c encoding.c error.c \ @WITH_TRIO_SOURCES_FALSE@ xmlunicode.lo xmlreader.lo relaxng.lo \ @WITH_TRIO_SOURCES_FALSE@ dict.lo SAX2.lo xmlwriter.lo \ @WITH_TRIO_SOURCES_FALSE@ legacy.lo chvalid.lo pattern.lo \ -@WITH_TRIO_SOURCES_FALSE@ xmlsave.lo xmlmodule.lo +@WITH_TRIO_SOURCES_FALSE@ xmlsave.lo xmlmodule.lo schematron.lo @WITH_TRIO_SOURCES_TRUE@am_libxml2_la_OBJECTS = SAX.lo entities.lo \ @WITH_TRIO_SOURCES_TRUE@ encoding.lo error.lo \ @WITH_TRIO_SOURCES_TRUE@ parserInternals.lo parser.lo tree.lo \ @@ -119,7 +120,7 @@ am__libxml2_la_SOURCES_DIST = SAX.c entities.c encoding.c error.c \ @WITH_TRIO_SOURCES_TRUE@ xmlreader.lo relaxng.lo dict.lo \ @WITH_TRIO_SOURCES_TRUE@ SAX2.lo xmlwriter.lo legacy.lo \ @WITH_TRIO_SOURCES_TRUE@ chvalid.lo pattern.lo xmlsave.lo \ -@WITH_TRIO_SOURCES_TRUE@ xmlmodule.lo +@WITH_TRIO_SOURCES_TRUE@ xmlmodule.lo schematron.lo libxml2_la_OBJECTS = $(am_libxml2_la_OBJECTS) testdso_la_LIBADD = am_testdso_la_OBJECTS = testdso.lo @@ -319,6 +320,7 @@ TEST_PUSH = @TEST_PUSH@ TEST_REGEXPS = @TEST_REGEXPS@ TEST_SAX = @TEST_SAX@ TEST_SCHEMAS = @TEST_SCHEMAS@ +TEST_SCHEMATRON = @TEST_SCHEMATRON@ TEST_THREADS = @TEST_THREADS@ TEST_VALID = @TEST_VALID@ TEST_VTIME = @TEST_VTIME@ @@ -354,6 +356,7 @@ WITH_REGEXPS = @WITH_REGEXPS@ WITH_RUN_DEBUG = @WITH_RUN_DEBUG@ WITH_SAX1 = @WITH_SAX1@ WITH_SCHEMAS = @WITH_SCHEMAS@ +WITH_SCHEMATRON = @WITH_SCHEMATRON@ WITH_THREADS = @WITH_THREADS@ WITH_TREE = @WITH_TREE@ WITH_TRIO = @WITH_TRIO@ @@ -438,7 +441,7 @@ libxml2_la_LDFLAGS = @CYGWIN_EXTRA_LDFLAGS@ @WIN32_EXTRA_LDFLAGS@ -version-info @WITH_TRIO_SOURCES_FALSE@ xmlregexp.c xmlschemas.c xmlschemastypes.c xmlunicode.c \ @WITH_TRIO_SOURCES_FALSE@ xmlreader.c relaxng.c dict.c SAX2.c \ @WITH_TRIO_SOURCES_FALSE@ xmlwriter.c legacy.c chvalid.c pattern.c xmlsave.c \ -@WITH_TRIO_SOURCES_FALSE@ xmlmodule.c +@WITH_TRIO_SOURCES_FALSE@ xmlmodule.c schematron.c @WITH_TRIO_SOURCES_TRUE@libxml2_la_SOURCES = SAX.c entities.c encoding.c error.c parserInternals.c \ @WITH_TRIO_SOURCES_TRUE@ parser.c tree.c hash.c list.c xmlIO.c xmlmemory.c uri.c \ @@ -447,7 +450,8 @@ libxml2_la_LDFLAGS = @CYGWIN_EXTRA_LDFLAGS@ @WIN32_EXTRA_LDFLAGS@ -version-info @WITH_TRIO_SOURCES_TRUE@ catalog.c globals.c threads.c c14n.c xmlstring.c \ @WITH_TRIO_SOURCES_TRUE@ xmlregexp.c xmlschemas.c xmlschemastypes.c xmlunicode.c \ @WITH_TRIO_SOURCES_TRUE@ triostr.c trio.c xmlreader.c relaxng.c dict.c SAX2.c \ -@WITH_TRIO_SOURCES_TRUE@ xmlwriter.c legacy.c chvalid.c pattern.c xmlsave.c xmlmodule.c +@WITH_TRIO_SOURCES_TRUE@ xmlwriter.c legacy.c chvalid.c pattern.c xmlsave.c \ +@WITH_TRIO_SOURCES_TRUE@ xmlmodule.c schematron.c DEPS = $(top_builddir)/libxml2.la LDADDS = @STATIC_BINARIES@ $(top_builddir)/libxml2.la @THREAD_LIBS@ @Z_LIBS@ $(ICONV_LIBS) @M_LIBS@ @WIN32_EXTRA_LIBADD@ @@ -791,6 +795,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/relaxng.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/runsuite.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/runtest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/schematron.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testAutomata.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testC14N.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testHTML.Po@am__quote@ @@ -1412,7 +1417,7 @@ check-local: all tests testall : tests SVGtests SAXtests -tests: XMLtests XMLenttests NStests IDtests Errtests APItests @READER_TEST@ @TEST_SAX@ @TEST_PUSH@ @TEST_HTML@ @TEST_PHTML@ @TEST_VALID@ URItests @TEST_PATTERN@ @TEST_XPATH@ @TEST_XPTR@ @TEST_XINCLUDE@ @TEST_C14N@ @TEST_DEBUG@ @TEST_CATALOG@ @TEST_REGEXPS@ @TEST_SCHEMAS@ @TEST_THREADS@ Timingtests @TEST_VTIME@ @PYTHON_TESTS@ @TEST_MODULES@ +tests: XMLtests XMLenttests NStests IDtests Errtests APItests @READER_TEST@ @TEST_SAX@ @TEST_PUSH@ @TEST_HTML@ @TEST_PHTML@ @TEST_VALID@ URItests @TEST_PATTERN@ @TEST_XPATH@ @TEST_XPTR@ @TEST_XINCLUDE@ @TEST_C14N@ @TEST_DEBUG@ @TEST_CATALOG@ @TEST_REGEXPS@ @TEST_SCHEMAS@ @TEST_SCHEMATRON@ @TEST_THREADS@ Timingtests @TEST_VTIME@ @PYTHON_TESTS@ @TEST_MODULES@ @(if [ "@PYTHON_SUBDIR@" != "" ] ; then cd python ; \ $(MAKE) MAKEFLAGS+=--silent tests ; fi) @(cd doc/examples ; $(MAKE) MAKEFLAGS+=--silent tests) @@ -2075,6 +2080,21 @@ Regexptests: testRegexp$(EXEEXT) if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ rm result.$$name ; \ fi ; fi ; done) + @echo "## Formal expresssions regression tests" + -@(for i in $(srcdir)/test/expr/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/expr/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/testRegexp --expr -i $$i > $(srcdir)/result/expr/$$name; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/testRegexp --expr -i $$i 2>&1 > result.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/expr/$$name result.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name ; \ + fi ; fi ; done) Automatatests: testAutomata$(EXEEXT) @(echo > .memdump) @@ -2251,7 +2271,7 @@ Relaxtests: xmllint$(EXEEXT) > res.$$name 2> err.$$name;\ grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ diff $(srcdir)/result/relaxng/"$$name"_"$$xno" res.$$name;\ - if [ "$$name" != "tutor10_1" -a "$$name" != "tutor10_2" -a "$$name" != "tutor3_2" ] ; then \ + if [ "$$name" != "tutor10_1" -a "$$name" != "tutor10_2" -a "$$name" != "tutor3_2" -a "$$name" != "307377" ] ; then \ diff $(srcdir)/result/relaxng/"$$name"_"$$xno".err \ err.$$name | grep -v "error detected at";\ fi ; grep Unimplemented err.$$name`; \ @@ -2260,6 +2280,35 @@ Relaxtests: xmllint$(EXEEXT) fi ; fi ; \ done; done) +Schematrontests: xmllint$(EXEEXT) + @(echo > .memdump) + @echo "## Schematron regression tests" + -@(for i in $(srcdir)/test/schematron/*.sct ; do \ + name=`basename $$i | sed 's+\.sct++'`; \ + for j in $(srcdir)/test/schematron/"$$name"_*.xml ; do \ + if [ -f $$j ] ; then \ + xno=`basename $$j | sed 's+.*_\(.*\).xml+\1+'`; \ + if [ ! -f $(srcdir)/result/schematron/"$$name"_"$$xno" ]; \ + then \ + echo New test file "$$name"_"$$xno" ; \ + $(CHECKER) $(top_builddir)/xmllint$(EXEEXT) --schematron $$i $$j \ + > $(srcdir)/result/schematron/"$$name"_"$$xno" \ + 2> $(srcdir)/result/schematron/"$$name"_"$$xno".err; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint$(EXEEXT) --schematron $$i $$j \ + > res.$$name 2> err.$$name;\ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/schematron/"$$name"_"$$xno" \ + res.$$name;\ + diff $(srcdir)/result/schematron/"$$name"_"$$xno".err \ + err.$$name | grep -v "error detected at";\ + grep Unimplemented err.$$name`; \ + if [ -n "$$log" ] ; then echo "$$name"_"$$xno" result ; echo $$log ; fi ; \ + rm res.$$name err.$$name ; \ + fi ; fi ; \ + done; done) + RelaxNGPythonTests: @(if [ -x $(PYTHON) ] ; then \ PYTHONPATH=$(top_builddir)/python:$(top_builddir)/python/.libs:$$PYTHONPATH ; \ @@ -2353,6 +2402,9 @@ install-data-local: tst: tst.c $(CC) $(CFLAGS) -Iinclude -o tst tst.c .libs/libxml2.a -lpthread -lm -lz + +sparse: clean + $(MAKE) CC=cgcc # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: @@ -15,6 +15,45 @@ ChangeLog.html to the CVS at http://cvs.gnome.org/viewcvs/libxml2/ code base.There is the list of public releases: +2.6.21: Sep 4 2005: + - build fixes: Cygwin portability fixes (Gerrit P. Haase), calling + convention problems on Windows (Marcus Boerger), cleanups based on + Linus' sparse tool, update of win32/configure.js (Rob Richards), + remove warnings on Windows(Marcus Boerger), compilation without SAX1, + detection of the Python binary, use $GCC inestad of $CC = 'gcc' (Andrew + W. Nosenko), compilation/link with threads and old gcc, compile + problem by C370 on Z/OS, + - bug fixes: http_proxy environments (Peter Breitenlohner), HTML UTF-8 + bug (Jiri Netolicky), XPath NaN compare bug (William Brack), + htmlParseScript potential bug, Schemas regexp handling of spaces, + Base64 Schemas comparisons NIST passes, automata build error xsd:all, + xmlGetNodePath for namespaced attributes (Alexander Pohoyda), + xmlSchemas foreign namespaces handling, XML Schemas facet comparison + (Kupriyanov Anatolij), xmlSchemaPSimpleTypeErr error report (Kasimier + Buchcik), xml: namespace ahndling in Schemas (Kasimier), empty model + group in Schemas (Kasimier), wilcard in Schemas (Kasimier), URI + composition (William), xs:anyType in Schemas (Kasimier), Python resolver + emmitting error messages directly, Python xmlAttr.parent (Jakub Piotr + Clapa), trying to fix the file path/URI conversion, + xmlTextReaderGetAttribute fix (Rob Richards), xmlSchemaFreeAnnot memleak + (Kasimier), HTML UTF-8 serialization, streaming XPath, Schemas determinism + detection problem, XInclude bug, Schemas context type (Dean Hill), + validation fix (Derek Poon), xmlTextReaderGetAttribute[Ns] namespaces + (Rob Richards), Schemas type fix (Kuba Nowakowski), UTF-8 parser bug, + error in encoding handling, xmlGetLineNo fixes, bug on entities handling, + entity name extraction in error handling with XInclude, text nodes + in HTML body tags (Gary Coady), xml:id and IDness at the treee level + fixes, XPath streaming patterns bugs. + - improvements: structured interfaces for schemas and RNG error reports + (Marcus Boerger), optimization of the char data inner loop parsing + (thanks to Behdad Esfahbod for the idea), schematron validation + though not finished yet, xmlSaveOption to omit XML declaration, + keyref match error reports (Kasimier), formal expression handling + code not plugged yet, more lax mode for the HTML parser, + parser XML_PARSE_COMPACT option for text nodes allocation. + - documentation: xmllint man page had --nonet duplicated + + 2.6.20: Jul 10 2005: - build fixes: Windows build (Rob Richards), Mingw compilation (Igor Zlatkovic), Windows Makefile (Igor), gcc warnings (Kasimier and @@ -227,7 +227,7 @@ const xmlChar * xmlSAX2GetSystemId(void *ctx) { xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; - if ((ctx == NULL) || (ctxt->input == NULL)) return(0); + if ((ctx == NULL) || (ctxt->input == NULL)) return(NULL); return((const xmlChar *) ctxt->input->filename); } @@ -1022,7 +1022,7 @@ xmlSAX2EndDocument(void *ctx) } } -#if defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) +#if defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED) /** * xmlSAX2AttributeInternal: * @ctx: the user data (XML parser context) @@ -1316,11 +1316,7 @@ xmlSAX2AttributeInternal(void *ctx, const xmlChar *fullname, * when validating, the ID registration is done at the attribute * validation level. Otherwise we have to do specific handling here. */ - if (xmlIsID(ctxt->myDoc, ctxt->node, ret)) - xmlAddID(&ctxt->vctxt, ctxt->myDoc, value, ret); - else if (xmlIsRef(ctxt->myDoc, ctxt->node, ret)) - xmlAddRef(&ctxt->vctxt, ctxt->myDoc, value, ret); - else if (xmlStrEqual(fullname, BAD_CAST "xml:id")) { + if (xmlStrEqual(fullname, BAD_CAST "xml:id")) { /* * Add the xml:id value * @@ -1332,7 +1328,10 @@ xmlSAX2AttributeInternal(void *ctx, const xmlChar *fullname, (const char *) value, NULL); } xmlAddID(&ctxt->vctxt, ctxt->myDoc, value, ret); - } + } else if (xmlIsID(ctxt->myDoc, ctxt->node, ret)) + xmlAddID(&ctxt->vctxt, ctxt->myDoc, value, ret); + else if (xmlIsRef(ctxt->myDoc, ctxt->node, ret)) + xmlAddRef(&ctxt->vctxt, ctxt->myDoc, value, ret); } error: @@ -1777,6 +1776,7 @@ xmlSAX2TextNode(xmlParserCtxtPtr ctxt, const xmlChar *str, int len) { xmlErrMemory(ctxt, "xmlSAX2Characters"); return(NULL); } + memset(ret, 0, sizeof(xmlNode)); /* * intern the formatting blanks found between tags, or the * very short strings @@ -1784,7 +1784,14 @@ xmlSAX2TextNode(xmlParserCtxtPtr ctxt, const xmlChar *str, int len) { if (ctxt->dictNames) { xmlChar cur = str[len]; - if ((len <= 3) && ((cur == '"') || (cur == '\'') || + if ((len < (int) (2 * sizeof(void *))) && + (ctxt->options & XML_PARSE_COMPACT)) { + /* store the string in the node overrithing properties and nsDef */ + xmlChar *tmp = (xmlChar *) &(ret->properties); + memcpy(tmp, str, len); + tmp[len] = 0; + intern = tmp; + } else if ((len <= 3) && ((cur == '"') || (cur == '\'') || ((cur == '<') && (str[len + 1] != '!')))) { intern = xmlDictLookup(ctxt->dict, str, len); } else if (IS_BLANK_CH(*str) && (len < 60) && (cur == '<') && @@ -1798,7 +1805,6 @@ xmlSAX2TextNode(xmlParserCtxtPtr ctxt, const xmlChar *str, int len) { } } skip: - memset(ret, 0, sizeof(xmlNode)); ret->type = XML_TEXT_NODE; ret->name = xmlStringText; @@ -2040,16 +2046,7 @@ xmlSAX2AttributeNs(xmlParserCtxtPtr ctxt, * when validating, the ID registration is done at the attribute * validation level. Otherwise we have to do specific handling here. */ - if (xmlIsID(ctxt->myDoc, ctxt->node, ret)) { - /* might be worth duplicate entry points and not copy */ - if (dup == NULL) - dup = xmlStrndup(value, valueend - value); - xmlAddID(&ctxt->vctxt, ctxt->myDoc, dup, ret); - } else if (xmlIsRef(ctxt->myDoc, ctxt->node, ret)) { - if (dup == NULL) - dup = xmlStrndup(value, valueend - value); - xmlAddRef(&ctxt->vctxt, ctxt->myDoc, dup, ret); - } else if ((prefix == ctxt->str_xml) && + if ((prefix == ctxt->str_xml) && (localname[0] == 'i') && (localname[1] == 'd') && (localname[2] == 0)) { /* @@ -2067,6 +2064,15 @@ xmlSAX2AttributeNs(xmlParserCtxtPtr ctxt, } #endif xmlAddID(&ctxt->vctxt, ctxt->myDoc, dup, ret); + } else if (xmlIsID(ctxt->myDoc, ctxt->node, ret)) { + /* might be worth duplicate entry points and not copy */ + if (dup == NULL) + dup = xmlStrndup(value, valueend - value); + xmlAddID(&ctxt->vctxt, ctxt->myDoc, dup, ret); + } else if (xmlIsRef(ctxt->myDoc, ctxt->node, ret)) { + if (dup == NULL) + dup = xmlStrndup(value, valueend - value); + xmlAddRef(&ctxt->vctxt, ctxt->myDoc, dup, ret); } } if (dup != NULL) @@ -2407,8 +2413,11 @@ xmlSAX2Characters(void *ctx, const xmlChar *ch, int len) * We try to minimaze realloc() uses and avoid copying * and recomputing length over and over. */ - if ((ctxt->nodemem == ctxt->nodelen + 1) && - (xmlDictOwns(ctxt->dict, lastChild->content))) { + if (lastChild->content == (xmlChar *)&(lastChild->properties)) { + lastChild->content = xmlStrdup(lastChild->content); + lastChild->properties = NULL; + } else if ((ctxt->nodemem == ctxt->nodelen + 1) && + (xmlDictOwns(ctxt->dict, lastChild->content))) { lastChild->content = xmlStrdup(lastChild->content); } if (ctxt->nodelen + len >= ctxt->nodemem) { @@ -2496,6 +2505,14 @@ xmlSAX2ProcessingInstruction(void *ctx, const xmlChar *target, if (ret == NULL) return; parent = ctxt->node; + if (ctxt->linenumbers) { + if (ctxt->input != NULL) { + if (ctxt->input->line < 65535) + ret->line = (short) ctxt->input->line; + else + ret->line = 65535; + } + } if (ctxt->inSubset == 1) { xmlAddChild((xmlNodePtr) ctxt->myDoc->intSubset, ret); return; @@ -2548,6 +2565,14 @@ xmlSAX2Comment(void *ctx, const xmlChar *value) #endif ret = xmlNewDocComment(ctxt->myDoc, value); if (ret == NULL) return; + if (ctxt->linenumbers) { + if (ctxt->input != NULL) { + if (ctxt->input->line < 65535) + ret->line = (short) ctxt->input->line; + else + ret->line = 65535; + } + } if (ctxt->inSubset == 1) { xmlAddChild((xmlNodePtr) ctxt->myDoc->intSubset, ret); @@ -463,7 +463,7 @@ ac_includes_default="\ # include <unistd.h> #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os LIBXML_MAJOR_VERSION LIBXML_MINOR_VERSION LIBXML_MICRO_VERSION LIBXML_VERSION LIBXML_VERSION_INFO LIBXML_VERSION_NUMBER LIBXML_VERSION_EXTRA INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP RM MV TAR PERL XMLLINT XSLTPROC EGREP U ANSI2KNR LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB DLLTOOL ac_ct_DLLTOOL AS ac_ct_AS OBJDUMP ac_ct_OBJDUMP CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL HTML_DIR Z_CFLAGS Z_LIBS PYTHON WITH_PYTHON_TRUE WITH_PYTHON_FALSE pythondir PYTHON_SUBDIR WITH_MODULES MODULE_PLATFORM_LIBS MODULE_EXTENSION TEST_MODULES STATIC_BINARIES WITH_TRIO_SOURCES_TRUE WITH_TRIO_SOURCES_FALSE WITH_TRIO THREAD_LIBS BASE_THREAD_LIBS WITH_THREADS THREAD_CFLAGS TEST_THREADS THREADS_W32 WITH_TREE WITH_FTP FTP_OBJ WITH_HTTP HTTP_OBJ WITH_LEGACY WITH_READER READER_TEST WITH_WRITER WITH_PATTERN TEST_PATTERN WITH_SAX1 TEST_SAX WITH_PUSH TEST_PUSH WITH_HTML HTML_OBJ TEST_HTML TEST_PHTML WITH_VALID TEST_VALID TEST_VTIME WITH_CATALOG CATALOG_OBJ TEST_CATALOG WITH_DOCB DOCB_OBJ WITH_XPTR XPTR_OBJ TEST_XPTR WITH_C14N C14N_OBJ TEST_C14N WITH_XINCLUDE XINCLUDE_OBJ TEST_XINCLUDE WITH_XPATH XPATH_OBJ TEST_XPATH WITH_OUTPUT WITH_ICONV WITH_ISO8859X WITH_SCHEMAS TEST_SCHEMAS WITH_REGEXPS TEST_REGEXPS WITH_DEBUG DEBUG_OBJ TEST_DEBUG WITH_MEM_DEBUG WITH_RUN_DEBUG WIN32_EXTRA_LIBADD WIN32_EXTRA_LDFLAGS CYGWIN_EXTRA_LDFLAGS CYGWIN_EXTRA_PYTHON_LIBADD XML_CFLAGS XML_LIBDIR XML_LIBS XML_LIBTOOLLIBS ICONV_LIBS XML_INCLUDEDIR HAVE_ISNAN HAVE_ISINF PYTHON_VERSION PYTHON_INCLUDES PYTHON_SITE_PACKAGES M_LIBS RDL_LIBS RELDATE PYTHON_TESTS LIBOBJS LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os LIBXML_MAJOR_VERSION LIBXML_MINOR_VERSION LIBXML_MICRO_VERSION LIBXML_VERSION LIBXML_VERSION_INFO LIBXML_VERSION_NUMBER LIBXML_VERSION_EXTRA INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP RM MV TAR PERL XMLLINT XSLTPROC EGREP U ANSI2KNR LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB DLLTOOL ac_ct_DLLTOOL AS ac_ct_AS OBJDUMP ac_ct_OBJDUMP CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL HTML_DIR Z_CFLAGS Z_LIBS PYTHON WITH_PYTHON_TRUE WITH_PYTHON_FALSE pythondir PYTHON_SUBDIR WITH_MODULES MODULE_PLATFORM_LIBS MODULE_EXTENSION TEST_MODULES STATIC_BINARIES WITH_TRIO_SOURCES_TRUE WITH_TRIO_SOURCES_FALSE WITH_TRIO THREAD_LIBS BASE_THREAD_LIBS WITH_THREADS THREAD_CFLAGS TEST_THREADS THREADS_W32 WITH_TREE WITH_FTP FTP_OBJ WITH_HTTP HTTP_OBJ WITH_LEGACY WITH_READER READER_TEST WITH_WRITER WITH_PATTERN TEST_PATTERN WITH_SAX1 TEST_SAX WITH_PUSH TEST_PUSH WITH_HTML HTML_OBJ TEST_HTML TEST_PHTML WITH_VALID TEST_VALID TEST_VTIME WITH_CATALOG CATALOG_OBJ TEST_CATALOG WITH_DOCB DOCB_OBJ WITH_XPTR XPTR_OBJ TEST_XPTR WITH_C14N C14N_OBJ TEST_C14N WITH_XINCLUDE XINCLUDE_OBJ TEST_XINCLUDE WITH_XPATH XPATH_OBJ TEST_XPATH WITH_OUTPUT WITH_ICONV WITH_ISO8859X WITH_SCHEMATRON TEST_SCHEMATRON WITH_SCHEMAS TEST_SCHEMAS WITH_REGEXPS TEST_REGEXPS WITH_DEBUG DEBUG_OBJ TEST_DEBUG WITH_MEM_DEBUG WITH_RUN_DEBUG WIN32_EXTRA_LIBADD WIN32_EXTRA_LDFLAGS CYGWIN_EXTRA_LDFLAGS CYGWIN_EXTRA_PYTHON_LIBADD XML_CFLAGS XML_LIBDIR XML_LIBS XML_LIBTOOLLIBS ICONV_LIBS XML_INCLUDEDIR HAVE_ISNAN HAVE_ISINF PYTHON_VERSION PYTHON_INCLUDES PYTHON_SITE_PACKAGES M_LIBS RDL_LIBS RELDATE PYTHON_TESTS LIBOBJS LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. @@ -1070,6 +1070,7 @@ Optional Packages: --with-run-debug add the runtime debugging module (off) --with-sax1 add the older SAX1 interface (on) --with-schemas add Relax-NG and Schemas support (on) + --with-schematron add Schematron support (on) --with-threads add multithread support(on) --with-thread-alloc add per-thread memory(off) --with-tree add the DOM like tree manipulation APIs (on) @@ -1617,7 +1618,7 @@ host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` LIBXML_MAJOR_VERSION=2 LIBXML_MINOR_VERSION=6 -LIBXML_MICRO_VERSION=20 +LIBXML_MICRO_VERSION=21 LIBXML_MICRO_VERSION_SUFFIX= LIBXML_VERSION=$LIBXML_MAJOR_VERSION.$LIBXML_MINOR_VERSION.$LIBXML_MICRO_VERSION$LIBXML_MICRO_VERSION_SUFFIX LIBXML_VERSION_INFO=`expr $LIBXML_MAJOR_VERSION + $LIBXML_MINOR_VERSION`:$LIBXML_MICRO_VERSION:$LIBXML_MINOR_VERSION @@ -4691,7 +4692,7 @@ ia64-*-hpux*) ;; *-*-irix6*) # Find out which ABI we are using. - echo '#line 4694 "configure"' > conftest.$ac_ext + echo '#line 4695 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -6032,7 +6033,7 @@ fi # Provide some information about the compiler. -echo "$as_me:6035:" \ +echo "$as_me:6036:" \ "checking for Fortran 77 compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5 @@ -7066,11 +7067,11 @@ else -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:7069: $lt_compile\"" >&5) + (eval echo "\"\$as_me:7070: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:7073: \$? = $ac_status" >&5 + echo "$as_me:7074: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings @@ -7299,11 +7300,11 @@ else -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:7302: $lt_compile\"" >&5) + (eval echo "\"\$as_me:7303: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:7306: \$? = $ac_status" >&5 + echo "$as_me:7307: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings @@ -7359,11 +7360,11 @@ else -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:7362: $lt_compile\"" >&5) + (eval echo "\"\$as_me:7363: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:7366: \$? = $ac_status" >&5 + echo "$as_me:7367: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -8693,7 +8694,7 @@ linux*) libsuff= case "$host_cpu" in x86_64*|s390x*|powerpc64*) - echo '#line 8696 "configure"' > conftest.$ac_ext + echo '#line 8697 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -9564,7 +9565,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<EOF -#line 9567 "configure" +#line 9568 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -9662,7 +9663,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<EOF -#line 9665 "configure" +#line 9666 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11841,11 +11842,11 @@ else -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:11844: $lt_compile\"" >&5) + (eval echo "\"\$as_me:11845: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:11848: \$? = $ac_status" >&5 + echo "$as_me:11849: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings @@ -11901,11 +11902,11 @@ else -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:11904: $lt_compile\"" >&5) + (eval echo "\"\$as_me:11905: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:11908: \$? = $ac_status" >&5 + echo "$as_me:11909: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -12412,7 +12413,7 @@ linux*) libsuff= case "$host_cpu" in x86_64*|s390x*|powerpc64*) - echo '#line 12415 "configure"' > conftest.$ac_ext + echo '#line 12416 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -13283,7 +13284,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<EOF -#line 13286 "configure" +#line 13287 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -13381,7 +13382,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<EOF -#line 13384 "configure" +#line 13385 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -14208,11 +14209,11 @@ else -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:14211: $lt_compile\"" >&5) + (eval echo "\"\$as_me:14212: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:14215: \$? = $ac_status" >&5 + echo "$as_me:14216: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings @@ -14268,11 +14269,11 @@ else -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:14271: $lt_compile\"" >&5) + (eval echo "\"\$as_me:14272: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:14275: \$? = $ac_status" >&5 + echo "$as_me:14276: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -15582,7 +15583,7 @@ linux*) libsuff= case "$host_cpu" in x86_64*|s390x*|powerpc64*) - echo '#line 15585 "configure"' > conftest.$ac_ext + echo '#line 15586 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -16323,11 +16324,11 @@ else -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:16326: $lt_compile\"" >&5) + (eval echo "\"\$as_me:16327: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:16330: \$? = $ac_status" >&5 + echo "$as_me:16331: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings @@ -16556,11 +16557,11 @@ else -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:16559: $lt_compile\"" >&5) + (eval echo "\"\$as_me:16560: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:16563: \$? = $ac_status" >&5 + echo "$as_me:16564: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings @@ -16616,11 +16617,11 @@ else -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:16619: $lt_compile\"" >&5) + (eval echo "\"\$as_me:16620: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:16623: \$? = $ac_status" >&5 + echo "$as_me:16624: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -17950,7 +17951,7 @@ linux*) libsuff= case "$host_cpu" in x86_64*|s390x*|powerpc64*) - echo '#line 17953 "configure"' > conftest.$ac_ext + echo '#line 17954 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -18821,7 +18822,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<EOF -#line 18824 "configure" +#line 18825 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -18919,7 +18920,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<EOF -#line 18922 "configure" +#line 18923 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -20109,6 +20110,12 @@ if test "${with_schemas+set}" = set; then fi; +# Check whether --with-schematron or --without-schematron was given. +if test "${with_schematron+set}" = set; then + withval="$with_schematron" + +fi; + # Check whether --with-threads or --without-threads was given. if test "${with_threads+set}" = set; then withval="$with_threads" @@ -20180,6 +20187,11 @@ then with_pattern=yes with_regexp=yes fi +if test "$with_schematron" = "yes" +then + with_pattern=yes + with_xpath=yes +fi if test "$with_reader" = "yes" then with_push=yes @@ -20284,6 +20296,10 @@ then then with_schemas=no fi + if test "$with_schematron" = "" + then + with_schematron=no + fi if test "$with_threads" = "" then with_threads=no @@ -26692,7 +26708,7 @@ fi echo "$as_me:$LINENO: checking for type of socket length (socklen_t)" >&5 echo $ECHO_N "checking for type of socket length (socklen_t)... $ECHO_C" >&6 cat > conftest.$ac_ext <<EOF -#line 26695 "configure" +#line 26711 "configure" #include "confdefs.h" #include <stddef.h> @@ -26703,7 +26719,7 @@ int main(void) { (void)getsockopt (1, 1, 1, NULL, (socklen_t *)NULL) ; return 0; } EOF -if { (eval echo configure:26706: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; _out=`eval $ac_compile 2>&1` && test "x$_out" = x; }; then +if { (eval echo configure:26722: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; _out=`eval $ac_compile 2>&1` && test "x$_out" = x; }; then rm -rf conftest* echo "$as_me:$LINENO: result: socklen_t *" >&5 @@ -26715,7 +26731,7 @@ else rm -rf conftest* cat > conftest.$ac_ext <<EOF -#line 26718 "configure" +#line 26734 "configure" #include "confdefs.h" #include <stddef.h> @@ -26726,7 +26742,7 @@ int main(void) { (void)getsockopt (1, 1, 1, NULL, (size_t *)NULL) ; return 0; } EOF -if { (eval echo configure:26729: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; _out=`eval $ac_compile 2>&1` && test "x$_out" = x; }; then +if { (eval echo configure:26745: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; _out=`eval $ac_compile 2>&1` && test "x$_out" = x; }; then rm -rf conftest* echo "$as_me:$LINENO: result: size_t *" >&5 @@ -26738,7 +26754,7 @@ else rm -rf conftest* cat > conftest.$ac_ext <<EOF -#line 26741 "configure" +#line 26757 "configure" #include "confdefs.h" #include <stddef.h> @@ -26749,7 +26765,7 @@ int main(void) { (void)getsockopt (1, 1, 1, NULL, (int *)NULL) ; return 0; } EOF -if { (eval echo configure:26752: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; _out=`eval $ac_compile 2>&1` && test "x$_out" = x; }; then +if { (eval echo configure:26768: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; _out=`eval $ac_compile 2>&1` && test "x$_out" = x; }; then rm -rf conftest* echo "$as_me:$LINENO: result: int *" >&5 @@ -27554,7 +27570,6 @@ esac -PYTHON= PYTHON_VERSION= PYTHON_INCLUDES= PYTHON_SITE_PACKAGES= @@ -27571,8 +27586,12 @@ if test "$with_python" != "no" ; then echo Found python in $with_python PYTHON="$with_python" else - # Extract the first word of "python python2.4 python2.3 python2.2 python2.1 python2.0 python1.6 python1.5", so it can be a program name with args. -set dummy python python2.4 python2.3 python2.2 python2.1 python2.0 python1.6 python1.5; ac_word=$2 + if test -x "$PYTHON" + then + echo Found python in environment PYTHON=$PYTHON + else + # Extract the first word of "python python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 python1.6 python1.5", so it can be a program name with args. +set dummy python python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 python1.6 python1.5; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_PYTHON+set}" = set; then @@ -27610,6 +27629,7 @@ else echo "${ECHO_T}no" >&6 fi + fi fi fi if test "$PYTHON" != "" @@ -27650,6 +27670,8 @@ fi else pythondir='$(libdir)/python${PYTHON_VERSION}/site-packages' fi +else + PYTHON= fi @@ -27671,11 +27693,92 @@ fi WITH_MODULES=0 -MODULE_EXTENSION=".so" TEST_MODULES= if test "$with_modules" != "no" ; then -echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 + case "$host" in + *-*-cygwin*) + MODULE_EXTENSION=".dll" + echo "$as_me:$LINENO: checking for dlopen in -lcygwin" >&5 +echo $ECHO_N "checking for dlopen in -lcygwin... $ECHO_C" >&6 +if test "${ac_cv_lib_cygwin_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lcygwin $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_cygwin_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_cygwin_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_cygwin_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_cygwin_dlopen" >&6 +if test $ac_cv_lib_cygwin_dlopen = yes; then + + WITH_MODULES=1 + MODULE_PLATFORM_LIBS= + +cat >>confdefs.h <<\_ACEOF +#define HAVE_DLOPEN +_ACEOF + + +fi + + ;; + *) + MODULE_EXTENSION=".so" + echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -27741,8 +27844,8 @@ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 if test $ac_cv_lib_dld_shl_load = yes; then - WITH_MODULES=1 - MODULE_PLATFORM_LIBS="-ldld" + WITH_MODULES=1 + MODULE_PLATFORM_LIBS="-ldld" cat >>confdefs.h <<\_ACEOF #define HAVE_SHLLOAD @@ -27752,7 +27855,7 @@ _ACEOF fi -echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -27818,8 +27921,8 @@ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then - WITH_MODULES=1 - MODULE_PLATFORM_LIBS="-ldl" + WITH_MODULES=1 + MODULE_PLATFORM_LIBS="-ldl" cat >>confdefs.h <<\_ACEOF #define HAVE_DLOPEN @@ -27828,6 +27931,8 @@ _ACEOF fi + ;; + esac fi if test "${WITH_MODULES}" = "1"; then @@ -27848,6 +27953,7 @@ if [ "${LOGNAME}" = "veillard" -a "`pwd`" = "/u/veillard/XML" ] || \ if test "$with_minimum" != "yes" then if test "${with_mem_debug}" = "" ; then + echo Activating memory debugging with_mem_debug="yes" with_run_debug="yes" fi @@ -27855,7 +27961,7 @@ if [ "${LOGNAME}" = "veillard" -a "`pwd`" = "/u/veillard/XML" ] || \ with_docbook="yes" fi fi - if test "${CC}" = "gcc" ; then + if test "${GCC}" = "yes" ; then CFLAGS="-g -O -pedantic -W -Wformat -Wunused -Wimplicit -Wreturn-type -Wswitch -Wcomment -Wtrigraphs -Wformat -Wchar-subscripts -Wuninitialized -Wparentheses -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Winline -Wredundant-decls -Wall" fi STATIC_BINARIES="-static" @@ -28129,9 +28235,25 @@ fi THREAD_CFLAGS="$THREAD_CFLAGS -DHAVE_BEOS_THREADS" ;; *linux*) - if test "${CC}" = "gcc" -a "${THREAD_LIBS}" = "-lpthread" ; then - THREAD_LIBS="" - BASE_THREAD_LIBS="-lpthread" + if test "${GCC}" = "yes" ; then + GCC_VERSION=`${CC} --version | head -1 | awk '{print $3}'` + GCC_MAJOR=`echo ${GCC_VERSION} | sed 's+\..*++'` + GCC_MEDIUM=`echo ${GCC_VERSION} | sed 's+[0-9]*\.++' | sed 's+\..*++'` + if test "${THREAD_LIBS}" = "-lpthread" ; then + if expr ${GCC_MEDIUM} \> 2 \& ${GCC_MAJOR} = 3 > /dev/null + then + THREAD_LIBS="" + BASE_THREAD_LIBS="-lpthread" + else + if expr ${GCC_MAJOR} \> 3 > /dev/null + then + THREAD_LIBS="" + BASE_THREAD_LIBS="-lpthread" + else + echo old GCC disabling weak symbols for pthread + fi + fi + fi fi ;; esac @@ -29202,6 +29324,20 @@ fi fi +if test "$with_schematron" = "no" ; then + echo "Disabling Schematron support" + WITH_SCHEMATRON=0 + TEST_SCHEMATRON= +else + echo "Enabled Schematron support" + WITH_SCHEMATRON=1 + TEST_SCHEMATRON="Schematrontests" + with_xpath=yes + with_pattern=yes +fi + + + if test "$with_schemas" = "no" ; then echo "Disabling Schemas/Relax-NG support" WITH_SCHEMAS=0 @@ -30153,6 +30289,8 @@ s,@TEST_XPATH@,$TEST_XPATH,;t t s,@WITH_OUTPUT@,$WITH_OUTPUT,;t t s,@WITH_ICONV@,$WITH_ICONV,;t t s,@WITH_ISO8859X@,$WITH_ISO8859X,;t t +s,@WITH_SCHEMATRON@,$WITH_SCHEMATRON,;t t +s,@TEST_SCHEMATRON@,$TEST_SCHEMATRON,;t t s,@WITH_SCHEMAS@,$WITH_SCHEMAS,;t t s,@TEST_SCHEMAS@,$TEST_SCHEMAS,;t t s,@WITH_REGEXPS@,$WITH_REGEXPS,;t t diff --git a/configure.in b/configure.in index 6777c94..ad902eb 100644 --- a/configure.in +++ b/configure.in @@ -5,7 +5,7 @@ AC_CANONICAL_HOST LIBXML_MAJOR_VERSION=2 LIBXML_MINOR_VERSION=6 -LIBXML_MICRO_VERSION=20 +LIBXML_MICRO_VERSION=21 LIBXML_MICRO_VERSION_SUFFIX= LIBXML_VERSION=$LIBXML_MAJOR_VERSION.$LIBXML_MINOR_VERSION.$LIBXML_MICRO_VERSION$LIBXML_MICRO_VERSION_SUFFIX LIBXML_VERSION_INFO=`expr $LIBXML_MAJOR_VERSION + $LIBXML_MINOR_VERSION`:$LIBXML_MICRO_VERSION:$LIBXML_MINOR_VERSION @@ -128,6 +128,8 @@ AC_ARG_WITH(sax1, [ --with-sax1 add the older SAX1 interface (on)]) AC_ARG_WITH(schemas, [ --with-schemas add Relax-NG and Schemas support (on)]) +AC_ARG_WITH(schematron, +[ --with-schematron add Schematron support (on)]) AC_ARG_WITH(threads, [ --with-threads add multithread support(on)]) AC_ARG_WITH(thread-alloc, @@ -163,6 +165,11 @@ then with_pattern=yes with_regexp=yes fi +if test "$with_schematron" = "yes" +then + with_pattern=yes + with_xpath=yes +fi if test "$with_reader" = "yes" then with_push=yes @@ -270,6 +277,10 @@ then then with_schemas=no fi + if test "$with_schematron" = "" + then + with_schematron=no + fi if test "$with_threads" = "" then with_threads=no @@ -602,7 +613,6 @@ dnl dnl check for python dnl -PYTHON= PYTHON_VERSION= PYTHON_INCLUDES= PYTHON_SITE_PACKAGES= @@ -619,7 +629,12 @@ if test "$with_python" != "no" ; then echo Found python in $with_python PYTHON="$with_python" else - AC_PATH_PROG(PYTHON, python python2.4 python2.3 python2.2 python2.1 python2.0 python1.6 python1.5) + if test -x "$PYTHON" + then + echo Found python in environment PYTHON=$PYTHON + else + AC_PATH_PROG(PYTHON, python python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 python1.6 python1.5) + fi fi fi if test "$PYTHON" != "" @@ -660,6 +675,8 @@ if test "$with_python" != "no" ; then else pythondir='$(libdir)/python${PYTHON_VERSION}/site-packages' fi +else + PYTHON= fi AM_CONDITIONAL(WITH_PYTHON, test "$PYTHON_INCLUDES" != "") if test "$PYTHON_INCLUDES" != "" @@ -673,21 +690,33 @@ AC_SUBST(PYTHON_SUBDIR) dnl check for dso support WITH_MODULES=0 -MODULE_EXTENSION=".so" TEST_MODULES= if test "$with_modules" != "no" ; then -AC_CHECK_LIB(dld, shl_load, [ - WITH_MODULES=1 - MODULE_PLATFORM_LIBS="-ldld" - AC_DEFINE([HAVE_SHLLOAD], [], [Have shl_load based dso]) -]) - -AC_CHECK_LIB(dl, dlopen, [ - WITH_MODULES=1 - MODULE_PLATFORM_LIBS="-ldl" - AC_DEFINE([HAVE_DLOPEN], [], [Have dlopen based dso]) -]) + case "$host" in + *-*-cygwin*) + MODULE_EXTENSION=".dll" + AC_CHECK_LIB(cygwin, dlopen, [ + WITH_MODULES=1 + MODULE_PLATFORM_LIBS= + AC_DEFINE([HAVE_DLOPEN], [], [Have dlopen based dso]) + ]) + ;; + *) + MODULE_EXTENSION=".so" + AC_CHECK_LIB(dld, shl_load, [ + WITH_MODULES=1 + MODULE_PLATFORM_LIBS="-ldld" + AC_DEFINE([HAVE_SHLLOAD], [], [Have shl_load based dso]) + ]) + + AC_CHECK_LIB(dl, dlopen, [ + WITH_MODULES=1 + MODULE_PLATFORM_LIBS="-ldl" + AC_DEFINE([HAVE_DLOPEN], [], [Have dlopen based dso]) + ]) + ;; + esac fi if test "${WITH_MODULES}" = "1"; then @@ -715,6 +744,7 @@ if [[ "${LOGNAME}" = "veillard" -a "`pwd`" = "/u/veillard/XML" ]] || \ if test "$with_minimum" != "yes" then if test "${with_mem_debug}" = "" ; then + echo Activating memory debugging with_mem_debug="yes" with_run_debug="yes" fi @@ -722,7 +752,7 @@ if [[ "${LOGNAME}" = "veillard" -a "`pwd`" = "/u/veillard/XML" ]] || \ with_docbook="yes" fi fi - if test "${CC}" = "gcc" ; then + if test "${GCC}" = "yes" ; then CFLAGS="-g -O -pedantic -W -Wformat -Wunused -Wimplicit -Wreturn-type -Wswitch -Wcomment -Wtrigraphs -Wformat -Wchar-subscripts -Wuninitialized -Wparentheses -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Winline -Wredundant-decls -Wall" fi STATIC_BINARIES="-static" @@ -782,9 +812,25 @@ else THREAD_CFLAGS="$THREAD_CFLAGS -DHAVE_BEOS_THREADS" ;; *linux*) - if test "${CC}" = "gcc" -a "${THREAD_LIBS}" = "-lpthread" ; then - THREAD_LIBS="" - BASE_THREAD_LIBS="-lpthread" + if test "${GCC}" = "yes" ; then + GCC_VERSION=`${CC} --version | head -1 | awk '{print $3}'` + GCC_MAJOR=`echo ${GCC_VERSION} | sed 's+\..*++'` + GCC_MEDIUM=`echo ${GCC_VERSION} | sed 's+[[0-9]]*\.++' | sed 's+\..*++'` + if test "${THREAD_LIBS}" = "-lpthread" ; then + if expr ${GCC_MEDIUM} \> 2 \& ${GCC_MAJOR} = 3 > /dev/null + then + THREAD_LIBS="" + BASE_THREAD_LIBS="-lpthread" + else + if expr ${GCC_MAJOR} \> 3 > /dev/null + then + THREAD_LIBS="" + BASE_THREAD_LIBS="-lpthread" + else + echo old GCC disabling weak symbols for pthread + fi + fi + fi fi ;; esac @@ -1140,6 +1186,20 @@ fi fi AC_SUBST(WITH_ISO8859X) +if test "$with_schematron" = "no" ; then + echo "Disabling Schematron support" + WITH_SCHEMATRON=0 + TEST_SCHEMATRON= +else + echo "Enabled Schematron support" + WITH_SCHEMATRON=1 + TEST_SCHEMATRON="Schematrontests" + with_xpath=yes + with_pattern=yes +fi +AC_SUBST(WITH_SCHEMATRON) +AC_SUBST(TEST_SCHEMATRON) + if test "$with_schemas" = "no" ; then echo "Disabling Schemas/Relax-NG support" WITH_SCHEMAS=0 @@ -34,6 +34,8 @@ #include <libxml/relaxng.h> #endif +#define DUMP_TEXT_TYPE 1 + typedef struct _xmlDebugCtxt xmlDebugCtxt; typedef xmlDebugCtxt *xmlDebugCtxtPtr; struct _xmlDebugCtxt { @@ -46,6 +48,7 @@ struct _xmlDebugCtxt { int check; /* do just checkings */ int errors; /* number of errors found */ int nodict; /* if the document has no dictionnary */ + int options; /* options */ }; static void xmlCtxtDumpNodeList(xmlDebugCtxtPtr ctxt, xmlNodePtr node); @@ -63,6 +66,7 @@ xmlCtxtDumpInitCtxt(xmlDebugCtxtPtr ctxt) ctxt->node = NULL; ctxt->dict = NULL; ctxt->nodict = 0; + ctxt->options = 0; for (i = 0; i < 100; i++) ctxt->shift[i] = ' '; ctxt->shift[100] = 0; @@ -902,9 +906,18 @@ xmlCtxtDumpOneNode(xmlDebugCtxtPtr ctxt, xmlNodePtr node) if (!ctxt->check) { xmlCtxtDumpSpaces(ctxt); if (node->name == (const xmlChar *) xmlStringTextNoenc) - fprintf(ctxt->output, "TEXT no enc\n"); + fprintf(ctxt->output, "TEXT no enc"); else - fprintf(ctxt->output, "TEXT\n"); + fprintf(ctxt->output, "TEXT"); + if (ctxt->options & DUMP_TEXT_TYPE) { + if (node->content == (xmlChar *) &(node->properties)) + fprintf(ctxt->output, " compact\n"); + else if (xmlDictOwns(ctxt->dict, node->content) == 1) + fprintf(ctxt->output, " interned\n"); + else + fprintf(ctxt->output, "\n"); + } else + fprintf(ctxt->output, "\n"); } break; case XML_CDATA_SECTION_NODE: @@ -1005,9 +1018,9 @@ xmlCtxtDumpOneNode(xmlDebugCtxtPtr ctxt, xmlNodePtr node) fprintf(ctxt->output, "PBM: doc == NULL !!!\n"); } ctxt->depth++; - if (node->nsDef != NULL) + if ((node->type == XML_ELEMENT_NODE) && (node->nsDef != NULL)) xmlCtxtDumpNamespaceList(ctxt, node->nsDef); - if (node->properties != NULL) + if ((node->type == XML_ELEMENT_NODE) && (node->properties != NULL)) xmlCtxtDumpAttrList(ctxt, node->properties); if (node->type != XML_ENTITY_REF_NODE) { if ((node->type != XML_ELEMENT_NODE) && (node->content != NULL)) { @@ -1489,6 +1502,7 @@ xmlDebugDumpDocumentHead(FILE * output, xmlDocPtr doc) if (output == NULL) output = stdout; xmlCtxtDumpInitCtxt(&ctxt); + ctxt.options |= DUMP_TEXT_TYPE; ctxt.output = output; xmlCtxtDumpDocumentHead(&ctxt, doc); xmlCtxtDumpCleanCtxt(&ctxt); @@ -1509,6 +1523,7 @@ xmlDebugDumpDocument(FILE * output, xmlDocPtr doc) if (output == NULL) output = stdout; xmlCtxtDumpInitCtxt(&ctxt); + ctxt.options |= DUMP_TEXT_TYPE; ctxt.output = output; xmlCtxtDumpDocument(&ctxt, doc); xmlCtxtDumpCleanCtxt(&ctxt); @@ -1529,6 +1544,7 @@ xmlDebugDumpDTD(FILE * output, xmlDtdPtr dtd) if (output == NULL) output = stdout; xmlCtxtDumpInitCtxt(&ctxt); + ctxt.options |= DUMP_TEXT_TYPE; ctxt.output = output; xmlCtxtDumpDTD(&ctxt, dtd); xmlCtxtDumpCleanCtxt(&ctxt); diff --git a/doc/APIchunk0.html b/doc/APIchunk0.html index 31a028e..36b401b 100644 --- a/doc/APIchunk0.html +++ b/doc/APIchunk0.html @@ -207,7 +207,8 @@ A:link, A:visited, A:active { text-decoration: underline } </dd><dt>BaseChar</dt><dd><a href="html/libxml-parserInternals.html#IS_BASECHAR">IS_BASECHAR</a><br /> <a href="html/libxml-parserInternals.html#IS_LETTER">IS_LETTER</a><br /> <a href="html/libxml-parserInternals.html#xmlIsLetter">xmlIsLetter</a><br /> -</dd><dt>Based</dt><dd><a href="html/libxml-xpath.html#xmlXPathIsInf">xmlXPathIsInf</a><br /> +</dd><dt>Based</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br /> +<a href="html/libxml-xpath.html#xmlXPathIsInf">xmlXPathIsInf</a><br /> <a href="html/libxml-xpath.html#xmlXPathIsNaN">xmlXPathIsNaN</a><br /> </dd><dt>BasicLatin</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsBasicLatin">xmlUCSIsBasicLatin</a><br /> </dd><dt>Basically</dt><dd><a href="html/libxml-valid.html#xmlValidateDtd">xmlValidateDtd</a><br /> @@ -231,6 +232,8 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-pattern.html#xmlStreamPushAttr">xmlStreamPushAttr</a><br /> </dd><dt>BoxDrawing</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsBoxDrawing">xmlUCSIsBoxDrawing</a><br /> </dd><dt>BraillePatterns</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsBraillePatterns">xmlUCSIsBraillePatterns</a><br /> +</dd><dt>Brzozowski</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpStringDerive">xmlExpStringDerive</a><br /> </dd><dt>Buffer</dt><dd><a href="html/libxml-parser.html#xmlIOParseDTD">xmlIOParseDTD</a><br /> </dd><dt>Bugs:</dt><dd><a href="html/libxml-HTMLparser.html#_htmlElemDesc">_htmlElemDesc</a><br /> </dd><dt>Buhid</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsBuhid">xmlUCSIsBuhid</a><br /> diff --git a/doc/APIchunk1.html b/doc/APIchunk1.html index 51c034a..668482d 100644 --- a/doc/APIchunk1.html +++ b/doc/APIchunk1.html @@ -305,6 +305,7 @@ A:link, A:visited, A:active { text-decoration: underline } </dd><dt>Creates</dt><dd><a href="html/libxml-HTMLtree.html#htmlNewDoc">htmlNewDoc</a><br /> <a href="html/libxml-HTMLtree.html#htmlNewDocNoDtD">htmlNewDocNoDtD</a><br /> <a href="html/libxml-parser.html#xmlCreateDocParserCtxt">xmlCreateDocParserCtxt</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewCtxt">xmlExpNewCtxt</a><br /> <a href="html/libxml-tree.html#xmlNewDoc">xmlNewDoc</a><br /> <a href="html/libxml-xinclude.html#xmlXIncludeNewContext">xmlXIncludeNewContext</a><br /> </dd><dt>Creation</dt><dd><a href="html/libxml-tree.html#xmlNewCDataBlock">xmlNewCDataBlock</a><br /> diff --git a/doc/APIchunk10.html b/doc/APIchunk10.html index 249723b..161b4ef 100644 --- a/doc/APIchunk10.html +++ b/doc/APIchunk10.html @@ -61,10 +61,12 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_FINAL_ABSENT">XML_SCHEMAS_ELEM_FINAL_ABSENT</a><br /> <a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_VARIETY_ABSENT">XML_SCHEMAS_TYPE_VARIETY_ABSENT</a><br /> </dd><dt>absoluteURI</dt><dd><a href="html/libxml-uri.html#xmlParseURI">xmlParseURI</a><br /> +<a href="html/libxml-uri.html#xmlParseURIRaw">xmlParseURIRaw</a><br /> <a href="html/libxml-uri.html#xmlParseURIReference">xmlParseURIReference</a><br /> </dd><dt>abstract</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_ABSTRACT">XML_SCHEMAS_ELEM_ABSTRACT</a><br /> <a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_ABSTRACT">XML_SCHEMAS_TYPE_ABSTRACT</a><br /> -</dd><dt>accept</dt><dd><a href="html/libxml-tree.html#xmlGetNoNsProp">xmlGetNoNsProp</a><br /> +</dd><dt>accept</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpMaxToken">xmlExpMaxToken</a><br /> +<a href="html/libxml-tree.html#xmlGetNoNsProp">xmlGetNoNsProp</a><br /> <a href="html/libxml-valid.html#xmlIsMixedElement">xmlIsMixedElement</a><br /> </dd><dt>acceptable</dt><dd><a href="html/libxml-xmlregexp.html#xmlRegExecErrInfo">xmlRegExecErrInfo</a><br /> <a href="html/libxml-xmlregexp.html#xmlRegExecNextValues">xmlRegExecNextValues</a><br /> @@ -72,10 +74,13 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-catalog.html#xmlCatalogGetDefaults">xmlCatalogGetDefaults</a><br /> <a href="html/libxml-catalog.html#xmlCatalogSetDefaultPrefer">xmlCatalogSetDefaultPrefer</a><br /> <a href="html/libxml-catalog.html#xmlCatalogSetDefaults">xmlCatalogSetDefaults</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpGetStart">xmlExpGetStart</a><br /> <a href="html/libxml-xmlregexp.html#xmlRegExecErrInfo">xmlRegExecErrInfo</a><br /> <a href="html/libxml-xmlregexp.html#xmlRegExecNextValues">xmlRegExecNextValues</a><br /> <a href="html/libxml-xmlreader.html#xmlTextReaderNormalization">xmlTextReaderNormalization</a><br /> </dd><dt>accepting</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderNormalization">xmlTextReaderNormalization</a><br /> +</dd><dt>accepts</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpIsNillable">xmlExpIsNillable</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpSubsume">xmlExpSubsume</a><br /> </dd><dt>access</dt><dd><a href="html/libxml-xmlmemory.html#xmlGcMemGet">xmlGcMemGet</a><br /> <a href="html/libxml-xmlmemory.html#xmlGcMemSetup">xmlGcMemSetup</a><br /> <a href="html/libxml-xmlmemory.html#xmlMemGet">xmlMemGet</a><br /> @@ -86,6 +91,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlreader.html#xmlTextReaderCurrentNode">xmlTextReaderCurrentNode</a><br /> </dd><dt>accesses</dt><dd><a href="html/libxml-parserInternals.html#xmlCreateURLParserCtxt">xmlCreateURLParserCtxt</a><br /> <a href="html/libxml-xmlIO.html#xmlNoNetExternalEntityLoader">xmlNoNetExternalEntityLoader</a><br /> +</dd><dt>accexpted</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpSubsume">xmlExpSubsume</a><br /> </dd><dt>accommodate</dt><dd><a href="html/libxml-tree.html#xmlBufferResize">xmlBufferResize</a><br /> </dd><dt>according</dt><dd><a href="html/libxml-uri.html#xmlBuildURI">xmlBuildURI</a><br /> <a href="html/libxml-encoding.html#xmlDetectCharEncoding">xmlDetectCharEncoding</a><br /> @@ -105,6 +111,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlautomata.html#xmlAutomataNewAllTrans">xmlAutomataNewAllTrans</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewCountTrans">xmlAutomataNewCountTrans</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewCountTrans2">xmlAutomataNewCountTrans2</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewNegTrans">xmlAutomataNewNegTrans</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewOnceTrans">xmlAutomataNewOnceTrans</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewOnceTrans2">xmlAutomataNewOnceTrans2</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewTransition">xmlAutomataNewTransition</a><br /> @@ -197,6 +204,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlautomata.html#xmlAutomataNewCountedTrans">xmlAutomataNewCountedTrans</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewCounterTrans">xmlAutomataNewCounterTrans</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewEpsilon">xmlAutomataNewEpsilon</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewNegTrans">xmlAutomataNewNegTrans</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewOnceTrans">xmlAutomataNewOnceTrans</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewOnceTrans2">xmlAutomataNewOnceTrans2</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewTransition">xmlAutomataNewTransition</a><br /> @@ -240,10 +248,12 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacet">xmlSchemaValidateLengthFacet</a><br /> <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacetWhtsp">xmlSchemaValidateLengthFacetWhtsp</a><br /> <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateListSimpleTypeFacet">xmlSchemaValidateListSimpleTypeFacet</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronValidateDoc">xmlSchematronValidateDoc</a><br /> <a href="html/libxml-debugXML.html#xmlShellValidate">xmlShellValidate</a><br /> <a href="html/libxml-valid.html#xmlValidateDtd">xmlValidateDtd</a><br /> </dd><dt>aggregate</dt><dd><a href="html/libxml-tree.html#xmlNodeBufGetContent">xmlNodeBufGetContent</a><br /> <a href="html/libxml-tree.html#xmlNodeGetContent">xmlNodeGetContent</a><br /> +</dd><dt>algebraic</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br /> </dd><dt>alias</dt><dd><a href="html/libxml-encoding.html#xmlAddEncodingAlias">xmlAddEncodingAlias</a><br /> <a href="html/libxml-encoding.html#xmlDelEncodingAlias">xmlDelEncodingAlias</a><br /> <a href="html/libxml-encoding.html#xmlGetEncodingAlias">xmlGetEncodingAlias</a><br /> @@ -323,6 +333,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-HTMLparser.html#htmlIsAutoClosed">htmlIsAutoClosed</a><br /> <a href="html/libxml-catalog.html#xmlCatalogAdd">xmlCatalogAdd</a><br /> <a href="html/libxml-tree.html#xmlNewChild">xmlNewChild</a><br /> +<a href="html/libxml-uri.html#xmlParseURIRaw">xmlParseURIRaw</a><br /> <a href="html/libxml-xmlreader.html#xmlTextReaderConstString">xmlTextReaderConstString</a><br /> </dd><dt>already</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ATTRGROUP_GLOBAL">XML_SCHEMAS_ATTRGROUP_GLOBAL</a><br /> <a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED">XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED</a><br /> @@ -378,6 +389,7 @@ A:link, A:visited, A:active { text-decoration: underline } </dd><dt>analysis</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> <a href="html/libxml-valid.html#_xmlValidCtxt">_xmlValidCtxt</a><br /> </dd><dt>analyze</dt><dd><a href="html/libxml-uri.html#xmlParseURI">xmlParseURI</a><br /> +<a href="html/libxml-uri.html#xmlParseURIRaw">xmlParseURIRaw</a><br /> <a href="html/libxml-uri.html#xmlParseURIReference">xmlParseURIReference</a><br /> </dd><dt>analyzed</dt><dd><a href="html/libxml-parser.html#_xmlParserInput">_xmlParserInput</a><br /> </dd><dt>ancestor</dt><dd><a href="html/libxml-tree.html#xmlNodeGetLang">xmlNodeGetLang</a><br /> @@ -423,7 +435,8 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-parserInternals.html#xmlParserHandlePEReference">xmlParserHandlePEReference</a><br /> </dd><dt>appearing</dt><dd><a href="html/libxml-valid.html#xmlValidatePopElement">xmlValidatePopElement</a><br /> <a href="html/libxml-valid.html#xmlValidatePushElement">xmlValidatePushElement</a><br /> -</dd><dt>appears</dt><dd><a href="html/libxml-parserInternals.html#xmlParseCharData">xmlParseCharData</a><br /> +</dd><dt>appears</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpGetStart">xmlExpGetStart</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseCharData">xmlParseCharData</a><br /> <a href="html/libxml-parserInternals.html#xmlParseElementChildrenContentDecl">xmlParseElementChildrenContentDecl</a><br /> <a href="html/libxml-parserInternals.html#xmlParseEntityRef">xmlParseEntityRef</a><br /> <a href="html/libxml-parserInternals.html#xmlParseSDDecl">xmlParseSDDecl</a><br /> @@ -504,6 +517,10 @@ A:link, A:visited, A:active { text-decoration: underline } </dd><dt>assuming</dt><dd><a href="html/libxml-tree.html#xmlSaveFileTo">xmlSaveFileTo</a><br /> <a href="html/libxml-tree.html#xmlSaveFormatFileTo">xmlSaveFormatFileTo</a><br /> </dd><dt>assure</dt><dd><a href="html/libxml-xmlstring.html#xmlGetUTF8Char">xmlGetUTF8Char</a><br /> +</dd><dt>atom</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpNewAtom">xmlExpNewAtom</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewOr">xmlExpNewOr</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewSeq">xmlExpNewSeq</a><br /> </dd><dt>atomic</dt><dd><a href="html/libxml-xmlmemory.html#xmlGcMemGet">xmlGcMemGet</a><br /> <a href="html/libxml-xmlmemory.html#xmlGcMemSetup">xmlGcMemSetup</a><br /> </dd><dt>attached</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderGetRemainder">xmlTextReaderGetRemainder</a><br /> diff --git a/doc/APIchunk11.html b/doc/APIchunk11.html index 754df2d..763623f 100644 --- a/doc/APIchunk11.html +++ b/doc/APIchunk11.html @@ -62,6 +62,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlschemas.html#xmlSchemaSAXPlug">xmlSchemaSAXPlug</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaSAXUnplug">xmlSchemaSAXUnplug</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaValidateStream">xmlSchemaValidateStream</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronNewValidCtxt">xmlSchematronNewValidCtxt</a><br /> <a href="html/libxml-tree.html#xmlSetCompressMode">xmlSetCompressMode</a><br /> <a href="html/libxml-tree.html#xmlSetDocCompressMode">xmlSetDocCompressMode</a><br /> <a href="html/libxml-xmlstring.html#xmlStrcat">xmlStrcat</a><br /> @@ -186,6 +187,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlstring.html#xmlStrEqual">xmlStrEqual</a><br /> <a href="html/libxml-xpathInternals.html#xmlXPathCompareValues">xmlXPathCompareValues</a><br /> <a href="html/libxml-xpathInternals.html#xmlXPathIntersection">xmlXPathIntersection</a><br /> +</dd><dt>bound</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br /> </dd><dt>boundaries</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> <a href="html/libxml-tree.html#xmlSearchNs">xmlSearchNs</a><br /> </dd><dt>boundary</dt><dd><a href="html/libxml-parserInternals.html#xmlParseElementChildrenContentDecl">xmlParseElementChildrenContentDecl</a><br /> @@ -251,6 +253,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-parserInternals.html#xmlParseEnumerationType">xmlParseEnumerationType</a><br /> <a href="html/libxml-parserInternals.html#xmlParseNotationType">xmlParseNotationType</a><br /> <a href="html/libxml-uri.html#xmlParseURI">xmlParseURI</a><br /> +<a href="html/libxml-uri.html#xmlParseURIRaw">xmlParseURIRaw</a><br /> <a href="html/libxml-parser.html#xmlRecoverDoc">xmlRecoverDoc</a><br /> <a href="html/libxml-parser.html#xmlRecoverFile">xmlRecoverFile</a><br /> <a href="html/libxml-parser.html#xmlRecoverMemory">xmlRecoverMemory</a><br /> @@ -259,6 +262,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlschemastypes.html#xmlSchemaGetCanonValue">xmlSchemaGetCanonValue</a><br /> <a href="html/libxml-xmlschemastypes.html#xmlSchemaGetCanonValueWhtsp">xmlSchemaGetCanonValueWhtsp</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaParse">xmlSchemaParse</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronParse">xmlSchematronParse</a><br /> <a href="html/libxml-xmlreader.html#xmlTextReaderNextSibling">xmlTextReaderNextSibling</a><br /> </dd><dt>built-in</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaGetBuiltInListSimpleTypeItemType">xmlSchemaGetBuiltInListSimpleTypeItemType</a><br /> <a href="html/libxml-xmlschemastypes.html#xmlSchemaGetBuiltInType">xmlSchemaGetBuiltInType</a><br /> diff --git a/doc/APIchunk12.html b/doc/APIchunk12.html index b548fe2..9d1944e 100644 --- a/doc/APIchunk12.html +++ b/doc/APIchunk12.html @@ -77,6 +77,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-c14n.html#xmlC14NExecute">xmlC14NExecute</a><br /> </dd><dt>capable</dt><dd><a href="html/libxml-xmlstring.html#xmlCheckUTF8">xmlCheckUTF8</a><br /> </dd><dt>caracters</dt><dd><a href="html/libxml-xmlIO.html#xmlOutputBufferWriteEscape">xmlOutputBufferWriteEscape</a><br /> +</dd><dt>cardinality</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br /> </dd><dt>carried</dt><dd><a href="html/libxml-tree.html#xmlNewDocProp">xmlNewDocProp</a><br /> <a href="html/libxml-tree.html#xmlNewNsProp">xmlNewNsProp</a><br /> <a href="html/libxml-tree.html#xmlNewNsPropEatName">xmlNewNsPropEatName</a><br /> @@ -198,9 +199,11 @@ A:link, A:visited, A:active { text-decoration: underline } </dd><dt>checking</dt><dd><a href="html/libxml-xlink.html#xlinkIsLink">xlinkIsLink</a><br /> <a href="html/libxml-tree.html#xmlBufferWriteQuotedString">xmlBufferWriteQuotedString</a><br /> <a href="html/libxml-uri.html#xmlBuildURI">xmlBuildURI</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br /> <a href="html/libxml-xmlmemory.html#xmlMemFree">xmlMemFree</a><br /> <a href="html/libxml-xmlstring.html#xmlUTF8Strlen">xmlUTF8Strlen</a><br /> -</dd><dt>checkings</dt><dd><a href="html/libxml-valid.html#xmlValidateOneElement">xmlValidateOneElement</a><br /> +</dd><dt>checkings</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br /> +<a href="html/libxml-valid.html#xmlValidateOneElement">xmlValidateOneElement</a><br /> </dd><dt>checks</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ATTRGROUP_MARKED">XML_SCHEMAS_ATTRGROUP_MARKED</a><br /> <a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_MARKED">XML_SCHEMAS_TYPE_MARKED</a><br /> <a href="html/libxml-HTMLparser.html#htmlAutoCloseTag">htmlAutoCloseTag</a><br /> @@ -234,7 +237,9 @@ A:link, A:visited, A:active { text-decoration: underline } </dd><dt>childs</dt><dd><a href="html/libxml-tree.html#_xmlNode">_xmlNode</a><br /> <a href="html/libxml-valid.html#xmlIsMixedElement">xmlIsMixedElement</a><br /> <a href="html/libxml-valid.html#xmlValidGetValidElements">xmlValidGetValidElements</a><br /> -</dd><dt>choice</dt><dd><a href="html/libxml-parserInternals.html#xmlParseElementChildrenContentDecl">xmlParseElementChildrenContentDecl</a><br /> +</dd><dt>choice</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpNewOr">xmlExpNewOr</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseElementChildrenContentDecl">xmlParseElementChildrenContentDecl</a><br /> </dd><dt>choices</dt><dd><a href="html/libxml-parserInternals.html#xmlParseElementMixedContentDecl">xmlParseElementMixedContentDecl</a><br /> </dd><dt>choices:</dt><dd><a href="html/libxml-parserInternals.html#xmlParseNotationDecl">xmlParseNotationDecl</a><br /> </dd><dt>chunk</dt><dd><a href="html/libxml-DOCBparser.html#docbParseChunk">docbParseChunk</a><br /> @@ -380,6 +385,8 @@ A:link, A:visited, A:active { text-decoration: underline } </dd><dt>compatible</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_TEST_VERSION">LIBXML_TEST_VERSION</a><br /> <a href="html/libxml-debugXML.html#xmlShellPwd">xmlShellPwd</a><br /> </dd><dt>compilation</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_VERSION_EXTRA">LIBXML_VERSION_EXTRA</a><br /> +<a href="html/libxml-xpath.html#XML_XPATH_CHECKNS">XML_XPATH_CHECKNS</a><br /> +<a href="html/libxml-xpath.html#_xmlXPathContext">_xmlXPathContext</a><br /> <a href="html/libxml-pattern.html#xmlPatterncompile">xmlPatterncompile</a><br /> <a href="html/libxml-xpath.html#xmlXPathCompile">xmlXPathCompile</a><br /> <a href="html/libxml-xpath.html#xmlXPathCtxtCompile">xmlXPathCtxtCompile</a><br /> @@ -400,15 +407,20 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-parser.html#xmlSAXParseFile">xmlSAXParseFile</a><br /> <a href="html/libxml-parser.html#xmlSAXParseFileWithData">xmlSAXParseFileWithData</a><br /> </dd><dt>compiled</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_AUTOMATA_ENABLED">LIBXML_AUTOMATA_ENABLED</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_EXPR_ENABLED">LIBXML_EXPR_ENABLED</a><br /> <a href="html/libxml-xmlversion.html#LIBXML_LEGACY_ENABLED">LIBXML_LEGACY_ENABLED</a><br /> <a href="html/libxml-xmlversion.html#LIBXML_MODULES_ENABLED">LIBXML_MODULES_ENABLED</a><br /> <a href="html/libxml-xmlversion.html#LIBXML_REGEXP_ENABLED">LIBXML_REGEXP_ENABLED</a><br /> <a href="html/libxml-xmlversion.html#LIBXML_SCHEMAS_ENABLED">LIBXML_SCHEMAS_ENABLED</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_SCHEMATRON_ENABLED">LIBXML_SCHEMATRON_ENABLED</a><br /> <a href="html/libxml-xmlversion.html#LIBXML_TEST_VERSION">LIBXML_TEST_VERSION</a><br /> <a href="html/libxml-xmlversion.html#LIBXML_UNICODE_ENABLED">LIBXML_UNICODE_ENABLED</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataCompile">xmlAutomataCompile</a><br /> <a href="html/libxml-xmlversion.html#xmlCheckVersion">xmlCheckVersion</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpDump">xmlExpDump</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpMaxToken">xmlExpMaxToken</a><br /> <a href="html/libxml-xmlerror.html#xmlGetLastError">xmlGetLastError</a><br /> +<a href="html/libxml-parser.html#xmlHasFeature">xmlHasFeature</a><br /> <a href="html/libxml-pattern.html#xmlPatterncompile">xmlPatterncompile</a><br /> <a href="html/libxml-xmlregexp.html#xmlRegexpCompile">xmlRegexpCompile</a><br /> <a href="html/libxml-xmlregexp.html#xmlRegexpExec">xmlRegexpExec</a><br /> @@ -578,7 +590,8 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-valid.html#xmlValidGetValidElements">xmlValidGetValidElements</a><br /> </dd><dt>construct</dt><dd><a href="html/libxml-parserInternals.html#xmlParseElementChildrenContentDecl">xmlParseElementChildrenContentDecl</a><br /> </dd><dt>construction</dt><dd><a href="html/libxml-uri.html#xmlCanonicPath">xmlCanonicPath</a><br /> -</dd><dt>constructs</dt><dd><a href="html/libxml-parserInternals.html#xmlParseNamespace">xmlParseNamespace</a><br /> +</dd><dt>constructs</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseNamespace">xmlParseNamespace</a><br /> </dd><dt>consumed</dt><dd><a href="html/libxml-HTMLparser.html#UTF8ToHtml">UTF8ToHtml</a><br /> <a href="html/libxml-encoding.html#UTF8Toisolat1">UTF8Toisolat1</a><br /> <a href="html/libxml-parser.html#_xmlParserInput">_xmlParserInput</a><br /> @@ -588,12 +601,16 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-encoding.html#isolat1ToUTF8">isolat1ToUTF8</a><br /> <a href="html/libxml-encoding.html#xmlCharEncodingInputFunc">xmlCharEncodingInputFunc</a><br /> <a href="html/libxml-encoding.html#xmlCharEncodingOutputFunc">xmlCharEncodingOutputFunc</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewOr">xmlExpNewOr</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewSeq">xmlExpNewSeq</a><br /> <a href="html/libxml-xmlstring.html#xmlGetUTF8Char">xmlGetUTF8Char</a><br /> <a href="html/libxml-xmlIO.html#xmlParserInputBufferRead">xmlParserInputBufferRead</a><br /> <a href="html/libxml-xmlschemastypes.html#xmlSchemaNewNOTATIONValue">xmlSchemaNewNOTATIONValue</a><br /> <a href="html/libxml-xmlschemastypes.html#xmlSchemaNewQNameValue">xmlSchemaNewQNameValue</a><br /> <a href="html/libxml-xmlschemastypes.html#xmlSchemaNewStringValue">xmlSchemaNewStringValue</a><br /> -</dd><dt>consuming</dt><dd><a href="html/libxml-parserInternals.html#xmlScanName">xmlScanName</a><br /> +</dd><dt>consuming</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br /> +<a href="html/libxml-parserInternals.html#xmlScanName">xmlScanName</a><br /> </dd><dt>contain</dt><dd><a href="html/libxml-tree.html#xmlNewTextChild">xmlNewTextChild</a><br /> <a href="html/libxml-parserInternals.html#xmlParseAttribute">xmlParseAttribute</a><br /> <a href="html/libxml-parserInternals.html#xmlParseEntityRef">xmlParseEntityRef</a><br /> @@ -607,6 +624,8 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-relaxng.html#xmlRelaxNGNewParserCtxt">xmlRelaxNGNewParserCtxt</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaNewMemParserCtxt">xmlSchemaNewMemParserCtxt</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaNewParserCtxt">xmlSchemaNewParserCtxt</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronNewMemParserCtxt">xmlSchematronNewMemParserCtxt</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronNewParserCtxt">xmlSchematronNewParserCtxt</a><br /> <a href="html/libxml-xpathInternals.html#xmlXPathLeading">xmlXPathLeading</a><br /> <a href="html/libxml-xpathInternals.html#xmlXPathLeadingSorted">xmlXPathLeadingSorted</a><br /> <a href="html/libxml-xpathInternals.html#xmlXPathNodeLeading">xmlXPathNodeLeading</a><br /> @@ -676,7 +695,8 @@ A:link, A:visited, A:active { text-decoration: underline } </dd><dt>continuing</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathSubstringFunction">xmlXPathSubstringFunction</a><br /> </dd><dt>contrary</dt><dd><a href="html/libxml-tree.html#xmlNodeListGetRawString">xmlNodeListGetRawString</a><br /> <a href="html/libxml-xpath.html#xmlXPathFreeNodeSetList">xmlXPathFreeNodeSetList</a><br /> -</dd><dt>control</dt><dd><a href="html/libxml-SAX.html#resolveEntity">resolveEntity</a><br /> +</dd><dt>control</dt><dd><a href="html/libxml-xpath.html#_xmlXPathContext">_xmlXPathContext</a><br /> +<a href="html/libxml-SAX.html#resolveEntity">resolveEntity</a><br /> <a href="html/libxml-parser.html#resolveEntitySAXFunc">resolveEntitySAXFunc</a><br /> <a href="html/libxml-nanoftp.html#xmlNanoFTPClose">xmlNanoFTPClose</a><br /> <a href="html/libxml-nanoftp.html#xmlNanoFTPConnect">xmlNanoFTPConnect</a><br /> @@ -765,9 +785,11 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlreader.html#xmlTextReaderSetSchema">xmlTextReaderSetSchema</a><br /> <a href="html/libxml-valid.html#xmlValidateDtd">xmlValidateDtd</a><br /> </dd><dt>count</dt><dd><a href="html/libxml-nanoftp.html#ftpListCallback">ftpListCallback</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpRef">xmlExpRef</a><br /> <a href="html/libxml-debugXML.html#xmlLsCountNode">xmlLsCountNode</a><br /> <a href="html/libxml-xmlsave.html#xmlSaveDoc">xmlSaveDoc</a><br /> <a href="html/libxml-xmlsave.html#xmlSaveTree">xmlSaveTree</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronValidateDoc">xmlSchematronValidateDoc</a><br /> <a href="html/libxml-xmlreader.html#xmlTextReaderAttributeCount">xmlTextReaderAttributeCount</a><br /> <a href="html/libxml-xpathInternals.html#xmlXPathCountFunction">xmlXPathCountFunction</a><br /> </dd><dt>counter</dt><dd><a href="html/libxml-xmlautomata.html#xmlAutomataNewCountedTrans">xmlAutomataNewCountedTrans</a><br /> @@ -793,6 +815,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlautomata.html#xmlAutomataNewCountedTrans">xmlAutomataNewCountedTrans</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewCounterTrans">xmlAutomataNewCounterTrans</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewEpsilon">xmlAutomataNewEpsilon</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewNegTrans">xmlAutomataNewNegTrans</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewOnceTrans">xmlAutomataNewOnceTrans</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewOnceTrans2">xmlAutomataNewOnceTrans2</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewTransition">xmlAutomataNewTransition</a><br /> @@ -810,6 +833,9 @@ A:link, A:visited, A:active { text-decoration: underline } </dd><dt>cshema</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_FINAL_DEFAULT_LIST">XML_SCHEMAS_FINAL_DEFAULT_LIST</a><br /> </dd><dt>ctrio</dt><dd><a href="html/libxml-xpath.html#xmlXPathIsInf">xmlXPathIsInf</a><br /> <a href="html/libxml-xpath.html#xmlXPathIsNaN">xmlXPathIsNaN</a><br /> +</dd><dt>ctxt</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpNewOr">xmlExpNewOr</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewSeq">xmlExpNewSeq</a><br /> </dd><dt>ctxt-</dt><dd><a href="html/libxml-DOCBparser.html#docbFreeParserCtxt">docbFreeParserCtxt</a><br /> <a href="html/libxml-HTMLparser.html#htmlFreeParserCtxt">htmlFreeParserCtxt</a><br /> <a href="html/libxml-parser.html#xmlFreeParserCtxt">xmlFreeParserCtxt</a><br /> diff --git a/doc/APIchunk13.html b/doc/APIchunk13.html index cfab9a4..a44fa80 100644 --- a/doc/APIchunk13.html +++ b/doc/APIchunk13.html @@ -239,10 +239,13 @@ A:link, A:visited, A:active { text-decoration: underline } </dd><dt>depth</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> <a href="html/libxml-valid.html#_xmlValidCtxt">_xmlValidCtxt</a><br /> <a href="html/libxml-pattern.html#xmlPatternMaxDepth">xmlPatternMaxDepth</a><br /> +<a href="html/libxml-pattern.html#xmlPatternMinDepth">xmlPatternMinDepth</a><br /> <a href="html/libxml-xmlreader.html#xmlTextReaderDepth">xmlTextReaderDepth</a><br /> </dd><dt>deregistration</dt><dd><a href="html/libxml-globals.html#xmlDeregisterNodeDefault">xmlDeregisterNodeDefault</a><br /> </dd><dt>derivation</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION">XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION</a><br /> <a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION">XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpStringDerive">xmlExpStringDerive</a><br /> </dd><dt>des</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderRelaxNGSetSchema">xmlTextReaderRelaxNGSetSchema</a><br /> <a href="html/libxml-xmlreader.html#xmlTextReaderRelaxNGValidate">xmlTextReaderRelaxNGValidate</a><br /> <a href="html/libxml-xmlreader.html#xmlTextReaderSchemaValidate">xmlTextReaderSchemaValidate</a><br /> @@ -303,7 +306,6 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlsave.html#xmlSaveToFd">xmlSaveToFd</a><br /> <a href="html/libxml-xmlsave.html#xmlSaveToIO">xmlSaveToIO</a><br /> </dd><dt>designed</dt><dd><a href="html/libxml-encoding.html#xmlCharEncodingOutputFunc">xmlCharEncodingOutputFunc</a><br /> -<a href="html/libxml-parser.html#xmlLoadExternalEntity">xmlLoadExternalEntity</a><br /> </dd><dt>desired</dt><dd><a href="html/libxml-tree.html#xmlBufferResize">xmlBufferResize</a><br /> <a href="html/libxml-xmlIO.html#xmlIOHTTPOpenW">xmlIOHTTPOpenW</a><br /> <a href="html/libxml-xmlstring.html#xmlUTF8Strloc">xmlUTF8Strloc</a><br /> @@ -387,6 +389,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-dict.html#xmlDictQLookup">xmlDictQLookup</a><br /> <a href="html/libxml-dict.html#xmlDictReference">xmlDictReference</a><br /> <a href="html/libxml-dict.html#xmlDictSize">xmlDictSize</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewCtxt">xmlExpNewCtxt</a><br /> </dd><dt>did</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_BLOCK_DEFAULT">XML_SCHEMAS_TYPE_BLOCK_DEFAULT</a><br /> <a href="html/libxml-xmlreader.html#xmlTextReaderGetRemainder">xmlTextReaderGetRemainder</a><br /> <a href="html/libxml-xmlreader.html#xmlTextReaderStandalone">xmlTextReaderStandalone</a><br /> @@ -405,6 +408,7 @@ A:link, A:visited, A:active { text-decoration: underline } </dd><dt>direct</dt><dd><a href="html/libxml-HTMLparser.html#htmlElementAllowedHere">htmlElementAllowedHere</a><br /> <a href="html/libxml-HTMLparser.html#htmlElementAllowedHereDesc">htmlElementAllowedHereDesc</a><br /> <a href="html/libxml-HTMLparser.html#htmlElementStatusHere">htmlElementStatusHere</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br /> <a href="html/libxml-parserInternals.html#xmlParseAttribute">xmlParseAttribute</a><br /> <a href="html/libxml-uri.html#xmlURIUnescapeString">xmlURIUnescapeString</a><br /> </dd><dt>direction</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathNextAncestor">xmlXPathNextAncestor</a><br /> @@ -445,6 +449,7 @@ A:link, A:visited, A:active { text-decoration: underline } </dd><dt>disable</dt><dd><a href="html/libxml-catalog.html#xmlCatalogSetDebug">xmlCatalogSetDebug</a><br /> </dd><dt>disabled</dt><dd><a href="html/libxml-hash.html#XML_CAST_FPTR">XML_CAST_FPTR</a><br /> <a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +<a href="html/libxml-uri.html#xmlParseURIRaw">xmlParseURIRaw</a><br /> </dd><dt>disabling</dt><dd><a href="html/libxml-xmlIO.html#xmlNoNetExternalEntityLoader">xmlNoNetExternalEntityLoader</a><br /> </dd><dt>disallowed</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_BLOCK_EXTENSION">XML_SCHEMAS_ELEM_BLOCK_EXTENSION</a><br /> <a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_BLOCK_RESTRICTION">XML_SCHEMAS_ELEM_BLOCK_RESTRICTION</a><br /> @@ -491,36 +496,6 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-parser.html#xmlSAXParseMemory">xmlSAXParseMemory</a><br /> <a href="html/libxml-parser.html#xmlSAXParseMemoryWithData">xmlSAXParseMemoryWithData</a><br /> <a href="html/libxml-xpath.html#xmlXPathOrderDocElems">xmlXPathOrderDocElems</a><br /> -</dd><dt>does</dt><dd><a href="html/libxml-entities.html#_xmlEntity">_xmlEntity</a><br /> -<a href="html/libxml-xmlstring.html#xmlCheckUTF8">xmlCheckUTF8</a><br /> -<a href="html/libxml-xmlerror.html#xmlCtxtResetLastError">xmlCtxtResetLastError</a><br /> -<a href="html/libxml-tree.html#xmlGetNoNsProp">xmlGetNoNsProp</a><br /> -<a href="html/libxml-tree.html#xmlGetNsProp">xmlGetNsProp</a><br /> -<a href="html/libxml-tree.html#xmlGetProp">xmlGetProp</a><br /> -<a href="html/libxml-tree.html#xmlHasNsProp">xmlHasNsProp</a><br /> -<a href="html/libxml-xmlmodule.html#xmlModuleFree">xmlModuleFree</a><br /> -<a href="html/libxml-tree.html#xmlNodeGetBase">xmlNodeGetBase</a><br /> -<a href="html/libxml-parserInternals.html#xmlParseMarkupDecl">xmlParseMarkupDecl</a><br /> -<a href="html/libxml-xmlerror.html#xmlResetLastError">xmlResetLastError</a><br /> -<a href="html/libxml-xmlsave.html#xmlSaveDoc">xmlSaveDoc</a><br /> -<a href="html/libxml-xmlsave.html#xmlSaveTree">xmlSaveTree</a><br /> -<a href="html/libxml-xmlschemastypes.html#xmlSchemaGetCanonValue">xmlSchemaGetCanonValue</a><br /> -<a href="html/libxml-xmlschemastypes.html#xmlSchemaValPredefTypeNodeNoNorm">xmlSchemaValPredefTypeNodeNoNorm</a><br /> -<a href="html/libxml-uri.html#xmlURIEscape">xmlURIEscape</a><br /> -<a href="html/libxml-uri.html#xmlURIUnescapeString">xmlURIUnescapeString</a><br /> -<a href="html/libxml-valid.html#xmlValidateAttributeDecl">xmlValidateAttributeDecl</a><br /> -<a href="html/libxml-valid.html#xmlValidateDocument">xmlValidateDocument</a><br /> -<a href="html/libxml-valid.html#xmlValidateDocumentFinal">xmlValidateDocumentFinal</a><br /> -<a href="html/libxml-valid.html#xmlValidateDtd">xmlValidateDtd</a><br /> -<a href="html/libxml-valid.html#xmlValidateDtdFinal">xmlValidateDtdFinal</a><br /> -<a href="html/libxml-valid.html#xmlValidateElementDecl">xmlValidateElementDecl</a><br /> -<a href="html/libxml-valid.html#xmlValidateNotationDecl">xmlValidateNotationDecl</a><br /> -<a href="html/libxml-valid.html#xmlValidateOneAttribute">xmlValidateOneAttribute</a><br /> -<a href="html/libxml-valid.html#xmlValidateOneElement">xmlValidateOneElement</a><br /> -<a href="html/libxml-valid.html#xmlValidateOneNamespace">xmlValidateOneNamespace</a><br /> -<a href="html/libxml-valid.html#xmlValidateRoot">xmlValidateRoot</a><br /> -<a href="html/libxml-xpathInternals.html#xmlXPathSubstringAfterFunction">xmlXPathSubstringAfterFunction</a><br /> -<a href="html/libxml-xpathInternals.html#xmlXPathSubstringBeforeFunction">xmlXPathSubstringBeforeFunction</a><br /> </dd><dt>doesn</dt><dd><a href="html/libxml-HTMLparser.html#_htmlElemDesc">_htmlElemDesc</a><br /> <a href="html/libxml-HTMLparser.html#htmlElementAllowedHere">htmlElementAllowedHere</a><br /> <a href="html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a><br /> @@ -614,6 +589,8 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlschemas.html#xmlSchemaIsValid">xmlSchemaIsValid</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaNewDocParserCtxt">xmlSchemaNewDocParserCtxt</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaSetValidOptions">xmlSchemaSetValidOptions</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronNewDocParserCtxt">xmlSchematronNewDocParserCtxt</a><br /> +</dd><dt>dynamic</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_MODULE_EXTENSION">LIBXML_MODULE_EXTENSION</a><br /> </dd></dl><h2 align="center"><a href="APIchunk0.html">A-B</a> <a href="APIchunk1.html">C-C</a> <a href="APIchunk2.html">D-E</a> diff --git a/doc/APIchunk14.html b/doc/APIchunk14.html index 9855554..d568108 100644 --- a/doc/APIchunk14.html +++ b/doc/APIchunk14.html @@ -167,7 +167,9 @@ A:link, A:visited, A:active { text-decoration: underline } </dd><dt>engine</dt><dd><a href="html/libxml-xpath.html#xmlXPathAxisFunc">xmlXPathAxisFunc</a><br /> <a href="html/libxml-xpath.html#xmlXPathFuncLookupFunc">xmlXPathFuncLookupFunc</a><br /> <a href="html/libxml-xpath.html#xmlXPathVariableLookupFunc">xmlXPathVariableLookupFunc</a><br /> -</dd><dt>englobing</dt><dd><a href="html/libxml-valid.html#xmlSnprintfElementContent">xmlSnprintfElementContent</a><br /> +</dd><dt>englobing</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpSubsume">xmlExpSubsume</a><br /> +<a href="html/libxml-valid.html#xmlSnprintfElementContent">xmlSnprintfElementContent</a><br /> <a href="html/libxml-valid.html#xmlSprintfElementContent">xmlSprintfElementContent</a><br /> </dd><dt>enhancements</dt><dd><a href="html/libxml-HTMLparser.html#htmlNodeStatus">htmlNodeStatus</a><br /> </dd><dt>enough</dt><dd><a href="html/libxml-tree.html#xmlBuildQName">xmlBuildQName</a><br /> @@ -254,34 +256,6 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xpath.html#xmlXPathConvertBoolean">xmlXPathConvertBoolean</a><br /> <a href="html/libxml-xpath.html#xmlXPathConvertNumber">xmlXPathConvertNumber</a><br /> <a href="html/libxml-xpath.html#xmlXPathConvertString">xmlXPathConvertString</a><br /> -</dd><dt>errors</dt><dd><a href="html/libxml-parserInternals.html#INPUT_CHUNK">INPUT_CHUNK</a><br /> -<a href="html/libxml-parser.html#_xmlSAXHandler">_xmlSAXHandler</a><br /> -<a href="html/libxml-parser.html#_xmlSAXHandlerV1">_xmlSAXHandlerV1</a><br /> -<a href="html/libxml-valid.html#_xmlValidCtxt">_xmlValidCtxt</a><br /> -<a href="html/libxml-xpath.html#_xmlXPathContext">_xmlXPathContext</a><br /> -<a href="html/libxml-parser.html#fatalErrorSAXFunc">fatalErrorSAXFunc</a><br /> -<a href="html/libxml-xmlerror.html#initGenericErrorDefaultFunc">initGenericErrorDefaultFunc</a><br /> -<a href="html/libxml-encoding.html#xmlCharEncOutFunc">xmlCharEncOutFunc</a><br /> -<a href="html/libxml-xmlIO.html#xmlCheckHTTPInput">xmlCheckHTTPInput</a><br /> -<a href="html/libxml-tree.html#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a><br /> -<a href="html/libxml-tree.html#xmlDOMWrapReconcileNamespaces">xmlDOMWrapReconcileNamespaces</a><br /> -<a href="html/libxml-tree.html#xmlDOMWrapRemoveNode">xmlDOMWrapRemoveNode</a><br /> -<a href="html/libxml-debugXML.html#xmlDebugCheckDocument">xmlDebugCheckDocument</a><br /> -<a href="html/libxml-hash.html#xmlHashAddEntry">xmlHashAddEntry</a><br /> -<a href="html/libxml-hash.html#xmlHashAddEntry2">xmlHashAddEntry2</a><br /> -<a href="html/libxml-hash.html#xmlHashAddEntry3">xmlHashAddEntry3</a><br /> -<a href="html/libxml-relaxng.html#xmlRelaxNGGetParserErrors">xmlRelaxNGGetParserErrors</a><br /> -<a href="html/libxml-relaxng.html#xmlRelaxNGSetParserErrors">xmlRelaxNGSetParserErrors</a><br /> -<a href="html/libxml-xmlschemastypes.html#xmlSchemaGetCanonValue">xmlSchemaGetCanonValue</a><br /> -<a href="html/libxml-xmlschemastypes.html#xmlSchemaGetCanonValueWhtsp">xmlSchemaGetCanonValueWhtsp</a><br /> -<a href="html/libxml-xmlschemas.html#xmlSchemaGetParserErrors">xmlSchemaGetParserErrors</a><br /> -<a href="html/libxml-xmlschemas.html#xmlSchemaIsValid">xmlSchemaIsValid</a><br /> -<a href="html/libxml-xmlschemas.html#xmlSchemaSAXPlug">xmlSchemaSAXPlug</a><br /> -<a href="html/libxml-xmlschemas.html#xmlSchemaSetParserErrors">xmlSchemaSetParserErrors</a><br /> -<a href="html/libxml-xmlschemastypes.html#xmlSchemaValueAppend">xmlSchemaValueAppend</a><br /> -<a href="html/libxml-xmlschemastypes.html#xmlSchemaValueGetAsString">xmlSchemaValueGetAsString</a><br /> -<a href="html/libxml-xmlschemastypes.html#xmlSchemaValueGetNext">xmlSchemaValueGetNext</a><br /> -<a href="html/libxml-debugXML.html#xmlShellCmd">xmlShellCmd</a><br /> </dd><dt>errror</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapNewCtxt">xmlDOMWrapNewCtxt</a><br /> </dd><dt>escape</dt><dd><a href="html/libxml-DOCBparser.html#docbEncodeEntities">docbEncodeEntities</a><br /> <a href="html/libxml-HTMLparser.html#htmlEncodeEntities">htmlEncodeEntities</a><br /> @@ -301,6 +275,7 @@ A:link, A:visited, A:active { text-decoration: underline } </dd><dt>escaping</dt><dd><a href="html/libxml-xmlIO.html#xmlOutputBufferWriteEscape">xmlOutputBufferWriteEscape</a><br /> <a href="html/libxml-xmlsave.html#xmlSaveSetAttrEscape">xmlSaveSetAttrEscape</a><br /> <a href="html/libxml-xmlsave.html#xmlSaveSetEscape">xmlSaveSetEscape</a><br /> +</dd><dt>especially</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br /> </dd><dt>established</dt><dd><a href="html/libxml-nanoftp.html#xmlNanoFTPUpdateURL">xmlNanoFTPUpdateURL</a><br /> </dd><dt>etc</dt><dd><a href="html/libxml-tree.html#xmlDocGetRootElement">xmlDocGetRootElement</a><br /> <a href="html/libxml-tree.html#xmlDocSetRootElement">xmlDocSetRootElement</a><br /> @@ -327,6 +302,9 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xpointer.html#xmlXPtrEval">xmlXPtrEval</a><br /> </dd><dt>evaulation</dt><dd><a href="html/libxml-xmlregexp.html#xmlRegFreeExecCtxt">xmlRegFreeExecCtxt</a><br /> </dd><dt>even</dt><dd><a href="html/libxml-parser.html#_xmlParserInput">_xmlParserInput</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewOr">xmlExpNewOr</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewSeq">xmlExpNewSeq</a><br /> <a href="html/libxml-tree.html#xmlNodeGetBase">xmlNodeGetBase</a><br /> <a href="html/libxml-parser.html#xmlParseBalancedChunkMemoryRecover">xmlParseBalancedChunkMemoryRecover</a><br /> <a href="html/libxml-xmlwriter.html#xmlTextWriterFullEndElement">xmlTextWriterFullEndElement</a><br /> @@ -336,10 +314,12 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlschemas.html#xmlSchemaValidateStream">xmlSchemaValidateStream</a><br /> </dd><dt>events</dt><dd><a href="html/libxml-HTMLparser.html#htmlSAXParseDoc">htmlSAXParseDoc</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaValidateStream">xmlSchemaValidateStream</a><br /> +</dd><dt>ever</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpCtxtNbCons">xmlExpCtxtNbCons</a><br /> </dd><dt>everywhere</dt><dd><a href="html/libxml-parser.html#xmlSAXParseFileWithData">xmlSAXParseFileWithData</a><br /> <a href="html/libxml-parser.html#xmlSAXParseMemoryWithData">xmlSAXParseMemoryWithData</a><br /> </dd><dt>exact</dt><dd><a href="html/libxml-tree.html#xmlGetBufferAllocationScheme">xmlGetBufferAllocationScheme</a><br /> <a href="html/libxml-tree.html#xmlSetBufferAllocationScheme">xmlSetBufferAllocationScheme</a><br /> +</dd><dt>examined</dt><dd><a href="html/libxml-parser.html#xmlHasFeature">xmlHasFeature</a><br /> </dd><dt>example</dt><dd><a href="html/libxml-xmlIO.html#xmlParserInputBufferCreateStatic">xmlParserInputBufferCreateStatic</a><br /> <a href="html/libxml-tree.html#xmlReconciliateNs">xmlReconciliateNs</a><br /> <a href="html/libxml-xmlreader.html#xmlTextReaderConstString">xmlTextReaderConstString</a><br /> @@ -348,7 +328,8 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xpathInternals.html#xmlXPathSubstringFunction">xmlXPathSubstringFunction</a><br /> <a href="html/libxml-xpathInternals.html#xmlXPathTranslateFunction">xmlXPathTranslateFunction</a><br /> </dd><dt>examples</dt><dd><a href="html/libxml-uri.html#xmlBuildRelativeURI">xmlBuildRelativeURI</a><br /> -</dd><dt>except</dt><dd><a href="html/libxml-tree.html#xmlGetNoNsProp">xmlGetNoNsProp</a><br /> +</dd><dt>except</dt><dd><a href="html/libxml-xmlautomata.html#xmlAutomataNewNegTrans">xmlAutomataNewNegTrans</a><br /> +<a href="html/libxml-tree.html#xmlGetNoNsProp">xmlGetNoNsProp</a><br /> <a href="html/libxml-parserInternals.html#xmlParseAttValue">xmlParseAttValue</a><br /> <a href="html/libxml-catalog.html#xmlParseCatalogFile">xmlParseCatalogFile</a><br /> <a href="html/libxml-parserInternals.html#xmlParseEntityRef">xmlParseEntityRef</a><br /> @@ -369,7 +350,8 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlregexp.html#xmlRegExecNextValues">xmlRegExecNextValues</a><br /> <a href="html/libxml-xmlregexp.html#xmlRegExecPushString">xmlRegExecPushString</a><br /> <a href="html/libxml-xmlregexp.html#xmlRegExecPushString2">xmlRegExecPushString2</a><br /> -</dd><dt>exist</dt><dd><a href="html/libxml-xpointer.html#xmlXPtrLocationSetAdd">xmlXPtrLocationSetAdd</a><br /> +</dd><dt>exist</dt><dd><a href="html/libxml-parser.html#xmlHasFeature">xmlHasFeature</a><br /> +<a href="html/libxml-xpointer.html#xmlXPtrLocationSetAdd">xmlXPtrLocationSetAdd</a><br /> </dd><dt>existent</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a><br /> <a href="html/libxml-tree.html#xmlDOMWrapReconcileNamespaces">xmlDOMWrapReconcileNamespaces</a><br /> </dd><dt>exists</dt><dd><a href="html/libxml-dict.html#xmlDictExists">xmlDictExists</a><br /> @@ -389,6 +371,8 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlschemas.html#xmlSchemaNewMemParserCtxt">xmlSchemaNewMemParserCtxt</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaNewParserCtxt">xmlSchemaNewParserCtxt</a><br /> <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateListSimpleTypeFacet">xmlSchemaValidateListSimpleTypeFacet</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronNewMemParserCtxt">xmlSchematronNewMemParserCtxt</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronNewParserCtxt">xmlSchematronNewParserCtxt</a><br /> <a href="html/libxml-pattern.html#xmlStreamPush">xmlStreamPush</a><br /> <a href="html/libxml-pattern.html#xmlStreamPushAttr">xmlStreamPushAttr</a><br /> </dd><dt>experimental</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a><br /> @@ -397,7 +381,12 @@ A:link, A:visited, A:active { text-decoration: underline } </dd><dt>explicitly</dt><dd><a href="html/libxml-SAX2.html#xmlSAXDefaultVersion">xmlSAXDefaultVersion</a><br /> </dd><dt>explored</dt><dd><a href="html/libxml-xpath.html#xmlXPathAxisFunc">xmlXPathAxisFunc</a><br /> </dd><dt>exposing</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderRead">xmlTextReaderRead</a><br /> -</dd><dt>expressions</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_REGEXP_ENABLED">LIBXML_REGEXP_ENABLED</a><br /> +</dd><dt>expressions</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_EXPR_ENABLED">LIBXML_EXPR_ENABLED</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_REGEXP_ENABLED">LIBXML_REGEXP_ENABLED</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewCtxt">xmlExpNewCtxt</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpSubsume">xmlExpSubsume</a><br /> </dd><dt>exslSetsDistinctSorted</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathDistinct">xmlXPathDistinct</a><br /> </dd><dt>exslSetsLeadingSorted</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathLeading">xmlXPathLeading</a><br /> </dd><dt>exslSetsNodeLeadingSorted</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathNodeLeading">xmlXPathNodeLeading</a><br /> diff --git a/doc/APIchunk15.html b/doc/APIchunk15.html index 02fc03a..a164599 100644 --- a/doc/APIchunk15.html +++ b/doc/APIchunk15.html @@ -56,6 +56,8 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_HAS_FACETS">XML_SCHEMAS_TYPE_HAS_FACETS</a><br /> <a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_NORMVALUENEEDED">XML_SCHEMAS_TYPE_NORMVALUENEEDED</a><br /> <a href="html/libxml-xmlschemastypes.html#xmlSchemaCheckFacet">xmlSchemaCheckFacet</a><br /> +</dd><dt>facility</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpCtxtNbCons">xmlExpCtxtNbCons</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpCtxtNbNodes">xmlExpCtxtNbNodes</a><br /> </dd><dt>fail</dt><dd><a href="html/libxml-c14n.html#xmlC14NDocDumpMemory">xmlC14NDocDumpMemory</a><br /> <a href="html/libxml-c14n.html#xmlC14NDocSave">xmlC14NDocSave</a><br /> <a href="html/libxml-c14n.html#xmlC14NDocSaveTo">xmlC14NDocSaveTo</a><br /> @@ -86,36 +88,6 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-encoding.html#xmlCharEncOutFunc">xmlCharEncOutFunc</a><br /> <a href="html/libxml-xmlIO.html#xmlCheckFilename">xmlCheckFilename</a><br /> <a href="html/libxml-xmlIO.html#xmlFileOpen">xmlFileOpen</a><br /> -</dd><dt>failure</dt><dd><a href="html/libxml-xpathInternals.html#CHECK_TYPE0">CHECK_TYPE0</a><br /> -<a href="html/libxml-HTMLtree.html#htmlDocDump">htmlDocDump</a><br /> -<a href="html/libxml-HTMLtree.html#htmlNodeDumpFileFormat">htmlNodeDumpFileFormat</a><br /> -<a href="html/libxml-HTMLtree.html#htmlSaveFile">htmlSaveFile</a><br /> -<a href="html/libxml-HTMLtree.html#htmlSaveFileEnc">htmlSaveFileEnc</a><br /> -<a href="html/libxml-HTMLtree.html#htmlSaveFileFormat">htmlSaveFileFormat</a><br /> -<a href="html/libxml-tree.html#xmlBufferShrink">xmlBufferShrink</a><br /> -<a href="html/libxml-tree.html#xmlDocDump">xmlDocDump</a><br /> -<a href="html/libxml-tree.html#xmlDocFormatDump">xmlDocFormatDump</a><br /> -<a href="html/libxml-xmlIO.html#xmlFileOpen">xmlFileOpen</a><br /> -<a href="html/libxml-xmlIO.html#xmlFileRead">xmlFileRead</a><br /> -<a href="html/libxml-list.html#xmlListAppend">xmlListAppend</a><br /> -<a href="html/libxml-list.html#xmlListInsert">xmlListInsert</a><br /> -<a href="html/libxml-nanohttp.html#xmlNanoHTTPFetch">xmlNanoHTTPFetch</a><br /> -<a href="html/libxml-nanohttp.html#xmlNanoHTTPMethod">xmlNanoHTTPMethod</a><br /> -<a href="html/libxml-nanohttp.html#xmlNanoHTTPMethodRedir">xmlNanoHTTPMethodRedir</a><br /> -<a href="html/libxml-nanohttp.html#xmlNanoHTTPOpen">xmlNanoHTTPOpen</a><br /> -<a href="html/libxml-nanohttp.html#xmlNanoHTTPOpenRedir">xmlNanoHTTPOpenRedir</a><br /> -<a href="html/libxml-nanohttp.html#xmlNanoHTTPSave">xmlNanoHTTPSave</a><br /> -<a href="html/libxml-xmlautomata.html#xmlNewAutomata">xmlNewAutomata</a><br /> -<a href="html/libxml-pattern.html#xmlPatternGetStreamCtxt">xmlPatternGetStreamCtxt</a><br /> -<a href="html/libxml-pattern.html#xmlPatternMatch">xmlPatternMatch</a><br /> -<a href="html/libxml-relaxng.html#xmlRelaxNGGetParserErrors">xmlRelaxNGGetParserErrors</a><br /> -<a href="html/libxml-tree.html#xmlSaveFile">xmlSaveFile</a><br /> -<a href="html/libxml-tree.html#xmlSaveFileEnc">xmlSaveFileEnc</a><br /> -<a href="html/libxml-tree.html#xmlSaveFileTo">xmlSaveFileTo</a><br /> -<a href="html/libxml-tree.html#xmlSaveFormatFile">xmlSaveFormatFile</a><br /> -<a href="html/libxml-tree.html#xmlSaveFormatFileTo">xmlSaveFormatFileTo</a><br /> -<a href="html/libxml-xmlschemas.html#xmlSchemaGetParserErrors">xmlSchemaGetParserErrors</a><br /> -<a href="html/libxml-xmlschemas.html#xmlSchemaSAXUnplug">xmlSchemaSAXUnplug</a><br /> </dd><dt>fallback</dt><dd><a href="html/libxml-xinclude.html#XINCLUDE_FALLBACK">XINCLUDE_FALLBACK</a><br /> <a href="html/libxml-DOCBparser.html#docbSAXParseDoc">docbSAXParseDoc</a><br /> <a href="html/libxml-DOCBparser.html#docbSAXParseFile">docbSAXParseFile</a><br /> @@ -140,6 +112,7 @@ A:link, A:visited, A:active { text-decoration: underline } </dd><dt>favor</dt><dd><a href="html/libxml-valid.html#xmlNewElementContent">xmlNewElementContent</a><br /> </dd><dt>feature</dt><dd><a href="html/libxml-parser.html#xmlGetFeature">xmlGetFeature</a><br /> <a href="html/libxml-parser.html#xmlGetFeaturesList">xmlGetFeaturesList</a><br /> +<a href="html/libxml-parser.html#xmlHasFeature">xmlHasFeature</a><br /> <a href="html/libxml-parser.html#xmlSetFeature">xmlSetFeature</a><br /> </dd><dt>features</dt><dd><a href="html/libxml-parser.html#xmlGetFeaturesList">xmlGetFeaturesList</a><br /> </dd><dt>fed</dt><dd><a href="html/libxml-parser.html#xmlCreatePushParserCtxt">xmlCreatePushParserCtxt</a><br /> @@ -207,6 +180,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlreader.html#xmlTextReaderPreserve">xmlTextReaderPreserve</a><br /> <a href="html/libxml-xmlreader.html#xmlTextReaderPreservePattern">xmlTextReaderPreservePattern</a><br /> </dd><dt>finishing</dt><dd><a href="html/libxml-parser.html#xmlByteConsumed">xmlByteConsumed</a><br /> +</dd><dt>finite</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br /> </dd><dt>firs</dt><dd><a href="html/libxml-encoding.html#xmlCharEncOutFunc">xmlCharEncOutFunc</a><br /> </dd><dt>fist</dt><dd><a href="html/libxml-parserInternals.html#xmlEntityReferenceFunc">xmlEntityReferenceFunc</a><br /> </dd><dt>fit</dt><dd><a href="html/libxml-encoding.html#xmlCharEncFirstLine">xmlCharEncFirstLine</a><br /> @@ -227,7 +201,8 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlreader.html#xmlTextReaderIsValid">xmlTextReaderIsValid</a><br /> </dd><dt>flagged</dt><dd><a href="html/libxml-HTMLparser.html#_htmlElemDesc">_htmlElemDesc</a><br /> <a href="html/libxml-HTMLtree.html#htmlGetMetaEncoding">htmlGetMetaEncoding</a><br /> -</dd><dt>flags</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a><br /> +</dd><dt>flags</dt><dd><a href="html/libxml-xpath.html#_xmlXPathContext">_xmlXPathContext</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a><br /> <a href="html/libxml-tree.html#xmlDOMWrapReconcileNamespaces">xmlDOMWrapReconcileNamespaces</a><br /> <a href="html/libxml-pattern.html#xmlPatterncompile">xmlPatterncompile</a><br /> <a href="html/libxml-xmlreader.html#xmlReaderForDoc">xmlReaderForDoc</a><br /> @@ -251,7 +226,8 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlschemas.html#xmlSchemaValidateStream">xmlSchemaValidateStream</a><br /> </dd><dt>flushes</dt><dd><a href="html/libxml-xmlIO.html#xmlOutputBufferClose">xmlOutputBufferClose</a><br /> <a href="html/libxml-xmlIO.html#xmlOutputBufferFlush">xmlOutputBufferFlush</a><br /> -</dd><dt>follow</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathNodeTrailing">xmlXPathNodeTrailing</a><br /> +</dd><dt>follow</dt><dd><a href="html/libxml-xmlautomata.html#xmlAutomataNewNegTrans">xmlAutomataNewNegTrans</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNodeTrailing">xmlXPathNodeTrailing</a><br /> <a href="html/libxml-xpathInternals.html#xmlXPathNodeTrailingSorted">xmlXPathNodeTrailingSorted</a><br /> <a href="html/libxml-xpathInternals.html#xmlXPathSubstringFunction">xmlXPathSubstringFunction</a><br /> <a href="html/libxml-xpathInternals.html#xmlXPathTrailing">xmlXPathTrailing</a><br /> @@ -265,6 +241,7 @@ A:link, A:visited, A:active { text-decoration: underline } </dd><dt>fonctionnalities</dt><dd><a href="html/libxml-xmlIO.html#xmlInputMatchCallback">xmlInputMatchCallback</a><br /> <a href="html/libxml-xmlIO.html#xmlOutputMatchCallback">xmlOutputMatchCallback</a><br /> </dd><dt>for:</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaGetCanonValue">xmlSchemaGetCanonValue</a><br /> +</dd><dt>forbid</dt><dd><a href="html/libxml-xpath.html#XML_XPATH_NOVAR">XML_XPATH_NOVAR</a><br /> </dd><dt>force</dt><dd><a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br /> <a href="html/libxml-xmlerror.html#xmlSetGenericErrorFunc">xmlSetGenericErrorFunc</a><br /> </dd><dt>forced</dt><dd><a href="html/libxml-valid.html#xmlValidGetValidElements">xmlValidGetValidElements</a><br /> @@ -281,6 +258,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-tree.html#xmlNodeListGetString">xmlNodeListGetString</a><br /> <a href="html/libxml-pattern.html#xmlPatterncompile">xmlPatterncompile</a><br /> <a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br /> +</dd><dt>formal</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_EXPR_ENABLED">LIBXML_EXPR_ENABLED</a><br /> </dd><dt>formatted</dt><dd><a href="html/libxml-xmlwriter.html#xmlTextWriterWriteFormatAttribute">xmlTextWriterWriteFormatAttribute</a><br /> <a href="html/libxml-xmlwriter.html#xmlTextWriterWriteFormatAttributeNS">xmlTextWriterWriteFormatAttributeNS</a><br /> <a href="html/libxml-xmlwriter.html#xmlTextWriterWriteFormatCDATA">xmlTextWriterWriteFormatCDATA</a><br /> @@ -333,8 +311,10 @@ A:link, A:visited, A:active { text-decoration: underline } </dd><dt>fragment</dt><dd><a href="html/libxml-uri.html#_xmlURI">_xmlURI</a><br /> <a href="html/libxml-tree.html#xmlNewDocFragment">xmlNewDocFragment</a><br /> <a href="html/libxml-uri.html#xmlParseURI">xmlParseURI</a><br /> +<a href="html/libxml-uri.html#xmlParseURIRaw">xmlParseURIRaw</a><br /> <a href="html/libxml-uri.html#xmlParseURIReference">xmlParseURIReference</a><br /> <a href="html/libxml-parserInternals.html#xmlPushInput">xmlPushInput</a><br /> +</dd><dt>fragments</dt><dd><a href="html/libxml-uri.html#xmlParseURIRaw">xmlParseURIRaw</a><br /> </dd><dt>freeing</dt><dd><a href="html/libxml-uri.html#xmlCanonicPath">xmlCanonicPath</a><br /> <a href="html/libxml-parser.html#xmlParserInputDeallocate">xmlParserInputDeallocate</a><br /> </dd><dt>frees</dt><dd><a href="html/libxml-tree.html#xmlBufferFree">xmlBufferFree</a><br /> @@ -399,9 +379,11 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-relaxng.html#xmlRelaxNGGetValidErrors">xmlRelaxNGGetValidErrors</a><br /> <a href="html/libxml-relaxng.html#xmlRelaxNGSetParserErrors">xmlRelaxNGSetParserErrors</a><br /> <a href="html/libxml-relaxng.html#xmlRelaxNGSetValidErrors">xmlRelaxNGSetValidErrors</a><br /> +<a href="html/libxml-relaxng.html#xmlRelaxNGSetValidStructuredErrors">xmlRelaxNGSetValidStructuredErrors</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaGetValidErrors">xmlSchemaGetValidErrors</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaSetParserErrors">xmlSchemaSetParserErrors</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaSetValidErrors">xmlSchemaSetValidErrors</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaSetValidStructuredErrors">xmlSchemaSetValidStructuredErrors</a><br /> <a href="html/libxml-debugXML.html#xmlShellCmd">xmlShellCmd</a><br /> <a href="html/libxml-parserInternals.html#xmlSwitchEncoding">xmlSwitchEncoding</a><br /> <a href="html/libxml-parserInternals.html#xmlSwitchInputEncoding">xmlSwitchInputEncoding</a><br /> diff --git a/doc/APIchunk16.html b/doc/APIchunk16.html index fcc3552..bb433a9 100644 --- a/doc/APIchunk16.html +++ b/doc/APIchunk16.html @@ -101,10 +101,10 @@ A:link, A:visited, A:active { text-decoration: underline } </dd><dt>generates</dt><dd><a href="html/libxml-xmlregexp.html#xmlRegexpExec">xmlRegexpExec</a><br /> </dd><dt>generating</dt><dd><a href="html/libxml-tree.html#xmlDocDumpFormatMemoryEnc">xmlDocDumpFormatMemoryEnc</a><br /> <a href="html/libxml-tree.html#xmlDocDumpMemoryEnc">xmlDocDumpMemoryEnc</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br /> <a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br /> <a href="html/libxml-xmlregexp.html#xmlRegExecErrInfo">xmlRegExecErrInfo</a><br /> </dd><dt>generic</dt><dd><a href="html/libxml-xmlerror.html#initGenericErrorDefaultFunc">initGenericErrorDefaultFunc</a><br /> -<a href="html/libxml-parser.html#xmlLoadExternalEntity">xmlLoadExternalEntity</a><br /> <a href="html/libxml-debugXML.html#xmlShellCmd">xmlShellCmd</a><br /> <a href="html/libxml-debugXML.html#xmlShellReadlineFunc">xmlShellReadlineFunc</a><br /> </dd><dt>get</dt><dd><a href="html/libxml-parser.html#_xmlSAXHandler">_xmlSAXHandler</a><br /> diff --git a/doc/APIchunk17.html b/doc/APIchunk17.html index 06eda37..b797ffd 100644 --- a/doc/APIchunk17.html +++ b/doc/APIchunk17.html @@ -246,6 +246,9 @@ A:link, A:visited, A:active { text-decoration: underline } </dd><dt>indirectly</dt><dd><a href="html/libxml-parserInternals.html#xmlParseAttribute">xmlParseAttribute</a><br /> <a href="html/libxml-parserInternals.html#xmlParsePEReference">xmlParsePEReference</a><br /> <a href="html/libxml-parserInternals.html#xmlParserHandlePEReference">xmlParserHandlePEReference</a><br /> +</dd><dt>infinite</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br /> </dd><dt>infinity</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathCeilingFunction">xmlXPathCeilingFunction</a><br /> <a href="html/libxml-xpathInternals.html#xmlXPathFloorFunction">xmlXPathFloorFunction</a><br /> <a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br /> @@ -384,12 +387,14 @@ A:link, A:visited, A:active { text-decoration: underline } </dd><dt>insertion</dt><dd><a href="html/libxml-HTMLparser.html#htmlHandleOmittedElem">htmlHandleOmittedElem</a><br /> <a href="html/libxml-valid.html#xmlValidGetValidElements">xmlValidGetValidElements</a><br /> </dd><dt>inspect</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathDebugDumpObject">xmlXPathDebugDumpObject</a><br /> +</dd><dt>instace</dt><dd><a href="html/libxml-schematron.html#xmlSchematronValidateDoc">xmlSchematronValidateDoc</a><br /> </dd><dt>installed</dt><dd><a href="html/libxml-dict.html#xmlDictSize">xmlDictSize</a><br /> <a href="html/libxml-hash.html#xmlHashSize">xmlHashSize</a><br /> </dd><dt>instances</dt><dd><a href="html/libxml-parser.html#_xmlParserInput">_xmlParserInput</a><br /> <a href="html/libxml-parserInternals.html#xmlParseDefaultDecl">xmlParseDefaultDecl</a><br /> <a href="html/libxml-relaxng.html#xmlRelaxNGParse">xmlRelaxNGParse</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaParse">xmlSchemaParse</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronParse">xmlSchematronParse</a><br /> </dd><dt>instead</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_TOPLEVEL">XML_SCHEMAS_ELEM_TOPLEVEL</a><br /> <a href="html/libxml-tree.html#xmlAddChild">xmlAddChild</a><br /> <a href="html/libxml-tree.html#xmlAddNextSibling">xmlAddNextSibling</a><br /> @@ -417,6 +422,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-tree.html#xmlNewPI">xmlNewPI</a><br /> <a href="html/libxml-SAX2.html#xmlSAX2ProcessingInstruction">xmlSAX2ProcessingInstruction</a><br /> </dd><dt>insufficient</dt><dd><a href="html/libxml-uri.html#xmlCanonicPath">xmlCanonicPath</a><br /> +</dd><dt>intact</dt><dd><a href="html/libxml-uri.html#xmlParseURIRaw">xmlParseURIRaw</a><br /> </dd><dt>integer</dt><dd><a href="html/libxml-xmlstring.html#xmlStrcasecmp">xmlStrcasecmp</a><br /> <a href="html/libxml-xmlstring.html#xmlStrcmp">xmlStrcmp</a><br /> <a href="html/libxml-xmlstring.html#xmlStrncasecmp">xmlStrncasecmp</a><br /> @@ -441,16 +447,19 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlreader.html#xmlTextReaderCurrentDoc">xmlTextReaderCurrentDoc</a><br /> <a href="html/libxml-xmlreader.html#xmlTextReaderCurrentNode">xmlTextReaderCurrentNode</a><br /> </dd><dt>interfaces</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_AUTOMATA_ENABLED">LIBXML_AUTOMATA_ENABLED</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_EXPR_ENABLED">LIBXML_EXPR_ENABLED</a><br /> <a href="html/libxml-xmlversion.html#LIBXML_MODULES_ENABLED">LIBXML_MODULES_ENABLED</a><br /> <a href="html/libxml-xmlversion.html#LIBXML_PUSH_ENABLED">LIBXML_PUSH_ENABLED</a><br /> <a href="html/libxml-xmlversion.html#LIBXML_REGEXP_ENABLED">LIBXML_REGEXP_ENABLED</a><br /> <a href="html/libxml-xmlversion.html#LIBXML_SCHEMAS_ENABLED">LIBXML_SCHEMAS_ENABLED</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_SCHEMATRON_ENABLED">LIBXML_SCHEMATRON_ENABLED</a><br /> <a href="html/libxml-xmlversion.html#LIBXML_UNICODE_ENABLED">LIBXML_UNICODE_ENABLED</a><br /> <a href="html/libxml-parserInternals.html#xmlNamespaceParseNCName">xmlNamespaceParseNCName</a><br /> <a href="html/libxml-parserInternals.html#xmlNamespaceParseNSDef">xmlNamespaceParseNSDef</a><br /> <a href="html/libxml-parserInternals.html#xmlNamespaceParseQName">xmlNamespaceParseQName</a><br /> </dd><dt>intern</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderConstString">xmlTextReaderConstString</a><br /> </dd><dt>internally</dt><dd><a href="html/libxml-tree.html#xmlBufferWriteQuotedString">xmlBufferWriteQuotedString</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewCtxt">xmlExpNewCtxt</a><br /> <a href="html/libxml-relaxng.html#xmlRelaxNGNewDocParserCtxt">xmlRelaxNGNewDocParserCtxt</a><br /> <a href="html/libxml-valid.html#xmlRemoveID">xmlRemoveID</a><br /> <a href="html/libxml-valid.html#xmlRemoveRef">xmlRemoveRef</a><br /> diff --git a/doc/APIchunk18.html b/doc/APIchunk18.html index 43fd538..8bc0157 100644 --- a/doc/APIchunk18.html +++ b/doc/APIchunk18.html @@ -54,7 +54,11 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xpathInternals.html#xmlXPathNewParserContext">xmlXPathNewParserContext</a><br /> <a href="html/libxml-xpathInternals.html#xmlXPathNextSelf">xmlXPathNextSelf</a><br /> <a href="html/libxml-xpointer.html#xmlXPtrNewContext">xmlXPtrNewContext</a><br /> -</dd></dl><h2>Letter k:</h2><dl><dt>keep</dt><dd><a href="html/libxml-parser.html#xmlParserInputGrow">xmlParserInputGrow</a><br /> +</dd></dl><h2>Letter k:</h2><dl><dt>keep</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpNewOr">xmlExpNewOr</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewSeq">xmlExpNewSeq</a><br /> +<a href="html/libxml-uri.html#xmlParseURIRaw">xmlParseURIRaw</a><br /> +<a href="html/libxml-parser.html#xmlParserInputGrow">xmlParserInputGrow</a><br /> <a href="html/libxml-parser.html#xmlSubstituteEntitiesDefault">xmlSubstituteEntitiesDefault</a><br /> <a href="html/libxml-xmlreader.html#xmlTextReaderPreserve">xmlTextReaderPreserve</a><br /> <a href="html/libxml-xmlreader.html#xmlTextReaderPreservePattern">xmlTextReaderPreservePattern</a><br /> @@ -106,6 +110,9 @@ A:link, A:visited, A:active { text-decoration: underline } </dd><dt>language</dt><dd><a href="html/libxml-tree.html#xmlNodeGetLang">xmlNodeGetLang</a><br /> <a href="html/libxml-tree.html#xmlNodeSetLang">xmlNodeSetLang</a><br /> <a href="html/libxml-xpathInternals.html#xmlXPathLangFunction">xmlXPathLangFunction</a><br /> +</dd><dt>languages</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpGetStart">xmlExpGetStart</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpSubsume">xmlExpSubsume</a><br /> </dd><dt>large</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> <a href="html/libxml-parser.html#_xmlParserInput">_xmlParserInput</a><br /> </dd><dt>largest</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathFloorFunction">xmlXPathFloorFunction</a><br /> @@ -143,12 +150,15 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br /> </dd><dt>least</dt><dd><a href="html/libxml-encoding.html#xmlDetectCharEncoding">xmlDetectCharEncoding</a><br /> <a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br /> -</dd><dt>left</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderGetRemainder">xmlTextReaderGetRemainder</a><br /> +</dd><dt>left</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpNewOr">xmlExpNewOr</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewSeq">xmlExpNewSeq</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderGetRemainder">xmlTextReaderGetRemainder</a><br /> </dd><dt>legacy</dt><dd><a href="html/libxml-HTMLparser.html#htmlNodeStatus">htmlNodeStatus</a><br /> </dd><dt>len</dt><dd><a href="html/libxml-tree.html#xmlBufferAdd">xmlBufferAdd</a><br /> <a href="html/libxml-tree.html#xmlBufferAddHead">xmlBufferAddHead</a><br /> <a href="html/libxml-xmlstring.html#xmlCharStrndup">xmlCharStrndup</a><br /> <a href="html/libxml-parserInternals.html#xmlDecodeEntities">xmlDecodeEntities</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpStringDerive">xmlExpStringDerive</a><br /> <a href="html/libxml-parser.html#xmlGetFeaturesList">xmlGetFeaturesList</a><br /> <a href="html/libxml-xmlstring.html#xmlGetUTF8Char">xmlGetUTF8Char</a><br /> <a href="html/libxml-tree.html#xmlNewDocTextLen">xmlNewDocTextLen</a><br /> @@ -159,11 +169,15 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlstring.html#xmlStrndup">xmlStrndup</a><br /> <a href="html/libxml-xmlstring.html#xmlUTF8Strndup">xmlUTF8Strndup</a><br /> <a href="html/libxml-xmlstring.html#xmlUTF8Strsize">xmlUTF8Strsize</a><br /> -</dd><dt>lenght</dt><dd><a href="html/libxml-relaxng.html#xmlRelaxNGValidatePushCData">xmlRelaxNGValidatePushCData</a><br /> +</dd><dt>lenght</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpGetLanguage">xmlExpGetLanguage</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpGetStart">xmlExpGetStart</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewAtom">xmlExpNewAtom</a><br /> +<a href="html/libxml-relaxng.html#xmlRelaxNGValidatePushCData">xmlRelaxNGValidatePushCData</a><br /> <a href="html/libxml-tree.html#xmlSplitQName3">xmlSplitQName3</a><br /> <a href="html/libxml-valid.html#xmlValidatePushCData">xmlValidatePushCData</a><br /> </dd><dt>length-1</dt><dd><a href="html/libxml-xpath.html#xmlXPathNodeSetItem">xmlXPathNodeSetItem</a><br /> -</dd><dt>less</dt><dd><a href="html/libxml-xmlsave.html#xmlSaveToFilename">xmlSaveToFilename</a><br /> +</dd><dt>less</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br /> +<a href="html/libxml-xmlsave.html#xmlSaveToFilename">xmlSaveToFilename</a><br /> <a href="html/libxml-xpathInternals.html#xmlXPathCeilingFunction">xmlXPathCeilingFunction</a><br /> <a href="html/libxml-xpathInternals.html#xmlXPathCompareValues">xmlXPathCompareValues</a><br /> <a href="html/libxml-xpathInternals.html#xmlXPathSubstringFunction">xmlXPathSubstringFunction</a><br /> @@ -200,12 +214,14 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-tree.html#xmlValidateQName">xmlValidateQName</a><br /> </dd><dt>lib</dt><dd><a href="html/libxml-xmlversion.html#xmlCheckVersion">xmlCheckVersion</a><br /> </dd><dt>libc</dt><dd><a href="html/libxml-xmlmemory.html#DEBUG_MEMORY">DEBUG_MEMORY</a><br /> -</dd><dt>libraries</dt><dd><a href="html/libxml-relaxng.html#xmlRelaxNGInitTypes">xmlRelaxNGInitTypes</a><br /> +</dd><dt>libraries</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_MODULE_EXTENSION">LIBXML_MODULE_EXTENSION</a><br /> +<a href="html/libxml-relaxng.html#xmlRelaxNGInitTypes">xmlRelaxNGInitTypes</a><br /> </dd><dt>library</dt><dd><a href="html/libxml-xmlerror.html#_xmlError">_xmlError</a><br /> <a href="html/libxml-schemasInternals.html#_xmlSchema">_xmlSchema</a><br /> <a href="html/libxml-xmlmemory.html#xmlCleanupMemory">xmlCleanupMemory</a><br /> <a href="html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a><br /> <a href="html/libxml-threads.html#xmlCleanupThreads">xmlCleanupThreads</a><br /> +<a href="html/libxml-parser.html#xmlHasFeature">xmlHasFeature</a><br /> <a href="html/libxml-threads.html#xmlInitThreads">xmlInitThreads</a><br /> <a href="html/libxml-globals.html#xmlInitializeGlobalState">xmlInitializeGlobalState</a><br /> <a href="html/libxml-threads.html#xmlLockLibrary">xmlLockLibrary</a><br /> @@ -245,6 +261,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-threads.html#xmlRMutexUnlock">xmlRMutexUnlock</a><br /> <a href="html/libxml-threads.html#xmlUnlockLibrary">xmlUnlockLibrary</a><br /> </dd><dt>lifetime</dt><dd><a href="html/libxml-tree.html#xmlBufferCreateStatic">xmlBufferCreateStatic</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpCtxtNbCons">xmlExpCtxtNbCons</a><br /> </dd><dt>like</dt><dd><a href="html/libxml-parserInternals.html#IS_CHAR_CH">IS_CHAR_CH</a><br /> <a href="html/libxml-parserInternals.html#IS_DIGIT_CH">IS_DIGIT_CH</a><br /> <a href="html/libxml-parserInternals.html#IS_EXTENDER_CH">IS_EXTENDER_CH</a><br /> @@ -266,6 +283,7 @@ A:link, A:visited, A:active { text-decoration: underline } </dd><dt>limited</dt><dd><a href="html/libxml-HTMLparser.html#_htmlElemDesc">_htmlElemDesc</a><br /> </dd><dt>linear</dt><dd><a href="html/libxml-HTMLparser.html#htmlEntityLookup">htmlEntityLookup</a><br /> <a href="html/libxml-HTMLparser.html#htmlEntityValueLookup">htmlEntityValueLookup</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br /> </dd><dt>linked</dt><dd><a href="html/libxml-schemasInternals.html#_xmlSchemaAttributeLink">_xmlSchemaAttributeLink</a><br /> <a href="html/libxml-schemasInternals.html#_xmlSchemaFacetLink">_xmlSchemaFacetLink</a><br /> <a href="html/libxml-schemasInternals.html#_xmlSchemaTypeLink">_xmlSchemaTypeLink</a><br /> @@ -318,6 +336,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-nanohttp.html#xmlNanoHTTPOpenRedir">xmlNanoHTTPOpenRedir</a><br /> <a href="html/libxml-relaxng.html#xmlRelaxNGNewParserCtxt">xmlRelaxNGNewParserCtxt</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaNewParserCtxt">xmlSchemaNewParserCtxt</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronNewParserCtxt">xmlSchematronNewParserCtxt</a><br /> <a href="html/libxml-parser.html#xmlSetFeature">xmlSetFeature</a><br /> <a href="html/libxml-xmlstring.html#xmlUTF8Strloc">xmlUTF8Strloc</a><br /> <a href="html/libxml-xpointer.html#xmlXPtrLocationSetAdd">xmlXPtrLocationSetAdd</a><br /> @@ -372,6 +391,7 @@ A:link, A:visited, A:active { text-decoration: underline } </dd><dt>lossless</dt><dd><a href="html/libxml-xmlIO.html#xmlOutputBufferWrite">xmlOutputBufferWrite</a><br /> <a href="html/libxml-xmlIO.html#xmlOutputBufferWriteEscape">xmlOutputBufferWriteEscape</a><br /> <a href="html/libxml-xmlIO.html#xmlOutputBufferWriteString">xmlOutputBufferWriteString</a><br /> +</dd><dt>lower</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br /> </dd><dt>lowercase</dt><dd><a href="html/libxml-HTMLparser.html#htmlTagLookup">htmlTagLookup</a><br /> <a href="html/libxml-valid.html#xmlIsRef">xmlIsRef</a><br /> </dd></dl><h2 align="center"><a href="APIchunk0.html">A-B</a> diff --git a/doc/APIchunk19.html b/doc/APIchunk19.html index db7fbf2..cecaf32 100644 --- a/doc/APIchunk19.html +++ b/doc/APIchunk19.html @@ -43,6 +43,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlwriter.html#xmlTextWriterWriteProcessingInstruction">xmlTextWriterWriteProcessingInstruction</a><br /> </dd><dt>made</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_ISO8859X_ENABLED">LIBXML_ISO8859X_ENABLED</a><br /> <a href="html/libxml-encoding.html#xmlCharEncOutFunc">xmlCharEncOutFunc</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br /> <a href="html/libxml-tree.html#xmlNodeListGetRawString">xmlNodeListGetRawString</a><br /> <a href="html/libxml-tree.html#xmlNodeListGetString">xmlNodeListGetString</a><br /> <a href="html/libxml-parserInternals.html#xmlSetEntityReferenceFunc">xmlSetEntityReferenceFunc</a><br /> @@ -74,7 +75,8 @@ A:link, A:visited, A:active { text-decoration: underline } </dd><dt>manages</dt><dd><a href="html/libxml-tree.html#xmlBufferWriteCHAR">xmlBufferWriteCHAR</a><br /> </dd><dt>mandatory</dt><dd><a href="html/libxml-parserInternals.html#xmlParseTextDecl">xmlParseTextDecl</a><br /> </dd><dt>manipulated</dt><dd><a href="html/libxml-threads.html#xmlNewRMutex">xmlNewRMutex</a><br /> -</dd><dt>manipulating</dt><dd><a href="html/libxml-catalog.html#xmlLoadSGMLSuperCatalog">xmlLoadSGMLSuperCatalog</a><br /> +</dd><dt>manipulating</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpNewCtxt">xmlExpNewCtxt</a><br /> +<a href="html/libxml-catalog.html#xmlLoadSGMLSuperCatalog">xmlLoadSGMLSuperCatalog</a><br /> </dd><dt>manipulation</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_TREE_ENABLED">LIBXML_TREE_ENABLED</a><br /> </dd><dt>many</dt><dd><a href="html/libxml-parser.html#_xmlParserInput">_xmlParserInput</a><br /> <a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br /> @@ -128,6 +130,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xpathInternals.html#xmlXPathIdFunction">xmlXPathIdFunction</a><br /> </dd><dt>max</dt><dd><a href="html/libxml-xpath.html#_xmlXPathContext">_xmlXPathContext</a><br /> <a href="html/libxml-xpath.html#_xmlXPathParserContext">_xmlXPathParserContext</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br /> <a href="html/libxml-tree.html#xmlGetCompressMode">xmlGetCompressMode</a><br /> <a href="html/libxml-tree.html#xmlGetDocCompressMode">xmlGetDocCompressMode</a><br /> <a href="html/libxml-xmlIO.html#xmlOutputBufferCreateFilename">xmlOutputBufferCreateFilename</a><br /> @@ -143,8 +146,12 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlautomata.html#xmlAutomataNewOnceTrans">xmlAutomataNewOnceTrans</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewOnceTrans2">xmlAutomataNewOnceTrans2</a><br /> <a href="html/libxml-xmlstring.html#xmlCheckUTF8">xmlCheckUTF8</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpMaxToken">xmlExpMaxToken</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewCtxt">xmlExpNewCtxt</a><br /> <a href="html/libxml-pattern.html#xmlPatternMaxDepth">xmlPatternMaxDepth</a><br /> -</dd><dt>means</dt><dd><a href="html/libxml-xmlerror.html#xmlSetGenericErrorFunc">xmlSetGenericErrorFunc</a><br /> +</dd><dt>mean</dt><dd><a href="html/libxml-pattern.html#xmlPatternMinDepth">xmlPatternMinDepth</a><br /> +</dd><dt>means</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br /> +<a href="html/libxml-xmlerror.html#xmlSetGenericErrorFunc">xmlSetGenericErrorFunc</a><br /> <a href="html/libxml-xmlerror.html#xmlSetStructuredErrorFunc">xmlSetStructuredErrorFunc</a><br /> <a href="html/libxml-pattern.html#xmlStreamPush">xmlStreamPush</a><br /> <a href="html/libxml-pattern.html#xmlStreamPushAttr">xmlStreamPushAttr</a><br /> @@ -214,9 +221,11 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlreader.html#xmlTextReaderGetRemainder">xmlTextReaderGetRemainder</a><br /> </dd><dt>might</dt><dd><a href="html/libxml-tree.html#xmlNewTextChild">xmlNewTextChild</a><br /> </dd><dt>migrate</dt><dd><a href="html/libxml-entities.html#xmlEncodeEntities">xmlEncodeEntities</a><br /> +</dd><dt>min</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br /> </dd><dt>minLength</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacet">xmlSchemaValidateLengthFacet</a><br /> <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacetWhtsp">xmlSchemaValidateLengthFacetWhtsp</a><br /> </dd><dt>minimal</dt><dd><a href="html/libxml-xmlautomata.html#xmlAutomataNewCounter">xmlAutomataNewCounter</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br /> </dd><dt>minimum</dt><dd><a href="html/libxml-xmlautomata.html#xmlAutomataNewCountTrans">xmlAutomataNewCountTrans</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewCountTrans2">xmlAutomataNewCountTrans2</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewOnceTrans">xmlAutomataNewOnceTrans</a><br /> @@ -224,6 +233,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-tree.html#xmlBufferGrow">xmlBufferGrow</a><br /> <a href="html/libxml-tree.html#xmlBufferResize">xmlBufferResize</a><br /> <a href="html/libxml-xmlstring.html#xmlGetUTF8Char">xmlGetUTF8Char</a><br /> +<a href="html/libxml-pattern.html#xmlPatternMinDepth">xmlPatternMinDepth</a><br /> </dd><dt>minus</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br /> </dd><dt>minute</dt><dd><a href="html/libxml-nanoftp.html#ftpListCallback">ftpListCallback</a><br /> </dd><dt>misleading</dt><dd><a href="html/libxml-parserInternals.html#xmlParsePEReference">xmlParsePEReference</a><br /> @@ -256,6 +266,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-tree.html#xmlNodeSetContent">xmlNodeSetContent</a><br /> <a href="html/libxml-tree.html#xmlNodeSetContentLen">xmlNodeSetContentLen</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaNewDocParserCtxt">xmlSchemaNewDocParserCtxt</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronNewDocParserCtxt">xmlSchematronNewDocParserCtxt</a><br /> </dd><dt>modifies</dt><dd><a href="html/libxml-relaxng.html#xmlRelaxNGNewDocParserCtxt">xmlRelaxNGNewDocParserCtxt</a><br /> </dd><dt>modify</dt><dd><a href="html/libxml-debugXML.html#xmlShell">xmlShell</a><br /> </dd><dt>module</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_DEBUG_ENABLED">LIBXML_DEBUG_ENABLED</a><br /> @@ -267,11 +278,13 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlmodule.html#xmlModuleSymbol">xmlModuleSymbol</a><br /> <a href="html/libxml-xmlIO.html#xmlOutputMatchCallback">xmlOutputMatchCallback</a><br /> <a href="html/libxml-xmlerror.html#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a><br /> +</dd><dt>modules</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_MODULE_EXTENSION">LIBXML_MODULE_EXTENSION</a><br /> </dd><dt>moment</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapReconcileNamespaces">xmlDOMWrapReconcileNamespaces</a><br /> <a href="html/libxml-tree.html#xmlDOMWrapRemoveNode">xmlDOMWrapRemoveNode</a><br /> </dd><dt>month</dt><dd><a href="html/libxml-nanoftp.html#ftpListCallback">ftpListCallback</a><br /> </dd><dt>more</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_NAMELEN">XML_MAX_NAMELEN</a><br /> -<a href="html/libxml-parser.html#xmlLoadExternalEntity">xmlLoadExternalEntity</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpGetLanguage">xmlExpGetLanguage</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpGetStart">xmlExpGetStart</a><br /> <a href="html/libxml-parserInternals.html#xmlParseAttributeType">xmlParseAttributeType</a><br /> <a href="html/libxml-parserInternals.html#xmlParseElementDecl">xmlParseElementDecl</a><br /> <a href="html/libxml-parserInternals.html#xmlParseElementMixedContentDecl">xmlParseElementMixedContentDecl</a><br /> diff --git a/doc/APIchunk2.html b/doc/APIchunk2.html index 3127bc7..b0f3780 100644 --- a/doc/APIchunk2.html +++ b/doc/APIchunk2.html @@ -108,8 +108,11 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlschemas.html#xmlSchemaFree">xmlSchemaFree</a><br /> <a href="html/libxml-xmlschemastypes.html#xmlSchemaFreeFacet">xmlSchemaFreeFacet</a><br /> <a href="html/libxml-schemasInternals.html#xmlSchemaFreeType">xmlSchemaFreeType</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronFree">xmlSchematronFree</a><br /> </dd><dt>Deallocates</dt><dd><a href="html/libxml-schemasInternals.html#xmlSchemaFreeWildcard">xmlSchemaFreeWildcard</a><br /> </dd><dt>Debugging</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_DEBUG_ENABLED">LIBXML_DEBUG_ENABLED</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpCtxtNbCons">xmlExpCtxtNbCons</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpCtxtNbNodes">xmlExpCtxtNbNodes</a><br /> </dd><dt>Declaration</dt><dd><a href="html/libxml-parserInternals.html#xmlParseElementDecl">xmlParseElementDecl</a><br /> <a href="html/libxml-parserInternals.html#xmlParseMarkupDecl">xmlParseMarkupDecl</a><br /> <a href="html/libxml-parserInternals.html#xmlParseSDDecl">xmlParseSDDecl</a><br /> @@ -140,6 +143,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-valid.html#xmlSprintfElementContent">xmlSprintfElementContent</a><br /> </dd><dt>Depth</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> <a href="html/libxml-valid.html#_xmlValidCtxt">_xmlValidCtxt</a><br /> +</dd><dt>Dereference</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpFree">xmlExpFree</a><br /> </dd><dt>DeregisterNodeFunc</dt><dd><a href="html/libxml-globals.html#xmlDeregisterNodeDefault">xmlDeregisterNodeDefault</a><br /> </dd><dt>Deseret</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsDeseret">xmlUCSIsDeseret</a><br /> </dd><dt>Determine</dt><dd><a href="html/libxml-HTMLtree.html#htmlIsBooleanAttr">htmlIsBooleanAttr</a><br /> @@ -358,11 +362,13 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xpathInternals.html#xmlXPathEvaluatePredicateResult">xmlXPathEvaluatePredicateResult</a><br /> <a href="html/libxml-xpointer.html#xmlXPtrEval">xmlXPtrEval</a><br /> <a href="html/libxml-xpointer.html#xmlXPtrEvalRangePredicate">xmlXPtrEvalRangePredicate</a><br /> -</dd><dt>Evaluates</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaIsBuiltInTypeFacet">xmlSchemaIsBuiltInTypeFacet</a><br /> +</dd><dt>Evaluates</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaIsBuiltInTypeFacet">xmlSchemaIsBuiltInTypeFacet</a><br /> </dd><dt>Everything</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> <a href="html/libxml-SAX.html#setDocumentLocator">setDocumentLocator</a><br /> <a href="html/libxml-parser.html#setDocumentLocatorSAXFunc">setDocumentLocatorSAXFunc</a><br /> <a href="html/libxml-SAX2.html#xmlSAX2SetDocumentLocator">xmlSAX2SetDocumentLocator</a><br /> +</dd><dt>Examines</dt><dd><a href="html/libxml-parser.html#xmlHasFeature">xmlHasFeature</a><br /> </dd><dt>Exclusive</dt><dd><a href="html/libxml-c14n.html#xmlC14NDocDumpMemory">xmlC14NDocDumpMemory</a><br /> <a href="html/libxml-c14n.html#xmlC14NDocSave">xmlC14NDocSave</a><br /> <a href="html/libxml-c14n.html#xmlC14NDocSaveTo">xmlC14NDocSaveTo</a><br /> @@ -394,7 +400,6 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-catalog.html#xmlCatalogLocalResolve">xmlCatalogLocalResolve</a><br /> <a href="html/libxml-catalog.html#xmlCatalogResolve">xmlCatalogResolve</a><br /> <a href="html/libxml-parser.html#xmlExternalEntityLoader">xmlExternalEntityLoader</a><br /> -<a href="html/libxml-parser.html#xmlLoadExternalEntity">xmlLoadExternalEntity</a><br /> <a href="html/libxml-parserInternals.html#xmlParseAttribute">xmlParseAttribute</a><br /> <a href="html/libxml-parser.html#xmlParseDTD">xmlParseDTD</a><br /> <a href="html/libxml-parserInternals.html#xmlParseExternalID">xmlParseExternalID</a><br /> diff --git a/doc/APIchunk20.html b/doc/APIchunk20.html index 198ff0d..01db33a 100644 --- a/doc/APIchunk20.html +++ b/doc/APIchunk20.html @@ -54,7 +54,8 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xinclude.html#XINCLUDE_OLD_NS">XINCLUDE_OLD_NS</a><br /> <a href="html/libxml-parserInternals.html#xmlParseAttribute">xmlParseAttribute</a><br /> <a href="html/libxml-parserInternals.html#xmlParseStartTag">xmlParseStartTag</a><br /> -</dd><dt>namespaces</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +</dd><dt>namespaces</dt><dd><a href="html/libxml-xpath.html#XML_XPATH_CHECKNS">XML_XPATH_CHECKNS</a><br /> +<a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> <a href="html/libxml-schemasInternals.html#_xmlSchemaWildcard">_xmlSchemaWildcard</a><br /> <a href="html/libxml-xpath.html#_xmlXPathContext">_xmlXPathContext</a><br /> <a href="html/libxml-c14n.html#xmlC14NDocDumpMemory">xmlC14NDocDumpMemory</a><br /> @@ -172,6 +173,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlreader.html#xmlReaderNewFile">xmlReaderNewFile</a><br /> </dd><dt>nice</dt><dd><a href="html/libxml-uri.html#xmlBuildRelativeURI">xmlBuildRelativeURI</a><br /> </dd><dt>nillable</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_NILLABLE">XML_SCHEMAS_ELEM_NILLABLE</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpIsNillable">xmlExpIsNillable</a><br /> </dd><dt>nod</dt><dd><a href="html/libxml-parserInternals.html#xmlEntityReferenceFunc">xmlEntityReferenceFunc</a><br /> </dd><dt>node-</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapRemoveNode">xmlDOMWrapRemoveNode</a><br /> <a href="html/libxml-valid.html#xmlValidGetValidElements">xmlValidGetValidElements</a><br /> @@ -209,6 +211,7 @@ A:link, A:visited, A:active { text-decoration: underline } </dd><dt>non-validating</dt><dd><a href="html/libxml-parserInternals.html#xmlParseAttValue">xmlParseAttValue</a><br /> <a href="html/libxml-parserInternals.html#xmlParseEntityRef">xmlParseEntityRef</a><br /> </dd><dt>non-zero</dt><dd><a href="html/libxml-SAX.html#initxmlDefaultSAXHandler">initxmlDefaultSAXHandler</a><br /> +<a href="html/libxml-parser.html#xmlHasFeature">xmlHasFeature</a><br /> <a href="html/libxml-parserInternals.html#xmlIsLetter">xmlIsLetter</a><br /> <a href="html/libxml-SAX2.html#xmlSAX2InitDefaultSAXHandler">xmlSAX2InitDefaultSAXHandler</a><br /> <a href="html/libxml-xpathInternals.html#xmlXPathBooleanFunction">xmlXPathBooleanFunction</a><br /> diff --git a/doc/APIchunk21.html b/doc/APIchunk21.html index 8a44503..6789f9d 100644 --- a/doc/APIchunk21.html +++ b/doc/APIchunk21.html @@ -190,6 +190,9 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlIO.html#xmlParserInputBufferPush">xmlParserInputBufferPush</a><br /> </dd><dt>operation</dt><dd><a href="html/libxml-uri.html#xmlBuildRelativeURI">xmlBuildRelativeURI</a><br /> <a href="html/libxml-catalog.html#xmlCatalogSetDebug">xmlCatalogSetDebug</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewOr">xmlExpNewOr</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewSeq">xmlExpNewSeq</a><br /> <a href="html/libxml-xmlreader.html#xmlTextReaderConstValue">xmlTextReaderConstValue</a><br /> <a href="html/libxml-xpathInternals.html#xmlXPathAddValues">xmlXPathAddValues</a><br /> <a href="html/libxml-xpathInternals.html#xmlXPathCompareValues">xmlXPathCompareValues</a><br /> @@ -206,8 +209,10 @@ A:link, A:visited, A:active { text-decoration: underline } </dd><dt>operations</dt><dd><a href="html/libxml-xmlmodule.html#xmlModuleClose">xmlModuleClose</a><br /> <a href="html/libxml-xmlmodule.html#xmlModuleFree">xmlModuleFree</a><br /> <a href="html/libxml-tree.html#xmlReconciliateNs">xmlReconciliateNs</a><br /> -</dd><dt>operator</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathCompareValues">xmlXPathCompareValues</a><br /> -</dd><dt>operators</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathAddValues">xmlXPathAddValues</a><br /> +</dd><dt>operator</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathCompareValues">xmlXPathCompareValues</a><br /> +</dd><dt>operators</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathAddValues">xmlXPathAddValues</a><br /> <a href="html/libxml-xpathInternals.html#xmlXPathDivValues">xmlXPathDivValues</a><br /> <a href="html/libxml-xpathInternals.html#xmlXPathModValues">xmlXPathModValues</a><br /> <a href="html/libxml-xpathInternals.html#xmlXPathMultValues">xmlXPathMultValues</a><br /> @@ -224,6 +229,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-parser.html#xmlCreatePushParserCtxt">xmlCreatePushParserCtxt</a><br /> <a href="html/libxml-parser.html#xmlCtxtResetPush">xmlCtxtResetPush</a><br /> <a href="html/libxml-tree.html#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewCtxt">xmlExpNewCtxt</a><br /> <a href="html/libxml-list.html#xmlListCreate">xmlListCreate</a><br /> <a href="html/libxml-nanoftp.html#xmlNanoFTPList">xmlNanoFTPList</a><br /> <a href="html/libxml-tree.html#xmlNewChild">xmlNewChild</a><br /> @@ -277,6 +283,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-encoding.html#xmlGetEncodingAlias">xmlGetEncodingAlias</a><br /> <a href="html/libxml-list.html#xmlListMerge">xmlListMerge</a><br /> <a href="html/libxml-parserInternals.html#xmlParseEntityValue">xmlParseEntityValue</a><br /> +<a href="html/libxml-uri.html#xmlParseURIRaw">xmlParseURIRaw</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaSAXPlug">xmlSchemaSAXPlug</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaSAXUnplug">xmlSchemaSAXUnplug</a><br /> <a href="html/libxml-debugXML.html#xmlShellSave">xmlShellSave</a><br /> @@ -288,6 +295,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-HTMLparser.html#htmlAutoCloseTag">htmlAutoCloseTag</a><br /> <a href="html/libxml-HTMLparser.html#htmlIsAutoClosed">htmlIsAutoClosed</a><br /> <a href="html/libxml-HTMLparser.html#htmlNodeStatus">htmlNodeStatus</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewNegTrans">xmlAutomataNewNegTrans</a><br /> <a href="html/libxml-catalog.html#xmlCatalogAdd">xmlCatalogAdd</a><br /> <a href="html/libxml-xmlmemory.html#xmlGcMemSetup">xmlGcMemSetup</a><br /> <a href="html/libxml-catalog.html#xmlLoadACatalog">xmlLoadACatalog</a><br /> @@ -328,6 +336,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlwriter.html#xmlNewTextWriterPushParser">xmlNewTextWriterPushParser</a><br /> <a href="html/libxml-xmlwriter.html#xmlNewTextWriterTree">xmlNewTextWriterTree</a><br /> </dd><dt>outside</dt><dd><a href="html/libxml-tree.html#xmlReconciliateNs">xmlReconciliateNs</a><br /> +</dd><dt>over</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpCtxtNbCons">xmlExpCtxtNbCons</a><br /> </dd><dt>overflow</dt><dd><a href="html/libxml-parser.html#_xmlParserInput">_xmlParserInput</a><br /> </dd><dt>override</dt><dd><a href="html/libxml-SAX.html#resolveEntity">resolveEntity</a><br /> <a href="html/libxml-parser.html#resolveEntitySAXFunc">resolveEntitySAXFunc</a><br /> diff --git a/doc/APIchunk22.html b/doc/APIchunk22.html index b1a6e91..42008e7 100644 --- a/doc/APIchunk22.html +++ b/doc/APIchunk22.html @@ -89,6 +89,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlreader.html#xmlTextReaderSetErrorHandler">xmlTextReaderSetErrorHandler</a><br /> <a href="html/libxml-xmlreader.html#xmlTextReaderSetStructuredErrorHandler">xmlTextReaderSetStructuredErrorHandler</a><br /> </dd><dt>passed</dt><dd><a href="html/libxml-xpathInternals.html#CHECK_ARITY">CHECK_ARITY</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewNegTrans">xmlAutomataNewNegTrans</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewTransition">xmlAutomataNewTransition</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewTransition2">xmlAutomataNewTransition2</a><br /> <a href="html/libxml-hash.html#xmlHashScan">xmlHashScan</a><br /> @@ -132,6 +133,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-pattern.html#xmlPatternGetStreamCtxt">xmlPatternGetStreamCtxt</a><br /> <a href="html/libxml-pattern.html#xmlPatternMatch">xmlPatternMatch</a><br /> <a href="html/libxml-pattern.html#xmlPatternMaxDepth">xmlPatternMaxDepth</a><br /> +<a href="html/libxml-pattern.html#xmlPatternMinDepth">xmlPatternMinDepth</a><br /> <a href="html/libxml-pattern.html#xmlPatternStreamable">xmlPatternStreamable</a><br /> <a href="html/libxml-pattern.html#xmlPatterncompile">xmlPatterncompile</a><br /> <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacetWhtsp">xmlSchemaValidateFacetWhtsp</a><br /> @@ -157,6 +159,7 @@ A:link, A:visited, A:active { text-decoration: underline } </dd><dt>piece</dt><dd><a href="html/libxml-tree.html#xmlNewChild">xmlNewChild</a><br /> <a href="html/libxml-tree.html#xmlNewDocNode">xmlNewDocNode</a><br /> <a href="html/libxml-tree.html#xmlNewDocNodeEatName">xmlNewDocNodeEatName</a><br /> +</dd><dt>pieces</dt><dd><a href="html/libxml-uri.html#xmlParseURIRaw">xmlParseURIRaw</a><br /> </dd><dt>place</dt><dd><a href="html/libxml-catalog.html#xmlCatalogAdd">xmlCatalogAdd</a><br /> <a href="html/libxml-xmlerror.html#xmlCopyError">xmlCopyError</a><br /> <a href="html/libxml-xmlmemory.html#xmlGcMemGet">xmlGcMemGet</a><br /> @@ -242,10 +245,12 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-pattern.html#xmlPatternGetStreamCtxt">xmlPatternGetStreamCtxt</a><br /> <a href="html/libxml-pattern.html#xmlPatternMatch">xmlPatternMatch</a><br /> <a href="html/libxml-pattern.html#xmlPatternMaxDepth">xmlPatternMaxDepth</a><br /> +<a href="html/libxml-pattern.html#xmlPatternMinDepth">xmlPatternMinDepth</a><br /> <a href="html/libxml-pattern.html#xmlPatternStreamable">xmlPatternStreamable</a><br /> <a href="html/libxml-xmlregexp.html#xmlRegNewExecCtxt">xmlRegNewExecCtxt</a><br /> <a href="html/libxml-relaxng.html#xmlRelaxNGNewValidCtxt">xmlRelaxNGNewValidCtxt</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaNewValidCtxt">xmlSchemaNewValidCtxt</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronNewValidCtxt">xmlSchematronNewValidCtxt</a><br /> <a href="html/libxml-xmlreader.html#xmlTextReaderRelaxNGSetSchema">xmlTextReaderRelaxNGSetSchema</a><br /> <a href="html/libxml-xmlreader.html#xmlTextReaderSetSchema">xmlTextReaderSetSchema</a><br /> <a href="html/libxml-xpathInternals.html#xmlXPathDebugDumpCompExpr">xmlXPathDebugDumpCompExpr</a><br /> @@ -287,6 +292,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlreader.html#xmlReaderWalker">xmlReaderWalker</a><br /> <a href="html/libxml-relaxng.html#xmlRelaxNGNewDocParserCtxt">xmlRelaxNGNewDocParserCtxt</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaNewDocParserCtxt">xmlSchemaNewDocParserCtxt</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronNewDocParserCtxt">xmlSchematronNewDocParserCtxt</a><br /> </dd><dt>prepend</dt><dd><a href="html/libxml-valid.html#xmlValidGetValidElements">xmlValidGetValidElements</a><br /> </dd><dt>present</dt><dd><a href="html/libxml-tree.html#xmlBufferCreateStatic">xmlBufferCreateStatic</a><br /> <a href="html/libxml-dict.html#xmlDictLookup">xmlDictLookup</a><br /> @@ -379,6 +385,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-parserInternals.html#xmlParseEntityRef">xmlParseEntityRef</a><br /> <a href="html/libxml-relaxng.html#xmlRelaxNGNewDocParserCtxt">xmlRelaxNGNewDocParserCtxt</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaNewDocParserCtxt">xmlSchemaNewDocParserCtxt</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronNewDocParserCtxt">xmlSchematronNewDocParserCtxt</a><br /> <a href="html/libxml-parserInternals.html#xmlSkipBlankChars">xmlSkipBlankChars</a><br /> <a href="html/libxml-parserInternals.html#xmlStringDecodeEntities">xmlStringDecodeEntities</a><br /> <a href="html/libxml-parserInternals.html#xmlStringLenDecodeEntities">xmlStringLenDecodeEntities</a><br /> @@ -483,6 +490,8 @@ A:link, A:visited, A:active { text-decoration: underline } </dd><dt>provides</dt><dd><a href="html/libxml-parser.html#endElementNsSAX2Func">endElementNsSAX2Func</a><br /> <a href="html/libxml-parser.html#startElementNsSAX2Func">startElementNsSAX2Func</a><br /> <a href="html/libxml-parser.html#xmlByteConsumed">xmlByteConsumed</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpCtxtNbCons">xmlExpCtxtNbCons</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpCtxtNbNodes">xmlExpCtxtNbNodes</a><br /> <a href="html/libxml-SAX2.html#xmlSAX2EndElementNs">xmlSAX2EndElementNs</a><br /> <a href="html/libxml-SAX2.html#xmlSAX2StartElementNs">xmlSAX2StartElementNs</a><br /> <a href="html/libxml-xmlreader.html#xmlTextReaderByteConsumed">xmlTextReaderByteConsumed</a><br /> diff --git a/doc/APIchunk23.html b/doc/APIchunk23.html index 5bd99db..a9194f7 100644 --- a/doc/APIchunk23.html +++ b/doc/APIchunk23.html @@ -73,6 +73,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-tree.html#xmlBufferAdd">xmlBufferAdd</a><br /> <a href="html/libxml-tree.html#xmlBufferAddHead">xmlBufferAddHead</a><br /> <a href="html/libxml-chvalid.html#xmlCharInRange">xmlCharInRange</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br /> <a href="html/libxml-xmlreader.html#xmlTextReaderNormalization">xmlTextReaderNormalization</a><br /> <a href="html/libxml-xpath.html#xmlXPathNodeSetItem">xmlXPathNodeSetItem</a><br /> <a href="html/libxml-xpointer.html#xmlXPtrLocationSetAdd">xmlXPtrLocationSetAdd</a><br /> @@ -109,6 +110,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-threads.html#xmlNewRMutex">xmlNewRMutex</a><br /> <a href="html/libxml-threads.html#xmlUnlockLibrary">xmlUnlockLibrary</a><br /> </dd><dt>reachable</dt><dd><a href="html/libxml-pattern.html#xmlPatternMaxDepth">xmlPatternMaxDepth</a><br /> +<a href="html/libxml-pattern.html#xmlPatternMinDepth">xmlPatternMinDepth</a><br /> </dd><dt>reached</dt><dd><a href="html/libxml-xmlregexp.html#xmlRegExecPushString">xmlRegExecPushString</a><br /> <a href="html/libxml-xmlregexp.html#xmlRegExecPushString2">xmlRegExecPushString2</a><br /> </dd><dt>read-only</dt><dd><a href="html/libxml-dict.html#xmlDictCreateSub">xmlDictCreateSub</a><br /> @@ -138,6 +140,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-uri.html#xmlBuildRelativeURI">xmlBuildRelativeURI</a><br /> <a href="html/libxml-entities.html#xmlCreateEntitiesTable">xmlCreateEntitiesTable</a><br /> </dd><dt>reasonable</dt><dd><a href="html/libxml-uri.html#xmlBuildRelativeURI">xmlBuildRelativeURI</a><br /> +</dd><dt>receive</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpDump">xmlExpDump</a><br /> </dd><dt>received</dt><dd><a href="html/libxml-nanoftp.html#ftpDataCallback">ftpDataCallback</a><br /> <a href="html/libxml-nanohttp.html#xmlNanoHTTPReturnCode">xmlNanoHTTPReturnCode</a><br /> </dd><dt>receives</dt><dd><a href="html/libxml-parserInternals.html#xmlParseExternalID">xmlParseExternalID</a><br /> @@ -273,6 +276,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlregexp.html#xmlRegFreeRegexp">xmlRegFreeRegexp</a><br /> <a href="html/libxml-xmlregexp.html#xmlRegNewExecCtxt">xmlRegNewExecCtxt</a><br /> <a href="html/libxml-xmlregexp.html#xmlRegexpPrint">xmlRegexpPrint</a><br /> +</dd><dt>regexps</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br /> </dd><dt>register</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathRegisterVariableLookup">xmlXPathRegisterVariableLookup</a><br /> </dd><dt>registered</dt><dd><a href="html/libxml-xmlerror.html#xmlCtxtGetLastError">xmlCtxtGetLastError</a><br /> <a href="html/libxml-xmlerror.html#xmlCtxtResetLastError">xmlCtxtResetLastError</a><br /> @@ -321,10 +325,14 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlstring.html#xmlUTF8Strloc">xmlUTF8Strloc</a><br /> <a href="html/libxml-xmlstring.html#xmlUTF8Strsub">xmlUTF8Strsub</a><br /> </dd><dt>relativeURI</dt><dd><a href="html/libxml-uri.html#xmlParseURI">xmlParseURI</a><br /> +<a href="html/libxml-uri.html#xmlParseURIRaw">xmlParseURIRaw</a><br /> <a href="html/libxml-uri.html#xmlParseURIReference">xmlParseURIReference</a><br /> </dd><dt>release</dt><dd><a href="html/libxml-parser.html#xmlClearNodeInfoSeq">xmlClearNodeInfoSeq</a><br /> <a href="html/libxml-parser.html#xmlClearParserCtxt">xmlClearParserCtxt</a><br /> <a href="html/libxml-parserInternals.html#xmlDecodeEntities">xmlDecodeEntities</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewOr">xmlExpNewOr</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewSeq">xmlExpNewSeq</a><br /> <a href="html/libxml-threads.html#xmlUnlockLibrary">xmlUnlockLibrary</a><br /> </dd><dt>releases</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderClose">xmlTextReaderClose</a><br /> </dd><dt>reliable</dt><dd><a href="html/libxml-xmlsave.html#xmlSaveToFilename">xmlSaveToFilename</a><br /> @@ -376,6 +384,8 @@ A:link, A:visited, A:active { text-decoration: underline } </dd><dt>removing</dt><dd><a href="html/libxml-catalog.html#xmlLoadSGMLSuperCatalog">xmlLoadSGMLSuperCatalog</a><br /> </dd><dt>rename</dt><dd><a href="html/libxml-xmlerror.html#_xmlError">_xmlError</a><br /> </dd><dt>repeat</dt><dd><a href="html/libxml-xpath.html#xmlXPathAxisFunc">xmlXPathAxisFunc</a><br /> +</dd><dt>repeated</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br /> +</dd><dt>repetition</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br /> </dd><dt>replace</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_FACET_REPLACE">XML_SCHEMAS_FACET_REPLACE</a><br /> <a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_WHITESPACE_REPLACE">XML_SCHEMAS_TYPE_WHITESPACE_REPLACE</a><br /> <a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> @@ -430,6 +440,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-nanohttp.html#xmlNanoHTTPOpenRedir">xmlNanoHTTPOpenRedir</a><br /> <a href="html/libxml-nanohttp.html#xmlNanoHTTPReturnCode">xmlNanoHTTPReturnCode</a><br /> </dd><dt>requested</dt><dd><a href="html/libxml-parser.html#xmlExternalEntityLoader">xmlExternalEntityLoader</a><br /> +<a href="html/libxml-parser.html#xmlHasFeature">xmlHasFeature</a><br /> <a href="html/libxml-valid.html#xmlIsID">xmlIsID</a><br /> <a href="html/libxml-xmlmemory.html#xmlMallocFunc">xmlMallocFunc</a><br /> <a href="html/libxml-xmlmemory.html#xmlReallocFunc">xmlReallocFunc</a><br /> @@ -495,8 +506,11 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-relaxng.html#xmlRelaxNGFreeValidCtxt">xmlRelaxNGFreeValidCtxt</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaFreeParserCtxt">xmlSchemaFreeParserCtxt</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaFreeValidCtxt">xmlSchemaFreeValidCtxt</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronFreeParserCtxt">xmlSchematronFreeParserCtxt</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronFreeValidCtxt">xmlSchematronFreeValidCtxt</a><br /> <a href="html/libxml-xmlreader.html#xmlTextReaderClose">xmlTextReaderClose</a><br /> <a href="html/libxml-xinclude.html#xmlXIncludeSetFlags">xmlXIncludeSetFlags</a><br /> +</dd><dt>respect</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpStringDerive">xmlExpStringDerive</a><br /> </dd><dt>respecting</dt><dd><a href="html/libxml-valid.html#xmlValidGetValidElements">xmlValidGetValidElements</a><br /> </dd><dt>response</dt><dd><a href="html/libxml-nanoftp.html#xmlNanoFTPCheckResponse">xmlNanoFTPCheckResponse</a><br /> <a href="html/libxml-nanoftp.html#xmlNanoFTPGetResponse">xmlNanoFTPGetResponse</a><br /> @@ -558,6 +572,8 @@ A:link, A:visited, A:active { text-decoration: underline } </dd><dt>rewrite</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderGetRemainder">xmlTextReaderGetRemainder</a><br /> </dd><dt>right</dt><dd><a href="html/libxml-xmlautomata.html#xmlAutomataNewCounterTrans">xmlAutomataNewCounterTrans</a><br /> <a href="html/libxml-xmlIO.html#xmlCheckFilename">xmlCheckFilename</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewOr">xmlExpNewOr</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewSeq">xmlExpNewSeq</a><br /> <a href="html/libxml-parserInternals.html#xmlParseCharData">xmlParseCharData</a><br /> <a href="html/libxml-tree.html#xmlSetListDoc">xmlSetListDoc</a><br /> <a href="html/libxml-tree.html#xmlSetTreeDoc">xmlSetTreeDoc</a><br /> diff --git a/doc/APIchunk24.html b/doc/APIchunk24.html index 2d52d0d..986d998 100644 --- a/doc/APIchunk24.html +++ b/doc/APIchunk24.html @@ -129,7 +129,9 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacetWhtsp">xmlSchemaValidateFacetWhtsp</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaValidateFile">xmlSchemaValidateFile</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaValidateStream">xmlSchemaValidateStream</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronNewMemParserCtxt">xmlSchematronNewMemParserCtxt</a><br /> <a href="html/libxml-xmlreader.html#xmlTextReaderSchemaValidate">xmlTextReaderSchemaValidate</a><br /> +</dd><dt>schematron</dt><dd><a href="html/libxml-schematron.html#xmlSchematronValidateDoc">xmlSchematronValidateDoc</a><br /> </dd><dt>scheme</dt><dd><a href="html/libxml-uri.html#_xmlURI">_xmlURI</a><br /> <a href="html/libxml-tree.html#xmlBufferSetAllocationScheme">xmlBufferSetAllocationScheme</a><br /> <a href="html/libxml-tree.html#xmlGetBufferAllocationScheme">xmlGetBufferAllocationScheme</a><br /> @@ -173,7 +175,8 @@ A:link, A:visited, A:active { text-decoration: underline } </dd><dt>selection</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_PATTERN_ENABLED">LIBXML_PATTERN_ENABLED</a><br /> </dd><dt>selects</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathIdFunction">xmlXPathIdFunction</a><br /> </dd><dt>self</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathNextSelf">xmlXPathNextSelf</a><br /> -</dd><dt>semantic</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathNodeSetFreeNs">xmlXPathNodeSetFreeNs</a><br /> +</dd><dt>semantic</dt><dd><a href="html/libxml-xmlautomata.html#xmlAutomataNewNegTrans">xmlAutomataNewNegTrans</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNodeSetFreeNs">xmlXPathNodeSetFreeNs</a><br /> </dd><dt>sense</dt><dd><a href="html/libxml-entities.html#xmlCreateEntitiesTable">xmlCreateEntitiesTable</a><br /> </dd><dt>separated</dt><dd><a href="html/libxml-catalog.html#xmlLoadCatalogs">xmlLoadCatalogs</a><br /> </dd><dt>separately</dt><dd><a href="html/libxml-xmlerror.html#xmlSetGenericErrorFunc">xmlSetGenericErrorFunc</a><br /> @@ -189,6 +192,8 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-encoding.html#xmlCharEncOutFunc">xmlCharEncOutFunc</a><br /> <a href="html/libxml-parser.html#xmlClearNodeInfoSeq">xmlClearNodeInfoSeq</a><br /> <a href="html/libxml-parserInternals.html#xmlCurrentChar">xmlCurrentChar</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewSeq">xmlExpNewSeq</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br /> <a href="html/libxml-xmlstring.html#xmlGetUTF8Char">xmlGetUTF8Char</a><br /> <a href="html/libxml-parser.html#xmlInitNodeInfoSeq">xmlInitNodeInfoSeq</a><br /> <a href="html/libxml-parserInternals.html#xmlParseAttValue">xmlParseAttValue</a><br /> @@ -202,10 +207,12 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlstring.html#xmlUTF8Strsub">xmlUTF8Strsub</a><br /> <a href="html/libxml-xpathInternals.html#xmlXPathIdFunction">xmlXPathIdFunction</a><br /> </dd><dt>sequences</dt><dd><a href="html/libxml-xmlstring.html#xmlCheckUTF8">xmlCheckUTF8</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br /> <a href="html/libxml-parserInternals.html#xmlParseAttValue">xmlParseAttValue</a><br /> <a href="html/libxml-valid.html#xmlValidCtxtNormalizeAttributeValue">xmlValidCtxtNormalizeAttributeValue</a><br /> <a href="html/libxml-valid.html#xmlValidNormalizeAttributeValue">xmlValidNormalizeAttributeValue</a><br /> <a href="html/libxml-xpathInternals.html#xmlXPathNormalizeFunction">xmlXPathNormalizeFunction</a><br /> +</dd><dt>sequqnce</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpIsNillable">xmlExpIsNillable</a><br /> </dd><dt>serialization</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_OUTPUT_ENABLED">LIBXML_OUTPUT_ENABLED</a><br /> <a href="html/libxml-xmlsave.html#xmlSaveToFd">xmlSaveToFd</a><br /> <a href="html/libxml-xmlsave.html#xmlSaveToFilename">xmlSaveToFilename</a><br /> @@ -256,7 +263,8 @@ A:link, A:visited, A:active { text-decoration: underline } </dd><dt>shadowed</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a><br /> <a href="html/libxml-tree.html#xmlDOMWrapReconcileNamespaces">xmlDOMWrapReconcileNamespaces</a><br /> </dd><dt>shall</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> -</dd><dt>shared</dt><dd><a href="html/libxml-catalog.html#xmlCatalogAdd">xmlCatalogAdd</a><br /> +</dd><dt>shared</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_MODULE_EXTENSION">LIBXML_MODULE_EXTENSION</a><br /> +<a href="html/libxml-catalog.html#xmlCatalogAdd">xmlCatalogAdd</a><br /> <a href="html/libxml-xmlmodule.html#xmlModuleFree">xmlModuleFree</a><br /> <a href="html/libxml-xmlmodule.html#xmlModuleOpen">xmlModuleOpen</a><br /> </dd><dt>shares</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathHasSameNodes">xmlXPathHasSameNodes</a><br /> @@ -398,6 +406,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xinclude.html#xmlXIncludeProcessNode">xmlXIncludeProcessNode</a><br /> <a href="html/libxml-xinclude.html#xmlXIncludeProcessTree">xmlXIncludeProcessTree</a><br /> <a href="html/libxml-xinclude.html#xmlXIncludeProcessTreeFlags">xmlXIncludeProcessTreeFlags</a><br /> +</dd><dt>sometimes</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br /> </dd><dt>somewhat</dt><dd><a href="html/libxml-parserInternals.html#xmlCheckLanguageID">xmlCheckLanguageID</a><br /> </dd><dt>sorted</dt><dd><a href="html/libxml-parser.html#xmlParserAddNodeInfo">xmlParserAddNodeInfo</a><br /> <a href="html/libxml-parser.html#xmlParserFindNodeInfoIndex">xmlParserFindNodeInfoIndex</a><br /> @@ -517,10 +526,12 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-parser.html#startElementNsSAX2Func">startElementNsSAX2Func</a><br /> <a href="html/libxml-parser.html#xmlByteConsumed">xmlByteConsumed</a><br /> <a href="html/libxml-tree.html#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpGetStart">xmlExpGetStart</a><br /> <a href="html/libxml-parserInternals.html#xmlParseStartTag">xmlParseStartTag</a><br /> <a href="html/libxml-relaxng.html#xmlRelaxNGValidatePushElement">xmlRelaxNGValidatePushElement</a><br /> <a href="html/libxml-SAX2.html#xmlSAX2StartDocument">xmlSAX2StartDocument</a><br /> <a href="html/libxml-SAX2.html#xmlSAX2StartElementNs">xmlSAX2StartElementNs</a><br /> +<a href="html/libxml-tree.html#xmlSplitQName3">xmlSplitQName3</a><br /> <a href="html/libxml-xmlreader.html#xmlTextReaderByteConsumed">xmlTextReaderByteConsumed</a><br /> <a href="html/libxml-valid.html#xmlValidatePushElement">xmlValidatePushElement</a><br /> <a href="html/libxml-xpointer.html#xmlXPtrNewLocationSetNodes">xmlXPtrNewLocationSetNodes</a><br /> @@ -534,6 +545,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlautomata.html#xmlAutomataNewCountedTrans">xmlAutomataNewCountedTrans</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewCounterTrans">xmlAutomataNewCounterTrans</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewEpsilon">xmlAutomataNewEpsilon</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewNegTrans">xmlAutomataNewNegTrans</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewOnceTrans">xmlAutomataNewOnceTrans</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewOnceTrans2">xmlAutomataNewOnceTrans2</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewTransition">xmlAutomataNewTransition</a><br /> @@ -574,7 +586,8 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-tree.html#xmlSaveFile">xmlSaveFile</a><br /> <a href="html/libxml-tree.html#xmlSaveFormatFile">xmlSaveFormatFile</a><br /> <a href="html/libxml-debugXML.html#xmlShell">xmlShell</a><br /> -</dd><dt>step</dt><dd><a href="html/libxml-valid.html#xmlValidCtxtNormalizeAttributeValue">xmlValidCtxtNormalizeAttributeValue</a><br /> +</dd><dt>step</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpStringDerive">xmlExpStringDerive</a><br /> +<a href="html/libxml-valid.html#xmlValidCtxtNormalizeAttributeValue">xmlValidCtxtNormalizeAttributeValue</a><br /> <a href="html/libxml-valid.html#xmlValidNormalizeAttributeValue">xmlValidNormalizeAttributeValue</a><br /> <a href="html/libxml-valid.html#xmlValidateDocumentFinal">xmlValidateDocumentFinal</a><br /> <a href="html/libxml-valid.html#xmlValidateDtdFinal">xmlValidateDtdFinal</a><br /> @@ -598,6 +611,8 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-c14n.html#xmlC14NExecute">xmlC14NExecute</a><br /> <a href="html/libxml-encoding.html#xmlCharEncodingInputFunc">xmlCharEncodingInputFunc</a><br /> <a href="html/libxml-encoding.html#xmlCharEncodingOutputFunc">xmlCharEncodingOutputFunc</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpGetLanguage">xmlExpGetLanguage</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpGetStart">xmlExpGetStart</a><br /> <a href="html/libxml-parser.html#xmlGetFeature">xmlGetFeature</a><br /> <a href="html/libxml-xmlIO.html#xmlInputReadCallback">xmlInputReadCallback</a><br /> <a href="html/libxml-xmlIO.html#xmlOutputBufferWrite">xmlOutputBufferWrite</a><br /> @@ -645,6 +660,9 @@ A:link, A:visited, A:active { text-decoration: underline } </dd><dt>stringi</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathSubstringAfterFunction">xmlXPathSubstringAfterFunction</a><br /> </dd><dt>strings</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> <a href="html/libxml-dict.html#xmlDictCreateSub">xmlDictCreateSub</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpGetLanguage">xmlExpGetLanguage</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpGetStart">xmlExpGetStart</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br /> <a href="html/libxml-parser.html#xmlGetFeaturesList">xmlGetFeaturesList</a><br /> <a href="html/libxml-pattern.html#xmlPatterncompile">xmlPatterncompile</a><br /> <a href="html/libxml-xmlregexp.html#xmlRegExecErrInfo">xmlRegExecErrInfo</a><br /> @@ -670,7 +688,9 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlschemastypes.html#xmlSchemaNewNOTATIONValue">xmlSchemaNewNOTATIONValue</a><br /> <a href="html/libxml-xmlschemastypes.html#xmlSchemaNewQNameValue">xmlSchemaNewQNameValue</a><br /> <a href="html/libxml-xmlschemastypes.html#xmlSchemaNewStringValue">xmlSchemaNewStringValue</a><br /> -</dd><dt>structured</dt><dd><a href="html/libxml-xmlerror.html#xmlSetStructuredErrorFunc">xmlSetStructuredErrorFunc</a><br /> +</dd><dt>structured</dt><dd><a href="html/libxml-relaxng.html#xmlRelaxNGSetValidStructuredErrors">xmlRelaxNGSetValidStructuredErrors</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaSetValidStructuredErrors">xmlSchemaSetValidStructuredErrors</a><br /> +<a href="html/libxml-xmlerror.html#xmlSetStructuredErrorFunc">xmlSetStructuredErrorFunc</a><br /> </dd><dt>structures</dt><dd><a href="html/libxml-tree.html#xmlFreeDoc">xmlFreeDoc</a><br /> <a href="html/libxml-tree.html#xmlFreeNs">xmlFreeNs</a><br /> <a href="html/libxml-tree.html#xmlFreeNsList">xmlFreeNsList</a><br /> @@ -679,15 +699,20 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlregexp.html#xmlRegFreeExecCtxt">xmlRegFreeExecCtxt</a><br /> </dd><dt>struture</dt><dd><a href="html/libxml-relaxng.html#xmlRelaxNGParse">xmlRelaxNGParse</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaParse">xmlSchemaParse</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronParse">xmlSchematronParse</a><br /> </dd><dt>stuff</dt><dd><a href="html/libxml-xpath.html#_xmlXPathContext">_xmlXPathContext</a><br /> <a href="html/libxml-parserInternals.html#xmlParseNamespace">xmlParseNamespace</a><br /> </dd><dt>style</dt><dd><a href="html/libxml-SAX2.html#xmlSAXDefaultVersion">xmlSAXDefaultVersion</a><br /> +</dd><dt>sub</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br /> </dd><dt>sub-elements</dt><dd><a href="html/libxml-HTMLparser.html#_htmlElemDesc">_htmlElemDesc</a><br /> </dd><dt>subelement</dt><dd><a href="html/libxml-HTMLparser.html#_htmlElemDesc">_htmlElemDesc</a><br /> <a href="html/libxml-HTMLparser.html#htmlDefaultSubelement">htmlDefaultSubelement</a><br /> <a href="html/libxml-valid.html#xmlNewDocElementContent">xmlNewDocElementContent</a><br /> <a href="html/libxml-valid.html#xmlNewElementContent">xmlNewElementContent</a><br /> </dd><dt>subelements</dt><dd><a href="html/libxml-HTMLparser.html#_htmlElemDesc">_htmlElemDesc</a><br /> +</dd><dt>subexpression</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpSubsume">xmlExpSubsume</a><br /> +</dd><dt>subexpressions</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br /> </dd><dt>subject</dt><dd><a href="html/libxml-parserInternals.html#xmlParseSDDecl">xmlParseSDDecl</a><br /> <a href="html/libxml-relaxng.html#xmlRelaxNGParse">xmlRelaxNGParse</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaParse">xmlSchemaParse</a><br /> @@ -799,6 +824,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xpathInternals.html#xmlXPathLangFunction">xmlXPathLangFunction</a><br /> <a href="html/libxml-xpathInternals.html#xmlXPathNodeSetFreeNs">xmlXPathNodeSetFreeNs</a><br /> <a href="html/libxml-xpathInternals.html#xmlXPathRoundFunction">xmlXPathRoundFunction</a><br /> +</dd><dt>suffix</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_MODULE_EXTENSION">LIBXML_MODULE_EXTENSION</a><br /> </dd><dt>suggested</dt><dd><a href="html/libxml-HTMLparser.html#_htmlElemDesc">_htmlElemDesc</a><br /> </dd><dt>suitable</dt><dd><a href="html/libxml-parser.html#xmlNewIOInputStream">xmlNewIOInputStream</a><br /> <a href="html/libxml-xmlregexp.html#xmlRegexpCompile">xmlRegexpCompile</a><br /> diff --git a/doc/APIchunk25.html b/doc/APIchunk25.html index e958d91..98b46a8 100644 --- a/doc/APIchunk25.html +++ b/doc/APIchunk25.html @@ -61,6 +61,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-HTMLtree.html#htmlSetMetaEncoding">htmlSetMetaEncoding</a><br /> </dd><dt>take</dt><dd><a href="html/libxml-threads.html#xmlLockLibrary">xmlLockLibrary</a><br /> </dd><dt>takes</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacetWhtsp">xmlSchemaValidateFacetWhtsp</a><br /> +</dd><dt>tatkes</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br /> </dd><dt>tell</dt><dd><a href="html/libxml-parser.html#XML_COMPLETE_ATTRS">XML_COMPLETE_ATTRS</a><br /> <a href="html/libxml-parser.html#XML_DETECT_IDS">XML_DETECT_IDS</a><br /> <a href="html/libxml-parser.html#XML_SKIP_IDS">XML_SKIP_IDS</a><br /> @@ -72,6 +73,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlIO.html#xmlIOHTTPOpenW">xmlIOHTTPOpenW</a><br /> </dd><dt>terminal</dt><dd><a href="html/libxml-xmlregexp.html#xmlRegExecErrInfo">xmlRegExecErrInfo</a><br /> <a href="html/libxml-xmlregexp.html#xmlRegExecNextValues">xmlRegExecNextValues</a><br /> +</dd><dt>terminals</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br /> </dd><dt>terminated</dt><dd><a href="html/libxml-HTMLparser.html#htmlCtxtReadDoc">htmlCtxtReadDoc</a><br /> <a href="html/libxml-HTMLparser.html#htmlReadDoc">htmlReadDoc</a><br /> <a href="html/libxml-SAX.html#startElement">startElement</a><br /> @@ -80,6 +82,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-tree.html#xmlBufferCat">xmlBufferCat</a><br /> <a href="html/libxml-parser.html#xmlCtxtReadDoc">xmlCtxtReadDoc</a><br /> <a href="html/libxml-tree.html#xmlDocDumpMemory">xmlDocDumpMemory</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br /> <a href="html/libxml-tree.html#xmlGetNsList">xmlGetNsList</a><br /> <a href="html/libxml-xmlIO.html#xmlOutputBufferWriteEscape">xmlOutputBufferWriteEscape</a><br /> <a href="html/libxml-xmlIO.html#xmlOutputBufferWriteString">xmlOutputBufferWriteString</a><br /> @@ -101,6 +104,9 @@ A:link, A:visited, A:active { text-decoration: underline } </dd><dt>text-node</dt><dd><a href="html/libxml-tree.html#xmlIsBlankNode">xmlIsBlankNode</a><br /> </dd><dt>textDecl?</dt><dd><a href="html/libxml-parserInternals.html#xmlParseExternalSubset">xmlParseExternalSubset</a><br /> </dd><dt>than</dt><dd><a href="html/libxml-xmlstring.html#xmlCheckUTF8">xmlCheckUTF8</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpGetLanguage">xmlExpGetLanguage</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpGetStart">xmlExpGetStart</a><br /> <a href="html/libxml-tree.html#xmlNewNs">xmlNewNs</a><br /> <a href="html/libxml-parserInternals.html#xmlParseAttribute">xmlParseAttribute</a><br /> <a href="html/libxml-parserInternals.html#xmlParseAttributeType">xmlParseAttributeType</a><br /> @@ -131,7 +137,11 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xpathInternals.html#xmlXPathMultValues">xmlXPathMultValues</a><br /> <a href="html/libxml-xpathInternals.html#xmlXPathSubValues">xmlXPathSubValues</a><br /> <a href="html/libxml-xpathInternals.html#xmlXPathValueFlipSign">xmlXPathValueFlipSign</a><br /> -</dd><dt>them</dt><dd><a href="html/libxml-nanoftp.html#xmlNanoFTPRead">xmlNanoFTPRead</a><br /> +</dd><dt>them</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpGetLanguage">xmlExpGetLanguage</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpGetStart">xmlExpGetStart</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewOr">xmlExpNewOr</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewSeq">xmlExpNewSeq</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPRead">xmlNanoFTPRead</a><br /> <a href="html/libxml-nanohttp.html#xmlNanoHTTPRead">xmlNanoHTTPRead</a><br /> <a href="html/libxml-parserInternals.html#xmlParseAttValue">xmlParseAttValue</a><br /> <a href="html/libxml-parserInternals.html#xmlParseAttributeType">xmlParseAttributeType</a><br /> @@ -185,7 +195,8 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xpathInternals.html#xmlXPathNextAncestor">xmlXPathNextAncestor</a><br /> <a href="html/libxml-xpathInternals.html#xmlXPathNextAncestorOrSelf">xmlXPathNextAncestorOrSelf</a><br /> <a href="html/libxml-xpathInternals.html#xmlXPathNextDescendantOrSelf">xmlXPathNextDescendantOrSelf</a><br /> -</dd><dt>time</dt><dd><a href="html/libxml-xpath.html#xmlXPathAxisFunc">xmlXPathAxisFunc</a><br /> +</dd><dt>time</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br /> +<a href="html/libxml-xpath.html#xmlXPathAxisFunc">xmlXPathAxisFunc</a><br /> </dd><dt>title</dt><dd><a href="html/libxml-xlink.html#xlinkSimpleLinkFunk">xlinkSimpleLinkFunk</a><br /> </dd><dt>titles</dt><dd><a href="html/libxml-xlink.html#xlinkExtendedLinkFunk">xlinkExtendedLinkFunk</a><br /> <a href="html/libxml-xlink.html#xlinkExtendedLinkSetFunk">xlinkExtendedLinkSetFunk</a><br /> @@ -203,7 +214,9 @@ A:link, A:visited, A:active { text-decoration: underline } </dd><dt>token_r</dt><dd><a href="html/libxml-threads.html#xmlNewRMutex">xmlNewRMutex</a><br /> <a href="html/libxml-threads.html#xmlRMutexLock">xmlRMutexLock</a><br /> <a href="html/libxml-threads.html#xmlRMutexUnlock">xmlRMutexUnlock</a><br /> -</dd><dt>tokens</dt><dd><a href="html/libxml-parserInternals.html#xmlParseEnumerationType">xmlParseEnumerationType</a><br /> +</dd><dt>tokens</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpGetLanguage">xmlExpGetLanguage</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpGetStart">xmlExpGetStart</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseEnumerationType">xmlParseEnumerationType</a><br /> <a href="html/libxml-xpathInternals.html#xmlXPathIdFunction">xmlXPathIdFunction</a><br /> </dd><dt>too</dt><dd><a href="html/libxml-xmlmemory.html#DEBUG_MEMORY">DEBUG_MEMORY</a><br /> <a href="html/libxml-HTMLtree.html#htmlNodeDump">htmlNodeDump</a><br /> diff --git a/doc/APIchunk26.html b/doc/APIchunk26.html index 814dec7..8a0befa 100644 --- a/doc/APIchunk26.html +++ b/doc/APIchunk26.html @@ -47,7 +47,6 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-tree.html#xmlGetDocCompressMode">xmlGetDocCompressMode</a><br /> <a href="html/libxml-tree.html#xmlSetCompressMode">xmlSetCompressMode</a><br /> <a href="html/libxml-tree.html#xmlSetDocCompressMode">xmlSetDocCompressMode</a><br /> -</dd><dt>undefined</dt><dd><a href="html/libxml-pattern.html#xmlPatterncompile">xmlPatterncompile</a><br /> </dd><dt>under</dt><dd><a href="html/libxml-uri.html#xmlBuildRelativeURI">xmlBuildRelativeURI</a><br /> <a href="html/libxml-tree.html#xmlSearchNs">xmlSearchNs</a><br /> <a href="html/libxml-tree.html#xmlSetTreeDoc">xmlSetTreeDoc</a><br /> @@ -56,9 +55,11 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-valid.html#xmlValidateElement">xmlValidateElement</a><br /> </dd><dt>underlying</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderClose">xmlTextReaderClose</a><br /> <a href="html/libxml-xmlreader.html#xmlTextReaderCurrentNode">xmlTextReaderCurrentNode</a><br /> +</dd><dt>understand</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br /> </dd><dt>unescape</dt><dd><a href="html/libxml-uri.html#xmlURIUnescapeString">xmlURIUnescapeString</a><br /> </dd><dt>unescaped</dt><dd><a href="html/libxml-xmlIO.html#xmlFileOpen">xmlFileOpen</a><br /> <a href="html/libxml-uri.html#xmlURIUnescapeString">xmlURIUnescapeString</a><br /> +</dd><dt>unescaping</dt><dd><a href="html/libxml-uri.html#xmlParseURIRaw">xmlParseURIRaw</a><br /> </dd><dt>unicode</dt><dd><a href="html/libxml-HTMLparser.html#htmlEntityValueLookup">htmlEntityValueLookup</a><br /> <a href="html/libxml-parserInternals.html#xmlIsLetter">xmlIsLetter</a><br /> </dd><dt>unimplemented</dt><dd><a href="html/libxml-HTMLparser.html#htmlCtxtUseOptions">htmlCtxtUseOptions</a><br /> @@ -70,6 +71,8 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xpathInternals.html#xmlXPathIdFunction">xmlXPathIdFunction</a><br /> </dd><dt>unique</dt><dd><a href="html/libxml-parser.html#_xmlParserInput">_xmlParserInput</a><br /> <a href="html/libxml-schemasInternals.html#_xmlSchema">_xmlSchema</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpGetLanguage">xmlExpGetLanguage</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpGetStart">xmlExpGetStart</a><br /> <a href="html/libxml-xpathInternals.html#xmlXPathIdFunction">xmlXPathIdFunction</a><br /> </dd><dt>uniquely</dt><dd><a href="html/libxml-parserInternals.html#xmlParseAttributeType">xmlParseAttributeType</a><br /> <a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br /> @@ -82,10 +85,14 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-schemasInternals.html#XML_SCHEMAS_FACET_UNKNOWN">XML_SCHEMAS_FACET_UNKNOWN</a><br /> <a href="html/libxml-HTMLparser.html#htmlCtxtUseOptions">htmlCtxtUseOptions</a><br /> <a href="html/libxml-parser.html#xmlCtxtUseOptions">xmlCtxtUseOptions</a><br /> +<a href="html/libxml-parser.html#xmlHasFeature">xmlHasFeature</a><br /> <a href="html/libxml-xmlunicode.html#xmlUCSIsBlock">xmlUCSIsBlock</a><br /> <a href="html/libxml-xmlunicode.html#xmlUCSIsCat">xmlUCSIsCat</a><br /> </dd><dt>unless</dt><dd><a href="html/libxml-HTMLparser.html#htmlSAXParseDoc">htmlSAXParseDoc</a><br /> <a href="html/libxml-HTMLparser.html#htmlSAXParseFile">htmlSAXParseFile</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewOr">xmlExpNewOr</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewSeq">xmlExpNewSeq</a><br /> <a href="html/libxml-tree.html#xmlGetNoNsProp">xmlGetNoNsProp</a><br /> <a href="html/libxml-tree.html#xmlGetNsProp">xmlGetNsProp</a><br /> <a href="html/libxml-tree.html#xmlGetProp">xmlGetProp</a><br /> @@ -169,7 +176,8 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-tree.html#xmlSplitQName2">xmlSplitQName2</a><br /> </dd><dt>upon</dt><dd><a href="html/libxml-SAX.html#checkNamespace">checkNamespace</a><br /> <a href="html/libxml-xlink.html#xlinkNodeDetectFunc">xlinkNodeDetectFunc</a><br /> -</dd><dt>upper</dt><dd><a href="html/libxml-valid.html#xmlIsRef">xmlIsRef</a><br /> +</dd><dt>upper</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br /> +<a href="html/libxml-valid.html#xmlIsRef">xmlIsRef</a><br /> </dd><dt>uri</dt><dd><a href="html/libxml-xmlIO.html#xmlNormalizeWindowsPath">xmlNormalizeWindowsPath</a><br /> </dd><dt>usage</dt><dd><a href="html/libxml-tree.html#xmlGetBufferAllocationScheme">xmlGetBufferAllocationScheme</a><br /> <a href="html/libxml-tree.html#xmlSetBufferAllocationScheme">xmlSetBufferAllocationScheme</a><br /> @@ -185,7 +193,10 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-valid.html#xmlValidityWarningFunc">xmlValidityWarningFunc</a><br /> </dd><dt>users</dt><dd><a href="html/libxml-schemasInternals.html#_xmlSchema">_xmlSchema</a><br /> </dd><dt>uses</dt><dd><a href="html/libxml-HTMLparser.html#htmlNodeStatus">htmlNodeStatus</a><br /> -</dd><dt>usually</dt><dd><a href="">c</a><br /> +</dd><dt>usual</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br /> +</dd><dt>usually</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_MODULE_EXTENSION">LIBXML_MODULE_EXTENSION</a><br /> +<a href="">c</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br /> <a href="html/libxml-encoding.html#xmlInitCharEncodingHandlers">xmlInitCharEncodingHandlers</a><br /> <a href="html/libxml-xmlschemastypes.html#xmlSchemaGetPredefinedType">xmlSchemaGetPredefinedType</a><br /> <a href="html/libxml-xmlreader.html#xmlTextReaderGetParserProp">xmlTextReaderGetParserProp</a><br /> @@ -237,7 +248,8 @@ A:link, A:visited, A:active { text-decoration: underline } </dd><dt>varags</dt><dd><a href="html/libxml-xmlerror.html#xmlGenericErrorFunc">xmlGenericErrorFunc</a><br /> </dd><dt>vararg</dt><dd><a href="html/libxml-valid.html#xmlValidityErrorFunc">xmlValidityErrorFunc</a><br /> <a href="html/libxml-valid.html#xmlValidityWarningFunc">xmlValidityWarningFunc</a><br /> -</dd><dt>variables</dt><dd><a href="html/libxml-xpath.html#_xmlXPathContext">_xmlXPathContext</a><br /> +</dd><dt>variables</dt><dd><a href="html/libxml-xpath.html#XML_XPATH_NOVAR">XML_XPATH_NOVAR</a><br /> +<a href="html/libxml-xpath.html#_xmlXPathContext">_xmlXPathContext</a><br /> <a href="html/libxml-nanoftp.html#xmlNanoFTPProxy">xmlNanoFTPProxy</a><br /> <a href="html/libxml-xpathInternals.html#xmlXPathRegisteredNsCleanup">xmlXPathRegisteredNsCleanup</a><br /> <a href="html/libxml-xpathInternals.html#xmlXPathRegisteredVariablesCleanup">xmlXPathRegisteredVariablesCleanup</a><br /> diff --git a/doc/APIchunk27.html b/doc/APIchunk27.html index 646d079..2db1f05 100644 --- a/doc/APIchunk27.html +++ b/doc/APIchunk27.html @@ -132,6 +132,8 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-tree.html#xmlCopyPropList">xmlCopyPropList</a><br /> <a href="html/libxml-tree.html#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a><br /> <a href="html/libxml-tree.html#xmlDOMWrapReconcileNamespaces">xmlDOMWrapReconcileNamespaces</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpGetLanguage">xmlExpGetLanguage</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpGetStart">xmlExpGetStart</a><br /> <a href="html/libxml-xmlIO.html#xmlFileRead">xmlFileRead</a><br /> <a href="html/libxml-xmlIO.html#xmlIOFTPRead">xmlIOFTPRead</a><br /> <a href="html/libxml-xmlIO.html#xmlIOHTTPRead">xmlIOHTTPRead</a><br /> @@ -228,9 +230,11 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-parserInternals.html#xmlParserHandlePEReference">xmlParserHandlePEReference</a><br /> <a href="html/libxml-SAX2.html#xmlSAX2EntityDecl">xmlSAX2EntityDecl</a><br /> <a href="html/libxml-parserInternals.html#xmlScanName">xmlScanName</a><br /> +<a href="html/libxml-tree.html#xmlSplitQName3">xmlSplitQName3</a><br /> <a href="html/libxml-valid.html#xmlValidateOneAttribute">xmlValidateOneAttribute</a><br /> <a href="html/libxml-valid.html#xmlValidateOneNamespace">xmlValidateOneNamespace</a><br /> </dd><dt>won</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewNegTrans">xmlAutomataNewNegTrans</a><br /> <a href="html/libxml-tree.html#xmlBufferCreateStatic">xmlBufferCreateStatic</a><br /> <a href="html/libxml-catalog.html#xmlLoadSGMLSuperCatalog">xmlLoadSGMLSuperCatalog</a><br /> <a href="html/libxml-parserInternals.html#xmlParseAttValue">xmlParseAttValue</a><br /> diff --git a/doc/APIchunk28.html b/doc/APIchunk28.html index e2520bc..c3146cf 100644 --- a/doc/APIchunk28.html +++ b/doc/APIchunk28.html @@ -172,6 +172,12 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-SAX2.html#xmlSAX2GetParameterEntity">xmlSAX2GetParameterEntity</a><br /> </dd><dt>xmlEnumerationPtr</dt><dd><a href="html/libxml-valid.html#xmlCopyEnumeration">xmlCopyEnumeration</a><br /> <a href="html/libxml-valid.html#xmlCreateEnumeration">xmlCreateEnumeration</a><br /> +</dd><dt>xmlExpFree</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpNewOr">xmlExpNewOr</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewSeq">xmlExpNewSeq</a><br /> +</dd><dt>xmlExpRef</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpNewOr">xmlExpNewOr</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewSeq">xmlExpNewSeq</a><br /> </dd><dt>xmlExternalEntityLoader</dt><dd><a href="html/libxml-parser.html#xmlGetExternalEntityLoader">xmlGetExternalEntityLoader</a><br /> </dd><dt>xmlFileOpen_real</dt><dd><a href="html/libxml-xmlIO.html#xmlFileOpen">xmlFileOpen</a><br /> </dd><dt>xmlFree</dt><dd><a href="html/libxml-c14n.html#xmlC14NDocDumpMemory">xmlC14NDocDumpMemory</a><br /> @@ -329,6 +335,7 @@ A:link, A:visited, A:active { text-decoration: underline } </dd><dt>xmlParserProperties</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderGetParserProp">xmlTextReaderGetParserProp</a><br /> <a href="html/libxml-xmlreader.html#xmlTextReaderSetParserProp">xmlTextReaderSetParserProp</a><br /> </dd><dt>xmlPattern</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_PATTERN_ENABLED">LIBXML_PATTERN_ENABLED</a><br /> +</dd><dt>xmlPatternFlags</dt><dd><a href="html/libxml-pattern.html#xmlPatterncompile">xmlPatterncompile</a><br /> </dd><dt>xmlPatternGetStreamCtxt</dt><dd><a href="html/libxml-pattern.html#xmlPatternStreamable">xmlPatternStreamable</a><br /> </dd><dt>xmlPatterncompile</dt><dd><a href="html/libxml-pattern.html#xmlStreamPush">xmlStreamPush</a><br /> <a href="html/libxml-pattern.html#xmlStreamPushAttr">xmlStreamPushAttr</a><br /> @@ -386,6 +393,7 @@ A:link, A:visited, A:active { text-decoration: underline } </dd><dt>xmlSchemaSAXPlug</dt><dd><a href="html/libxml-xmlschemas.html#xmlSchemaSAXUnplug">xmlSchemaSAXUnplug</a><br /> </dd><dt>xmlSchemaValType</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaGetValType">xmlSchemaGetValType</a><br /> </dd><dt>xmlSchemaValidOption</dt><dd><a href="html/libxml-xmlschemas.html#xmlSchemaSetValidOptions">xmlSchemaSetValidOptions</a><br /> +</dd><dt>xmlSchematronValidOptions</dt><dd><a href="html/libxml-schematron.html#xmlSchematronNewValidCtxt">xmlSchematronNewValidCtxt</a><br /> </dd><dt>xmlSetExternalEntityLoader</dt><dd><a href="html/libxml-SAX.html#resolveEntity">resolveEntity</a><br /> <a href="html/libxml-parser.html#resolveEntitySAXFunc">resolveEntitySAXFunc</a><br /> <a href="html/libxml-SAX2.html#xmlSAX2ResolveEntity">xmlSAX2ResolveEntity</a><br /> @@ -421,6 +429,7 @@ A:link, A:visited, A:active { text-decoration: underline } </dd><dt>xmlURIEscapeStr</dt><dd><a href="html/libxml-uri.html#xmlURIEscape">xmlURIEscape</a><br /> </dd><dt>xmlURIFromPath</dt><dd><a href="html/libxml-xmlIO.html#xmlNormalizeWindowsPath">xmlNormalizeWindowsPath</a><br /> </dd><dt>xmlURIPtr</dt><dd><a href="html/libxml-uri.html#xmlParseURI">xmlParseURI</a><br /> +<a href="html/libxml-uri.html#xmlParseURIRaw">xmlParseURIRaw</a><br /> </dd><dt>xmlUnlinkNode</dt><dd><a href="html/libxml-tree.html#xmlFreeNode">xmlFreeNode</a><br /> </dd><dt>xmlUnlockLibrary</dt><dd><a href="html/libxml-threads.html#xmlUnlockLibrary">xmlUnlockLibrary</a><br /> </dd><dt>xmlValidCtxtPtr</dt><dd><a href="html/libxml-valid.html#xmlValidityErrorFunc">xmlValidityErrorFunc</a><br /> diff --git a/doc/APIchunk29.html b/doc/APIchunk29.html index 969581e..e9edd2c 100644 --- a/doc/APIchunk29.html +++ b/doc/APIchunk29.html @@ -50,7 +50,6 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlregexp.html#xmlRegexpIsDeterminist">xmlRegexpIsDeterminist</a><br /> <a href="html/libxml-xmlwriter.html#xmlTextWriterStartDocument">xmlTextWriterStartDocument</a><br /> </dd><dt>yet</dt><dd><a href="html/libxml-xmlmodule.html#xmlModuleOpen">xmlModuleOpen</a><br /> -<a href="html/libxml-pattern.html#xmlPatterncompile">xmlPatterncompile</a><br /> <a href="html/libxml-xmlsave.html#xmlSaveDoc">xmlSaveDoc</a><br /> <a href="html/libxml-xmlsave.html#xmlSaveTree">xmlSaveTree</a><br /> <a href="html/libxml-xmlschemastypes.html#xmlSchemaGetCanonValue">xmlSchemaGetCanonValue</a><br /> @@ -72,6 +71,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-tree.html#xmlCopyDoc">xmlCopyDoc</a><br /> <a href="html/libxml-parser.html#xmlCtxtReadDoc">xmlCtxtReadDoc</a><br /> <a href="html/libxml-tree.html#xmlDocDumpMemory">xmlDocDumpMemory</a><br /> +<a href="html/libxml-parser.html#xmlHasFeature">xmlHasFeature</a><br /> <a href="html/libxml-xmlIO.html#xmlOutputBufferWriteEscape">xmlOutputBufferWriteEscape</a><br /> <a href="html/libxml-xmlIO.html#xmlOutputBufferWriteString">xmlOutputBufferWriteString</a><br /> <a href="html/libxml-parser.html#xmlParseBalancedChunkMemory">xmlParseBalancedChunkMemory</a><br /> diff --git a/doc/APIchunk3.html b/doc/APIchunk3.html index 2b95558..32c47e7 100644 --- a/doc/APIchunk3.html +++ b/doc/APIchunk3.html @@ -58,7 +58,9 @@ A:link, A:visited, A:active { text-decoration: underline } </dd><dt>Fetch</dt><dd><a href="html/libxml-nanoftp.html#xmlNanoFTPGet">xmlNanoFTPGet</a><br /> </dd><dt>File</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderGetRemainder">xmlTextReaderGetRemainder</a><br /> </dd><dt>Fills</dt><dd><a href="html/libxml-tree.html#xmlNodeBufGetContent">xmlNodeBufGetContent</a><br /> -</dd><dt>Find</dt><dd><a href="html/libxml-valid.html#xmlGetRefs">xmlGetRefs</a><br /> +</dd><dt>Find</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpGetLanguage">xmlExpGetLanguage</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpGetStart">xmlExpGetStart</a><br /> +<a href="html/libxml-valid.html#xmlGetRefs">xmlGetRefs</a><br /> <a href="html/libxml-hash.html#xmlHashLookup">xmlHashLookup</a><br /> <a href="html/libxml-hash.html#xmlHashLookup2">xmlHashLookup2</a><br /> <a href="html/libxml-hash.html#xmlHashLookup3">xmlHashLookup3</a><br /> @@ -70,6 +72,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-hash.html#xmlHashRemoveEntry3">xmlHashRemoveEntry3</a><br /> <a href="html/libxml-parser.html#xmlParserFindNodeInfo">xmlParserFindNodeInfo</a><br /> <a href="html/libxml-parser.html#xmlParserFindNodeInfoIndex">xmlParserFindNodeInfoIndex</a><br /> +</dd><dt>Finds</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpIsNillable">xmlExpIsNillable</a><br /> </dd><dt>First</dt><dd><a href="html/libxml-entities.html#_xmlEntity">_xmlEntity</a><br /> </dd><dt>Fixed</dt><dd><a href="html/libxml-parserInternals.html#xmlParseDefaultDecl">xmlParseDefaultDecl</a><br /> <a href="html/libxml-valid.html#xmlValidateOneAttribute">xmlValidateOneAttribute</a><br /> @@ -255,7 +258,9 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xpathInternals.html#xmlXPathTrailing">xmlXPathTrailing</a><br /> <a href="html/libxml-xpathInternals.html#xmlXPathTrailingSorted">xmlXPathTrailingSorted</a><br /> </dd><dt>Included</dt><dd><a href="html/libxml-parserInternals.html#xmlParserHandlePEReference">xmlParserHandlePEReference</a><br /> +</dd><dt>Increase</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpRef">xmlExpRef</a><br /> </dd><dt>Increment</dt><dd><a href="html/libxml-dict.html#xmlDictReference">xmlDictReference</a><br /> +</dd><dt>Indicate</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpMaxToken">xmlExpMaxToken</a><br /> </dd><dt>Indicates</dt><dd><a href="html/libxml-schemasInternals.html#_xmlSchemaWildcard">_xmlSchemaWildcard</a><br /> </dd><dt>Infinity</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br /> </dd><dt>Initial</dt><dd><a href="html/libxml-xmlautomata.html#xmlAutomataGetInitState">xmlAutomataGetInitState</a><br /> diff --git a/doc/APIchunk4.html b/doc/APIchunk4.html index 52d4750..b6dce45 100644 --- a/doc/APIchunk4.html +++ b/doc/APIchunk4.html @@ -142,6 +142,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-HTMLtree.html#htmlSetMetaEncoding">htmlSetMetaEncoding</a><br /> </dd><dt>Method</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderGetRemainder">xmlTextReaderGetRemainder</a><br /> </dd><dt>Mime-Type</dt><dd><a href="html/libxml-nanohttp.html#xmlNanoHTTPMimeType">xmlNanoHTTPMimeType</a><br /> +</dd><dt>Minimal</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br /> </dd><dt>Misc</dt><dd><a href="html/libxml-schemasInternals.html#_xmlSchema">_xmlSchema</a><br /> <a href="html/libxml-parser.html#xmlParseDocument">xmlParseDocument</a><br /> <a href="html/libxml-parserInternals.html#xmlParseMisc">xmlParseMisc</a><br /> @@ -289,6 +290,7 @@ A:link, A:visited, A:active { text-decoration: underline } </dd><dt>Note</dt><dd><a href="html/libxml-nanoftp.html#ftpListCallback">ftpListCallback</a><br /> <a href="html/libxml-HTMLparser.html#htmlElementAllowedHere">htmlElementAllowedHere</a><br /> <a href="html/libxml-valid.html#xmlAddAttributeDecl">xmlAddAttributeDecl</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewNegTrans">xmlAutomataNewNegTrans</a><br /> <a href="html/libxml-xmlstring.html#xmlCheckUTF8">xmlCheckUTF8</a><br /> <a href="html/libxml-tree.html#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a><br /> <a href="html/libxml-tree.html#xmlDOMWrapReconcileNamespaces">xmlDOMWrapReconcileNamespaces</a><br /> @@ -296,6 +298,9 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-tree.html#xmlDocDumpFormatMemoryEnc">xmlDocDumpFormatMemoryEnc</a><br /> <a href="html/libxml-tree.html#xmlDocDumpMemoryEnc">xmlDocDumpMemoryEnc</a><br /> <a href="html/libxml-tree.html#xmlDocFormatDump">xmlDocFormatDump</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewOr">xmlExpNewOr</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewSeq">xmlExpNewSeq</a><br /> <a href="html/libxml-tree.html#xmlHasNsProp">xmlHasNsProp</a><br /> <a href="html/libxml-nanohttp.html#xmlNanoHTTPContentLength">xmlNanoHTTPContentLength</a><br /> <a href="html/libxml-tree.html#xmlNodeDump">xmlNodeDump</a><br /> diff --git a/doc/APIchunk5.html b/doc/APIchunk5.html index 05ab344..31e1e79 100644 --- a/doc/APIchunk5.html +++ b/doc/APIchunk5.html @@ -126,6 +126,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-parser.html#xmlParseInNodeContext">xmlParseInNodeContext</a><br /> <a href="html/libxml-parserInternals.html#xmlParseQuotedString">xmlParseQuotedString</a><br /> <a href="html/libxml-uri.html#xmlParseURI">xmlParseURI</a><br /> +<a href="html/libxml-uri.html#xmlParseURIRaw">xmlParseURIRaw</a><br /> <a href="html/libxml-uri.html#xmlParseURIReference">xmlParseURIReference</a><br /> <a href="html/libxml-tree.html#xmlStringGetNodeList">xmlStringGetNodeList</a><br /> <a href="html/libxml-tree.html#xmlStringLenGetNodeList">xmlStringLenGetNodeList</a><br /> diff --git a/doc/APIchunk6.html b/doc/APIchunk6.html index b2179c0..1357cda 100644 --- a/doc/APIchunk6.html +++ b/doc/APIchunk6.html @@ -165,6 +165,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-relaxng.html#xmlRelaxNGParse">xmlRelaxNGParse</a><br /> <a href="html/libxml-relaxng.html#xmlRelaxNGSetParserErrors">xmlRelaxNGSetParserErrors</a><br /> <a href="html/libxml-relaxng.html#xmlRelaxNGSetValidErrors">xmlRelaxNGSetValidErrors</a><br /> +<a href="html/libxml-relaxng.html#xmlRelaxNGSetValidStructuredErrors">xmlRelaxNGSetValidStructuredErrors</a><br /> <a href="html/libxml-relaxng.html#xmlRelaxNGValidateDoc">xmlRelaxNGValidateDoc</a><br /> </dd><dt>RelaxNG</dt><dd><a href="html/libxml-relaxng.html#xmlRelaxNGCleanupTypes">xmlRelaxNGCleanupTypes</a><br /> <a href="html/libxml-relaxng.html#xmlRelaxNGDump">xmlRelaxNGDump</a><br /> @@ -224,6 +225,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-entities.html#xmlGetDocEntity">xmlGetDocEntity</a><br /> <a href="html/libxml-entities.html#xmlGetDtdEntity">xmlGetDtdEntity</a><br /> <a href="html/libxml-entities.html#xmlGetParameterEntity">xmlGetParameterEntity</a><br /> +<a href="html/libxml-parser.html#xmlHasFeature">xmlHasFeature</a><br /> <a href="html/libxml-list.html#xmlLinkGetData">xmlLinkGetData</a><br /> <a href="html/libxml-xpathInternals.html#xmlXPathCheckError">xmlXPathCheckError</a><br /> <a href="html/libxml-xpathInternals.html#xmlXPathGetContextNode">xmlXPathGetContextNode</a><br /> diff --git a/doc/APIchunk7.html b/doc/APIchunk7.html index 825348d..5c9847c 100644 --- a/doc/APIchunk7.html +++ b/doc/APIchunk7.html @@ -119,6 +119,13 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlschemas.html#xmlSchemaNewMemParserCtxt">xmlSchemaNewMemParserCtxt</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaNewParserCtxt">xmlSchemaNewParserCtxt</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaNewValidCtxt">xmlSchemaNewValidCtxt</a><br /> +</dd><dt>Schematron</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_SCHEMATRON_ENABLED">LIBXML_SCHEMATRON_ENABLED</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronFree">xmlSchematronFree</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronParse">xmlSchematronParse</a><br /> +</dd><dt>Schematrons</dt><dd><a href="html/libxml-schematron.html#xmlSchematronNewDocParserCtxt">xmlSchematronNewDocParserCtxt</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronNewMemParserCtxt">xmlSchematronNewMemParserCtxt</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronNewParserCtxt">xmlSchematronNewParserCtxt</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronNewValidCtxt">xmlSchematronNewValidCtxt</a><br /> </dd><dt>Script</dt><dd><a href="html/libxml-HTMLparser.html#htmlIsScriptAttribute">htmlIsScriptAttribute</a><br /> </dd><dt>Search</dt><dd><a href="html/libxml-encoding.html#xmlFindCharEncodingHandler">xmlFindCharEncodingHandler</a><br /> <a href="html/libxml-encoding.html#xmlGetCharEncodingHandler">xmlGetCharEncodingHandler</a><br /> @@ -158,36 +165,7 @@ A:link, A:visited, A:active { text-decoration: underline } </dd><dt>Semi</dt><dd><a href="html/libxml-relaxng.html#xmlRelaxParserSetFlag">xmlRelaxParserSetFlag</a><br /> </dd><dt>Send</dt><dd><a href="html/libxml-nanoftp.html#xmlNanoFTPQuit">xmlNanoFTPQuit</a><br /> </dd><dt>Serialize</dt><dd><a href="html/libxml-tree.html#xmlAttrSerializeTxtContent">xmlAttrSerializeTxtContent</a><br /> -</dd><dt>Set</dt><dd><a href="html/libxml-HTMLparser.html#htmlHandleOmittedElem">htmlHandleOmittedElem</a><br /> -<a href="html/libxml-xmlerror.html#initGenericErrorDefaultFunc">initGenericErrorDefaultFunc</a><br /> -<a href="html/libxml-SAX.html#setNamespace">setNamespace</a><br /> -<a href="html/libxml-xlink.html#xlinkSetDefaultDetect">xlinkSetDefaultDetect</a><br /> -<a href="html/libxml-xlink.html#xlinkSetDefaultHandler">xlinkSetDefaultHandler</a><br /> -<a href="html/libxml-tree.html#xmlDocSetRootElement">xmlDocSetRootElement</a><br /> -<a href="html/libxml-entities.html#xmlInitializePredefinedEntities">xmlInitializePredefinedEntities</a><br /> -<a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br /> -<a href="html/libxml-parser.html#xmlLineNumbersDefault">xmlLineNumbersDefault</a><br /> -<a href="html/libxml-tree.html#xmlNodeSetBase">xmlNodeSetBase</a><br /> -<a href="html/libxml-tree.html#xmlNodeSetLang">xmlNodeSetLang</a><br /> -<a href="html/libxml-tree.html#xmlNodeSetName">xmlNodeSetName</a><br /> -<a href="html/libxml-tree.html#xmlNodeSetSpacePreserve">xmlNodeSetSpacePreserve</a><br /> -<a href="html/libxml-parser.html#xmlPedanticParserDefault">xmlPedanticParserDefault</a><br /> -<a href="html/libxml-relaxng.html#xmlRelaxNGSetParserErrors">xmlRelaxNGSetParserErrors</a><br /> -<a href="html/libxml-relaxng.html#xmlRelaxNGSetValidErrors">xmlRelaxNGSetValidErrors</a><br /> -<a href="html/libxml-SAX2.html#xmlSAXDefaultVersion">xmlSAXDefaultVersion</a><br /> -<a href="html/libxml-xmlsave.html#xmlSaveSetAttrEscape">xmlSaveSetAttrEscape</a><br /> -<a href="html/libxml-xmlsave.html#xmlSaveSetEscape">xmlSaveSetEscape</a><br /> -<a href="html/libxml-xmlschemas.html#xmlSchemaSetParserErrors">xmlSchemaSetParserErrors</a><br /> -<a href="html/libxml-xmlschemas.html#xmlSchemaSetValidErrors">xmlSchemaSetValidErrors</a><br /> -<a href="html/libxml-tree.html#xmlSetBufferAllocationScheme">xmlSetBufferAllocationScheme</a><br /> -<a href="html/libxml-parserInternals.html#xmlSetEntityReferenceFunc">xmlSetEntityReferenceFunc</a><br /> -<a href="html/libxml-tree.html#xmlSetNsProp">xmlSetNsProp</a><br /> -<a href="html/libxml-tree.html#xmlSetProp">xmlSetProp</a><br /> -<a href="html/libxml-parser.html#xmlSubstituteEntitiesDefault">xmlSubstituteEntitiesDefault</a><br /> -<a href="html/libxml-xmlwriter.html#xmlTextWriterSetIndent">xmlTextWriterSetIndent</a><br /> -<a href="html/libxml-xmlwriter.html#xmlTextWriterSetIndentString">xmlTextWriterSetIndentString</a><br /> -<a href="html/libxml-xinclude.html#xmlXIncludeSetFlags">xmlXIncludeSetFlags</a><br /> -<a href="html/libxml-xpointer.html#xmlXPtrEvalRangePredicate">xmlXPtrEvalRangePredicate</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpDump">xmlExpDump</a><br /> </dd><dt>Sets</dt><dd><a href="html/libxml-HTMLtree.html#htmlSetMetaEncoding">htmlSetMetaEncoding</a><br /> <a href="html/libxml-tree.html#xmlBufferSetAllocationScheme">xmlBufferSetAllocationScheme</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaSetValidOptions">xmlSchemaSetValidOptions</a><br /> @@ -215,6 +193,7 @@ A:link, A:visited, A:active { text-decoration: underline } </dd><dt>Shell</dt><dd><a href="html/libxml-debugXML.html#xmlShellReadlineFunc">xmlShellReadlineFunc</a><br /> </dd><dt>Shema</dt><dd><a href="html/libxml-relaxng.html#xmlRelaxNGParse">xmlRelaxNGParse</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaParse">xmlSchemaParse</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronParse">xmlSchematronParse</a><br /> </dd><dt>Should</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> <a href="html/libxml-xmlmemory.html#xmlGcMemSetup">xmlGcMemSetup</a><br /> <a href="html/libxml-xmlmemory.html#xmlMemSetup">xmlMemSetup</a><br /> diff --git a/doc/APIchunk8.html b/doc/APIchunk8.html index 22ea3f8..0407e65 100644 --- a/doc/APIchunk8.html +++ b/doc/APIchunk8.html @@ -56,7 +56,6 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-HTMLtree.html#htmlNodeDumpFileFormat">htmlNodeDumpFileFormat</a><br /> <a href="html/libxml-parserInternals.html#xmlDecodeEntities">xmlDecodeEntities</a><br /> <a href="html/libxml-entities.html#xmlEncodeEntities">xmlEncodeEntities</a><br /> -<a href="html/libxml-parser.html#xmlLoadExternalEntity">xmlLoadExternalEntity</a><br /> <a href="html/libxml-xmlmodule.html#xmlModuleOpen">xmlModuleOpen</a><br /> <a href="html/libxml-parserInternals.html#xmlNamespaceParseNCName">xmlNamespaceParseNCName</a><br /> <a href="html/libxml-parserInternals.html#xmlNamespaceParseNSDef">xmlNamespaceParseNSDef</a><br /> @@ -112,6 +111,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-parserInternals.html#xmlParseElementChildrenContentDecl">xmlParseElementChildrenContentDecl</a><br /> <a href="html/libxml-parserInternals.html#xmlParseMarkupDecl">xmlParseMarkupDecl</a><br /> </dd><dt>Then</dt><dd><a href="html/libxml-valid.html#xmlValidateOneElement">xmlValidateOneElement</a><br /> +</dd><dt>There</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br /> </dd><dt>Those</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> </dd><dt>Thus:</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathSubstringFunction">xmlXPathSubstringFunction</a><br /> </dd><dt>Tibetan</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsTibetan">xmlUCSIsTibetan</a><br /> @@ -183,6 +183,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-parser.html#ignorableWhitespaceSAXFunc">ignorableWhitespaceSAXFunc</a><br /> <a href="html/libxml-SAX2.html#xmlSAX2IgnorableWhitespace">xmlSAX2IgnorableWhitespace</a><br /> </dd><dt>URI-reference</dt><dd><a href="html/libxml-uri.html#xmlParseURI">xmlParseURI</a><br /> +<a href="html/libxml-uri.html#xmlParseURIRaw">xmlParseURIRaw</a><br /> <a href="html/libxml-uri.html#xmlParseURIReference">xmlParseURIReference</a><br /> </dd><dt>URN</dt><dd><a href="html/libxml-SAX.html#globalNamespace">globalNamespace</a><br /> <a href="html/libxml-SAX.html#namespaceDecl">namespaceDecl</a><br /> diff --git a/doc/APIchunk9.html b/doc/APIchunk9.html index 98df8eb..91895db 100644 --- a/doc/APIchunk9.html +++ b/doc/APIchunk9.html @@ -44,6 +44,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlschemas.html#xmlSchemaValidateDoc">xmlSchemaValidateDoc</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaValidateOneElement">xmlSchemaValidateOneElement</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaValidateStream">xmlSchemaValidateStream</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronValidateDoc">xmlSchematronValidateDoc</a><br /> <a href="html/libxml-debugXML.html#xmlShellValidate">xmlShellValidate</a><br /> <a href="html/libxml-valid.html#xmlValidateAttributeValue">xmlValidateAttributeValue</a><br /> <a href="html/libxml-valid.html#xmlValidateNameValue">xmlValidateNameValue</a><br /> @@ -206,7 +207,8 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xpointer.html#xmlXPtrEvalRangePredicate">xmlXPtrEvalRangePredicate</a><br /> <a href="html/libxml-xpointer.html#xmlXPtrNewContext">xmlXPtrNewContext</a><br /> <a href="html/libxml-xpointer.html#xmlXPtrRangeToFunction">xmlXPtrRangeToFunction</a><br /> -</dd><dt>XSD</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderSchemaValidate">xmlTextReaderSchemaValidate</a><br /> +</dd><dt>XSD</dt><dd><a href="html/libxml-xmlautomata.html#xmlAutomataNewNegTrans">xmlAutomataNewNegTrans</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderSchemaValidate">xmlTextReaderSchemaValidate</a><br /> <a href="html/libxml-xmlreader.html#xmlTextReaderSetSchema">xmlTextReaderSetSchema</a><br /> </dd><dt>XSLT</dt><dd><a href="html/libxml-tree.html#_xmlNode">_xmlNode</a><br /> <a href="html/libxml-xpath.html#_xmlXPathContext">_xmlXPathContext</a><br /> diff --git a/doc/APIconstructors.html b/doc/APIconstructors.html index 7625556..9598e49 100644 --- a/doc/APIconstructors.html +++ b/doc/APIconstructors.html @@ -148,6 +148,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlautomata.html#xmlAutomataNewCountedTrans">xmlAutomataNewCountedTrans</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewCounterTrans">xmlAutomataNewCounterTrans</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewEpsilon">xmlAutomataNewEpsilon</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewNegTrans">xmlAutomataNewNegTrans</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewOnceTrans">xmlAutomataNewOnceTrans</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewOnceTrans2">xmlAutomataNewOnceTrans2</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewState">xmlAutomataNewState</a><br /> @@ -324,6 +325,14 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-parserInternals.html#xmlParseNotationType">xmlParseNotationType</a><br /> </p><h2>Type xmlErrorPtr:</h2><p><a href="html/libxml-xmlerror.html#xmlCtxtGetLastError">xmlCtxtGetLastError</a><br /> <a href="html/libxml-xmlerror.html#xmlGetLastError">xmlGetLastError</a><br /> +</p><h2>Type xmlExpCtxtPtr:</h2><p><a href="html/libxml-xmlregexp.html#xmlExpNewCtxt">xmlExpNewCtxt</a><br /> +</p><h2>Type xmlExpNodePtr:</h2><p><a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewAtom">xmlExpNewAtom</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewOr">xmlExpNewOr</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewSeq">xmlExpNewSeq</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpStringDerive">xmlExpStringDerive</a><br /> </p><h2>Type xmlExternalEntityLoader:</h2><p><a href="html/libxml-parser.html#xmlGetExternalEntityLoader">xmlGetExternalEntityLoader</a><br /> </p><h2>Type xmlGlobalStatePtr:</h2><p><a href="html/libxml-threads.html#xmlGetGlobalState">xmlGetGlobalState</a><br /> </p><h2>Type xmlHashTablePtr:</h2><p><a href="html/libxml-hash.html#xmlHashCopy">xmlHashCopy</a><br /> @@ -491,6 +500,11 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlschemastypes.html#xmlSchemaValueGetNext">xmlSchemaValueGetNext</a><br /> </p><h2>Type xmlSchemaValType:</h2><p><a href="html/libxml-xmlschemastypes.html#xmlSchemaGetValType">xmlSchemaGetValType</a><br /> </p><h2>Type xmlSchemaValidCtxtPtr:</h2><p><a href="html/libxml-xmlschemas.html#xmlSchemaNewValidCtxt">xmlSchemaNewValidCtxt</a><br /> +</p><h2>Type xmlSchematronParserCtxtPtr:</h2><p><a href="html/libxml-schematron.html#xmlSchematronNewDocParserCtxt">xmlSchematronNewDocParserCtxt</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronNewMemParserCtxt">xmlSchematronNewMemParserCtxt</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronNewParserCtxt">xmlSchematronNewParserCtxt</a><br /> +</p><h2>Type xmlSchematronPtr:</h2><p><a href="html/libxml-schematron.html#xmlSchematronParse">xmlSchematronParse</a><br /> +</p><h2>Type xmlSchematronValidCtxtPtr:</h2><p><a href="html/libxml-schematron.html#xmlSchematronNewValidCtxt">xmlSchematronNewValidCtxt</a><br /> </p><h2>Type xmlStreamCtxtPtr:</h2><p><a href="html/libxml-pattern.html#xmlPatternGetStreamCtxt">xmlPatternGetStreamCtxt</a><br /> </p><h2>Type xmlTextReaderPtr:</h2><p><a href="html/libxml-xmlreader.html#xmlNewTextReader">xmlNewTextReader</a><br /> <a href="html/libxml-xmlreader.html#xmlNewTextReaderFilename">xmlNewTextReaderFilename</a><br /> @@ -508,6 +522,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlwriter.html#xmlNewTextWriterTree">xmlNewTextWriterTree</a><br /> </p><h2>Type xmlURIPtr:</h2><p><a href="html/libxml-uri.html#xmlCreateURI">xmlCreateURI</a><br /> <a href="html/libxml-uri.html#xmlParseURI">xmlParseURI</a><br /> +<a href="html/libxml-uri.html#xmlParseURIRaw">xmlParseURIRaw</a><br /> </p><h2>Type xmlValidCtxtPtr:</h2><p><a href="html/libxml-valid.html#xmlNewValidCtxt">xmlNewValidCtxt</a><br /> </p><h2>Type xmlXIncludeCtxtPtr:</h2><p><a href="html/libxml-xinclude.html#xmlXIncludeNewContext">xmlXIncludeNewContext</a><br /> </p><h2>Type xmlXPathCompExprPtr:</h2><p><a href="html/libxml-xpath.html#xmlXPathCompile">xmlXPathCompile</a><br /> diff --git a/doc/APIfiles.html b/doc/APIfiles.html index 94d55f0..b275cf7 100644 --- a/doc/APIfiles.html +++ b/doc/APIfiles.html @@ -27,11 +27,13 @@ A:link, A:visited, A:active { text-decoration: underline } </p><h2><a name="HTMLparser" id="HTMLparser">Module HTMLparser</a>:</h2><p><a href="html/libxml-HTMLparser.html#HTML_DEPRECATED">HTML_DEPRECATED</a><br /> <a href="html/libxml-HTMLparser.html#HTML_INVALID">HTML_INVALID</a><br /> <a href="html/libxml-HTMLparser.html#HTML_NA">HTML_NA</a><br /> +<a href="html/libxml-HTMLparser.html#HTML_PARSE_COMPACT">HTML_PARSE_COMPACT</a><br /> <a href="html/libxml-HTMLparser.html#HTML_PARSE_NOBLANKS">HTML_PARSE_NOBLANKS</a><br /> <a href="html/libxml-HTMLparser.html#HTML_PARSE_NOERROR">HTML_PARSE_NOERROR</a><br /> <a href="html/libxml-HTMLparser.html#HTML_PARSE_NONET">HTML_PARSE_NONET</a><br /> <a href="html/libxml-HTMLparser.html#HTML_PARSE_NOWARNING">HTML_PARSE_NOWARNING</a><br /> <a href="html/libxml-HTMLparser.html#HTML_PARSE_PEDANTIC">HTML_PARSE_PEDANTIC</a><br /> +<a href="html/libxml-HTMLparser.html#HTML_PARSE_RECOVER">HTML_PARSE_RECOVER</a><br /> <a href="html/libxml-HTMLparser.html#HTML_REQUIRED">HTML_REQUIRED</a><br /> <a href="html/libxml-HTMLparser.html#HTML_VALID">HTML_VALID</a><br /> <a href="html/libxml-HTMLparser.html#UTF8ToHtml">UTF8ToHtml</a><br /> @@ -574,6 +576,37 @@ A:link, A:visited, A:active { text-decoration: underline } </p><h2><a name="parser" id="parser">Module parser</a>:</h2><p><a href="html/libxml-parser.html#XML_COMPLETE_ATTRS">XML_COMPLETE_ATTRS</a><br /> <a href="html/libxml-parser.html#XML_DEFAULT_VERSION">XML_DEFAULT_VERSION</a><br /> <a href="html/libxml-parser.html#XML_DETECT_IDS">XML_DETECT_IDS</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_AUTOMATA">XML_FEATURE_AUTOMATA</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_C14N">XML_FEATURE_C14N</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_CATALOG">XML_FEATURE_CATALOG</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_DEBUG">XML_FEATURE_DEBUG</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_DEBUG_MEM">XML_FEATURE_DEBUG_MEM</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_DEBUG_RUN">XML_FEATURE_DEBUG_RUN</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_EXPR">XML_FEATURE_EXPR</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_FTP">XML_FEATURE_FTP</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_HTML">XML_FEATURE_HTML</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_HTTP">XML_FEATURE_HTTP</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_ICONV">XML_FEATURE_ICONV</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_ISO8859X">XML_FEATURE_ISO8859X</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_LEGACY">XML_FEATURE_LEGACY</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_MODULES">XML_FEATURE_MODULES</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_NONE">XML_FEATURE_NONE</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_OUTPUT">XML_FEATURE_OUTPUT</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_PATTERN">XML_FEATURE_PATTERN</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_PUSH">XML_FEATURE_PUSH</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_READER">XML_FEATURE_READER</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_REGEXP">XML_FEATURE_REGEXP</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_SAX1">XML_FEATURE_SAX1</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_SCHEMAS">XML_FEATURE_SCHEMAS</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_SCHEMATRON">XML_FEATURE_SCHEMATRON</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_THREAD">XML_FEATURE_THREAD</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_TREE">XML_FEATURE_TREE</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_UNICODE">XML_FEATURE_UNICODE</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_VALID">XML_FEATURE_VALID</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_WRITER">XML_FEATURE_WRITER</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_XINCLUDE">XML_FEATURE_XINCLUDE</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_XPATH">XML_FEATURE_XPATH</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_XPTR">XML_FEATURE_XPTR</a><br /> <a href="html/libxml-parser.html#XML_PARSER_ATTRIBUTE_VALUE">XML_PARSER_ATTRIBUTE_VALUE</a><br /> <a href="html/libxml-parser.html#XML_PARSER_CDATA_SECTION">XML_PARSER_CDATA_SECTION</a><br /> <a href="html/libxml-parser.html#XML_PARSER_COMMENT">XML_PARSER_COMMENT</a><br /> @@ -592,6 +625,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-parser.html#XML_PARSER_START">XML_PARSER_START</a><br /> <a href="html/libxml-parser.html#XML_PARSER_START_TAG">XML_PARSER_START_TAG</a><br /> <a href="html/libxml-parser.html#XML_PARSER_SYSTEM_LITERAL">XML_PARSER_SYSTEM_LITERAL</a><br /> +<a href="html/libxml-parser.html#XML_PARSE_COMPACT">XML_PARSE_COMPACT</a><br /> <a href="html/libxml-parser.html#XML_PARSE_DOM">XML_PARSE_DOM</a><br /> <a href="html/libxml-parser.html#XML_PARSE_DTDATTR">XML_PARSE_DTDATTR</a><br /> <a href="html/libxml-parser.html#XML_PARSE_DTDLOAD">XML_PARSE_DTDLOAD</a><br /> @@ -669,10 +703,12 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-parser.html#xmlCtxtResetPush">xmlCtxtResetPush</a><br /> <a href="html/libxml-parser.html#xmlCtxtUseOptions">xmlCtxtUseOptions</a><br /> <a href="html/libxml-parser.html#xmlExternalEntityLoader">xmlExternalEntityLoader</a><br /> +<a href="html/libxml-parser.html#xmlFeature">xmlFeature</a><br /> <a href="html/libxml-parser.html#xmlFreeParserCtxt">xmlFreeParserCtxt</a><br /> <a href="html/libxml-parser.html#xmlGetExternalEntityLoader">xmlGetExternalEntityLoader</a><br /> <a href="html/libxml-parser.html#xmlGetFeature">xmlGetFeature</a><br /> <a href="html/libxml-parser.html#xmlGetFeaturesList">xmlGetFeaturesList</a><br /> +<a href="html/libxml-parser.html#xmlHasFeature">xmlHasFeature</a><br /> <a href="html/libxml-parser.html#xmlIOParseDTD">xmlIOParseDTD</a><br /> <a href="html/libxml-parser.html#xmlInitNodeInfoSeq">xmlInitNodeInfoSeq</a><br /> <a href="html/libxml-parser.html#xmlInitParser">xmlInitParser</a><br /> @@ -869,6 +905,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-pattern.html#xmlPatternGetStreamCtxt">xmlPatternGetStreamCtxt</a><br /> <a href="html/libxml-pattern.html#xmlPatternMatch">xmlPatternMatch</a><br /> <a href="html/libxml-pattern.html#xmlPatternMaxDepth">xmlPatternMaxDepth</a><br /> +<a href="html/libxml-pattern.html#xmlPatternMinDepth">xmlPatternMinDepth</a><br /> <a href="html/libxml-pattern.html#xmlPatternPtr">xmlPatternPtr</a><br /> <a href="html/libxml-pattern.html#xmlPatternStreamable">xmlPatternStreamable</a><br /> <a href="html/libxml-pattern.html#xmlPatterncompile">xmlPatterncompile</a><br /> @@ -941,6 +978,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-relaxng.html#xmlRelaxNGPtr">xmlRelaxNGPtr</a><br /> <a href="html/libxml-relaxng.html#xmlRelaxNGSetParserErrors">xmlRelaxNGSetParserErrors</a><br /> <a href="html/libxml-relaxng.html#xmlRelaxNGSetValidErrors">xmlRelaxNGSetValidErrors</a><br /> +<a href="html/libxml-relaxng.html#xmlRelaxNGSetValidStructuredErrors">xmlRelaxNGSetValidStructuredErrors</a><br /> <a href="html/libxml-relaxng.html#xmlRelaxNGValidCtxt">xmlRelaxNGValidCtxt</a><br /> <a href="html/libxml-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a><br /> <a href="html/libxml-relaxng.html#xmlRelaxNGValidErr">xmlRelaxNGValidErr</a><br /> @@ -1167,6 +1205,30 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-schemasInternals.html#xmlSchemaWildcardNs">xmlSchemaWildcardNs</a><br /> <a href="html/libxml-schemasInternals.html#xmlSchemaWildcardNsPtr">xmlSchemaWildcardNsPtr</a><br /> <a href="html/libxml-schemasInternals.html#xmlSchemaWildcardPtr">xmlSchemaWildcardPtr</a><br /> +</p><h2><a name="schematron" id="schematron">Module schematron</a>:</h2><p><a href="html/libxml-schematron.html#XML_SCHEMATRON_OUT_BUFFER">XML_SCHEMATRON_OUT_BUFFER</a><br /> +<a href="html/libxml-schematron.html#XML_SCHEMATRON_OUT_FILE">XML_SCHEMATRON_OUT_FILE</a><br /> +<a href="html/libxml-schematron.html#XML_SCHEMATRON_OUT_IO">XML_SCHEMATRON_OUT_IO</a><br /> +<a href="html/libxml-schematron.html#XML_SCHEMATRON_OUT_QUIET">XML_SCHEMATRON_OUT_QUIET</a><br /> +<a href="html/libxml-schematron.html#XML_SCHEMATRON_OUT_TEXT">XML_SCHEMATRON_OUT_TEXT</a><br /> +<a href="html/libxml-schematron.html#XML_SCHEMATRON_OUT_XML">XML_SCHEMATRON_OUT_XML</a><br /> +<a href="html/libxml-schematron.html#xmlSchematron">xmlSchematron</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronFree">xmlSchematronFree</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronFreeParserCtxt">xmlSchematronFreeParserCtxt</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronFreeValidCtxt">xmlSchematronFreeValidCtxt</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronNewDocParserCtxt">xmlSchematronNewDocParserCtxt</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronNewMemParserCtxt">xmlSchematronNewMemParserCtxt</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronNewParserCtxt">xmlSchematronNewParserCtxt</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronNewValidCtxt">xmlSchematronNewValidCtxt</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronParse">xmlSchematronParse</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronParserCtxt">xmlSchematronParserCtxt</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronParserCtxtPtr">xmlSchematronParserCtxtPtr</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronPtr">xmlSchematronPtr</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronValidCtxt">xmlSchematronValidCtxt</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronValidCtxtPtr">xmlSchematronValidCtxtPtr</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronValidOptions">xmlSchematronValidOptions</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronValidateDoc">xmlSchematronValidateDoc</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronValidityErrorFunc">xmlSchematronValidityErrorFunc</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronValidityWarningFunc">xmlSchematronValidityWarningFunc</a><br /> </p><h2><a name="threads" id="threads">Module threads</a>:</h2><p><a href="html/libxml-threads.html#xmlCleanupThreads">xmlCleanupThreads</a><br /> <a href="html/libxml-threads.html#xmlFreeMutex">xmlFreeMutex</a><br /> <a href="html/libxml-threads.html#xmlFreeRMutex">xmlFreeRMutex</a><br /> @@ -1468,6 +1530,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-uri.html#xmlFreeURI">xmlFreeURI</a><br /> <a href="html/libxml-uri.html#xmlNormalizeURIPath">xmlNormalizeURIPath</a><br /> <a href="html/libxml-uri.html#xmlParseURI">xmlParseURI</a><br /> +<a href="html/libxml-uri.html#xmlParseURIRaw">xmlParseURIRaw</a><br /> <a href="html/libxml-uri.html#xmlParseURIReference">xmlParseURIReference</a><br /> <a href="html/libxml-uri.html#xmlPrintURI">xmlPrintURI</a><br /> <a href="html/libxml-uri.html#xmlSaveUri">xmlSaveUri</a><br /> @@ -1682,6 +1745,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlautomata.html#xmlAutomataNewCounter">xmlAutomataNewCounter</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewCounterTrans">xmlAutomataNewCounterTrans</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewEpsilon">xmlAutomataNewEpsilon</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewNegTrans">xmlAutomataNewNegTrans</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewOnceTrans">xmlAutomataNewOnceTrans</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewOnceTrans2">xmlAutomataNewOnceTrans2</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewState">xmlAutomataNewState</a><br /> @@ -1896,6 +1960,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlerror.html#XML_FROM_FTP">XML_FROM_FTP</a><br /> <a href="html/libxml-xmlerror.html#XML_FROM_HTML">XML_FROM_HTML</a><br /> <a href="html/libxml-xmlerror.html#XML_FROM_HTTP">XML_FROM_HTTP</a><br /> +<a href="html/libxml-xmlerror.html#XML_FROM_I18N">XML_FROM_I18N</a><br /> <a href="html/libxml-xmlerror.html#XML_FROM_IO">XML_FROM_IO</a><br /> <a href="html/libxml-xmlerror.html#XML_FROM_MEMORY">XML_FROM_MEMORY</a><br /> <a href="html/libxml-xmlerror.html#XML_FROM_MODULE">XML_FROM_MODULE</a><br /> @@ -1924,6 +1989,11 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlerror.html#XML_HTTP_UNKNOWN_HOST">XML_HTTP_UNKNOWN_HOST</a><br /> <a href="html/libxml-xmlerror.html#XML_HTTP_URL_SYNTAX">XML_HTTP_URL_SYNTAX</a><br /> <a href="html/libxml-xmlerror.html#XML_HTTP_USE_IP">XML_HTTP_USE_IP</a><br /> +<a href="html/libxml-xmlerror.html#XML_I18N_CONV_FAILED">XML_I18N_CONV_FAILED</a><br /> +<a href="html/libxml-xmlerror.html#XML_I18N_EXCESS_HANDLER">XML_I18N_EXCESS_HANDLER</a><br /> +<a href="html/libxml-xmlerror.html#XML_I18N_NO_HANDLER">XML_I18N_NO_HANDLER</a><br /> +<a href="html/libxml-xmlerror.html#XML_I18N_NO_NAME">XML_I18N_NO_NAME</a><br /> +<a href="html/libxml-xmlerror.html#XML_I18N_NO_OUTPUT">XML_I18N_NO_OUTPUT</a><br /> <a href="html/libxml-xmlerror.html#XML_IO_BUFFER_FULL">XML_IO_BUFFER_FULL</a><br /> <a href="html/libxml-xmlerror.html#XML_IO_EACCES">XML_IO_EACCES</a><br /> <a href="html/libxml-xmlerror.html#XML_IO_EADDRINUSE">XML_IO_EADDRINUSE</a><br /> @@ -2255,6 +2325,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlerror.html#XML_SCHEMAP_SRC_IMPORT_3_2">XML_SCHEMAP_SRC_IMPORT_3_2</a><br /> <a href="html/libxml-xmlerror.html#XML_SCHEMAP_SRC_INCLUDE">XML_SCHEMAP_SRC_INCLUDE</a><br /> <a href="html/libxml-xmlerror.html#XML_SCHEMAP_SRC_LIST_ITEMTYPE_OR_SIMPLETYPE">XML_SCHEMAP_SRC_LIST_ITEMTYPE_OR_SIMPLETYPE</a><br /> +<a href="html/libxml-xmlerror.html#XML_SCHEMAP_SRC_REDEFINE">XML_SCHEMAP_SRC_REDEFINE</a><br /> <a href="html/libxml-xmlerror.html#XML_SCHEMAP_SRC_RESOLVE">XML_SCHEMAP_SRC_RESOLVE</a><br /> <a href="html/libxml-xmlerror.html#XML_SCHEMAP_SRC_RESTRICTION_BASE_OR_SIMPLETYPE">XML_SCHEMAP_SRC_RESTRICTION_BASE_OR_SIMPLETYPE</a><br /> <a href="html/libxml-xmlerror.html#XML_SCHEMAP_SRC_SIMPLE_TYPE_1">XML_SCHEMAP_SRC_SIMPLE_TYPE_1</a><br /> @@ -2458,6 +2529,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlerror.html#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a><br /> </p><h2><a name="xmlexports" id="xmlexports">Module xmlexports</a>:</h2><p><a href="html/libxml-xmlexports.html#LIBXML_DLL_IMPORT">LIBXML_DLL_IMPORT</a><br /> <a href="html/libxml-xmlexports.html#XMLCALL">XMLCALL</a><br /> +<a href="html/libxml-xmlexports.html#XMLCDECL">XMLCDECL</a><br /> <a href="html/libxml-xmlexports.html#XMLPUBFUN">XMLPUBFUN</a><br /> <a href="html/libxml-xmlexports.html#XMLPUBVAR">XMLPUBVAR</a><br /> <a href="html/libxml-xmlexports.html#_REENTRANT">_REENTRANT</a><br /> @@ -2621,7 +2693,39 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlreader.html#xmlTextReaderStandalone">xmlTextReaderStandalone</a><br /> <a href="html/libxml-xmlreader.html#xmlTextReaderValue">xmlTextReaderValue</a><br /> <a href="html/libxml-xmlreader.html#xmlTextReaderXmlLang">xmlTextReaderXmlLang</a><br /> -</p><h2><a name="xmlregexp" id="xmlregexp">Module xmlregexp</a>:</h2><p><a href="html/libxml-xmlregexp.html#xmlRegExecCallbacks">xmlRegExecCallbacks</a><br /> +</p><h2><a name="xmlregexp" id="xmlregexp">Module xmlregexp</a>:</h2><p><a href="html/libxml-xmlregexp.html#XML_EXP_ATOM">XML_EXP_ATOM</a><br /> +<a href="html/libxml-xmlregexp.html#XML_EXP_COUNT">XML_EXP_COUNT</a><br /> +<a href="html/libxml-xmlregexp.html#XML_EXP_EMPTY">XML_EXP_EMPTY</a><br /> +<a href="html/libxml-xmlregexp.html#XML_EXP_FORBID">XML_EXP_FORBID</a><br /> +<a href="html/libxml-xmlregexp.html#XML_EXP_OR">XML_EXP_OR</a><br /> +<a href="html/libxml-xmlregexp.html#XML_EXP_SEQ">XML_EXP_SEQ</a><br /> +<a href="html/libxml-xmlregexp.html#emptyExp">emptyExp</a><br /> +<a href="html/libxml-xmlregexp.html#forbiddenExp">forbiddenExp</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpCtxt">xmlExpCtxt</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpCtxtNbCons">xmlExpCtxtNbCons</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpCtxtNbNodes">xmlExpCtxtNbNodes</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpDump">xmlExpDump</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpFree">xmlExpFree</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpFreeCtxt">xmlExpFreeCtxt</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpGetLanguage">xmlExpGetLanguage</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpGetStart">xmlExpGetStart</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpIsNillable">xmlExpIsNillable</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpMaxToken">xmlExpMaxToken</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewAtom">xmlExpNewAtom</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewCtxt">xmlExpNewCtxt</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewOr">xmlExpNewOr</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewSeq">xmlExpNewSeq</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNode">xmlExpNode</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNodeType">xmlExpNodeType</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpRef">xmlExpRef</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpStringDerive">xmlExpStringDerive</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpSubsume">xmlExpSubsume</a><br /> +<a href="html/libxml-xmlregexp.html#xmlRegExecCallbacks">xmlRegExecCallbacks</a><br /> <a href="html/libxml-xmlregexp.html#xmlRegExecCtxt">xmlRegExecCtxt</a><br /> <a href="html/libxml-xmlregexp.html#xmlRegExecCtxtPtr">xmlRegExecCtxtPtr</a><br /> <a href="html/libxml-xmlregexp.html#xmlRegExecErrInfo">xmlRegExecErrInfo</a><br /> @@ -2638,6 +2742,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlregexp.html#xmlRegexpPrint">xmlRegexpPrint</a><br /> <a href="html/libxml-xmlregexp.html#xmlRegexpPtr">xmlRegexpPtr</a><br /> </p><h2><a name="xmlsave" id="xmlsave">Module xmlsave</a>:</h2><p><a href="html/libxml-xmlsave.html#XML_SAVE_FORMAT">XML_SAVE_FORMAT</a><br /> +<a href="html/libxml-xmlsave.html#XML_SAVE_NO_DECL">XML_SAVE_NO_DECL</a><br /> <a href="html/libxml-xmlsave.html#xmlSaveClose">xmlSaveClose</a><br /> <a href="html/libxml-xmlsave.html#xmlSaveCtxt">xmlSaveCtxt</a><br /> <a href="html/libxml-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a><br /> @@ -2700,6 +2805,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlschemas.html#xmlSchemaSetParserErrors">xmlSchemaSetParserErrors</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaSetValidErrors">xmlSchemaSetValidErrors</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaSetValidOptions">xmlSchemaSetValidOptions</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaSetValidStructuredErrors">xmlSchemaSetValidStructuredErrors</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaValidCtxt">xmlSchemaValidCtxt</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaValidCtxtGetOptions">xmlSchemaValidCtxtGetOptions</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a><br /> @@ -2957,6 +3063,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlversion.html#LIBXML_DEBUG_RUNTIME">LIBXML_DEBUG_RUNTIME</a><br /> <a href="html/libxml-xmlversion.html#LIBXML_DOCB_ENABLED">LIBXML_DOCB_ENABLED</a><br /> <a href="html/libxml-xmlversion.html#LIBXML_DOTTED_VERSION">LIBXML_DOTTED_VERSION</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_EXPR_ENABLED">LIBXML_EXPR_ENABLED</a><br /> <a href="html/libxml-xmlversion.html#LIBXML_FTP_ENABLED">LIBXML_FTP_ENABLED</a><br /> <a href="html/libxml-xmlversion.html#LIBXML_HTML_ENABLED">LIBXML_HTML_ENABLED</a><br /> <a href="html/libxml-xmlversion.html#LIBXML_HTTP_ENABLED">LIBXML_HTTP_ENABLED</a><br /> @@ -2972,6 +3079,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlversion.html#LIBXML_REGEXP_ENABLED">LIBXML_REGEXP_ENABLED</a><br /> <a href="html/libxml-xmlversion.html#LIBXML_SAX1_ENABLED">LIBXML_SAX1_ENABLED</a><br /> <a href="html/libxml-xmlversion.html#LIBXML_SCHEMAS_ENABLED">LIBXML_SCHEMAS_ENABLED</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_SCHEMATRON_ENABLED">LIBXML_SCHEMATRON_ENABLED</a><br /> <a href="html/libxml-xmlversion.html#LIBXML_TEST_VERSION">LIBXML_TEST_VERSION</a><br /> <a href="html/libxml-xmlversion.html#LIBXML_THREAD_ENABLED">LIBXML_THREAD_ENABLED</a><br /> <a href="html/libxml-xmlversion.html#LIBXML_TREE_ENABLED">LIBXML_TREE_ENABLED</a><br /> @@ -3070,7 +3178,9 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlwriter.html#xmlTextWriterWriteVFormatPI">xmlTextWriterWriteVFormatPI</a><br /> <a href="html/libxml-xmlwriter.html#xmlTextWriterWriteVFormatRaw">xmlTextWriterWriteVFormatRaw</a><br /> <a href="html/libxml-xmlwriter.html#xmlTextWriterWriteVFormatString">xmlTextWriterWriteVFormatString</a><br /> -</p><h2><a name="xpath" id="xpath">Module xpath</a>:</h2><p><a href="html/libxml-xpath.html#XPATH_BOOLEAN">XPATH_BOOLEAN</a><br /> +</p><h2><a name="xpath" id="xpath">Module xpath</a>:</h2><p><a href="html/libxml-xpath.html#XML_XPATH_CHECKNS">XML_XPATH_CHECKNS</a><br /> +<a href="html/libxml-xpath.html#XML_XPATH_NOVAR">XML_XPATH_NOVAR</a><br /> +<a href="html/libxml-xpath.html#XPATH_BOOLEAN">XPATH_BOOLEAN</a><br /> <a href="html/libxml-xpath.html#XPATH_ENCODING_ERROR">XPATH_ENCODING_ERROR</a><br /> <a href="html/libxml-xpath.html#XPATH_EXPRESSION_OK">XPATH_EXPRESSION_OK</a><br /> <a href="html/libxml-xpath.html#XPATH_EXPR_ERROR">XPATH_EXPR_ERROR</a><br /> diff --git a/doc/APIfunctions.html b/doc/APIfunctions.html index ce0d0c5..3d660c4 100644 --- a/doc/APIfunctions.html +++ b/doc/APIfunctions.html @@ -19,6 +19,8 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-relaxng.html#xmlRelaxNGValidityWarningFunc">xmlRelaxNGValidityWarningFunc</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaValidityErrorFunc">xmlSchemaValidityErrorFunc</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaValidityWarningFunc">xmlSchemaValidityWarningFunc</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronValidityErrorFunc">xmlSchematronValidityErrorFunc</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronValidityWarningFunc">xmlSchematronValidityWarningFunc</a><br /> <a href="html/libxml-xmlstring.html#xmlStrPrintf">xmlStrPrintf</a><br /> <a href="html/libxml-xmlwriter.html#xmlTextWriterWriteFormatAttribute">xmlTextWriterWriteFormatAttribute</a><br /> <a href="html/libxml-xmlwriter.html#xmlTextWriterWriteFormatAttributeNS">xmlTextWriterWriteFormatAttributeNS</a><br /> @@ -180,6 +182,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-tree.html#xmlAttrSerializeTxtContent">xmlAttrSerializeTxtContent</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewCountTrans">xmlAutomataNewCountTrans</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewCountTrans2">xmlAutomataNewCountTrans2</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewNegTrans">xmlAutomataNewNegTrans</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewOnceTrans">xmlAutomataNewOnceTrans</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewOnceTrans2">xmlAutomataNewOnceTrans2</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewTransition">xmlAutomataNewTransition</a><br /> @@ -218,6 +221,8 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-entities.html#xmlEncodeEntities">xmlEncodeEntities</a><br /> <a href="html/libxml-entities.html#xmlEncodeEntitiesReentrant">xmlEncodeEntitiesReentrant</a><br /> <a href="html/libxml-entities.html#xmlEncodeSpecialChars">xmlEncodeSpecialChars</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewAtom">xmlExpNewAtom</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpStringDerive">xmlExpStringDerive</a><br /> <a href="html/libxml-entities.html#xmlGetDocEntity">xmlGetDocEntity</a><br /> <a href="html/libxml-valid.html#xmlGetDtdAttrDesc">xmlGetDtdAttrDesc</a><br /> <a href="html/libxml-valid.html#xmlGetDtdElementDesc">xmlGetDtdElementDesc</a><br /> @@ -491,6 +496,8 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-parser.html#startElementSAXFunc">startElementSAXFunc</a><br /> <a href="html/libxml-xlink.html#xlinkExtendedLinkFunk">xlinkExtendedLinkFunk</a><br /> <a href="html/libxml-xlink.html#xlinkExtendedLinkSetFunk">xlinkExtendedLinkSetFunk</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpGetLanguage">xmlExpGetLanguage</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpGetStart">xmlExpGetStart</a><br /> <a href="html/libxml-pattern.html#xmlPatterncompile">xmlPatterncompile</a><br /> <a href="html/libxml-xmlregexp.html#xmlRegExecErrInfo">xmlRegExecErrInfo</a><br /> <a href="html/libxml-SAX2.html#xmlSAX2StartElement">xmlSAX2StartElement</a><br /> @@ -694,6 +701,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xlink.html#xlinkSimpleLinkFunk">xlinkSimpleLinkFunk</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewCountTrans">xmlAutomataNewCountTrans</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewCountTrans2">xmlAutomataNewCountTrans2</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewNegTrans">xmlAutomataNewNegTrans</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewOnceTrans">xmlAutomataNewOnceTrans</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewOnceTrans2">xmlAutomataNewOnceTrans2</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewTransition">xmlAutomataNewTransition</a><br /> @@ -792,6 +800,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlregexp.html#xmlRegNewExecCtxt">xmlRegNewExecCtxt</a><br /> <a href="html/libxml-relaxng.html#xmlRelaxNGSetParserErrors">xmlRelaxNGSetParserErrors</a><br /> <a href="html/libxml-relaxng.html#xmlRelaxNGSetValidErrors">xmlRelaxNGSetValidErrors</a><br /> +<a href="html/libxml-relaxng.html#xmlRelaxNGSetValidStructuredErrors">xmlRelaxNGSetValidStructuredErrors</a><br /> <a href="html/libxml-relaxng.html#xmlRelaxNGValidityErrorFunc">xmlRelaxNGValidityErrorFunc</a><br /> <a href="html/libxml-relaxng.html#xmlRelaxNGValidityWarningFunc">xmlRelaxNGValidityWarningFunc</a><br /> <a href="html/libxml-SAX2.html#xmlSAX2AttributeDecl">xmlSAX2AttributeDecl</a><br /> @@ -831,9 +840,12 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlsave.html#xmlSaveToIO">xmlSaveToIO</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaSetParserErrors">xmlSchemaSetParserErrors</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaSetValidErrors">xmlSchemaSetValidErrors</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaSetValidStructuredErrors">xmlSchemaSetValidStructuredErrors</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaValidateStream">xmlSchemaValidateStream</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaValidityErrorFunc">xmlSchemaValidityErrorFunc</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaValidityWarningFunc">xmlSchemaValidityWarningFunc</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronValidityErrorFunc">xmlSchematronValidityErrorFunc</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronValidityWarningFunc">xmlSchematronValidityWarningFunc</a><br /> <a href="html/libxml-parser.html#xmlSetFeature">xmlSetFeature</a><br /> <a href="html/libxml-xmlerror.html#xmlSetGenericErrorFunc">xmlSetGenericErrorFunc</a><br /> <a href="html/libxml-xmlerror.html#xmlSetStructuredErrorFunc">xmlSetStructuredErrorFunc</a><br /> @@ -894,6 +906,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlautomata.html#xmlAutomataNewCounter">xmlAutomataNewCounter</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewCounterTrans">xmlAutomataNewCounterTrans</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewEpsilon">xmlAutomataNewEpsilon</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewNegTrans">xmlAutomataNewNegTrans</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewOnceTrans">xmlAutomataNewOnceTrans</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewOnceTrans2">xmlAutomataNewOnceTrans2</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewState">xmlAutomataNewState</a><br /> @@ -907,6 +920,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlautomata.html#xmlAutomataNewCountedTrans">xmlAutomataNewCountedTrans</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewCounterTrans">xmlAutomataNewCounterTrans</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewEpsilon">xmlAutomataNewEpsilon</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewNegTrans">xmlAutomataNewNegTrans</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewOnceTrans">xmlAutomataNewOnceTrans</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewOnceTrans2">xmlAutomataNewOnceTrans2</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewTransition">xmlAutomataNewTransition</a><br /> @@ -942,6 +956,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-entities.html#xmlDumpEntityDecl">xmlDumpEntityDecl</a><br /> <a href="html/libxml-valid.html#xmlDumpNotationDecl">xmlDumpNotationDecl</a><br /> <a href="html/libxml-valid.html#xmlDumpNotationTable">xmlDumpNotationTable</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpDump">xmlExpDump</a><br /> <a href="html/libxml-xmlwriter.html#xmlNewTextWriterMemory">xmlNewTextWriterMemory</a><br /> <a href="html/libxml-tree.html#xmlNodeBufGetContent">xmlNodeBufGetContent</a><br /> <a href="html/libxml-tree.html#xmlNodeDump">xmlNodeDump</a><br /> @@ -1055,6 +1070,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-dict.html#xmlDictQLookup">xmlDictQLookup</a><br /> <a href="html/libxml-dict.html#xmlDictReference">xmlDictReference</a><br /> <a href="html/libxml-dict.html#xmlDictSize">xmlDictSize</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewCtxt">xmlExpNewCtxt</a><br /> <a href="html/libxml-hash.html#xmlHashCreateDict">xmlHashCreateDict</a><br /> </p><h2>Type xmlDocPtr:</h2><p><a href="html/libxml-HTMLtree.html#htmlDocContentDumpFormatOutput">htmlDocContentDumpFormatOutput</a><br /> <a href="html/libxml-HTMLtree.html#htmlDocContentDumpOutput">htmlDocContentDumpOutput</a><br /> @@ -1157,6 +1173,8 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-tree.html#xmlSaveFormatFileTo">xmlSaveFormatFileTo</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaNewDocParserCtxt">xmlSchemaNewDocParserCtxt</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaValidateDoc">xmlSchemaValidateDoc</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronNewDocParserCtxt">xmlSchematronNewDocParserCtxt</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronValidateDoc">xmlSchematronValidateDoc</a><br /> <a href="html/libxml-tree.html#xmlSearchNs">xmlSearchNs</a><br /> <a href="html/libxml-tree.html#xmlSearchNsByHref">xmlSearchNsByHref</a><br /> <a href="html/libxml-tree.html#xmlSetDocCompressMode">xmlSetDocCompressMode</a><br /> @@ -1241,7 +1259,35 @@ A:link, A:visited, A:active { text-decoration: underline } </p><h2>Type xmlErrorPtr:</h2><p><a href="html/libxml-xmlerror.html#xmlCopyError">xmlCopyError</a><br /> <a href="html/libxml-xmlerror.html#xmlResetError">xmlResetError</a><br /> <a href="html/libxml-xmlerror.html#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a><br /> +</p><h2>Type xmlExpCtxtPtr:</h2><p><a href="html/libxml-xmlregexp.html#xmlExpCtxtNbCons">xmlExpCtxtNbCons</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpCtxtNbNodes">xmlExpCtxtNbNodes</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpFree">xmlExpFree</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpFreeCtxt">xmlExpFreeCtxt</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpGetLanguage">xmlExpGetLanguage</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpGetStart">xmlExpGetStart</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewAtom">xmlExpNewAtom</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewOr">xmlExpNewOr</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewSeq">xmlExpNewSeq</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpStringDerive">xmlExpStringDerive</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpSubsume">xmlExpSubsume</a><br /> +</p><h2>Type xmlExpNodePtr:</h2><p><a href="html/libxml-xmlregexp.html#xmlExpDump">xmlExpDump</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpFree">xmlExpFree</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpGetLanguage">xmlExpGetLanguage</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpGetStart">xmlExpGetStart</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpIsNillable">xmlExpIsNillable</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpMaxToken">xmlExpMaxToken</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewOr">xmlExpNewOr</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewSeq">xmlExpNewSeq</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpRef">xmlExpRef</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpStringDerive">xmlExpStringDerive</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpSubsume">xmlExpSubsume</a><br /> </p><h2>Type xmlExternalEntityLoader:</h2><p><a href="html/libxml-parser.html#xmlSetExternalEntityLoader">xmlSetExternalEntityLoader</a><br /> +</p><h2>Type xmlFeature:</h2><p><a href="html/libxml-parser.html#xmlHasFeature">xmlHasFeature</a><br /> </p><h2>Type xmlFreeFunc:</h2><p><a href="html/libxml-xmlmemory.html#xmlGcMemSetup">xmlGcMemSetup</a><br /> <a href="html/libxml-xmlmemory.html#xmlMemSetup">xmlMemSetup</a><br /> </p><h2>Type xmlFreeFunc *:</h2><p><a href="html/libxml-xmlmemory.html#xmlGcMemGet">xmlGcMemGet</a><br /> @@ -1716,13 +1762,13 @@ A:link, A:visited, A:active { text-decoration: underline } </p><h2>Type xmlParserNodeInfoSeqPtr:</h2><p><a href="html/libxml-parser.html#xmlClearNodeInfoSeq">xmlClearNodeInfoSeq</a><br /> <a href="html/libxml-parser.html#xmlInitNodeInfoSeq">xmlInitNodeInfoSeq</a><br /> </p><h2>Type xmlParserSeverities:</h2><p><a href="html/libxml-xmlreader.html#xmlTextReaderErrorFunc">xmlTextReaderErrorFunc</a><br /> -</p><h2>Type xmlPatternFlags:</h2><p><a href="html/libxml-pattern.html#xmlPatterncompile">xmlPatterncompile</a><br /> </p><h2>Type xmlPatternPtr:</h2><p><a href="html/libxml-pattern.html#xmlFreePattern">xmlFreePattern</a><br /> <a href="html/libxml-pattern.html#xmlFreePatternList">xmlFreePatternList</a><br /> <a href="html/libxml-pattern.html#xmlPatternFromRoot">xmlPatternFromRoot</a><br /> <a href="html/libxml-pattern.html#xmlPatternGetStreamCtxt">xmlPatternGetStreamCtxt</a><br /> <a href="html/libxml-pattern.html#xmlPatternMatch">xmlPatternMatch</a><br /> <a href="html/libxml-pattern.html#xmlPatternMaxDepth">xmlPatternMaxDepth</a><br /> +<a href="html/libxml-pattern.html#xmlPatternMinDepth">xmlPatternMinDepth</a><br /> <a href="html/libxml-pattern.html#xmlPatternStreamable">xmlPatternStreamable</a><br /> </p><h2>Type xmlRMutexPtr:</h2><p><a href="html/libxml-threads.html#xmlFreeRMutex">xmlFreeRMutex</a><br /> <a href="html/libxml-threads.html#xmlRMutexLock">xmlRMutexLock</a><br /> @@ -1759,6 +1805,7 @@ A:link, A:visited, A:active { text-decoration: underline } </p><h2>Type xmlRelaxNGValidCtxtPtr:</h2><p><a href="html/libxml-relaxng.html#xmlRelaxNGFreeValidCtxt">xmlRelaxNGFreeValidCtxt</a><br /> <a href="html/libxml-relaxng.html#xmlRelaxNGGetValidErrors">xmlRelaxNGGetValidErrors</a><br /> <a href="html/libxml-relaxng.html#xmlRelaxNGSetValidErrors">xmlRelaxNGSetValidErrors</a><br /> +<a href="html/libxml-relaxng.html#xmlRelaxNGSetValidStructuredErrors">xmlRelaxNGSetValidStructuredErrors</a><br /> <a href="html/libxml-relaxng.html#xmlRelaxNGValidateDoc">xmlRelaxNGValidateDoc</a><br /> <a href="html/libxml-relaxng.html#xmlRelaxNGValidateFullElement">xmlRelaxNGValidateFullElement</a><br /> <a href="html/libxml-relaxng.html#xmlRelaxNGValidatePopElement">xmlRelaxNGValidatePopElement</a><br /> @@ -1860,6 +1907,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlschemas.html#xmlSchemaSAXPlug">xmlSchemaSAXPlug</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaSetValidErrors">xmlSchemaSetValidErrors</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaSetValidOptions">xmlSchemaSetValidOptions</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaSetValidStructuredErrors">xmlSchemaSetValidStructuredErrors</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaValidCtxtGetOptions">xmlSchemaValidCtxtGetOptions</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaValidateDoc">xmlSchemaValidateDoc</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaValidateFile">xmlSchemaValidateFile</a><br /> @@ -1878,6 +1926,12 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacetWhtsp">xmlSchemaValidateFacetWhtsp</a><br /> <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacetWhtsp">xmlSchemaValidateLengthFacetWhtsp</a><br /> </p><h2>Type xmlSchemaWildcardPtr:</h2><p><a href="html/libxml-schemasInternals.html#xmlSchemaFreeWildcard">xmlSchemaFreeWildcard</a><br /> +</p><h2>Type xmlSchematronParserCtxtPtr:</h2><p><a href="html/libxml-schematron.html#xmlSchematronFreeParserCtxt">xmlSchematronFreeParserCtxt</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronParse">xmlSchematronParse</a><br /> +</p><h2>Type xmlSchematronPtr:</h2><p><a href="html/libxml-schematron.html#xmlSchematronFree">xmlSchematronFree</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronNewValidCtxt">xmlSchematronNewValidCtxt</a><br /> +</p><h2>Type xmlSchematronValidCtxtPtr:</h2><p><a href="html/libxml-schematron.html#xmlSchematronFreeValidCtxt">xmlSchematronFreeValidCtxt</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronValidateDoc">xmlSchematronValidateDoc</a><br /> </p><h2>Type xmlShellCtxtPtr:</h2><p><a href="html/libxml-debugXML.html#xmlShellBase">xmlShellBase</a><br /> <a href="html/libxml-debugXML.html#xmlShellCat">xmlShellCat</a><br /> <a href="html/libxml-debugXML.html#xmlShellCmd">xmlShellCmd</a><br /> @@ -1898,7 +1952,9 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-pattern.html#xmlStreamPop">xmlStreamPop</a><br /> <a href="html/libxml-pattern.html#xmlStreamPush">xmlStreamPush</a><br /> <a href="html/libxml-pattern.html#xmlStreamPushAttr">xmlStreamPushAttr</a><br /> -</p><h2>Type xmlStructuredErrorFunc:</h2><p><a href="html/libxml-xmlerror.html#xmlSetStructuredErrorFunc">xmlSetStructuredErrorFunc</a><br /> +</p><h2>Type xmlStructuredErrorFunc:</h2><p><a href="html/libxml-relaxng.html#xmlRelaxNGSetValidStructuredErrors">xmlRelaxNGSetValidStructuredErrors</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaSetValidStructuredErrors">xmlSchemaSetValidStructuredErrors</a><br /> +<a href="html/libxml-xmlerror.html#xmlSetStructuredErrorFunc">xmlSetStructuredErrorFunc</a><br /> <a href="html/libxml-xmlreader.html#xmlTextReaderSetStructuredErrorHandler">xmlTextReaderSetStructuredErrorHandler</a><br /> <a href="html/libxml-globals.html#xmlThrDefSetStructuredErrorFunc">xmlThrDefSetStructuredErrorFunc</a><br /> </p><h2>Type xmlTextReaderErrorFunc:</h2><p><a href="html/libxml-xmlreader.html#xmlTextReaderSetErrorHandler">xmlTextReaderSetErrorHandler</a><br /> diff --git a/doc/APIsymbols.html b/doc/APIsymbols.html index 756863f..d0fe11d 100644 --- a/doc/APIsymbols.html +++ b/doc/APIsymbols.html @@ -25,11 +25,13 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-HTMLtree.html#HTML_ENTITY_REF_NODE">HTML_ENTITY_REF_NODE</a><br /> <a href="html/libxml-HTMLparser.html#HTML_INVALID">HTML_INVALID</a><br /> <a href="html/libxml-HTMLparser.html#HTML_NA">HTML_NA</a><br /> +<a href="html/libxml-HTMLparser.html#HTML_PARSE_COMPACT">HTML_PARSE_COMPACT</a><br /> <a href="html/libxml-HTMLparser.html#HTML_PARSE_NOBLANKS">HTML_PARSE_NOBLANKS</a><br /> <a href="html/libxml-HTMLparser.html#HTML_PARSE_NOERROR">HTML_PARSE_NOERROR</a><br /> <a href="html/libxml-HTMLparser.html#HTML_PARSE_NONET">HTML_PARSE_NONET</a><br /> <a href="html/libxml-HTMLparser.html#HTML_PARSE_NOWARNING">HTML_PARSE_NOWARNING</a><br /> <a href="html/libxml-HTMLparser.html#HTML_PARSE_PEDANTIC">HTML_PARSE_PEDANTIC</a><br /> +<a href="html/libxml-HTMLparser.html#HTML_PARSE_RECOVER">HTML_PARSE_RECOVER</a><br /> <a href="html/libxml-HTMLtree.html#HTML_PI_NODE">HTML_PI_NODE</a><br /> <a href="html/libxml-HTMLtree.html#HTML_PRESERVE_NODE">HTML_PRESERVE_NODE</a><br /> <a href="html/libxml-HTMLparser.html#HTML_REQUIRED">HTML_REQUIRED</a><br /> @@ -63,6 +65,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlexports.html#LIBXML_DLL_IMPORT">LIBXML_DLL_IMPORT</a><br /> <a href="html/libxml-xmlversion.html#LIBXML_DOCB_ENABLED">LIBXML_DOCB_ENABLED</a><br /> <a href="html/libxml-xmlversion.html#LIBXML_DOTTED_VERSION">LIBXML_DOTTED_VERSION</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_EXPR_ENABLED">LIBXML_EXPR_ENABLED</a><br /> <a href="html/libxml-xmlversion.html#LIBXML_FTP_ENABLED">LIBXML_FTP_ENABLED</a><br /> <a href="html/libxml-xmlversion.html#LIBXML_HTML_ENABLED">LIBXML_HTML_ENABLED</a><br /> <a href="html/libxml-xmlversion.html#LIBXML_HTTP_ENABLED">LIBXML_HTTP_ENABLED</a><br /> @@ -78,6 +81,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlversion.html#LIBXML_REGEXP_ENABLED">LIBXML_REGEXP_ENABLED</a><br /> <a href="html/libxml-xmlversion.html#LIBXML_SAX1_ENABLED">LIBXML_SAX1_ENABLED</a><br /> <a href="html/libxml-xmlversion.html#LIBXML_SCHEMAS_ENABLED">LIBXML_SCHEMAS_ENABLED</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_SCHEMATRON_ENABLED">LIBXML_SCHEMATRON_ENABLED</a><br /> <a href="html/libxml-xmlversion.html#LIBXML_TEST_VERSION">LIBXML_TEST_VERSION</a><br /> <a href="html/libxml-xmlversion.html#LIBXML_THREAD_ENABLED">LIBXML_THREAD_ENABLED</a><br /> <a href="html/libxml-xmlversion.html#LIBXML_TREE_ENABLED">LIBXML_TREE_ENABLED</a><br /> @@ -119,6 +123,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xlink.html#XLINK_TYPE_NONE">XLINK_TYPE_NONE</a><br /> <a href="html/libxml-xlink.html#XLINK_TYPE_SIMPLE">XLINK_TYPE_SIMPLE</a><br /> <a href="html/libxml-xmlexports.html#XMLCALL">XMLCALL</a><br /> +<a href="html/libxml-xmlexports.html#XMLCDECL">XMLCDECL</a><br /> <a href="html/libxml-xmlexports.html#XMLPUBFUN">XMLPUBFUN</a><br /> <a href="html/libxml-xmlexports.html#XMLPUBVAR">XMLPUBVAR</a><br /> <a href="html/libxml-tree.html#XML_ATTRIBUTE_CDATA">XML_ATTRIBUTE_CDATA</a><br /> @@ -399,9 +404,46 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlerror.html#XML_ERR_WARNING">XML_ERR_WARNING</a><br /> <a href="html/libxml-xmlerror.html#XML_ERR_XMLDECL_NOT_FINISHED">XML_ERR_XMLDECL_NOT_FINISHED</a><br /> <a href="html/libxml-xmlerror.html#XML_ERR_XMLDECL_NOT_STARTED">XML_ERR_XMLDECL_NOT_STARTED</a><br /> +<a href="html/libxml-xmlregexp.html#XML_EXP_ATOM">XML_EXP_ATOM</a><br /> +<a href="html/libxml-xmlregexp.html#XML_EXP_COUNT">XML_EXP_COUNT</a><br /> +<a href="html/libxml-xmlregexp.html#XML_EXP_EMPTY">XML_EXP_EMPTY</a><br /> +<a href="html/libxml-xmlregexp.html#XML_EXP_FORBID">XML_EXP_FORBID</a><br /> +<a href="html/libxml-xmlregexp.html#XML_EXP_OR">XML_EXP_OR</a><br /> +<a href="html/libxml-xmlregexp.html#XML_EXP_SEQ">XML_EXP_SEQ</a><br /> <a href="html/libxml-entities.html#XML_EXTERNAL_GENERAL_PARSED_ENTITY">XML_EXTERNAL_GENERAL_PARSED_ENTITY</a><br /> <a href="html/libxml-entities.html#XML_EXTERNAL_GENERAL_UNPARSED_ENTITY">XML_EXTERNAL_GENERAL_UNPARSED_ENTITY</a><br /> <a href="html/libxml-entities.html#XML_EXTERNAL_PARAMETER_ENTITY">XML_EXTERNAL_PARAMETER_ENTITY</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_AUTOMATA">XML_FEATURE_AUTOMATA</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_C14N">XML_FEATURE_C14N</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_CATALOG">XML_FEATURE_CATALOG</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_DEBUG">XML_FEATURE_DEBUG</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_DEBUG_MEM">XML_FEATURE_DEBUG_MEM</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_DEBUG_RUN">XML_FEATURE_DEBUG_RUN</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_EXPR">XML_FEATURE_EXPR</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_FTP">XML_FEATURE_FTP</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_HTML">XML_FEATURE_HTML</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_HTTP">XML_FEATURE_HTTP</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_ICONV">XML_FEATURE_ICONV</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_ISO8859X">XML_FEATURE_ISO8859X</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_LEGACY">XML_FEATURE_LEGACY</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_MODULES">XML_FEATURE_MODULES</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_NONE">XML_FEATURE_NONE</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_OUTPUT">XML_FEATURE_OUTPUT</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_PATTERN">XML_FEATURE_PATTERN</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_PUSH">XML_FEATURE_PUSH</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_READER">XML_FEATURE_READER</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_REGEXP">XML_FEATURE_REGEXP</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_SAX1">XML_FEATURE_SAX1</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_SCHEMAS">XML_FEATURE_SCHEMAS</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_SCHEMATRON">XML_FEATURE_SCHEMATRON</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_THREAD">XML_FEATURE_THREAD</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_TREE">XML_FEATURE_TREE</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_UNICODE">XML_FEATURE_UNICODE</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_VALID">XML_FEATURE_VALID</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_WRITER">XML_FEATURE_WRITER</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_XINCLUDE">XML_FEATURE_XINCLUDE</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_XPATH">XML_FEATURE_XPATH</a><br /> +<a href="html/libxml-parser.html#XML_FEATURE_XPTR">XML_FEATURE_XPTR</a><br /> <a href="html/libxml-xmlerror.html#XML_FROM_C14N">XML_FROM_C14N</a><br /> <a href="html/libxml-xmlerror.html#XML_FROM_CATALOG">XML_FROM_CATALOG</a><br /> <a href="html/libxml-xmlerror.html#XML_FROM_CHECK">XML_FROM_CHECK</a><br /> @@ -410,6 +452,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlerror.html#XML_FROM_FTP">XML_FROM_FTP</a><br /> <a href="html/libxml-xmlerror.html#XML_FROM_HTML">XML_FROM_HTML</a><br /> <a href="html/libxml-xmlerror.html#XML_FROM_HTTP">XML_FROM_HTTP</a><br /> +<a href="html/libxml-xmlerror.html#XML_FROM_I18N">XML_FROM_I18N</a><br /> <a href="html/libxml-xmlerror.html#XML_FROM_IO">XML_FROM_IO</a><br /> <a href="html/libxml-xmlerror.html#XML_FROM_MEMORY">XML_FROM_MEMORY</a><br /> <a href="html/libxml-xmlerror.html#XML_FROM_MODULE">XML_FROM_MODULE</a><br /> @@ -441,6 +484,11 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlerror.html#XML_HTTP_UNKNOWN_HOST">XML_HTTP_UNKNOWN_HOST</a><br /> <a href="html/libxml-xmlerror.html#XML_HTTP_URL_SYNTAX">XML_HTTP_URL_SYNTAX</a><br /> <a href="html/libxml-xmlerror.html#XML_HTTP_USE_IP">XML_HTTP_USE_IP</a><br /> +<a href="html/libxml-xmlerror.html#XML_I18N_CONV_FAILED">XML_I18N_CONV_FAILED</a><br /> +<a href="html/libxml-xmlerror.html#XML_I18N_EXCESS_HANDLER">XML_I18N_EXCESS_HANDLER</a><br /> +<a href="html/libxml-xmlerror.html#XML_I18N_NO_HANDLER">XML_I18N_NO_HANDLER</a><br /> +<a href="html/libxml-xmlerror.html#XML_I18N_NO_NAME">XML_I18N_NO_NAME</a><br /> +<a href="html/libxml-xmlerror.html#XML_I18N_NO_OUTPUT">XML_I18N_NO_OUTPUT</a><br /> <a href="html/libxml-entities.html#XML_INTERNAL_GENERAL_ENTITY">XML_INTERNAL_GENERAL_ENTITY</a><br /> <a href="html/libxml-entities.html#XML_INTERNAL_PARAMETER_ENTITY">XML_INTERNAL_PARAMETER_ENTITY</a><br /> <a href="html/libxml-entities.html#XML_INTERNAL_PREDEFINED_ENTITY">XML_INTERNAL_PREDEFINED_ENTITY</a><br /> @@ -540,6 +588,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlreader.html#XML_PARSER_SUBST_ENTITIES">XML_PARSER_SUBST_ENTITIES</a><br /> <a href="html/libxml-parser.html#XML_PARSER_SYSTEM_LITERAL">XML_PARSER_SYSTEM_LITERAL</a><br /> <a href="html/libxml-xmlreader.html#XML_PARSER_VALIDATE">XML_PARSER_VALIDATE</a><br /> +<a href="html/libxml-parser.html#XML_PARSE_COMPACT">XML_PARSE_COMPACT</a><br /> <a href="html/libxml-parser.html#XML_PARSE_DOM">XML_PARSE_DOM</a><br /> <a href="html/libxml-parser.html#XML_PARSE_DTDATTR">XML_PARSE_DTDATTR</a><br /> <a href="html/libxml-parser.html#XML_PARSE_DTDLOAD">XML_PARSE_DTDLOAD</a><br /> @@ -755,6 +804,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlerror.html#XML_SAVE_CHAR_INVALID">XML_SAVE_CHAR_INVALID</a><br /> <a href="html/libxml-xmlsave.html#XML_SAVE_FORMAT">XML_SAVE_FORMAT</a><br /> <a href="html/libxml-xmlerror.html#XML_SAVE_NOT_UTF8">XML_SAVE_NOT_UTF8</a><br /> +<a href="html/libxml-xmlsave.html#XML_SAVE_NO_DECL">XML_SAVE_NO_DECL</a><br /> <a href="html/libxml-xmlerror.html#XML_SAVE_NO_DOCTYPE">XML_SAVE_NO_DOCTYPE</a><br /> <a href="html/libxml-xmlerror.html#XML_SAVE_UNKNOWN_ENCODING">XML_SAVE_UNKNOWN_ENCODING</a><br /> <a href="html/libxml-parser.html#XML_SAX2_MAGIC">XML_SAX2_MAGIC</a><br /> @@ -897,6 +947,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlerror.html#XML_SCHEMAP_SRC_IMPORT_3_2">XML_SCHEMAP_SRC_IMPORT_3_2</a><br /> <a href="html/libxml-xmlerror.html#XML_SCHEMAP_SRC_INCLUDE">XML_SCHEMAP_SRC_INCLUDE</a><br /> <a href="html/libxml-xmlerror.html#XML_SCHEMAP_SRC_LIST_ITEMTYPE_OR_SIMPLETYPE">XML_SCHEMAP_SRC_LIST_ITEMTYPE_OR_SIMPLETYPE</a><br /> +<a href="html/libxml-xmlerror.html#XML_SCHEMAP_SRC_REDEFINE">XML_SCHEMAP_SRC_REDEFINE</a><br /> <a href="html/libxml-xmlerror.html#XML_SCHEMAP_SRC_RESOLVE">XML_SCHEMAP_SRC_RESOLVE</a><br /> <a href="html/libxml-xmlerror.html#XML_SCHEMAP_SRC_RESTRICTION_BASE_OR_SIMPLETYPE">XML_SCHEMAP_SRC_RESTRICTION_BASE_OR_SIMPLETYPE</a><br /> <a href="html/libxml-xmlerror.html#XML_SCHEMAP_SRC_SIMPLE_TYPE_1">XML_SCHEMAP_SRC_SIMPLE_TYPE_1</a><br /> @@ -1091,6 +1142,12 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-schemasInternals.html#XML_SCHEMAS_UNKNOWN">XML_SCHEMAS_UNKNOWN</a><br /> <a href="html/libxml-schemasInternals.html#XML_SCHEMAS_USHORT">XML_SCHEMAS_USHORT</a><br /> <a href="html/libxml-schemasInternals.html#XML_SCHEMAS_WILDCARD_COMPLETE">XML_SCHEMAS_WILDCARD_COMPLETE</a><br /> +<a href="html/libxml-schematron.html#XML_SCHEMATRON_OUT_BUFFER">XML_SCHEMATRON_OUT_BUFFER</a><br /> +<a href="html/libxml-schematron.html#XML_SCHEMATRON_OUT_FILE">XML_SCHEMATRON_OUT_FILE</a><br /> +<a href="html/libxml-schematron.html#XML_SCHEMATRON_OUT_IO">XML_SCHEMATRON_OUT_IO</a><br /> +<a href="html/libxml-schematron.html#XML_SCHEMATRON_OUT_QUIET">XML_SCHEMATRON_OUT_QUIET</a><br /> +<a href="html/libxml-schematron.html#XML_SCHEMATRON_OUT_TEXT">XML_SCHEMATRON_OUT_TEXT</a><br /> +<a href="html/libxml-schematron.html#XML_SCHEMATRON_OUT_XML">XML_SCHEMATRON_OUT_XML</a><br /> <a href="html/libxml-xmlerror.html#XML_SCHEMAV_ATTRINVALID">XML_SCHEMAV_ATTRINVALID</a><br /> <a href="html/libxml-xmlerror.html#XML_SCHEMAV_ATTRUNKNOWN">XML_SCHEMAV_ATTRUNKNOWN</a><br /> <a href="html/libxml-xmlerror.html#XML_SCHEMAV_CONSTRUCT">XML_SCHEMAV_CONSTRUCT</a><br /> @@ -1267,6 +1324,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlerror.html#XML_XINCLUDE_XPTR_RESULT">XML_XINCLUDE_XPTR_RESULT</a><br /> <a href="html/libxml-tree.html#XML_XML_ID">XML_XML_ID</a><br /> <a href="html/libxml-tree.html#XML_XML_NAMESPACE">XML_XML_NAMESPACE</a><br /> +<a href="html/libxml-xpath.html#XML_XPATH_CHECKNS">XML_XPATH_CHECKNS</a><br /> <a href="html/libxml-xmlerror.html#XML_XPATH_ENCODING_ERROR">XML_XPATH_ENCODING_ERROR</a><br /> <a href="html/libxml-xmlerror.html#XML_XPATH_EXPRESSION_OK">XML_XPATH_EXPRESSION_OK</a><br /> <a href="html/libxml-xmlerror.html#XML_XPATH_EXPR_ERROR">XML_XPATH_EXPR_ERROR</a><br /> @@ -1278,6 +1336,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlerror.html#XML_XPATH_INVALID_PREDICATE_ERROR">XML_XPATH_INVALID_PREDICATE_ERROR</a><br /> <a href="html/libxml-xmlerror.html#XML_XPATH_INVALID_TYPE">XML_XPATH_INVALID_TYPE</a><br /> <a href="html/libxml-xmlerror.html#XML_XPATH_MEMORY_ERROR">XML_XPATH_MEMORY_ERROR</a><br /> +<a href="html/libxml-xpath.html#XML_XPATH_NOVAR">XML_XPATH_NOVAR</a><br /> <a href="html/libxml-xmlerror.html#XML_XPATH_NUMBER_ERROR">XML_XPATH_NUMBER_ERROR</a><br /> <a href="html/libxml-xmlerror.html#XML_XPATH_START_LITERAL_ERROR">XML_XPATH_START_LITERAL_ERROR</a><br /> <a href="html/libxml-xmlerror.html#XML_XPATH_UNCLOSED_ERROR">XML_XPATH_UNCLOSED_ERROR</a><br /> @@ -1419,6 +1478,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-DOCBparser.html#docbSAXParseFile">docbSAXParseFile</a><br /> </p><h2>Letter e:</h2><p><a href="html/libxml-SAX.html#elementDecl">elementDecl</a><br /> <a href="html/libxml-parser.html#elementDeclSAXFunc">elementDeclSAXFunc</a><br /> +<a href="html/libxml-xmlregexp.html#emptyExp">emptyExp</a><br /> <a href="html/libxml-SAX.html#endDocument">endDocument</a><br /> <a href="html/libxml-parser.html#endDocumentSAXFunc">endDocumentSAXFunc</a><br /> <a href="html/libxml-SAX.html#endElement">endElement</a><br /> @@ -1430,6 +1490,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-SAX.html#externalSubset">externalSubset</a><br /> <a href="html/libxml-parser.html#externalSubsetSAXFunc">externalSubsetSAXFunc</a><br /> </p><h2>Letter f:</h2><p><a href="html/libxml-parser.html#fatalErrorSAXFunc">fatalErrorSAXFunc</a><br /> +<a href="html/libxml-xmlregexp.html#forbiddenExp">forbiddenExp</a><br /> <a href="html/libxml-nanoftp.html#ftpDataCallback">ftpDataCallback</a><br /> <a href="html/libxml-nanoftp.html#ftpListCallback">ftpListCallback</a><br /> </p><h2>Letter g:</h2><p><a href="html/libxml-SAX.html#getColumnNumber">getColumnNumber</a><br /> @@ -1620,6 +1681,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlautomata.html#xmlAutomataNewCounter">xmlAutomataNewCounter</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewCounterTrans">xmlAutomataNewCounterTrans</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewEpsilon">xmlAutomataNewEpsilon</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewNegTrans">xmlAutomataNewNegTrans</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewOnceTrans">xmlAutomataNewOnceTrans</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewOnceTrans2">xmlAutomataNewOnceTrans2</a><br /> <a href="html/libxml-xmlautomata.html#xmlAutomataNewState">xmlAutomataNewState</a><br /> @@ -1854,7 +1916,32 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlerror.html#xmlErrorDomain">xmlErrorDomain</a><br /> <a href="html/libxml-xmlerror.html#xmlErrorLevel">xmlErrorLevel</a><br /> <a href="html/libxml-xmlerror.html#xmlErrorPtr">xmlErrorPtr</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpCtxt">xmlExpCtxt</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpCtxtNbCons">xmlExpCtxtNbCons</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpCtxtNbNodes">xmlExpCtxtNbNodes</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpDump">xmlExpDump</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpFree">xmlExpFree</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpFreeCtxt">xmlExpFreeCtxt</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpGetLanguage">xmlExpGetLanguage</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpGetStart">xmlExpGetStart</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpIsNillable">xmlExpIsNillable</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpMaxToken">xmlExpMaxToken</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewAtom">xmlExpNewAtom</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewCtxt">xmlExpNewCtxt</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewOr">xmlExpNewOr</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewSeq">xmlExpNewSeq</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNode">xmlExpNode</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNodeType">xmlExpNodeType</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpRef">xmlExpRef</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpStringDerive">xmlExpStringDerive</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpSubsume">xmlExpSubsume</a><br /> <a href="html/libxml-parser.html#xmlExternalEntityLoader">xmlExternalEntityLoader</a><br /> +<a href="html/libxml-parser.html#xmlFeature">xmlFeature</a><br /> <a href="html/libxml-xmlIO.html#xmlFileClose">xmlFileClose</a><br /> <a href="html/libxml-xmlIO.html#xmlFileMatch">xmlFileMatch</a><br /> <a href="html/libxml-xmlIO.html#xmlFileOpen">xmlFileOpen</a><br /> @@ -1934,6 +2021,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-globals.html#xmlGlobalState">xmlGlobalState</a><br /> <a href="html/libxml-globals.html#xmlGlobalStatePtr">xmlGlobalStatePtr</a><br /> <a href="html/libxml-parserInternals.html#xmlHandleEntity">xmlHandleEntity</a><br /> +<a href="html/libxml-parser.html#xmlHasFeature">xmlHasFeature</a><br /> <a href="html/libxml-tree.html#xmlHasNsProp">xmlHasNsProp</a><br /> <a href="html/libxml-tree.html#xmlHasProp">xmlHasProp</a><br /> <a href="html/libxml-hash.html#xmlHashAddEntry">xmlHashAddEntry</a><br /> @@ -2310,6 +2398,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-parserInternals.html#xmlParseSystemLiteral">xmlParseSystemLiteral</a><br /> <a href="html/libxml-parserInternals.html#xmlParseTextDecl">xmlParseTextDecl</a><br /> <a href="html/libxml-uri.html#xmlParseURI">xmlParseURI</a><br /> +<a href="html/libxml-uri.html#xmlParseURIRaw">xmlParseURIRaw</a><br /> <a href="html/libxml-uri.html#xmlParseURIReference">xmlParseURIReference</a><br /> <a href="html/libxml-parserInternals.html#xmlParseVersionInfo">xmlParseVersionInfo</a><br /> <a href="html/libxml-parserInternals.html#xmlParseVersionNum">xmlParseVersionNum</a><br /> @@ -2367,6 +2456,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-pattern.html#xmlPatternGetStreamCtxt">xmlPatternGetStreamCtxt</a><br /> <a href="html/libxml-pattern.html#xmlPatternMatch">xmlPatternMatch</a><br /> <a href="html/libxml-pattern.html#xmlPatternMaxDepth">xmlPatternMaxDepth</a><br /> +<a href="html/libxml-pattern.html#xmlPatternMinDepth">xmlPatternMinDepth</a><br /> <a href="html/libxml-pattern.html#xmlPatternPtr">xmlPatternPtr</a><br /> <a href="html/libxml-pattern.html#xmlPatternStreamable">xmlPatternStreamable</a><br /> <a href="html/libxml-pattern.html#xmlPatterncompile">xmlPatterncompile</a><br /> @@ -2455,6 +2545,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-relaxng.html#xmlRelaxNGPtr">xmlRelaxNGPtr</a><br /> <a href="html/libxml-relaxng.html#xmlRelaxNGSetParserErrors">xmlRelaxNGSetParserErrors</a><br /> <a href="html/libxml-relaxng.html#xmlRelaxNGSetValidErrors">xmlRelaxNGSetValidErrors</a><br /> +<a href="html/libxml-relaxng.html#xmlRelaxNGSetValidStructuredErrors">xmlRelaxNGSetValidStructuredErrors</a><br /> <a href="html/libxml-relaxng.html#xmlRelaxNGValidCtxt">xmlRelaxNGValidCtxt</a><br /> <a href="html/libxml-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a><br /> <a href="html/libxml-relaxng.html#xmlRelaxNGValidErr">xmlRelaxNGValidErr</a><br /> @@ -2607,6 +2698,7 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-xmlschemas.html#xmlSchemaSetParserErrors">xmlSchemaSetParserErrors</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaSetValidErrors">xmlSchemaSetValidErrors</a><br /> <a href="html/libxml-xmlschemas.html#xmlSchemaSetValidOptions">xmlSchemaSetValidOptions</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaSetValidStructuredErrors">xmlSchemaSetValidStructuredErrors</a><br /> <a href="html/libxml-schemasInternals.html#xmlSchemaType">xmlSchemaType</a><br /> <a href="html/libxml-schemasInternals.html#xmlSchemaTypeLink">xmlSchemaTypeLink</a><br /> <a href="html/libxml-schemasInternals.html#xmlSchemaTypeLinkPtr">xmlSchemaTypeLinkPtr</a><br /> @@ -2644,6 +2736,24 @@ A:link, A:visited, A:active { text-decoration: underline } <a href="html/libxml-schemasInternals.html#xmlSchemaWildcardNs">xmlSchemaWildcardNs</a><br /> <a href="html/libxml-schemasInternals.html#xmlSchemaWildcardNsPtr">xmlSchemaWildcardNsPtr</a><br /> <a href="html/libxml-schemasInternals.html#xmlSchemaWildcardPtr">xmlSchemaWildcardPtr</a><br /> +<a href="html/libxml-schematron.html#xmlSchematron">xmlSchematron</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronFree">xmlSchematronFree</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronFreeParserCtxt">xmlSchematronFreeParserCtxt</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronFreeValidCtxt">xmlSchematronFreeValidCtxt</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronNewDocParserCtxt">xmlSchematronNewDocParserCtxt</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronNewMemParserCtxt">xmlSchematronNewMemParserCtxt</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronNewParserCtxt">xmlSchematronNewParserCtxt</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronNewValidCtxt">xmlSchematronNewValidCtxt</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronParse">xmlSchematronParse</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronParserCtxt">xmlSchematronParserCtxt</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronParserCtxtPtr">xmlSchematronParserCtxtPtr</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronPtr">xmlSchematronPtr</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronValidCtxt">xmlSchematronValidCtxt</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronValidCtxtPtr">xmlSchematronValidCtxtPtr</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronValidOptions">xmlSchematronValidOptions</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronValidateDoc">xmlSchematronValidateDoc</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronValidityErrorFunc">xmlSchematronValidityErrorFunc</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronValidityWarningFunc">xmlSchematronValidityWarningFunc</a><br /> <a href="html/libxml-tree.html#xmlSearchNs">xmlSearchNs</a><br /> <a href="html/libxml-tree.html#xmlSearchNsByHref">xmlSearchNsByHref</a><br /> <a href="html/libxml-tree.html#xmlSetBufferAllocationScheme">xmlSetBufferAllocationScheme</a><br /> diff --git a/doc/Makefile.in b/doc/Makefile.in index 03b74ae..c504fce 100644 --- a/doc/Makefile.in +++ b/doc/Makefile.in @@ -165,6 +165,7 @@ TEST_PUSH = @TEST_PUSH@ TEST_REGEXPS = @TEST_REGEXPS@ TEST_SAX = @TEST_SAX@ TEST_SCHEMAS = @TEST_SCHEMAS@ +TEST_SCHEMATRON = @TEST_SCHEMATRON@ TEST_THREADS = @TEST_THREADS@ TEST_VALID = @TEST_VALID@ TEST_VTIME = @TEST_VTIME@ @@ -200,6 +201,7 @@ WITH_REGEXPS = @WITH_REGEXPS@ WITH_RUN_DEBUG = @WITH_RUN_DEBUG@ WITH_SAX1 = @WITH_SAX1@ WITH_SCHEMAS = @WITH_SCHEMAS@ +WITH_SCHEMATRON = @WITH_SCHEMATRON@ WITH_THREADS = @WITH_THREADS@ WITH_TREE = @WITH_TREE@ WITH_TRIO = @WITH_TRIO@ diff --git a/doc/XSLT.html b/doc/XSLT.html index 893dadb..7212cb6 100644 --- a/doc/XSLT.html +++ b/doc/XSLT.html @@ -10,5 +10,4 @@ A:link, A:visited, A:active { text-decoration: underline } </style><title>XSLT</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>XSLT</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="http://xmlsoft.org/wiki">Wiki</a></li><li><a href="html/index.html">Reference Manual</a></li><li><a href="intro.html">Introduction</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="docs.html" style="font-weight:bold">Developer Menu</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="news.html">Releases</a></li><li><a href="XMLinfo.html">XML</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="xmldtd.html">Validation & DTDs</a></li><li><a href="encoding.html">Encodings support</a></li><li><a href="catalog.html">Catalog support</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://rubyforge.org/projects/xml-tools/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>Check <a href="http://xmlsoft.org/XSLT">the separate libxslt page</a></p><p><a href="http://www.w3.org/TR/xslt">XSL Transformations</a>, is a language for transforming XML documents into other XML documents (or HTML/textual output).</p><p>A separate library called libxslt is available implementing XSLT-1.0 for -libxml2. This module "libxslt" too can be found in the Gnome CVS base.</p><p>You can check the <a href="http://cvs.gnome.org/lxr/source/libxslt/FEATURES">features</a> -supported and the progresses on the <a href="http://cvs.gnome.org/lxr/source/libxslt/ChangeLog" name="Changelog" id="Changelog">Changelog</a>.</p><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html> +libxml2. This module "libxslt" too can be found in the Gnome CVS base.</p><p>You can check the progresses on the libxslt <a href="http://xmlsoft.org/XSLT/ChangeLog.html">Changelog</a>.</p><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html> diff --git a/doc/apibuild.py b/doc/apibuild.py index a5275f1..8a11db0 100755 --- a/doc/apibuild.py +++ b/doc/apibuild.py @@ -63,6 +63,7 @@ ignored_words = { "EXSLTPUBFUN": (0, "Special macro for extern funcs for win32"), "XMLCALL": (0, "Special macro for win32 calls"), "XSLTCALL": (0, "Special macro for win32 calls"), + "XMLCDECL": (0, "Special macro for win32 calls"), "EXSLTCALL": (0, "Special macro for win32 calls"), "__declspec": (3, "Windows keyword"), "__stdcall": (0, "Windows keyword"), diff --git a/doc/downloads.html b/doc/downloads.html index 24ca61e..b0347d7 100644 --- a/doc/downloads.html +++ b/doc/downloads.html @@ -22,6 +22,7 @@ Windows binaries made by Igor Zlatovic are available in the <a href="http://xmls <li><a href="mailto:Steve.Ball@explain.com.au">Steve Ball</a> provides <a href="http://www.explain.com.au/oss/libxml2xslt.html">Mac Os X binaries</a>.</li> <li>The HP-UX porting center provides <a href="http://hpux.connect.org.uk/hppd/hpux/Gnome/">HP-UX binaries</a></li> + <li>Bull provides precompiled <a href="http://gnome.bullfreeware.com/new_index.html">RPMs for AIX</a> as patr of their GNOME packages</li> </ul><p>If you know other supported binary ports, please <a href="http://veillard.com/">contact me</a>.</p><p><a name="Snapshot" id="Snapshot">Snapshot:</a></p><ul><li>Code from the W3C cvs base libxml2 module, updated hourly <a href="ftp://xmlsoft.org/libxml2-cvs-snapshot.tar.gz">libxml2-cvs-snapshot.tar.gz</a>.</li> <li>Docs, content of the web site, the list archive included <a href="ftp://xmlsoft.org/libxml-docs.tar.gz">libxml-docs.tar.gz</a>.</li> </ul><p><a name="Contribs" id="Contribs">Contributions:</a></p><p>I do accept external contributions, especially if compiling on another diff --git a/doc/elfgcchack.xsl b/doc/elfgcchack.xsl index 8f24aed..11169f9 100644 --- a/doc/elfgcchack.xsl +++ b/doc/elfgcchack.xsl @@ -43,6 +43,7 @@ #include "libxml/SAX2.h" #include "libxml/SAX.h" #include "libxml/schemasInternals.h" +#include "libxml/schematron.h" #include "libxml/threads.h" #include "libxml/tree.h" #include "libxml/uri.h" diff --git a/doc/examples/Makefile.in b/doc/examples/Makefile.in index c64fa26..de15f68 100644 --- a/doc/examples/Makefile.in +++ b/doc/examples/Makefile.in @@ -214,6 +214,7 @@ TEST_PUSH = @TEST_PUSH@ TEST_REGEXPS = @TEST_REGEXPS@ TEST_SAX = @TEST_SAX@ TEST_SCHEMAS = @TEST_SCHEMAS@ +TEST_SCHEMATRON = @TEST_SCHEMATRON@ TEST_THREADS = @TEST_THREADS@ TEST_VALID = @TEST_VALID@ TEST_VTIME = @TEST_VTIME@ @@ -249,6 +250,7 @@ WITH_REGEXPS = @WITH_REGEXPS@ WITH_RUN_DEBUG = @WITH_RUN_DEBUG@ WITH_SAX1 = @WITH_SAX1@ WITH_SCHEMAS = @WITH_SCHEMAS@ +WITH_SCHEMATRON = @WITH_SCHEMATRON@ WITH_THREADS = @WITH_THREADS@ WITH_TREE = @WITH_TREE@ WITH_TRIO = @WITH_TRIO@ diff --git a/doc/html/book1.html b/doc/html/book1.html index fde1c94..2ec7448 100644 --- a/doc/html/book1.html +++ b/doc/html/book1.html @@ -10,4 +10,4 @@ A:link, A:visited, A:active { text-decoration: underline } </style><style type="text/css"> div.deprecated pre.programlisting {border-style: double;border-color:red} pre.programlisting {border-style: double;background: #EECFA1} - </style><title>Reference Manual for libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="../epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="../gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="../w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="../redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="../Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1></h1><h2>Reference Manual for libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="../search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a style="font-weight:bold" href="../index.html">Main Menu</a></li><li><a style="font-weight:bold" href="../docs.html">Developer Menu</a></li><li><a style="font-weight:bold" href="../examples/index.html">Code Examples</a></li><li><a style="font-weight:bold" href="index.html">API Menu</a></li><li><a href="libxml-parser.html">Parser API</a></li><li><a href="libxml-tree.html">Tree API</a></li><li><a href="libxml-xmlreader.html">Reader API</a></li><li><a href="../guidelines.html">XML Guidelines</a></li><li><a href="../ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="../APIchunk0.html">Alphabetic</a></li><li><a href="../APIconstructors.html">Constructors</a></li><li><a href="../APIfunctions.html">Functions/Types</a></li><li><a href="../APIfiles.html">Modules</a></li><li><a href="../APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://rubyforge.org/projects/xml-tools/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><h2>Table of Contents</h2><ul><li><a href="libxml-DOCBparser.html">DOCBparser</a>: old DocBook SGML parser</li><li><a href="libxml-HTMLparser.html">HTMLparser</a>: interface for an HTML 4.0 non-verifying parser</li><li><a href="libxml-HTMLtree.html">HTMLtree</a>: specific APIs to process HTML tree, especially serialization</li><li><a href="libxml-SAX.html">SAX</a>: Old SAX version 1 handler, deprecated</li><li><a href="libxml-SAX2.html">SAX2</a>: SAX2 parser interface used to build the DOM tree</li><li><a href="libxml-c14n.html">c14n</a>: Provide Canonical XML and Exclusive XML Canonicalization</li><li><a href="libxml-catalog.html">catalog</a>: interfaces to the Catalog handling system</li><li><a href="libxml-chvalid.html">chvalid</a>: Unicode character range checking</li><li><a href="libxml-debugXML.html">debugXML</a>: Tree debugging APIs</li><li><a href="libxml-dict.html">dict</a>: string dictionnary</li><li><a href="libxml-encoding.html">encoding</a>: interface for the encoding conversion functions</li><li><a href="libxml-entities.html">entities</a>: interface for the XML entities handling</li><li><a href="libxml-globals.html">globals</a>: interface for all global variables of the library</li><li><a href="libxml-hash.html">hash</a>: Chained hash tables</li><li><a href="libxml-list.html">list</a>: lists interfaces</li><li><a href="libxml-nanoftp.html">nanoftp</a>: minimal FTP implementation</li><li><a href="libxml-nanohttp.html">nanohttp</a>: minimal HTTP implementation</li><li><a href="libxml-parser.html">parser</a>: the core parser module</li><li><a href="libxml-parserInternals.html">parserInternals</a>: internals routines exported by the parser.</li><li><a href="libxml-pattern.html">pattern</a>: pattern expression handling</li><li><a href="libxml-relaxng.html">relaxng</a>: implementation of the Relax-NG validation</li><li><a href="libxml-schemasInternals.html">schemasInternals</a>: internal interfaces for XML Schemas</li><li><a href="libxml-threads.html">threads</a>: interfaces for thread handling</li><li><a href="libxml-tree.html">tree</a>: interfaces for tree manipulation</li><li><a href="libxml-uri.html">uri</a>: library of generic URI related routines</li><li><a href="libxml-valid.html">valid</a>: The DTD validation</li><li><a href="libxml-xinclude.html">xinclude</a>: implementation of XInclude</li><li><a href="libxml-xlink.html">xlink</a>: unfinished XLink detection module</li><li><a href="libxml-xmlIO.html">xmlIO</a>: interface for the I/O interfaces used by the parser</li><li><a href="libxml-xmlautomata.html">xmlautomata</a>: API to build regexp automata</li><li><a href="libxml-xmlerror.html">xmlerror</a>: error handling</li><li><a href="libxml-xmlexports.html">xmlexports</a>: macros for marking symbols as exportable/importable.</li><li><a href="libxml-xmlmemory.html">xmlmemory</a>: interface for the memory allocator</li><li><a href="libxml-xmlmodule.html">xmlmodule</a>: dynamic module loading</li><li><a href="libxml-xmlreader.html">xmlreader</a>: the XMLReader implementation</li><li><a href="libxml-xmlregexp.html">xmlregexp</a>: regular expressions handling</li><li><a href="libxml-xmlsave.html">xmlsave</a>: the XML document serializer</li><li><a href="libxml-xmlschemas.html">xmlschemas</a>: incomplete XML Schemas structure implementation</li><li><a href="libxml-xmlschemastypes.html">xmlschemastypes</a>: implementation of XML Schema Datatypes</li><li><a href="libxml-xmlstring.html">xmlstring</a>: set of routines to process strings</li><li><a href="libxml-xmlunicode.html">xmlunicode</a>: Unicode character APIs</li><li><a href="libxml-xmlversion.html">xmlversion</a>: compile-time version informations</li><li><a href="libxml-xmlwriter.html">xmlwriter</a>: text writing API for XML</li><li><a href="libxml-xpath.html">xpath</a>: XML Path Language implementation</li><li><a href="libxml-xpathInternals.html">xpathInternals</a>: internal interfaces for XML Path Language implementation</li><li><a href="libxml-xpointer.html">xpointer</a>: API to handle XML Pointers</li></ul><p><a href="../bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html> + </style><title>Reference Manual for libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="../epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="../gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="../w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="../redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="../Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1></h1><h2>Reference Manual for libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="../search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a style="font-weight:bold" href="../index.html">Main Menu</a></li><li><a style="font-weight:bold" href="../docs.html">Developer Menu</a></li><li><a style="font-weight:bold" href="../examples/index.html">Code Examples</a></li><li><a style="font-weight:bold" href="index.html">API Menu</a></li><li><a href="libxml-parser.html">Parser API</a></li><li><a href="libxml-tree.html">Tree API</a></li><li><a href="libxml-xmlreader.html">Reader API</a></li><li><a href="../guidelines.html">XML Guidelines</a></li><li><a href="../ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="../APIchunk0.html">Alphabetic</a></li><li><a href="../APIconstructors.html">Constructors</a></li><li><a href="../APIfunctions.html">Functions/Types</a></li><li><a href="../APIfiles.html">Modules</a></li><li><a href="../APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://rubyforge.org/projects/xml-tools/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><h2>Table of Contents</h2><ul><li><a href="libxml-DOCBparser.html">DOCBparser</a>: old DocBook SGML parser</li><li><a href="libxml-HTMLparser.html">HTMLparser</a>: interface for an HTML 4.0 non-verifying parser</li><li><a href="libxml-HTMLtree.html">HTMLtree</a>: specific APIs to process HTML tree, especially serialization</li><li><a href="libxml-SAX.html">SAX</a>: Old SAX version 1 handler, deprecated</li><li><a href="libxml-SAX2.html">SAX2</a>: SAX2 parser interface used to build the DOM tree</li><li><a href="libxml-c14n.html">c14n</a>: Provide Canonical XML and Exclusive XML Canonicalization</li><li><a href="libxml-catalog.html">catalog</a>: interfaces to the Catalog handling system</li><li><a href="libxml-chvalid.html">chvalid</a>: Unicode character range checking</li><li><a href="libxml-debugXML.html">debugXML</a>: Tree debugging APIs</li><li><a href="libxml-dict.html">dict</a>: string dictionnary</li><li><a href="libxml-encoding.html">encoding</a>: interface for the encoding conversion functions</li><li><a href="libxml-entities.html">entities</a>: interface for the XML entities handling</li><li><a href="libxml-globals.html">globals</a>: interface for all global variables of the library</li><li><a href="libxml-hash.html">hash</a>: Chained hash tables</li><li><a href="libxml-list.html">list</a>: lists interfaces</li><li><a href="libxml-nanoftp.html">nanoftp</a>: minimal FTP implementation</li><li><a href="libxml-nanohttp.html">nanohttp</a>: minimal HTTP implementation</li><li><a href="libxml-parser.html">parser</a>: the core parser module</li><li><a href="libxml-parserInternals.html">parserInternals</a>: internals routines exported by the parser.</li><li><a href="libxml-pattern.html">pattern</a>: pattern expression handling</li><li><a href="libxml-relaxng.html">relaxng</a>: implementation of the Relax-NG validation</li><li><a href="libxml-schemasInternals.html">schemasInternals</a>: internal interfaces for XML Schemas</li><li><a href="libxml-schematron.html">schematron</a>: XML Schemastron implementation</li><li><a href="libxml-threads.html">threads</a>: interfaces for thread handling</li><li><a href="libxml-tree.html">tree</a>: interfaces for tree manipulation</li><li><a href="libxml-uri.html">uri</a>: library of generic URI related routines</li><li><a href="libxml-valid.html">valid</a>: The DTD validation</li><li><a href="libxml-xinclude.html">xinclude</a>: implementation of XInclude</li><li><a href="libxml-xlink.html">xlink</a>: unfinished XLink detection module</li><li><a href="libxml-xmlIO.html">xmlIO</a>: interface for the I/O interfaces used by the parser</li><li><a href="libxml-xmlautomata.html">xmlautomata</a>: API to build regexp automata</li><li><a href="libxml-xmlerror.html">xmlerror</a>: error handling</li><li><a href="libxml-xmlexports.html">xmlexports</a>: macros for marking symbols as exportable/importable.</li><li><a href="libxml-xmlmemory.html">xmlmemory</a>: interface for the memory allocator</li><li><a href="libxml-xmlmodule.html">xmlmodule</a>: dynamic module loading</li><li><a href="libxml-xmlreader.html">xmlreader</a>: the XMLReader implementation</li><li><a href="libxml-xmlregexp.html">xmlregexp</a>: regular expressions handling</li><li><a href="libxml-xmlsave.html">xmlsave</a>: the XML document serializer</li><li><a href="libxml-xmlschemas.html">xmlschemas</a>: incomplete XML Schemas structure implementation</li><li><a href="libxml-xmlschemastypes.html">xmlschemastypes</a>: implementation of XML Schema Datatypes</li><li><a href="libxml-xmlstring.html">xmlstring</a>: set of routines to process strings</li><li><a href="libxml-xmlunicode.html">xmlunicode</a>: Unicode character APIs</li><li><a href="libxml-xmlversion.html">xmlversion</a>: compile-time version informations</li><li><a href="libxml-xmlwriter.html">xmlwriter</a>: text writing API for XML</li><li><a href="libxml-xpath.html">xpath</a>: XML Path Language implementation</li><li><a href="libxml-xpathInternals.html">xpathInternals</a>: internal interfaces for XML Path Language implementation</li><li><a href="libxml-xpointer.html">xpointer</a>: API to handle XML Pointers</li></ul><p><a href="../bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html> diff --git a/doc/html/index.html b/doc/html/index.html index fde1c94..2ec7448 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -10,4 +10,4 @@ A:link, A:visited, A:active { text-decoration: underline } </style><style type="text/css"> div.deprecated pre.programlisting {border-style: double;border-color:red} pre.programlisting {border-style: double;background: #EECFA1} - </style><title>Reference Manual for libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="../epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="../gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="../w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="../redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="../Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1></h1><h2>Reference Manual for libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="../search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a style="font-weight:bold" href="../index.html">Main Menu</a></li><li><a style="font-weight:bold" href="../docs.html">Developer Menu</a></li><li><a style="font-weight:bold" href="../examples/index.html">Code Examples</a></li><li><a style="font-weight:bold" href="index.html">API Menu</a></li><li><a href="libxml-parser.html">Parser API</a></li><li><a href="libxml-tree.html">Tree API</a></li><li><a href="libxml-xmlreader.html">Reader API</a></li><li><a href="../guidelines.html">XML Guidelines</a></li><li><a href="../ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="../APIchunk0.html">Alphabetic</a></li><li><a href="../APIconstructors.html">Constructors</a></li><li><a href="../APIfunctions.html">Functions/Types</a></li><li><a href="../APIfiles.html">Modules</a></li><li><a href="../APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://rubyforge.org/projects/xml-tools/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><h2>Table of Contents</h2><ul><li><a href="libxml-DOCBparser.html">DOCBparser</a>: old DocBook SGML parser</li><li><a href="libxml-HTMLparser.html">HTMLparser</a>: interface for an HTML 4.0 non-verifying parser</li><li><a href="libxml-HTMLtree.html">HTMLtree</a>: specific APIs to process HTML tree, especially serialization</li><li><a href="libxml-SAX.html">SAX</a>: Old SAX version 1 handler, deprecated</li><li><a href="libxml-SAX2.html">SAX2</a>: SAX2 parser interface used to build the DOM tree</li><li><a href="libxml-c14n.html">c14n</a>: Provide Canonical XML and Exclusive XML Canonicalization</li><li><a href="libxml-catalog.html">catalog</a>: interfaces to the Catalog handling system</li><li><a href="libxml-chvalid.html">chvalid</a>: Unicode character range checking</li><li><a href="libxml-debugXML.html">debugXML</a>: Tree debugging APIs</li><li><a href="libxml-dict.html">dict</a>: string dictionnary</li><li><a href="libxml-encoding.html">encoding</a>: interface for the encoding conversion functions</li><li><a href="libxml-entities.html">entities</a>: interface for the XML entities handling</li><li><a href="libxml-globals.html">globals</a>: interface for all global variables of the library</li><li><a href="libxml-hash.html">hash</a>: Chained hash tables</li><li><a href="libxml-list.html">list</a>: lists interfaces</li><li><a href="libxml-nanoftp.html">nanoftp</a>: minimal FTP implementation</li><li><a href="libxml-nanohttp.html">nanohttp</a>: minimal HTTP implementation</li><li><a href="libxml-parser.html">parser</a>: the core parser module</li><li><a href="libxml-parserInternals.html">parserInternals</a>: internals routines exported by the parser.</li><li><a href="libxml-pattern.html">pattern</a>: pattern expression handling</li><li><a href="libxml-relaxng.html">relaxng</a>: implementation of the Relax-NG validation</li><li><a href="libxml-schemasInternals.html">schemasInternals</a>: internal interfaces for XML Schemas</li><li><a href="libxml-threads.html">threads</a>: interfaces for thread handling</li><li><a href="libxml-tree.html">tree</a>: interfaces for tree manipulation</li><li><a href="libxml-uri.html">uri</a>: library of generic URI related routines</li><li><a href="libxml-valid.html">valid</a>: The DTD validation</li><li><a href="libxml-xinclude.html">xinclude</a>: implementation of XInclude</li><li><a href="libxml-xlink.html">xlink</a>: unfinished XLink detection module</li><li><a href="libxml-xmlIO.html">xmlIO</a>: interface for the I/O interfaces used by the parser</li><li><a href="libxml-xmlautomata.html">xmlautomata</a>: API to build regexp automata</li><li><a href="libxml-xmlerror.html">xmlerror</a>: error handling</li><li><a href="libxml-xmlexports.html">xmlexports</a>: macros for marking symbols as exportable/importable.</li><li><a href="libxml-xmlmemory.html">xmlmemory</a>: interface for the memory allocator</li><li><a href="libxml-xmlmodule.html">xmlmodule</a>: dynamic module loading</li><li><a href="libxml-xmlreader.html">xmlreader</a>: the XMLReader implementation</li><li><a href="libxml-xmlregexp.html">xmlregexp</a>: regular expressions handling</li><li><a href="libxml-xmlsave.html">xmlsave</a>: the XML document serializer</li><li><a href="libxml-xmlschemas.html">xmlschemas</a>: incomplete XML Schemas structure implementation</li><li><a href="libxml-xmlschemastypes.html">xmlschemastypes</a>: implementation of XML Schema Datatypes</li><li><a href="libxml-xmlstring.html">xmlstring</a>: set of routines to process strings</li><li><a href="libxml-xmlunicode.html">xmlunicode</a>: Unicode character APIs</li><li><a href="libxml-xmlversion.html">xmlversion</a>: compile-time version informations</li><li><a href="libxml-xmlwriter.html">xmlwriter</a>: text writing API for XML</li><li><a href="libxml-xpath.html">xpath</a>: XML Path Language implementation</li><li><a href="libxml-xpathInternals.html">xpathInternals</a>: internal interfaces for XML Path Language implementation</li><li><a href="libxml-xpointer.html">xpointer</a>: API to handle XML Pointers</li></ul><p><a href="../bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html> + </style><title>Reference Manual for libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="../epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="../gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="../w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="../redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="../Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1></h1><h2>Reference Manual for libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="../search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a style="font-weight:bold" href="../index.html">Main Menu</a></li><li><a style="font-weight:bold" href="../docs.html">Developer Menu</a></li><li><a style="font-weight:bold" href="../examples/index.html">Code Examples</a></li><li><a style="font-weight:bold" href="index.html">API Menu</a></li><li><a href="libxml-parser.html">Parser API</a></li><li><a href="libxml-tree.html">Tree API</a></li><li><a href="libxml-xmlreader.html">Reader API</a></li><li><a href="../guidelines.html">XML Guidelines</a></li><li><a href="../ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="../APIchunk0.html">Alphabetic</a></li><li><a href="../APIconstructors.html">Constructors</a></li><li><a href="../APIfunctions.html">Functions/Types</a></li><li><a href="../APIfiles.html">Modules</a></li><li><a href="../APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://rubyforge.org/projects/xml-tools/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><h2>Table of Contents</h2><ul><li><a href="libxml-DOCBparser.html">DOCBparser</a>: old DocBook SGML parser</li><li><a href="libxml-HTMLparser.html">HTMLparser</a>: interface for an HTML 4.0 non-verifying parser</li><li><a href="libxml-HTMLtree.html">HTMLtree</a>: specific APIs to process HTML tree, especially serialization</li><li><a href="libxml-SAX.html">SAX</a>: Old SAX version 1 handler, deprecated</li><li><a href="libxml-SAX2.html">SAX2</a>: SAX2 parser interface used to build the DOM tree</li><li><a href="libxml-c14n.html">c14n</a>: Provide Canonical XML and Exclusive XML Canonicalization</li><li><a href="libxml-catalog.html">catalog</a>: interfaces to the Catalog handling system</li><li><a href="libxml-chvalid.html">chvalid</a>: Unicode character range checking</li><li><a href="libxml-debugXML.html">debugXML</a>: Tree debugging APIs</li><li><a href="libxml-dict.html">dict</a>: string dictionnary</li><li><a href="libxml-encoding.html">encoding</a>: interface for the encoding conversion functions</li><li><a href="libxml-entities.html">entities</a>: interface for the XML entities handling</li><li><a href="libxml-globals.html">globals</a>: interface for all global variables of the library</li><li><a href="libxml-hash.html">hash</a>: Chained hash tables</li><li><a href="libxml-list.html">list</a>: lists interfaces</li><li><a href="libxml-nanoftp.html">nanoftp</a>: minimal FTP implementation</li><li><a href="libxml-nanohttp.html">nanohttp</a>: minimal HTTP implementation</li><li><a href="libxml-parser.html">parser</a>: the core parser module</li><li><a href="libxml-parserInternals.html">parserInternals</a>: internals routines exported by the parser.</li><li><a href="libxml-pattern.html">pattern</a>: pattern expression handling</li><li><a href="libxml-relaxng.html">relaxng</a>: implementation of the Relax-NG validation</li><li><a href="libxml-schemasInternals.html">schemasInternals</a>: internal interfaces for XML Schemas</li><li><a href="libxml-schematron.html">schematron</a>: XML Schemastron implementation</li><li><a href="libxml-threads.html">threads</a>: interfaces for thread handling</li><li><a href="libxml-tree.html">tree</a>: interfaces for tree manipulation</li><li><a href="libxml-uri.html">uri</a>: library of generic URI related routines</li><li><a href="libxml-valid.html">valid</a>: The DTD validation</li><li><a href="libxml-xinclude.html">xinclude</a>: implementation of XInclude</li><li><a href="libxml-xlink.html">xlink</a>: unfinished XLink detection module</li><li><a href="libxml-xmlIO.html">xmlIO</a>: interface for the I/O interfaces used by the parser</li><li><a href="libxml-xmlautomata.html">xmlautomata</a>: API to build regexp automata</li><li><a href="libxml-xmlerror.html">xmlerror</a>: error handling</li><li><a href="libxml-xmlexports.html">xmlexports</a>: macros for marking symbols as exportable/importable.</li><li><a href="libxml-xmlmemory.html">xmlmemory</a>: interface for the memory allocator</li><li><a href="libxml-xmlmodule.html">xmlmodule</a>: dynamic module loading</li><li><a href="libxml-xmlreader.html">xmlreader</a>: the XMLReader implementation</li><li><a href="libxml-xmlregexp.html">xmlregexp</a>: regular expressions handling</li><li><a href="libxml-xmlsave.html">xmlsave</a>: the XML document serializer</li><li><a href="libxml-xmlschemas.html">xmlschemas</a>: incomplete XML Schemas structure implementation</li><li><a href="libxml-xmlschemastypes.html">xmlschemastypes</a>: implementation of XML Schema Datatypes</li><li><a href="libxml-xmlstring.html">xmlstring</a>: set of routines to process strings</li><li><a href="libxml-xmlunicode.html">xmlunicode</a>: Unicode character APIs</li><li><a href="libxml-xmlversion.html">xmlversion</a>: compile-time version informations</li><li><a href="libxml-xmlwriter.html">xmlwriter</a>: text writing API for XML</li><li><a href="libxml-xpath.html">xpath</a>: XML Path Language implementation</li><li><a href="libxml-xpathInternals.html">xpathInternals</a>: internal interfaces for XML Path Language implementation</li><li><a href="libxml-xpointer.html">xpointer</a>: API to handle XML Pointers</li></ul><p><a href="../bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html> diff --git a/doc/html/libxml-HTMLparser.html b/doc/html/libxml-HTMLparser.html index bc3ea48..8043542 100644 --- a/doc/html/libxml-HTMLparser.html +++ b/doc/html/libxml-HTMLparser.html @@ -86,11 +86,13 @@ A:link, A:visited, A:active { text-decoration: underline } const char * name : The entity name const char * desc : the description }</pre><h3>Enum <a name="htmlParserOption" id="htmlParserOption">htmlParserOption</a></h3><pre class="programlisting">Enum htmlParserOption { + <a name="HTML_PARSE_RECOVER" id="HTML_PARSE_RECOVER">HTML_PARSE_RECOVER</a> = 1 : Relaxed parsing <a name="HTML_PARSE_NOERROR" id="HTML_PARSE_NOERROR">HTML_PARSE_NOERROR</a> = 32 : suppress error reports <a name="HTML_PARSE_NOWARNING" id="HTML_PARSE_NOWARNING">HTML_PARSE_NOWARNING</a> = 64 : suppress warning reports <a name="HTML_PARSE_PEDANTIC" id="HTML_PARSE_PEDANTIC">HTML_PARSE_PEDANTIC</a> = 128 : pedantic error reporting <a name="HTML_PARSE_NOBLANKS" id="HTML_PARSE_NOBLANKS">HTML_PARSE_NOBLANKS</a> = 256 : remove blank nodes <a name="HTML_PARSE_NONET" id="HTML_PARSE_NONET">HTML_PARSE_NONET</a> = 2048 : Forbid network access + <a name="HTML_PARSE_COMPACT" id="HTML_PARSE_COMPACT">HTML_PARSE_COMPACT</a> = 65536 : compact small text nodes } </pre><h3>Enum <a name="htmlStatus" id="htmlStatus">htmlStatus</a></h3><pre class="programlisting">Enum htmlStatus { <a name="HTML_NA" id="HTML_NA">HTML_NA</a> = 0 : something we don't check at all diff --git a/doc/html/libxml-lib.html b/doc/html/libxml-lib.html index fde1c94..2ec7448 100644 --- a/doc/html/libxml-lib.html +++ b/doc/html/libxml-lib.html @@ -10,4 +10,4 @@ A:link, A:visited, A:active { text-decoration: underline } </style><style type="text/css"> div.deprecated pre.programlisting {border-style: double;border-color:red} pre.programlisting {border-style: double;background: #EECFA1} - </style><title>Reference Manual for libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="../epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="../gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="../w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="../redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="../Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1></h1><h2>Reference Manual for libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="../search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a style="font-weight:bold" href="../index.html">Main Menu</a></li><li><a style="font-weight:bold" href="../docs.html">Developer Menu</a></li><li><a style="font-weight:bold" href="../examples/index.html">Code Examples</a></li><li><a style="font-weight:bold" href="index.html">API Menu</a></li><li><a href="libxml-parser.html">Parser API</a></li><li><a href="libxml-tree.html">Tree API</a></li><li><a href="libxml-xmlreader.html">Reader API</a></li><li><a href="../guidelines.html">XML Guidelines</a></li><li><a href="../ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="../APIchunk0.html">Alphabetic</a></li><li><a href="../APIconstructors.html">Constructors</a></li><li><a href="../APIfunctions.html">Functions/Types</a></li><li><a href="../APIfiles.html">Modules</a></li><li><a href="../APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://rubyforge.org/projects/xml-tools/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><h2>Table of Contents</h2><ul><li><a href="libxml-DOCBparser.html">DOCBparser</a>: old DocBook SGML parser</li><li><a href="libxml-HTMLparser.html">HTMLparser</a>: interface for an HTML 4.0 non-verifying parser</li><li><a href="libxml-HTMLtree.html">HTMLtree</a>: specific APIs to process HTML tree, especially serialization</li><li><a href="libxml-SAX.html">SAX</a>: Old SAX version 1 handler, deprecated</li><li><a href="libxml-SAX2.html">SAX2</a>: SAX2 parser interface used to build the DOM tree</li><li><a href="libxml-c14n.html">c14n</a>: Provide Canonical XML and Exclusive XML Canonicalization</li><li><a href="libxml-catalog.html">catalog</a>: interfaces to the Catalog handling system</li><li><a href="libxml-chvalid.html">chvalid</a>: Unicode character range checking</li><li><a href="libxml-debugXML.html">debugXML</a>: Tree debugging APIs</li><li><a href="libxml-dict.html">dict</a>: string dictionnary</li><li><a href="libxml-encoding.html">encoding</a>: interface for the encoding conversion functions</li><li><a href="libxml-entities.html">entities</a>: interface for the XML entities handling</li><li><a href="libxml-globals.html">globals</a>: interface for all global variables of the library</li><li><a href="libxml-hash.html">hash</a>: Chained hash tables</li><li><a href="libxml-list.html">list</a>: lists interfaces</li><li><a href="libxml-nanoftp.html">nanoftp</a>: minimal FTP implementation</li><li><a href="libxml-nanohttp.html">nanohttp</a>: minimal HTTP implementation</li><li><a href="libxml-parser.html">parser</a>: the core parser module</li><li><a href="libxml-parserInternals.html">parserInternals</a>: internals routines exported by the parser.</li><li><a href="libxml-pattern.html">pattern</a>: pattern expression handling</li><li><a href="libxml-relaxng.html">relaxng</a>: implementation of the Relax-NG validation</li><li><a href="libxml-schemasInternals.html">schemasInternals</a>: internal interfaces for XML Schemas</li><li><a href="libxml-threads.html">threads</a>: interfaces for thread handling</li><li><a href="libxml-tree.html">tree</a>: interfaces for tree manipulation</li><li><a href="libxml-uri.html">uri</a>: library of generic URI related routines</li><li><a href="libxml-valid.html">valid</a>: The DTD validation</li><li><a href="libxml-xinclude.html">xinclude</a>: implementation of XInclude</li><li><a href="libxml-xlink.html">xlink</a>: unfinished XLink detection module</li><li><a href="libxml-xmlIO.html">xmlIO</a>: interface for the I/O interfaces used by the parser</li><li><a href="libxml-xmlautomata.html">xmlautomata</a>: API to build regexp automata</li><li><a href="libxml-xmlerror.html">xmlerror</a>: error handling</li><li><a href="libxml-xmlexports.html">xmlexports</a>: macros for marking symbols as exportable/importable.</li><li><a href="libxml-xmlmemory.html">xmlmemory</a>: interface for the memory allocator</li><li><a href="libxml-xmlmodule.html">xmlmodule</a>: dynamic module loading</li><li><a href="libxml-xmlreader.html">xmlreader</a>: the XMLReader implementation</li><li><a href="libxml-xmlregexp.html">xmlregexp</a>: regular expressions handling</li><li><a href="libxml-xmlsave.html">xmlsave</a>: the XML document serializer</li><li><a href="libxml-xmlschemas.html">xmlschemas</a>: incomplete XML Schemas structure implementation</li><li><a href="libxml-xmlschemastypes.html">xmlschemastypes</a>: implementation of XML Schema Datatypes</li><li><a href="libxml-xmlstring.html">xmlstring</a>: set of routines to process strings</li><li><a href="libxml-xmlunicode.html">xmlunicode</a>: Unicode character APIs</li><li><a href="libxml-xmlversion.html">xmlversion</a>: compile-time version informations</li><li><a href="libxml-xmlwriter.html">xmlwriter</a>: text writing API for XML</li><li><a href="libxml-xpath.html">xpath</a>: XML Path Language implementation</li><li><a href="libxml-xpathInternals.html">xpathInternals</a>: internal interfaces for XML Path Language implementation</li><li><a href="libxml-xpointer.html">xpointer</a>: API to handle XML Pointers</li></ul><p><a href="../bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html> + </style><title>Reference Manual for libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="../epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="../gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="../w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="../redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="../Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1></h1><h2>Reference Manual for libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="../search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a style="font-weight:bold" href="../index.html">Main Menu</a></li><li><a style="font-weight:bold" href="../docs.html">Developer Menu</a></li><li><a style="font-weight:bold" href="../examples/index.html">Code Examples</a></li><li><a style="font-weight:bold" href="index.html">API Menu</a></li><li><a href="libxml-parser.html">Parser API</a></li><li><a href="libxml-tree.html">Tree API</a></li><li><a href="libxml-xmlreader.html">Reader API</a></li><li><a href="../guidelines.html">XML Guidelines</a></li><li><a href="../ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="../APIchunk0.html">Alphabetic</a></li><li><a href="../APIconstructors.html">Constructors</a></li><li><a href="../APIfunctions.html">Functions/Types</a></li><li><a href="../APIfiles.html">Modules</a></li><li><a href="../APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://rubyforge.org/projects/xml-tools/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><h2>Table of Contents</h2><ul><li><a href="libxml-DOCBparser.html">DOCBparser</a>: old DocBook SGML parser</li><li><a href="libxml-HTMLparser.html">HTMLparser</a>: interface for an HTML 4.0 non-verifying parser</li><li><a href="libxml-HTMLtree.html">HTMLtree</a>: specific APIs to process HTML tree, especially serialization</li><li><a href="libxml-SAX.html">SAX</a>: Old SAX version 1 handler, deprecated</li><li><a href="libxml-SAX2.html">SAX2</a>: SAX2 parser interface used to build the DOM tree</li><li><a href="libxml-c14n.html">c14n</a>: Provide Canonical XML and Exclusive XML Canonicalization</li><li><a href="libxml-catalog.html">catalog</a>: interfaces to the Catalog handling system</li><li><a href="libxml-chvalid.html">chvalid</a>: Unicode character range checking</li><li><a href="libxml-debugXML.html">debugXML</a>: Tree debugging APIs</li><li><a href="libxml-dict.html">dict</a>: string dictionnary</li><li><a href="libxml-encoding.html">encoding</a>: interface for the encoding conversion functions</li><li><a href="libxml-entities.html">entities</a>: interface for the XML entities handling</li><li><a href="libxml-globals.html">globals</a>: interface for all global variables of the library</li><li><a href="libxml-hash.html">hash</a>: Chained hash tables</li><li><a href="libxml-list.html">list</a>: lists interfaces</li><li><a href="libxml-nanoftp.html">nanoftp</a>: minimal FTP implementation</li><li><a href="libxml-nanohttp.html">nanohttp</a>: minimal HTTP implementation</li><li><a href="libxml-parser.html">parser</a>: the core parser module</li><li><a href="libxml-parserInternals.html">parserInternals</a>: internals routines exported by the parser.</li><li><a href="libxml-pattern.html">pattern</a>: pattern expression handling</li><li><a href="libxml-relaxng.html">relaxng</a>: implementation of the Relax-NG validation</li><li><a href="libxml-schemasInternals.html">schemasInternals</a>: internal interfaces for XML Schemas</li><li><a href="libxml-schematron.html">schematron</a>: XML Schemastron implementation</li><li><a href="libxml-threads.html">threads</a>: interfaces for thread handling</li><li><a href="libxml-tree.html">tree</a>: interfaces for tree manipulation</li><li><a href="libxml-uri.html">uri</a>: library of generic URI related routines</li><li><a href="libxml-valid.html">valid</a>: The DTD validation</li><li><a href="libxml-xinclude.html">xinclude</a>: implementation of XInclude</li><li><a href="libxml-xlink.html">xlink</a>: unfinished XLink detection module</li><li><a href="libxml-xmlIO.html">xmlIO</a>: interface for the I/O interfaces used by the parser</li><li><a href="libxml-xmlautomata.html">xmlautomata</a>: API to build regexp automata</li><li><a href="libxml-xmlerror.html">xmlerror</a>: error handling</li><li><a href="libxml-xmlexports.html">xmlexports</a>: macros for marking symbols as exportable/importable.</li><li><a href="libxml-xmlmemory.html">xmlmemory</a>: interface for the memory allocator</li><li><a href="libxml-xmlmodule.html">xmlmodule</a>: dynamic module loading</li><li><a href="libxml-xmlreader.html">xmlreader</a>: the XMLReader implementation</li><li><a href="libxml-xmlregexp.html">xmlregexp</a>: regular expressions handling</li><li><a href="libxml-xmlsave.html">xmlsave</a>: the XML document serializer</li><li><a href="libxml-xmlschemas.html">xmlschemas</a>: incomplete XML Schemas structure implementation</li><li><a href="libxml-xmlschemastypes.html">xmlschemastypes</a>: implementation of XML Schema Datatypes</li><li><a href="libxml-xmlstring.html">xmlstring</a>: set of routines to process strings</li><li><a href="libxml-xmlunicode.html">xmlunicode</a>: Unicode character APIs</li><li><a href="libxml-xmlversion.html">xmlversion</a>: compile-time version informations</li><li><a href="libxml-xmlwriter.html">xmlwriter</a>: text writing API for XML</li><li><a href="libxml-xpath.html">xpath</a>: XML Path Language implementation</li><li><a href="libxml-xpathInternals.html">xpathInternals</a>: internal interfaces for XML Path Language implementation</li><li><a href="libxml-xpointer.html">xpointer</a>: API to handle XML Pointers</li></ul><p><a href="../bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html> diff --git a/doc/html/libxml-parser.html b/doc/html/libxml-parser.html index 719b8f1..c1448aa 100644 --- a/doc/html/libxml-parser.html +++ b/doc/html/libxml-parser.html @@ -10,7 +10,8 @@ A:link, A:visited, A:active { text-decoration: underline } </style><style type="text/css"> div.deprecated pre.programlisting {border-style: double;border-color:red} pre.programlisting {border-style: double;background: #EECFA1} - </style><title>Module parser from libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="../epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="../gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="../w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="../redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="../Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1></h1><h2>Module parser from libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="../search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a style="font-weight:bold" href="../index.html">Main Menu</a></li><li><a style="font-weight:bold" href="../docs.html">Developer Menu</a></li><li><a style="font-weight:bold" href="../examples/index.html">Code Examples</a></li><li><a style="font-weight:bold" href="index.html">API Menu</a></li><li><a href="libxml-parser.html">Parser API</a></li><li><a href="libxml-tree.html">Tree API</a></li><li><a href="libxml-xmlreader.html">Reader API</a></li><li><a href="../guidelines.html">XML Guidelines</a></li><li><a href="../ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="../APIchunk0.html">Alphabetic</a></li><li><a href="../APIconstructors.html">Constructors</a></li><li><a href="../APIfunctions.html">Functions/Types</a></li><li><a href="../APIfiles.html">Modules</a></li><li><a href="../APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://rubyforge.org/projects/xml-tools/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="libxml-nanohttp.html"><img src="left.png" width="24" height="24" border="0" alt="Prev" /></a></td><th align="left"><a href="libxml-nanohttp.html">nanohttp</a></th><td><a accesskey="u" href="index.html"><img src="up.png" width="24" height="24" border="0" alt="Up" /></a></td><th align="left"><a href="index.html">API documentation</a></th><td><a accesskey="h" href="../index.html"><img src="home.png" width="24" height="24" border="0" alt="Home" /></a></td><th align="center"><a href="../index.html">The XML C parser and toolkit of Gnome</a></th><th align="right"><a href="libxml-parserInternals.html">parserInternals</a></th><td><a accesskey="n" href="libxml-parserInternals.html"><img src="right.png" width="24" height="24" border="0" alt="Next" /></a></td></tr></table><p>Interfaces, constants and types related to the XML parser </p><h2>Table of Contents</h2><pre class="programlisting">#define <a href="#XML_COMPLETE_ATTRS">XML_COMPLETE_ATTRS</a></pre><pre class="programlisting">#define <a href="#XML_DEFAULT_VERSION">XML_DEFAULT_VERSION</a></pre><pre class="programlisting">#define <a href="#XML_DETECT_IDS">XML_DETECT_IDS</a></pre><pre class="programlisting">#define <a href="#XML_SAX2_MAGIC">XML_SAX2_MAGIC</a></pre><pre class="programlisting">#define <a href="#XML_SKIP_IDS">XML_SKIP_IDS</a></pre><pre class="programlisting">Enum <a href="#xmlParserInputState">xmlParserInputState</a> + </style><title>Module parser from libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="../epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="../gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="../w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="../redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="../Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1></h1><h2>Module parser from libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="../search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a style="font-weight:bold" href="../index.html">Main Menu</a></li><li><a style="font-weight:bold" href="../docs.html">Developer Menu</a></li><li><a style="font-weight:bold" href="../examples/index.html">Code Examples</a></li><li><a style="font-weight:bold" href="index.html">API Menu</a></li><li><a href="libxml-parser.html">Parser API</a></li><li><a href="libxml-tree.html">Tree API</a></li><li><a href="libxml-xmlreader.html">Reader API</a></li><li><a href="../guidelines.html">XML Guidelines</a></li><li><a href="../ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="../APIchunk0.html">Alphabetic</a></li><li><a href="../APIconstructors.html">Constructors</a></li><li><a href="../APIfunctions.html">Functions/Types</a></li><li><a href="../APIfiles.html">Modules</a></li><li><a href="../APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://rubyforge.org/projects/xml-tools/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="libxml-nanohttp.html"><img src="left.png" width="24" height="24" border="0" alt="Prev" /></a></td><th align="left"><a href="libxml-nanohttp.html">nanohttp</a></th><td><a accesskey="u" href="index.html"><img src="up.png" width="24" height="24" border="0" alt="Up" /></a></td><th align="left"><a href="index.html">API documentation</a></th><td><a accesskey="h" href="../index.html"><img src="home.png" width="24" height="24" border="0" alt="Home" /></a></td><th align="center"><a href="../index.html">The XML C parser and toolkit of Gnome</a></th><th align="right"><a href="libxml-parserInternals.html">parserInternals</a></th><td><a accesskey="n" href="libxml-parserInternals.html"><img src="right.png" width="24" height="24" border="0" alt="Next" /></a></td></tr></table><p>Interfaces, constants and types related to the XML parser </p><h2>Table of Contents</h2><pre class="programlisting">#define <a href="#XML_COMPLETE_ATTRS">XML_COMPLETE_ATTRS</a></pre><pre class="programlisting">#define <a href="#XML_DEFAULT_VERSION">XML_DEFAULT_VERSION</a></pre><pre class="programlisting">#define <a href="#XML_DETECT_IDS">XML_DETECT_IDS</a></pre><pre class="programlisting">#define <a href="#XML_SAX2_MAGIC">XML_SAX2_MAGIC</a></pre><pre class="programlisting">#define <a href="#XML_SKIP_IDS">XML_SKIP_IDS</a></pre><pre class="programlisting">Enum <a href="#xmlFeature">xmlFeature</a> +</pre><pre class="programlisting">Enum <a href="#xmlParserInputState">xmlParserInputState</a> </pre><pre class="programlisting">Enum <a href="#xmlParserMode">xmlParserMode</a> </pre><pre class="programlisting">Structure <a href="#xmlParserNodeInfo">xmlParserNodeInfo</a><br />struct _xmlParserNodeInfo </pre><pre class="programlisting">Typedef <a href="libxml-parser.html#xmlParserNodeInfo">xmlParserNodeInfo</a> * <a name="xmlParserNodeInfoPtr" id="xmlParserNodeInfoPtr">xmlParserNodeInfoPtr</a> @@ -131,6 +132,7 @@ void <a href="#warningSAXFunc">warningSAXFunc</a> (void * ctx, <br /> con <pre class="programlisting"><a href="libxml-parser.html#xmlExternalEntityLoader">xmlExternalEntityLoader</a> <a href="#xmlGetExternalEntityLoader">xmlGetExternalEntityLoader</a> (void)</pre> <pre class="programlisting">int <a href="#xmlGetFeature">xmlGetFeature</a> (<a href="libxml-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br /> const char * name, <br /> void * result)</pre> <pre class="programlisting">int <a href="#xmlGetFeaturesList">xmlGetFeaturesList</a> (int * len, <br /> const char ** result)</pre> +<pre class="programlisting">int <a href="#xmlHasFeature">xmlHasFeature</a> (<a href="libxml-parser.html#xmlFeature">xmlFeature</a> feature)</pre> <pre class="programlisting"><a href="libxml-tree.html#xmlDtdPtr">xmlDtdPtr</a> <a href="#xmlIOParseDTD">xmlIOParseDTD</a> (<a href="libxml-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br /> <a href="libxml-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a> input, <br /> <a href="libxml-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc)</pre> <pre class="programlisting">void <a href="#xmlInitNodeInfoSeq">xmlInitNodeInfoSeq</a> (<a href="libxml-parser.html#xmlParserNodeInfoSeqPtr">xmlParserNodeInfoSeqPtr</a> seq)</pre> <pre class="programlisting">void <a href="#xmlInitParser">xmlInitParser</a> (void)</pre> @@ -190,7 +192,40 @@ void <a href="#xmlParserInputDeallocate">xmlParserInputDeallocate</a> (<a href=" <h3><a name="XML_DETECT_IDS" id="XML_DETECT_IDS"></a>Macro: XML_DETECT_IDS</h3><pre>#define XML_DETECT_IDS</pre><p>Bit in the loadsubset context field to tell to do ID/REFs lookups. Use it to initialize xmlLoadExtDtdDefaultValue.</p> <h3><a name="XML_SAX2_MAGIC" id="XML_SAX2_MAGIC"></a>Macro: XML_SAX2_MAGIC</h3><pre>#define XML_SAX2_MAGIC</pre><p>Special constant found in SAX2 blocks initialized fields</p> <h3><a name="XML_SKIP_IDS" id="XML_SKIP_IDS"></a>Macro: XML_SKIP_IDS</h3><pre>#define XML_SKIP_IDS</pre><p>Bit in the loadsubset context field to tell to not do ID/REFs registration. Used to initialize <a href="libxml-globals.html#xmlLoadExtDtdDefaultValue">xmlLoadExtDtdDefaultValue</a> in some special cases.</p> -<h3>Enum <a name="xmlParserInputState" id="xmlParserInputState">xmlParserInputState</a></h3><pre class="programlisting">Enum xmlParserInputState { +<h3>Enum <a name="xmlFeature" id="xmlFeature">xmlFeature</a></h3><pre class="programlisting">Enum xmlFeature { + <a name="XML_FEATURE_THREAD" id="XML_FEATURE_THREAD">XML_FEATURE_THREAD</a> = 1 + <a name="XML_FEATURE_TREE" id="XML_FEATURE_TREE">XML_FEATURE_TREE</a> = 2 + <a name="XML_FEATURE_OUTPUT" id="XML_FEATURE_OUTPUT">XML_FEATURE_OUTPUT</a> = 3 + <a name="XML_FEATURE_PUSH" id="XML_FEATURE_PUSH">XML_FEATURE_PUSH</a> = 4 + <a name="XML_FEATURE_READER" id="XML_FEATURE_READER">XML_FEATURE_READER</a> = 5 + <a name="XML_FEATURE_PATTERN" id="XML_FEATURE_PATTERN">XML_FEATURE_PATTERN</a> = 6 + <a name="XML_FEATURE_WRITER" id="XML_FEATURE_WRITER">XML_FEATURE_WRITER</a> = 7 + <a name="XML_FEATURE_SAX1" id="XML_FEATURE_SAX1">XML_FEATURE_SAX1</a> = 8 + <a name="XML_FEATURE_FTP" id="XML_FEATURE_FTP">XML_FEATURE_FTP</a> = 9 + <a name="XML_FEATURE_HTTP" id="XML_FEATURE_HTTP">XML_FEATURE_HTTP</a> = 10 + <a name="XML_FEATURE_VALID" id="XML_FEATURE_VALID">XML_FEATURE_VALID</a> = 11 + <a name="XML_FEATURE_HTML" id="XML_FEATURE_HTML">XML_FEATURE_HTML</a> = 12 + <a name="XML_FEATURE_LEGACY" id="XML_FEATURE_LEGACY">XML_FEATURE_LEGACY</a> = 13 + <a name="XML_FEATURE_C14N" id="XML_FEATURE_C14N">XML_FEATURE_C14N</a> = 14 + <a name="XML_FEATURE_CATALOG" id="XML_FEATURE_CATALOG">XML_FEATURE_CATALOG</a> = 15 + <a name="XML_FEATURE_XPATH" id="XML_FEATURE_XPATH">XML_FEATURE_XPATH</a> = 16 + <a name="XML_FEATURE_XPTR" id="XML_FEATURE_XPTR">XML_FEATURE_XPTR</a> = 17 + <a name="XML_FEATURE_XINCLUDE" id="XML_FEATURE_XINCLUDE">XML_FEATURE_XINCLUDE</a> = 18 + <a name="XML_FEATURE_ICONV" id="XML_FEATURE_ICONV">XML_FEATURE_ICONV</a> = 19 + <a name="XML_FEATURE_ISO8859X" id="XML_FEATURE_ISO8859X">XML_FEATURE_ISO8859X</a> = 20 + <a name="XML_FEATURE_UNICODE" id="XML_FEATURE_UNICODE">XML_FEATURE_UNICODE</a> = 21 + <a name="XML_FEATURE_REGEXP" id="XML_FEATURE_REGEXP">XML_FEATURE_REGEXP</a> = 22 + <a name="XML_FEATURE_AUTOMATA" id="XML_FEATURE_AUTOMATA">XML_FEATURE_AUTOMATA</a> = 23 + <a name="XML_FEATURE_EXPR" id="XML_FEATURE_EXPR">XML_FEATURE_EXPR</a> = 24 + <a name="XML_FEATURE_SCHEMAS" id="XML_FEATURE_SCHEMAS">XML_FEATURE_SCHEMAS</a> = 25 + <a name="XML_FEATURE_SCHEMATRON" id="XML_FEATURE_SCHEMATRON">XML_FEATURE_SCHEMATRON</a> = 26 + <a name="XML_FEATURE_MODULES" id="XML_FEATURE_MODULES">XML_FEATURE_MODULES</a> = 27 + <a name="XML_FEATURE_DEBUG" id="XML_FEATURE_DEBUG">XML_FEATURE_DEBUG</a> = 28 + <a name="XML_FEATURE_DEBUG_MEM" id="XML_FEATURE_DEBUG_MEM">XML_FEATURE_DEBUG_MEM</a> = 29 + <a name="XML_FEATURE_DEBUG_RUN" id="XML_FEATURE_DEBUG_RUN">XML_FEATURE_DEBUG_RUN</a> = 30 + <a name="XML_FEATURE_NONE" id="XML_FEATURE_NONE">XML_FEATURE_NONE</a> = 99999 : just to be sure of allocation size +} +</pre><h3>Enum <a name="xmlParserInputState" id="xmlParserInputState">xmlParserInputState</a></h3><pre class="programlisting">Enum xmlParserInputState { <a name="XML_PARSER_EOF" id="XML_PARSER_EOF">XML_PARSER_EOF</a> = -1 : nothing is to be parsed <a name="XML_PARSER_START" id="XML_PARSER_START">XML_PARSER_START</a> = 0 : nothing has been parsed <a name="XML_PARSER_MISC" id="XML_PARSER_MISC">XML_PARSER_MISC</a> = 1 : Misc* before int subset @@ -245,6 +280,7 @@ void <a href="#xmlParserInputDeallocate">xmlParserInputDeallocate</a> (<a href=" <a name="XML_PARSE_NSCLEAN" id="XML_PARSE_NSCLEAN">XML_PARSE_NSCLEAN</a> = 8192 : remove redundant namespaces declarations <a name="XML_PARSE_NOCDATA" id="XML_PARSE_NOCDATA">XML_PARSE_NOCDATA</a> = 16384 : merge CDATA as text nodes <a name="XML_PARSE_NOXINCNODE" id="XML_PARSE_NOXINCNODE">XML_PARSE_NOXINCNODE</a> = 32768 : do not generate XINCLUDE START/END nodes + <a name="XML_PARSE_COMPACT" id="XML_PARSE_COMPACT">XML_PARSE_COMPACT</a> = 65536 : compact small text nodes } </pre><h3><a name="xmlSAXHandlerV1" id="xmlSAXHandlerV1">Structure xmlSAXHandlerV1</a></h3><pre class="programlisting">Structure xmlSAXHandlerV1<br />struct _xmlSAXHandlerV1 { <a href="libxml-parser.html#internalSubsetSAXFunc">internalSubsetSAXFunc</a> internalSubset @@ -406,7 +442,9 @@ void warningSAXFunc (void * ctx, <br /> const char * msg, <br /> ... </pre><p>Read the current value of one feature of this parser instance</p> <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>an XML/HTML parser context</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the feature name</td></tr><tr><td><span class="term"><i><tt>result</tt></i>:</span></td><td>location to store the result</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>-1 in case or error, 0 otherwise</td></tr></tbody></table></div><h3><a name="xmlGetFeaturesList" id="xmlGetFeaturesList"></a>Function: xmlGetFeaturesList</h3><pre class="programlisting">int xmlGetFeaturesList (int * len, <br /> const char ** result)<br /> </pre><p>Copy at most *@len feature names into the @result array</p> -<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the length of the features name array (input/output)</td></tr><tr><td><span class="term"><i><tt>result</tt></i>:</span></td><td>an array of string to be filled with the features name.</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>-1 in case or error, or the total number of features, len is updated with the number of strings copied, strings must not be deallocated</td></tr></tbody></table></div><h3><a name="xmlIOParseDTD" id="xmlIOParseDTD"></a>Function: xmlIOParseDTD</h3><pre class="programlisting"><a href="libxml-tree.html#xmlDtdPtr">xmlDtdPtr</a> xmlIOParseDTD (<a href="libxml-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br /> <a href="libxml-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a> input, <br /> <a href="libxml-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc)<br /> +<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the length of the features name array (input/output)</td></tr><tr><td><span class="term"><i><tt>result</tt></i>:</span></td><td>an array of string to be filled with the features name.</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>-1 in case or error, or the total number of features, len is updated with the number of strings copied, strings must not be deallocated</td></tr></tbody></table></div><h3><a name="xmlHasFeature" id="xmlHasFeature"></a>Function: xmlHasFeature</h3><pre class="programlisting">int xmlHasFeature (<a href="libxml-parser.html#xmlFeature">xmlFeature</a> feature)<br /> +</pre><p>Examines if the library has been compiled with a given feature.</p> +<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>feature</tt></i>:</span></td><td>the feature to be examined</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a non-zero value if the feature exist, otherwise zero. Returns zero (0) if the feature does not exist or an unknown unknown feature is requested, non-zero otherwise.</td></tr></tbody></table></div><h3><a name="xmlIOParseDTD" id="xmlIOParseDTD"></a>Function: xmlIOParseDTD</h3><pre class="programlisting"><a href="libxml-tree.html#xmlDtdPtr">xmlDtdPtr</a> xmlIOParseDTD (<a href="libxml-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br /> <a href="libxml-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a> input, <br /> <a href="libxml-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc)<br /> </pre><p>Load and parse a DTD</p> <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>sax</tt></i>:</span></td><td>the SAX handler block or NULL</td></tr><tr><td><span class="term"><i><tt>input</tt></i>:</span></td><td>an Input Buffer</td></tr><tr><td><span class="term"><i><tt>enc</tt></i>:</span></td><td>the charset encoding if known</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the resulting <a href="libxml-tree.html#xmlDtdPtr">xmlDtdPtr</a> or NULL in case of error. @input will be freed at parsing end.</td></tr></tbody></table></div><h3><a name="xmlInitNodeInfoSeq" id="xmlInitNodeInfoSeq"></a>Function: xmlInitNodeInfoSeq</h3><pre class="programlisting">void xmlInitNodeInfoSeq (<a href="libxml-parser.html#xmlParserNodeInfoSeqPtr">xmlParserNodeInfoSeqPtr</a> seq)<br /> </pre><p>-- Initialize (set to initial state) node info sequence</p> @@ -419,7 +457,7 @@ void warningSAXFunc (void * ctx, <br /> const char * msg, <br /> ... <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>val</tt></i>:</span></td><td>int 0 or 1</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the last value for 0 for no substitution, 1 for substitution.</td></tr></tbody></table></div><h3><a name="xmlLineNumbersDefault" id="xmlLineNumbersDefault"></a>Function: xmlLineNumbersDefault</h3><pre class="programlisting">int xmlLineNumbersDefault (int val)<br /> </pre><p>Set and return the previous value for enabling line numbers in elements contents. This may break on old application and is turned off by default.</p> <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>val</tt></i>:</span></td><td>int 0 or 1</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the last value for 0 for no substitution, 1 for substitution.</td></tr></tbody></table></div><h3><a name="xmlLoadExternalEntity" id="xmlLoadExternalEntity"></a>Function: xmlLoadExternalEntity</h3><pre class="programlisting"><a href="libxml-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> xmlLoadExternalEntity (const char * URL, <br /> const char * ID, <br /> <a href="libxml-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br /> -</pre><p>Load an external entity, note that the use of this function for unparsed entities may generate problems TODO: a more generic External entity API must be designed</p> +</pre><p>Load an external entity, note that the use of this function for unparsed entities may generate problems</p> <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>URL</tt></i>:</span></td><td>the URL for the entity to load</td></tr><tr><td><span class="term"><i><tt>ID</tt></i>:</span></td><td>the Public ID for the entity to load</td></tr><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the context in which the entity is called or NULL</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libxml-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> or NULL</td></tr></tbody></table></div><h3><a name="xmlNewIOInputStream" id="xmlNewIOInputStream"></a>Function: xmlNewIOInputStream</h3><pre class="programlisting"><a href="libxml-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> xmlNewIOInputStream (<a href="libxml-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br /> <a href="libxml-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a> input, <br /> <a href="libxml-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc)<br /> </pre><p>Create a new input stream structure encapsulating the @input into a stream suitable for the parser.</p> <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>an XML parser context</td></tr><tr><td><span class="term"><i><tt>input</tt></i>:</span></td><td>an I/O Input</td></tr><tr><td><span class="term"><i><tt>enc</tt></i>:</span></td><td>the charset encoding if known</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the new input stream or NULL</td></tr></tbody></table></div><h3><a name="xmlNewParserCtxt" id="xmlNewParserCtxt"></a>Function: xmlNewParserCtxt</h3><pre class="programlisting"><a href="libxml-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> xmlNewParserCtxt (void)<br /> diff --git a/doc/html/libxml-pattern.html b/doc/html/libxml-pattern.html index 0659588..2415881 100644 --- a/doc/html/libxml-pattern.html +++ b/doc/html/libxml-pattern.html @@ -24,8 +24,9 @@ The content of this structure is not made public by the API. <pre class="programlisting"><a href="libxml-pattern.html#xmlStreamCtxtPtr">xmlStreamCtxtPtr</a> <a href="#xmlPatternGetStreamCtxt">xmlPatternGetStreamCtxt</a> (<a href="libxml-pattern.html#xmlPatternPtr">xmlPatternPtr</a> comp)</pre> <pre class="programlisting">int <a href="#xmlPatternMatch">xmlPatternMatch</a> (<a href="libxml-pattern.html#xmlPatternPtr">xmlPatternPtr</a> comp, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node)</pre> <pre class="programlisting">int <a href="#xmlPatternMaxDepth">xmlPatternMaxDepth</a> (<a href="libxml-pattern.html#xmlPatternPtr">xmlPatternPtr</a> comp)</pre> +<pre class="programlisting">int <a href="#xmlPatternMinDepth">xmlPatternMinDepth</a> (<a href="libxml-pattern.html#xmlPatternPtr">xmlPatternPtr</a> comp)</pre> <pre class="programlisting">int <a href="#xmlPatternStreamable">xmlPatternStreamable</a> (<a href="libxml-pattern.html#xmlPatternPtr">xmlPatternPtr</a> comp)</pre> -<pre class="programlisting"><a href="libxml-pattern.html#xmlPatternPtr">xmlPatternPtr</a> <a href="#xmlPatterncompile">xmlPatterncompile</a> (const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * pattern, <br /> <a href="libxml-dict.html#xmlDict">xmlDict</a> * dict, <br /> <a href="libxml-pattern.html#xmlPatternFlags">xmlPatternFlags</a> flags, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> ** namespaces)</pre> +<pre class="programlisting"><a href="libxml-pattern.html#xmlPatternPtr">xmlPatternPtr</a> <a href="#xmlPatterncompile">xmlPatterncompile</a> (const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * pattern, <br /> <a href="libxml-dict.html#xmlDict">xmlDict</a> * dict, <br /> int flags, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> ** namespaces)</pre> <pre class="programlisting">int <a href="#xmlStreamPop">xmlStreamPop</a> (<a href="libxml-pattern.html#xmlStreamCtxtPtr">xmlStreamCtxtPtr</a> stream)</pre> <pre class="programlisting">int <a href="#xmlStreamPush">xmlStreamPush</a> (<a href="libxml-pattern.html#xmlStreamCtxtPtr">xmlStreamCtxtPtr</a> stream, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * ns)</pre> <pre class="programlisting">int <a href="#xmlStreamPushAttr">xmlStreamPushAttr</a> (<a href="libxml-pattern.html#xmlStreamCtxtPtr">xmlStreamCtxtPtr</a> stream, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * ns)</pre> @@ -54,11 +55,13 @@ The content of this structure is not made public by the API. </pre><p>Test whether the node matches the pattern</p> <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>comp</tt></i>:</span></td><td>the precompiled pattern</td></tr><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>a node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>1 if it matches, 0 if it doesn't and -1 in case of failure</td></tr></tbody></table></div><h3><a name="xmlPatternMaxDepth" id="xmlPatternMaxDepth"></a>Function: xmlPatternMaxDepth</h3><pre class="programlisting">int xmlPatternMaxDepth (<a href="libxml-pattern.html#xmlPatternPtr">xmlPatternPtr</a> comp)<br /> </pre><p>Check the maximum depth reachable by a pattern</p> -<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>comp</tt></i>:</span></td><td>the precompiled pattern</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>-2 if no limit (using //), otherwise the depth, and -1 in case of error</td></tr></tbody></table></div><h3><a name="xmlPatternStreamable" id="xmlPatternStreamable"></a>Function: xmlPatternStreamable</h3><pre class="programlisting">int xmlPatternStreamable (<a href="libxml-pattern.html#xmlPatternPtr">xmlPatternPtr</a> comp)<br /> +<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>comp</tt></i>:</span></td><td>the precompiled pattern</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>-2 if no limit (using //), otherwise the depth, and -1 in case of error</td></tr></tbody></table></div><h3><a name="xmlPatternMinDepth" id="xmlPatternMinDepth"></a>Function: xmlPatternMinDepth</h3><pre class="programlisting">int xmlPatternMinDepth (<a href="libxml-pattern.html#xmlPatternPtr">xmlPatternPtr</a> comp)<br /> +</pre><p>Check the minimum depth reachable by a pattern, 0 mean the / or . are part of the set.</p> +<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>comp</tt></i>:</span></td><td>the precompiled pattern</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>-1 in case of error otherwise the depth,</td></tr></tbody></table></div><h3><a name="xmlPatternStreamable" id="xmlPatternStreamable"></a>Function: xmlPatternStreamable</h3><pre class="programlisting">int xmlPatternStreamable (<a href="libxml-pattern.html#xmlPatternPtr">xmlPatternPtr</a> comp)<br /> </pre><p>Check if the pattern is streamable i.e. xmlPatternGetStreamCtxt() should work.</p> -<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>comp</tt></i>:</span></td><td>the precompiled pattern</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>1 if streamable, 0 if not and -1 in case of error.</td></tr></tbody></table></div><h3><a name="xmlPatterncompile" id="xmlPatterncompile"></a>Function: xmlPatterncompile</h3><pre class="programlisting"><a href="libxml-pattern.html#xmlPatternPtr">xmlPatternPtr</a> xmlPatterncompile (const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * pattern, <br /> <a href="libxml-dict.html#xmlDict">xmlDict</a> * dict, <br /> <a href="libxml-pattern.html#xmlPatternFlags">xmlPatternFlags</a> flags, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> ** namespaces)<br /> +<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>comp</tt></i>:</span></td><td>the precompiled pattern</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>1 if streamable, 0 if not and -1 in case of error.</td></tr></tbody></table></div><h3><a name="xmlPatterncompile" id="xmlPatterncompile"></a>Function: xmlPatterncompile</h3><pre class="programlisting"><a href="libxml-pattern.html#xmlPatternPtr">xmlPatternPtr</a> xmlPatterncompile (const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * pattern, <br /> <a href="libxml-dict.html#xmlDict">xmlDict</a> * dict, <br /> int flags, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> ** namespaces)<br /> </pre><p>Compile a pattern.</p> -<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>pattern</tt></i>:</span></td><td>the pattern to compile</td></tr><tr><td><span class="term"><i><tt>dict</tt></i>:</span></td><td>an optional dictionary for interned strings</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>compilation flags, undefined yet</td></tr><tr><td><span class="term"><i><tt>namespaces</tt></i>:</span></td><td>the prefix definitions, array of [URI, prefix] or NULL</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the compiled form of the pattern or NULL in case of error</td></tr></tbody></table></div><h3><a name="xmlStreamPop" id="xmlStreamPop"></a>Function: xmlStreamPop</h3><pre class="programlisting">int xmlStreamPop (<a href="libxml-pattern.html#xmlStreamCtxtPtr">xmlStreamCtxtPtr</a> stream)<br /> +<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>pattern</tt></i>:</span></td><td>the pattern to compile</td></tr><tr><td><span class="term"><i><tt>dict</tt></i>:</span></td><td>an optional dictionary for interned strings</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>compilation flags, see <a href="libxml-pattern.html#xmlPatternFlags">xmlPatternFlags</a></td></tr><tr><td><span class="term"><i><tt>namespaces</tt></i>:</span></td><td>the prefix definitions, array of [URI, prefix] or NULL</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the compiled form of the pattern or NULL in case of error</td></tr></tbody></table></div><h3><a name="xmlStreamPop" id="xmlStreamPop"></a>Function: xmlStreamPop</h3><pre class="programlisting">int xmlStreamPop (<a href="libxml-pattern.html#xmlStreamCtxtPtr">xmlStreamCtxtPtr</a> stream)<br /> </pre><p>push one level from the stream.</p> <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>stream</tt></i>:</span></td><td>the stream context</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>-1 in case of error, 0 otherwise.</td></tr></tbody></table></div><h3><a name="xmlStreamPush" id="xmlStreamPush"></a>Function: xmlStreamPush</h3><pre class="programlisting">int xmlStreamPush (<a href="libxml-pattern.html#xmlStreamCtxtPtr">xmlStreamCtxtPtr</a> stream, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * ns)<br /> </pre><p>Push new data onto the stream. NOTE: if the call xmlPatterncompile() indicated a dictionary, then strings for name and ns will be expected to come from the dictionary. Both @name and @ns being NULL means the / i.e. the root of the document. This can also act as a reset.</p> diff --git a/doc/html/libxml-relaxng.html b/doc/html/libxml-relaxng.html index 942aac3..637f27f 100644 --- a/doc/html/libxml-relaxng.html +++ b/doc/html/libxml-relaxng.html @@ -37,6 +37,7 @@ The content of this structure is not made public by the API. <pre class="programlisting"><a href="libxml-relaxng.html#xmlRelaxNGPtr">xmlRelaxNGPtr</a> <a href="#xmlRelaxNGParse">xmlRelaxNGParse</a> (<a href="libxml-relaxng.html#xmlRelaxNGParserCtxtPtr">xmlRelaxNGParserCtxtPtr</a> ctxt)</pre> <pre class="programlisting">void <a href="#xmlRelaxNGSetParserErrors">xmlRelaxNGSetParserErrors</a> (<a href="libxml-relaxng.html#xmlRelaxNGParserCtxtPtr">xmlRelaxNGParserCtxtPtr</a> ctxt, <br /> <a href="libxml-relaxng.html#xmlRelaxNGValidityErrorFunc">xmlRelaxNGValidityErrorFunc</a> err, <br /> <a href="libxml-relaxng.html#xmlRelaxNGValidityWarningFunc">xmlRelaxNGValidityWarningFunc</a> warn, <br /> void * ctx)</pre> <pre class="programlisting">void <a href="#xmlRelaxNGSetValidErrors">xmlRelaxNGSetValidErrors</a> (<a href="libxml-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br /> <a href="libxml-relaxng.html#xmlRelaxNGValidityErrorFunc">xmlRelaxNGValidityErrorFunc</a> err, <br /> <a href="libxml-relaxng.html#xmlRelaxNGValidityWarningFunc">xmlRelaxNGValidityWarningFunc</a> warn, <br /> void * ctx)</pre> +<pre class="programlisting">void <a href="#xmlRelaxNGSetValidStructuredErrors">xmlRelaxNGSetValidStructuredErrors</a> (<a href="libxml-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br /> <a href="libxml-xmlerror.html#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a> serror, <br /> void * ctx)</pre> <pre class="programlisting">int <a href="#xmlRelaxNGValidateDoc">xmlRelaxNGValidateDoc</a> (<a href="libxml-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc)</pre> <pre class="programlisting">int <a href="#xmlRelaxNGValidateFullElement">xmlRelaxNGValidateFullElement</a> (<a href="libxml-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> elem)</pre> <pre class="programlisting">int <a href="#xmlRelaxNGValidatePopElement">xmlRelaxNGValidatePopElement</a> (<a href="libxml-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> elem)</pre> @@ -135,7 +136,9 @@ The content of this structure is not made public by the API. </pre><p>Set the callback functions used to handle errors for a validation context</p> <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>a Relax-NG validation context</td></tr><tr><td><span class="term"><i><tt>err</tt></i>:</span></td><td>the error callback</td></tr><tr><td><span class="term"><i><tt>warn</tt></i>:</span></td><td>the warning callback</td></tr><tr><td><span class="term"><i><tt>ctx</tt></i>:</span></td><td>contextual data for the callbacks</td></tr></tbody></table></div><h3><a name="xmlRelaxNGSetValidErrors" id="xmlRelaxNGSetValidErrors"></a>Function: xmlRelaxNGSetValidErrors</h3><pre class="programlisting">void xmlRelaxNGSetValidErrors (<a href="libxml-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br /> <a href="libxml-relaxng.html#xmlRelaxNGValidityErrorFunc">xmlRelaxNGValidityErrorFunc</a> err, <br /> <a href="libxml-relaxng.html#xmlRelaxNGValidityWarningFunc">xmlRelaxNGValidityWarningFunc</a> warn, <br /> void * ctx)<br /> </pre><p>Set the error and warning callback informations</p> -<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>a Relax-NG validation context</td></tr><tr><td><span class="term"><i><tt>err</tt></i>:</span></td><td>the error function</td></tr><tr><td><span class="term"><i><tt>warn</tt></i>:</span></td><td>the warning function</td></tr><tr><td><span class="term"><i><tt>ctx</tt></i>:</span></td><td>the functions context</td></tr></tbody></table></div><h3><a name="xmlRelaxNGValidateDoc" id="xmlRelaxNGValidateDoc"></a>Function: xmlRelaxNGValidateDoc</h3><pre class="programlisting">int xmlRelaxNGValidateDoc (<a href="libxml-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc)<br /> +<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>a Relax-NG validation context</td></tr><tr><td><span class="term"><i><tt>err</tt></i>:</span></td><td>the error function</td></tr><tr><td><span class="term"><i><tt>warn</tt></i>:</span></td><td>the warning function</td></tr><tr><td><span class="term"><i><tt>ctx</tt></i>:</span></td><td>the functions context</td></tr></tbody></table></div><h3><a name="xmlRelaxNGSetValidStructuredErrors" id="xmlRelaxNGSetValidStructuredErrors"></a>Function: xmlRelaxNGSetValidStructuredErrors</h3><pre class="programlisting">void xmlRelaxNGSetValidStructuredErrors (<a href="libxml-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br /> <a href="libxml-xmlerror.html#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a> serror, <br /> void * ctx)<br /> +</pre><p>Set the structured error callback</p> +<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>a Relax-NG validation context</td></tr><tr><td><span class="term"><i><tt>serror</tt></i>:</span></td><td>the structured error function</td></tr><tr><td><span class="term"><i><tt>ctx</tt></i>:</span></td><td>the functions context</td></tr></tbody></table></div><h3><a name="xmlRelaxNGValidateDoc" id="xmlRelaxNGValidateDoc"></a>Function: xmlRelaxNGValidateDoc</h3><pre class="programlisting">int xmlRelaxNGValidateDoc (<a href="libxml-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc)<br /> </pre><p>Validate a document tree in memory.</p> <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>a Relax-NG validation context</td></tr><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>a parsed document tree</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 if the document is valid, a positive error code number otherwise and -1 in case of internal or API error.</td></tr></tbody></table></div><h3><a name="xmlRelaxNGValidateFullElement" id="xmlRelaxNGValidateFullElement"></a>Function: xmlRelaxNGValidateFullElement</h3><pre class="programlisting">int xmlRelaxNGValidateFullElement (<a href="libxml-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> elem)<br /> </pre><p>Validate a full subtree when xmlRelaxNGValidatePushElement() returned 0 and the content of the node has been expanded.</p> diff --git a/doc/html/libxml-schemasInternals.html b/doc/html/libxml-schemasInternals.html index bb0987d..e840774 100644 --- a/doc/html/libxml-schemasInternals.html +++ b/doc/html/libxml-schemasInternals.html @@ -10,7 +10,7 @@ A:link, A:visited, A:active { text-decoration: underline } </style><style type="text/css"> div.deprecated pre.programlisting {border-style: double;border-color:red} pre.programlisting {border-style: double;background: #EECFA1} - </style><title>Module schemasInternals from libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="../epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="../gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="../w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="../redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="../Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1></h1><h2>Module schemasInternals from libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="../search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a style="font-weight:bold" href="../index.html">Main Menu</a></li><li><a style="font-weight:bold" href="../docs.html">Developer Menu</a></li><li><a style="font-weight:bold" href="../examples/index.html">Code Examples</a></li><li><a style="font-weight:bold" href="index.html">API Menu</a></li><li><a href="libxml-parser.html">Parser API</a></li><li><a href="libxml-tree.html">Tree API</a></li><li><a href="libxml-xmlreader.html">Reader API</a></li><li><a href="../guidelines.html">XML Guidelines</a></li><li><a href="../ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="../APIchunk0.html">Alphabetic</a></li><li><a href="../APIconstructors.html">Constructors</a></li><li><a href="../APIfunctions.html">Functions/Types</a></li><li><a href="../APIfiles.html">Modules</a></li><li><a href="../APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://rubyforge.org/projects/xml-tools/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="libxml-relaxng.html"><img src="left.png" width="24" height="24" border="0" alt="Prev" /></a></td><th align="left"><a href="libxml-relaxng.html">relaxng</a></th><td><a accesskey="u" href="index.html"><img src="up.png" width="24" height="24" border="0" alt="Up" /></a></td><th align="left"><a href="index.html">API documentation</a></th><td><a accesskey="h" href="../index.html"><img src="home.png" width="24" height="24" border="0" alt="Home" /></a></td><th align="center"><a href="../index.html">The XML C parser and toolkit of Gnome</a></th><th align="right"><a href="libxml-threads.html">threads</a></th><td><a accesskey="n" href="libxml-threads.html"><img src="right.png" width="24" height="24" border="0" alt="Next" /></a></td></tr></table><p>internal interfaces for the XML Schemas handling and schema validity checking </p><h2>Table of Contents</h2><pre class="programlisting">#define <a href="#XML_SCHEMAS_ANYATTR_LAX">XML_SCHEMAS_ANYATTR_LAX</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ANYATTR_SKIP">XML_SCHEMAS_ANYATTR_SKIP</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ANYATTR_STRICT">XML_SCHEMAS_ANYATTR_STRICT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ANY_LAX">XML_SCHEMAS_ANY_LAX</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ANY_SKIP">XML_SCHEMAS_ANY_SKIP</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ANY_STRICT">XML_SCHEMAS_ANY_STRICT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTRGROUP_GLOBAL">XML_SCHEMAS_ATTRGROUP_GLOBAL</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTRGROUP_MARKED">XML_SCHEMAS_ATTRGROUP_MARKED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED">XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTR_FIXED">XML_SCHEMAS_ATTR_FIXED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTR_GLOBAL">XML_SCHEMAS_ATTR_GLOBAL</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTR_INTERNAL_RESOLVED">XML_SCHEMAS_ATTR_INTERNAL_RESOLVED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTR_NSDEFAULT">XML_SCHEMAS_ATTR_NSDEFAULT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTR_USE_OPTIONAL">XML_SCHEMAS_ATTR_USE_OPTIONAL</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTR_USE_PROHIBITED">XML_SCHEMAS_ATTR_USE_PROHIBITED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTR_USE_REQUIRED">XML_SCHEMAS_ATTR_USE_REQUIRED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION">XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION">XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION">XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_ABSTRACT">XML_SCHEMAS_ELEM_ABSTRACT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_BLOCK_ABSENT">XML_SCHEMAS_ELEM_BLOCK_ABSENT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_BLOCK_EXTENSION">XML_SCHEMAS_ELEM_BLOCK_EXTENSION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_BLOCK_RESTRICTION">XML_SCHEMAS_ELEM_BLOCK_RESTRICTION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION">XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_CIRCULAR">XML_SCHEMAS_ELEM_CIRCULAR</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_DEFAULT">XML_SCHEMAS_ELEM_DEFAULT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_FINAL_ABSENT">XML_SCHEMAS_ELEM_FINAL_ABSENT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_FINAL_EXTENSION">XML_SCHEMAS_ELEM_FINAL_EXTENSION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_FINAL_RESTRICTION">XML_SCHEMAS_ELEM_FINAL_RESTRICTION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_FIXED">XML_SCHEMAS_ELEM_FIXED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_GLOBAL">XML_SCHEMAS_ELEM_GLOBAL</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_INTERNAL_CHECKED">XML_SCHEMAS_ELEM_INTERNAL_CHECKED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_INTERNAL_RESOLVED">XML_SCHEMAS_ELEM_INTERNAL_RESOLVED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_NILLABLE">XML_SCHEMAS_ELEM_NILLABLE</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_NSDEFAULT">XML_SCHEMAS_ELEM_NSDEFAULT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_REF">XML_SCHEMAS_ELEM_REF</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD">XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_TOPLEVEL">XML_SCHEMAS_ELEM_TOPLEVEL</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_FACET_COLLAPSE">XML_SCHEMAS_FACET_COLLAPSE</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_FACET_PRESERVE">XML_SCHEMAS_FACET_PRESERVE</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_FACET_REPLACE">XML_SCHEMAS_FACET_REPLACE</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_FACET_UNKNOWN">XML_SCHEMAS_FACET_UNKNOWN</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_FINAL_DEFAULT_EXTENSION">XML_SCHEMAS_FINAL_DEFAULT_EXTENSION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_FINAL_DEFAULT_LIST">XML_SCHEMAS_FINAL_DEFAULT_LIST</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION">XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_FINAL_DEFAULT_UNION">XML_SCHEMAS_FINAL_DEFAULT_UNION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_INCLUDING_CONVERT_NS">XML_SCHEMAS_INCLUDING_CONVERT_NS</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_QUALIF_ATTR">XML_SCHEMAS_QUALIF_ATTR</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_QUALIF_ELEM">XML_SCHEMAS_QUALIF_ELEM</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_ABSTRACT">XML_SCHEMAS_TYPE_ABSTRACT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_BLOCK_DEFAULT">XML_SCHEMAS_TYPE_BLOCK_DEFAULT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_BLOCK_EXTENSION">XML_SCHEMAS_TYPE_BLOCK_EXTENSION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_BLOCK_RESTRICTION">XML_SCHEMAS_TYPE_BLOCK_RESTRICTION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE">XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION">XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION">XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_FACETSNEEDVALUE">XML_SCHEMAS_TYPE_FACETSNEEDVALUE</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_FINAL_DEFAULT">XML_SCHEMAS_TYPE_FINAL_DEFAULT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_FINAL_EXTENSION">XML_SCHEMAS_TYPE_FINAL_EXTENSION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_FINAL_LIST">XML_SCHEMAS_TYPE_FINAL_LIST</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_FINAL_RESTRICTION">XML_SCHEMAS_TYPE_FINAL_RESTRICTION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_FINAL_UNION">XML_SCHEMAS_TYPE_FINAL_UNION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_GLOBAL">XML_SCHEMAS_TYPE_GLOBAL</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_HAS_FACETS">XML_SCHEMAS_TYPE_HAS_FACETS</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_INTERNAL_INVALID">XML_SCHEMAS_TYPE_INTERNAL_INVALID</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_INTERNAL_RESOLVED">XML_SCHEMAS_TYPE_INTERNAL_RESOLVED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_MARKED">XML_SCHEMAS_TYPE_MARKED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_MIXED">XML_SCHEMAS_TYPE_MIXED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_NORMVALUENEEDED">XML_SCHEMAS_TYPE_NORMVALUENEEDED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD">XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_VARIETY_ABSENT">XML_SCHEMAS_TYPE_VARIETY_ABSENT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_VARIETY_ATOMIC">XML_SCHEMAS_TYPE_VARIETY_ATOMIC</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_VARIETY_LIST">XML_SCHEMAS_TYPE_VARIETY_LIST</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_VARIETY_UNION">XML_SCHEMAS_TYPE_VARIETY_UNION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_WHITESPACE_COLLAPSE">XML_SCHEMAS_TYPE_WHITESPACE_COLLAPSE</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_WHITESPACE_PRESERVE">XML_SCHEMAS_TYPE_WHITESPACE_PRESERVE</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_WHITESPACE_REPLACE">XML_SCHEMAS_TYPE_WHITESPACE_REPLACE</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_WILDCARD_COMPLETE">XML_SCHEMAS_WILDCARD_COMPLETE</a></pre><pre class="programlisting">Structure <a href="#xmlSchemaAnnot">xmlSchemaAnnot</a><br />struct _xmlSchemaAnnot + </style><title>Module schemasInternals from libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="../epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="../gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="../w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="../redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="../Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1></h1><h2>Module schemasInternals from libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="../search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a style="font-weight:bold" href="../index.html">Main Menu</a></li><li><a style="font-weight:bold" href="../docs.html">Developer Menu</a></li><li><a style="font-weight:bold" href="../examples/index.html">Code Examples</a></li><li><a style="font-weight:bold" href="index.html">API Menu</a></li><li><a href="libxml-parser.html">Parser API</a></li><li><a href="libxml-tree.html">Tree API</a></li><li><a href="libxml-xmlreader.html">Reader API</a></li><li><a href="../guidelines.html">XML Guidelines</a></li><li><a href="../ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="../APIchunk0.html">Alphabetic</a></li><li><a href="../APIconstructors.html">Constructors</a></li><li><a href="../APIfunctions.html">Functions/Types</a></li><li><a href="../APIfiles.html">Modules</a></li><li><a href="../APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://rubyforge.org/projects/xml-tools/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="libxml-relaxng.html"><img src="left.png" width="24" height="24" border="0" alt="Prev" /></a></td><th align="left"><a href="libxml-relaxng.html">relaxng</a></th><td><a accesskey="u" href="index.html"><img src="up.png" width="24" height="24" border="0" alt="Up" /></a></td><th align="left"><a href="index.html">API documentation</a></th><td><a accesskey="h" href="../index.html"><img src="home.png" width="24" height="24" border="0" alt="Home" /></a></td><th align="center"><a href="../index.html">The XML C parser and toolkit of Gnome</a></th><th align="right"><a href="libxml-schematron.html">schematron</a></th><td><a accesskey="n" href="libxml-schematron.html"><img src="right.png" width="24" height="24" border="0" alt="Next" /></a></td></tr></table><p>internal interfaces for the XML Schemas handling and schema validity checking </p><h2>Table of Contents</h2><pre class="programlisting">#define <a href="#XML_SCHEMAS_ANYATTR_LAX">XML_SCHEMAS_ANYATTR_LAX</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ANYATTR_SKIP">XML_SCHEMAS_ANYATTR_SKIP</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ANYATTR_STRICT">XML_SCHEMAS_ANYATTR_STRICT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ANY_LAX">XML_SCHEMAS_ANY_LAX</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ANY_SKIP">XML_SCHEMAS_ANY_SKIP</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ANY_STRICT">XML_SCHEMAS_ANY_STRICT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTRGROUP_GLOBAL">XML_SCHEMAS_ATTRGROUP_GLOBAL</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTRGROUP_MARKED">XML_SCHEMAS_ATTRGROUP_MARKED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED">XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTR_FIXED">XML_SCHEMAS_ATTR_FIXED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTR_GLOBAL">XML_SCHEMAS_ATTR_GLOBAL</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTR_INTERNAL_RESOLVED">XML_SCHEMAS_ATTR_INTERNAL_RESOLVED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTR_NSDEFAULT">XML_SCHEMAS_ATTR_NSDEFAULT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTR_USE_OPTIONAL">XML_SCHEMAS_ATTR_USE_OPTIONAL</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTR_USE_PROHIBITED">XML_SCHEMAS_ATTR_USE_PROHIBITED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTR_USE_REQUIRED">XML_SCHEMAS_ATTR_USE_REQUIRED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION">XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION">XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION">XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_ABSTRACT">XML_SCHEMAS_ELEM_ABSTRACT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_BLOCK_ABSENT">XML_SCHEMAS_ELEM_BLOCK_ABSENT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_BLOCK_EXTENSION">XML_SCHEMAS_ELEM_BLOCK_EXTENSION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_BLOCK_RESTRICTION">XML_SCHEMAS_ELEM_BLOCK_RESTRICTION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION">XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_CIRCULAR">XML_SCHEMAS_ELEM_CIRCULAR</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_DEFAULT">XML_SCHEMAS_ELEM_DEFAULT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_FINAL_ABSENT">XML_SCHEMAS_ELEM_FINAL_ABSENT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_FINAL_EXTENSION">XML_SCHEMAS_ELEM_FINAL_EXTENSION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_FINAL_RESTRICTION">XML_SCHEMAS_ELEM_FINAL_RESTRICTION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_FIXED">XML_SCHEMAS_ELEM_FIXED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_GLOBAL">XML_SCHEMAS_ELEM_GLOBAL</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_INTERNAL_CHECKED">XML_SCHEMAS_ELEM_INTERNAL_CHECKED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_INTERNAL_RESOLVED">XML_SCHEMAS_ELEM_INTERNAL_RESOLVED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_NILLABLE">XML_SCHEMAS_ELEM_NILLABLE</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_NSDEFAULT">XML_SCHEMAS_ELEM_NSDEFAULT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_REF">XML_SCHEMAS_ELEM_REF</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD">XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_TOPLEVEL">XML_SCHEMAS_ELEM_TOPLEVEL</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_FACET_COLLAPSE">XML_SCHEMAS_FACET_COLLAPSE</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_FACET_PRESERVE">XML_SCHEMAS_FACET_PRESERVE</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_FACET_REPLACE">XML_SCHEMAS_FACET_REPLACE</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_FACET_UNKNOWN">XML_SCHEMAS_FACET_UNKNOWN</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_FINAL_DEFAULT_EXTENSION">XML_SCHEMAS_FINAL_DEFAULT_EXTENSION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_FINAL_DEFAULT_LIST">XML_SCHEMAS_FINAL_DEFAULT_LIST</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION">XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_FINAL_DEFAULT_UNION">XML_SCHEMAS_FINAL_DEFAULT_UNION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_INCLUDING_CONVERT_NS">XML_SCHEMAS_INCLUDING_CONVERT_NS</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_QUALIF_ATTR">XML_SCHEMAS_QUALIF_ATTR</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_QUALIF_ELEM">XML_SCHEMAS_QUALIF_ELEM</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_ABSTRACT">XML_SCHEMAS_TYPE_ABSTRACT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_BLOCK_DEFAULT">XML_SCHEMAS_TYPE_BLOCK_DEFAULT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_BLOCK_EXTENSION">XML_SCHEMAS_TYPE_BLOCK_EXTENSION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_BLOCK_RESTRICTION">XML_SCHEMAS_TYPE_BLOCK_RESTRICTION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE">XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION">XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION">XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_FACETSNEEDVALUE">XML_SCHEMAS_TYPE_FACETSNEEDVALUE</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_FINAL_DEFAULT">XML_SCHEMAS_TYPE_FINAL_DEFAULT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_FINAL_EXTENSION">XML_SCHEMAS_TYPE_FINAL_EXTENSION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_FINAL_LIST">XML_SCHEMAS_TYPE_FINAL_LIST</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_FINAL_RESTRICTION">XML_SCHEMAS_TYPE_FINAL_RESTRICTION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_FINAL_UNION">XML_SCHEMAS_TYPE_FINAL_UNION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_GLOBAL">XML_SCHEMAS_TYPE_GLOBAL</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_HAS_FACETS">XML_SCHEMAS_TYPE_HAS_FACETS</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_INTERNAL_INVALID">XML_SCHEMAS_TYPE_INTERNAL_INVALID</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_INTERNAL_RESOLVED">XML_SCHEMAS_TYPE_INTERNAL_RESOLVED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_MARKED">XML_SCHEMAS_TYPE_MARKED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_MIXED">XML_SCHEMAS_TYPE_MIXED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_NORMVALUENEEDED">XML_SCHEMAS_TYPE_NORMVALUENEEDED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD">XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_VARIETY_ABSENT">XML_SCHEMAS_TYPE_VARIETY_ABSENT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_VARIETY_ATOMIC">XML_SCHEMAS_TYPE_VARIETY_ATOMIC</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_VARIETY_LIST">XML_SCHEMAS_TYPE_VARIETY_LIST</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_VARIETY_UNION">XML_SCHEMAS_TYPE_VARIETY_UNION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_WHITESPACE_COLLAPSE">XML_SCHEMAS_TYPE_WHITESPACE_COLLAPSE</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_WHITESPACE_PRESERVE">XML_SCHEMAS_TYPE_WHITESPACE_PRESERVE</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_WHITESPACE_REPLACE">XML_SCHEMAS_TYPE_WHITESPACE_REPLACE</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_WILDCARD_COMPLETE">XML_SCHEMAS_WILDCARD_COMPLETE</a></pre><pre class="programlisting">Structure <a href="#xmlSchemaAnnot">xmlSchemaAnnot</a><br />struct _xmlSchemaAnnot </pre><pre class="programlisting">Typedef <a href="libxml-schemasInternals.html#xmlSchemaAnnot">xmlSchemaAnnot</a> * <a name="xmlSchemaAnnotPtr" id="xmlSchemaAnnotPtr">xmlSchemaAnnotPtr</a> </pre><pre class="programlisting">Structure <a href="#xmlSchemaAttribute">xmlSchemaAttribute</a><br />struct _xmlSchemaAttribute </pre><pre class="programlisting">Structure <a href="#xmlSchemaAttributeGroup">xmlSchemaAttributeGroup</a><br />struct _xmlSchemaAttributeGroup diff --git a/doc/html/libxml-schematron.html b/doc/html/libxml-schematron.html new file mode 100644 index 0000000..e81dd66 --- /dev/null +++ b/doc/html/libxml-schematron.html @@ -0,0 +1,77 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /><link rel="SHORTCUT ICON" href="/favicon.ico" /><style type="text/css"> +TD {font-family: Verdana,Arial,Helvetica} +BODY {font-family: Verdana,Arial,Helvetica; margin-top: 2em; margin-left: 0em; margin-right: 0em} +H1 {font-family: Verdana,Arial,Helvetica} +H2 {font-family: Verdana,Arial,Helvetica} +H3 {font-family: Verdana,Arial,Helvetica} +A:link, A:visited, A:active { text-decoration: underline } +</style><style type="text/css"> + div.deprecated pre.programlisting {border-style: double;border-color:red} + pre.programlisting {border-style: double;background: #EECFA1} + </style><title>Module schematron from libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="../epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="../gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="../w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="../redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="../Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1></h1><h2>Module schematron from libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="../search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a style="font-weight:bold" href="../index.html">Main Menu</a></li><li><a style="font-weight:bold" href="../docs.html">Developer Menu</a></li><li><a style="font-weight:bold" href="../examples/index.html">Code Examples</a></li><li><a style="font-weight:bold" href="index.html">API Menu</a></li><li><a href="libxml-parser.html">Parser API</a></li><li><a href="libxml-tree.html">Tree API</a></li><li><a href="libxml-xmlreader.html">Reader API</a></li><li><a href="../guidelines.html">XML Guidelines</a></li><li><a href="../ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="../APIchunk0.html">Alphabetic</a></li><li><a href="../APIconstructors.html">Constructors</a></li><li><a href="../APIfunctions.html">Functions/Types</a></li><li><a href="../APIfiles.html">Modules</a></li><li><a href="../APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://rubyforge.org/projects/xml-tools/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="libxml-schemasInternals.html"><img src="left.png" width="24" height="24" border="0" alt="Prev" /></a></td><th align="left"><a href="libxml-schemasInternals.html">schemasInternals</a></th><td><a accesskey="u" href="index.html"><img src="up.png" width="24" height="24" border="0" alt="Up" /></a></td><th align="left"><a href="index.html">API documentation</a></th><td><a accesskey="h" href="../index.html"><img src="home.png" width="24" height="24" border="0" alt="Home" /></a></td><th align="center"><a href="../index.html">The XML C parser and toolkit of Gnome</a></th><th align="right"><a href="libxml-threads.html">threads</a></th><td><a accesskey="n" href="libxml-threads.html"><img src="right.png" width="24" height="24" border="0" alt="Next" /></a></td></tr></table><p>interface to the XML Schematron validity checking. </p><h2>Table of Contents</h2><pre class="programlisting">Structure <a href="#xmlSchematron">xmlSchematron</a><br />struct _xmlSchematron +The content of this structure is not made public by the API. +</pre><pre class="programlisting">Structure <a href="#xmlSchematronParserCtxt">xmlSchematronParserCtxt</a><br />struct _xmlSchematronParserCtxt +The content of this structure is not made public by the API. +</pre><pre class="programlisting">Typedef <a href="libxml-schematron.html#xmlSchematronParserCtxt">xmlSchematronParserCtxt</a> * <a name="xmlSchematronParserCtxtPtr" id="xmlSchematronParserCtxtPtr">xmlSchematronParserCtxtPtr</a> +</pre><pre class="programlisting">Typedef <a href="libxml-schematron.html#xmlSchematron">xmlSchematron</a> * <a name="xmlSchematronPtr" id="xmlSchematronPtr">xmlSchematronPtr</a> +</pre><pre class="programlisting">Structure <a href="#xmlSchematronValidCtxt">xmlSchematronValidCtxt</a><br />struct _xmlSchematronValidCtxt +The content of this structure is not made public by the API. +</pre><pre class="programlisting">Typedef <a href="libxml-schematron.html#xmlSchematronValidCtxt">xmlSchematronValidCtxt</a> * <a name="xmlSchematronValidCtxtPtr" id="xmlSchematronValidCtxtPtr">xmlSchematronValidCtxtPtr</a> +</pre><pre class="programlisting">Enum <a href="#xmlSchematronValidOptions">xmlSchematronValidOptions</a> +</pre><pre class="programlisting">void <a href="#xmlSchematronFree">xmlSchematronFree</a> (<a href="libxml-schematron.html#xmlSchematronPtr">xmlSchematronPtr</a> schema)</pre> +<pre class="programlisting">void <a href="#xmlSchematronFreeParserCtxt">xmlSchematronFreeParserCtxt</a> (<a href="libxml-schematron.html#xmlSchematronParserCtxtPtr">xmlSchematronParserCtxtPtr</a> ctxt)</pre> +<pre class="programlisting">void <a href="#xmlSchematronFreeValidCtxt">xmlSchematronFreeValidCtxt</a> (<a href="libxml-schematron.html#xmlSchematronValidCtxtPtr">xmlSchematronValidCtxtPtr</a> ctxt)</pre> +<pre class="programlisting"><a href="libxml-schematron.html#xmlSchematronParserCtxtPtr">xmlSchematronParserCtxtPtr</a> <a href="#xmlSchematronNewDocParserCtxt">xmlSchematronNewDocParserCtxt</a> (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc)</pre> +<pre class="programlisting"><a href="libxml-schematron.html#xmlSchematronParserCtxtPtr">xmlSchematronParserCtxtPtr</a> <a href="#xmlSchematronNewMemParserCtxt">xmlSchematronNewMemParserCtxt</a> (const char * buffer, <br /> int size)</pre> +<pre class="programlisting"><a href="libxml-schematron.html#xmlSchematronParserCtxtPtr">xmlSchematronParserCtxtPtr</a> <a href="#xmlSchematronNewParserCtxt">xmlSchematronNewParserCtxt</a> (const char * URL)</pre> +<pre class="programlisting"><a href="libxml-schematron.html#xmlSchematronValidCtxtPtr">xmlSchematronValidCtxtPtr</a> <a href="#xmlSchematronNewValidCtxt">xmlSchematronNewValidCtxt</a> (<a href="libxml-schematron.html#xmlSchematronPtr">xmlSchematronPtr</a> schema, <br /> int options)</pre> +<pre class="programlisting"><a href="libxml-schematron.html#xmlSchematronPtr">xmlSchematronPtr</a> <a href="#xmlSchematronParse">xmlSchematronParse</a> (<a href="libxml-schematron.html#xmlSchematronParserCtxtPtr">xmlSchematronParserCtxtPtr</a> ctxt)</pre> +<pre class="programlisting">int <a href="#xmlSchematronValidateDoc">xmlSchematronValidateDoc</a> (<a href="libxml-schematron.html#xmlSchematronValidCtxtPtr">xmlSchematronValidCtxtPtr</a> ctxt, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> instance)</pre> +<pre class="programlisting">Function type: <a href="#xmlSchematronValidityErrorFunc">xmlSchematronValidityErrorFunc</a> +void <a href="#xmlSchematronValidityErrorFunc">xmlSchematronValidityErrorFunc</a> (void * ctx, <br /> const char * msg, <br /> ... ...) +</pre> +<pre class="programlisting">Function type: <a href="#xmlSchematronValidityWarningFunc">xmlSchematronValidityWarningFunc</a> +void <a href="#xmlSchematronValidityWarningFunc">xmlSchematronValidityWarningFunc</a> (void * ctx, <br /> const char * msg, <br /> ... ...) +</pre> +<h2>Description</h2> +<h3><a name="xmlSchematron" id="xmlSchematron">Structure xmlSchematron</a></h3><pre class="programlisting">Structure xmlSchematron<br />struct _xmlSchematron { +The content of this structure is not made public by the API. +}</pre><h3><a name="xmlSchematronParserCtxt" id="xmlSchematronParserCtxt">Structure xmlSchematronParserCtxt</a></h3><pre class="programlisting">Structure xmlSchematronParserCtxt<br />struct _xmlSchematronParserCtxt { +The content of this structure is not made public by the API. +}</pre><h3><a name="xmlSchematronValidCtxt" id="xmlSchematronValidCtxt">Structure xmlSchematronValidCtxt</a></h3><pre class="programlisting">Structure xmlSchematronValidCtxt<br />struct _xmlSchematronValidCtxt { +The content of this structure is not made public by the API. +}</pre><h3>Enum <a name="xmlSchematronValidOptions" id="xmlSchematronValidOptions">xmlSchematronValidOptions</a></h3><pre class="programlisting">Enum xmlSchematronValidOptions { + <a name="XML_SCHEMATRON_OUT_QUIET" id="XML_SCHEMATRON_OUT_QUIET">XML_SCHEMATRON_OUT_QUIET</a> = 1 : quiet no report + <a name="XML_SCHEMATRON_OUT_TEXT" id="XML_SCHEMATRON_OUT_TEXT">XML_SCHEMATRON_OUT_TEXT</a> = 2 : build a textual report + <a name="XML_SCHEMATRON_OUT_XML" id="XML_SCHEMATRON_OUT_XML">XML_SCHEMATRON_OUT_XML</a> = 4 : output SVRL + <a name="XML_SCHEMATRON_OUT_FILE" id="XML_SCHEMATRON_OUT_FILE">XML_SCHEMATRON_OUT_FILE</a> = 256 : output to a file descriptor + <a name="XML_SCHEMATRON_OUT_BUFFER" id="XML_SCHEMATRON_OUT_BUFFER">XML_SCHEMATRON_OUT_BUFFER</a> = 512 : output to a buffer + <a name="XML_SCHEMATRON_OUT_IO" id="XML_SCHEMATRON_OUT_IO">XML_SCHEMATRON_OUT_IO</a> = 1024 : output to I/O mechanism +} +</pre><h3><a name="xmlSchematronFree" id="xmlSchematronFree"></a>Function: xmlSchematronFree</h3><pre class="programlisting">void xmlSchematronFree (<a href="libxml-schematron.html#xmlSchematronPtr">xmlSchematronPtr</a> schema)<br /> +</pre><p>Deallocate a Schematron structure.</p> +<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>schema</tt></i>:</span></td><td>a schema structure</td></tr></tbody></table></div><h3><a name="xmlSchematronFreeParserCtxt" id="xmlSchematronFreeParserCtxt"></a>Function: xmlSchematronFreeParserCtxt</h3><pre class="programlisting">void xmlSchematronFreeParserCtxt (<a href="libxml-schematron.html#xmlSchematronParserCtxtPtr">xmlSchematronParserCtxtPtr</a> ctxt)<br /> +</pre><p>Free the resources associated to the schema parser context</p> +<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the schema parser context</td></tr></tbody></table></div><h3><a name="xmlSchematronFreeValidCtxt" id="xmlSchematronFreeValidCtxt"></a>Function: xmlSchematronFreeValidCtxt</h3><pre class="programlisting">void xmlSchematronFreeValidCtxt (<a href="libxml-schematron.html#xmlSchematronValidCtxtPtr">xmlSchematronValidCtxtPtr</a> ctxt)<br /> +</pre><p>Free the resources associated to the schema validation context</p> +<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the schema validation context</td></tr></tbody></table></div><h3><a name="xmlSchematronNewDocParserCtxt" id="xmlSchematronNewDocParserCtxt"></a>Function: xmlSchematronNewDocParserCtxt</h3><pre class="programlisting"><a href="libxml-schematron.html#xmlSchematronParserCtxtPtr">xmlSchematronParserCtxtPtr</a> xmlSchematronNewDocParserCtxt (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc)<br /> +</pre><p>Create an XML Schematrons parse context for that document. NB. The document may be modified during the parsing process.</p> +<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>a preparsed document tree</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the parser context or NULL in case of error</td></tr></tbody></table></div><h3><a name="xmlSchematronNewMemParserCtxt" id="xmlSchematronNewMemParserCtxt"></a>Function: xmlSchematronNewMemParserCtxt</h3><pre class="programlisting"><a href="libxml-schematron.html#xmlSchematronParserCtxtPtr">xmlSchematronParserCtxtPtr</a> xmlSchematronNewMemParserCtxt (const char * buffer, <br /> int size)<br /> +</pre><p>Create an XML Schematrons parse context for that memory buffer expected to contain an XML Schematrons file.</p> +<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>buffer</tt></i>:</span></td><td>a pointer to a char array containing the schemas</td></tr><tr><td><span class="term"><i><tt>size</tt></i>:</span></td><td>the size of the array</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the parser context or NULL in case of error</td></tr></tbody></table></div><h3><a name="xmlSchematronNewParserCtxt" id="xmlSchematronNewParserCtxt"></a>Function: xmlSchematronNewParserCtxt</h3><pre class="programlisting"><a href="libxml-schematron.html#xmlSchematronParserCtxtPtr">xmlSchematronParserCtxtPtr</a> xmlSchematronNewParserCtxt (const char * URL)<br /> +</pre><p>Create an XML Schematrons parse context for that file/resource expected to contain an XML Schematrons file.</p> +<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>URL</tt></i>:</span></td><td>the location of the schema</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the parser context or NULL in case of error</td></tr></tbody></table></div><h3><a name="xmlSchematronNewValidCtxt" id="xmlSchematronNewValidCtxt"></a>Function: xmlSchematronNewValidCtxt</h3><pre class="programlisting"><a href="libxml-schematron.html#xmlSchematronValidCtxtPtr">xmlSchematronValidCtxtPtr</a> xmlSchematronNewValidCtxt (<a href="libxml-schematron.html#xmlSchematronPtr">xmlSchematronPtr</a> schema, <br /> int options)<br /> +</pre><p>Create an XML Schematrons validation context based on the given schema.</p> +<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>schema</tt></i>:</span></td><td>a precompiled XML Schematrons</td></tr><tr><td><span class="term"><i><tt>options</tt></i>:</span></td><td>a set of <a href="libxml-schematron.html#xmlSchematronValidOptions">xmlSchematronValidOptions</a></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the validation context or NULL in case of error</td></tr></tbody></table></div><h3><a name="xmlSchematronParse" id="xmlSchematronParse"></a>Function: xmlSchematronParse</h3><pre class="programlisting"><a href="libxml-schematron.html#xmlSchematronPtr">xmlSchematronPtr</a> xmlSchematronParse (<a href="libxml-schematron.html#xmlSchematronParserCtxtPtr">xmlSchematronParserCtxtPtr</a> ctxt)<br /> +</pre><p>parse a schema definition resource and build an internal XML Shema struture which can be used to validate instances.</p> +<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>a schema validation context</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the internal XML Schematron structure built from the resource or NULL in case of error</td></tr></tbody></table></div><h3><a name="xmlSchematronValidateDoc" id="xmlSchematronValidateDoc"></a>Function: xmlSchematronValidateDoc</h3><pre class="programlisting">int xmlSchematronValidateDoc (<a href="libxml-schematron.html#xmlSchematronValidCtxtPtr">xmlSchematronValidCtxtPtr</a> ctxt, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> instance)<br /> +</pre><p>Validate a tree instance against the schematron</p> +<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the schema validation context</td></tr><tr><td><span class="term"><i><tt>instance</tt></i>:</span></td><td>the document instace tree</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success, -1 in case of internal error and an error count otherwise.</td></tr></tbody></table></div><h3><a name="xmlSchematronValidityErrorFunc" id="xmlSchematronValidityErrorFunc"></a>Function type: xmlSchematronValidityErrorFunc</h3><pre class="programlisting">Function type: xmlSchematronValidityErrorFunc +void xmlSchematronValidityErrorFunc (void * ctx, <br /> const char * msg, <br /> ... ...) +</pre><p></p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctx</tt></i>:</span></td><td></td></tr><tr><td><span class="term"><i><tt>msg</tt></i>:</span></td><td></td></tr><tr><td><span class="term"><i><tt>...</tt></i>:</span></td><td></td></tr></tbody></table></div><br /> +<h3><a name="xmlSchematronValidityWarningFunc" id="xmlSchematronValidityWarningFunc"></a>Function type: xmlSchematronValidityWarningFunc</h3><pre class="programlisting">Function type: xmlSchematronValidityWarningFunc +void xmlSchematronValidityWarningFunc (void * ctx, <br /> const char * msg, <br /> ... ...) +</pre><p></p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctx</tt></i>:</span></td><td></td></tr><tr><td><span class="term"><i><tt>msg</tt></i>:</span></td><td></td></tr><tr><td><span class="term"><i><tt>...</tt></i>:</span></td><td></td></tr></tbody></table></div><br /> +<p><a href="../bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html> diff --git a/doc/html/libxml-threads.html b/doc/html/libxml-threads.html index bc66bb3..7df283b 100644 --- a/doc/html/libxml-threads.html +++ b/doc/html/libxml-threads.html @@ -10,7 +10,7 @@ A:link, A:visited, A:active { text-decoration: underline } </style><style type="text/css"> div.deprecated pre.programlisting {border-style: double;border-color:red} pre.programlisting {border-style: double;background: #EECFA1} - </style><title>Module threads from libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="../epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="../gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="../w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="../redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="../Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1></h1><h2>Module threads from libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="../search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a style="font-weight:bold" href="../index.html">Main Menu</a></li><li><a style="font-weight:bold" href="../docs.html">Developer Menu</a></li><li><a style="font-weight:bold" href="../examples/index.html">Code Examples</a></li><li><a style="font-weight:bold" href="index.html">API Menu</a></li><li><a href="libxml-parser.html">Parser API</a></li><li><a href="libxml-tree.html">Tree API</a></li><li><a href="libxml-xmlreader.html">Reader API</a></li><li><a href="../guidelines.html">XML Guidelines</a></li><li><a href="../ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="../APIchunk0.html">Alphabetic</a></li><li><a href="../APIconstructors.html">Constructors</a></li><li><a href="../APIfunctions.html">Functions/Types</a></li><li><a href="../APIfiles.html">Modules</a></li><li><a href="../APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://rubyforge.org/projects/xml-tools/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="libxml-schemasInternals.html"><img src="left.png" width="24" height="24" border="0" alt="Prev" /></a></td><th align="left"><a href="libxml-schemasInternals.html">schemasInternals</a></th><td><a accesskey="u" href="index.html"><img src="up.png" width="24" height="24" border="0" alt="Up" /></a></td><th align="left"><a href="index.html">API documentation</a></th><td><a accesskey="h" href="../index.html"><img src="home.png" width="24" height="24" border="0" alt="Home" /></a></td><th align="center"><a href="../index.html">The XML C parser and toolkit of Gnome</a></th><th align="right"><a href="libxml-tree.html">tree</a></th><td><a accesskey="n" href="libxml-tree.html"><img src="right.png" width="24" height="24" border="0" alt="Next" /></a></td></tr></table><p>set of generic threading related routines should work with pthreads, Windows native or TLS threads </p><h2>Table of Contents</h2><pre class="programlisting">Structure <a href="#xmlMutex">xmlMutex</a><br />struct _xmlMutex + </style><title>Module threads from libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="../epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="../gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="../w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="../redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="../Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1></h1><h2>Module threads from libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="../search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a style="font-weight:bold" href="../index.html">Main Menu</a></li><li><a style="font-weight:bold" href="../docs.html">Developer Menu</a></li><li><a style="font-weight:bold" href="../examples/index.html">Code Examples</a></li><li><a style="font-weight:bold" href="index.html">API Menu</a></li><li><a href="libxml-parser.html">Parser API</a></li><li><a href="libxml-tree.html">Tree API</a></li><li><a href="libxml-xmlreader.html">Reader API</a></li><li><a href="../guidelines.html">XML Guidelines</a></li><li><a href="../ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="../APIchunk0.html">Alphabetic</a></li><li><a href="../APIconstructors.html">Constructors</a></li><li><a href="../APIfunctions.html">Functions/Types</a></li><li><a href="../APIfiles.html">Modules</a></li><li><a href="../APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://rubyforge.org/projects/xml-tools/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="libxml-schematron.html"><img src="left.png" width="24" height="24" border="0" alt="Prev" /></a></td><th align="left"><a href="libxml-schematron.html">schematron</a></th><td><a accesskey="u" href="index.html"><img src="up.png" width="24" height="24" border="0" alt="Up" /></a></td><th align="left"><a href="index.html">API documentation</a></th><td><a accesskey="h" href="../index.html"><img src="home.png" width="24" height="24" border="0" alt="Home" /></a></td><th align="center"><a href="../index.html">The XML C parser and toolkit of Gnome</a></th><th align="right"><a href="libxml-tree.html">tree</a></th><td><a accesskey="n" href="libxml-tree.html"><img src="right.png" width="24" height="24" border="0" alt="Next" /></a></td></tr></table><p>set of generic threading related routines should work with pthreads, Windows native or TLS threads </p><h2>Table of Contents</h2><pre class="programlisting">Structure <a href="#xmlMutex">xmlMutex</a><br />struct _xmlMutex The content of this structure is not made public by the API. </pre><pre class="programlisting">Typedef <a href="libxml-threads.html#xmlMutex">xmlMutex</a> * <a name="xmlMutexPtr" id="xmlMutexPtr">xmlMutexPtr</a> </pre><pre class="programlisting">Structure <a href="#xmlRMutex">xmlRMutex</a><br />struct _xmlRMutex diff --git a/doc/html/libxml-tree.html b/doc/html/libxml-tree.html index b7f9055..5a33b38 100644 --- a/doc/html/libxml-tree.html +++ b/doc/html/libxml-tree.html @@ -883,7 +883,7 @@ A:link, A:visited, A:active { text-decoration: underline } </pre><p>parse an XML qualified name string [NS 5] QName ::= (Prefix ':')? LocalPart [NS 6] Prefix ::= NCName [NS 7] LocalPart ::= NCName</p> <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the full QName</td></tr><tr><td><span class="term"><i><tt>prefix</tt></i>:</span></td><td>a <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> **</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>NULL if not a QName, otherwise the local part, and prefix is updated to get the Prefix if any.</td></tr></tbody></table></div><h3><a name="xmlSplitQName3" id="xmlSplitQName3"></a>Function: xmlSplitQName3</h3><pre class="programlisting">const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * xmlSplitQName3 (const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br /> int * len)<br /> </pre><p>parse an XML qualified name string,i</p> -<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the full QName</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>an int *</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>NULL if it is not a Qualified Name, otherwise, update len with the lenght in byte of the prefix and return a pointer</td></tr></tbody></table></div><h3><a name="xmlStringGetNodeList" id="xmlStringGetNodeList"></a>Function: xmlStringGetNodeList</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> xmlStringGetNodeList (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * value)<br /> +<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the full QName</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>an int *</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>NULL if it is not a Qualified Name, otherwise, update len with the lenght in byte of the prefix and return a pointer to the start of the name without the prefix</td></tr></tbody></table></div><h3><a name="xmlStringGetNodeList" id="xmlStringGetNodeList"></a>Function: xmlStringGetNodeList</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> xmlStringGetNodeList (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * value)<br /> </pre><p>Parse the value string and build the node list associated. Should produce a flat tree with only TEXTs and ENTITY_REFs.</p> <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>value</tt></i>:</span></td><td>the value of the <a href="libxml-SAX.html#attribute">attribute</a></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the first child</td></tr></tbody></table></div><h3><a name="xmlStringLenGetNodeList" id="xmlStringLenGetNodeList"></a>Function: xmlStringLenGetNodeList</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> xmlStringLenGetNodeList (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * value, <br /> int len)<br /> </pre><p>Parse the value string and build the node list associated. Should produce a flat tree with only TEXTs and ENTITY_REFs.</p> diff --git a/doc/html/libxml-uri.html b/doc/html/libxml-uri.html index e46ed7f..702a88c 100644 --- a/doc/html/libxml-uri.html +++ b/doc/html/libxml-uri.html @@ -19,6 +19,7 @@ A:link, A:visited, A:active { text-decoration: underline } <pre class="programlisting">void <a href="#xmlFreeURI">xmlFreeURI</a> (<a href="libxml-uri.html#xmlURIPtr">xmlURIPtr</a> uri)</pre> <pre class="programlisting">int <a href="#xmlNormalizeURIPath">xmlNormalizeURIPath</a> (char * path)</pre> <pre class="programlisting"><a href="libxml-uri.html#xmlURIPtr">xmlURIPtr</a> <a href="#xmlParseURI">xmlParseURI</a> (const char * str)</pre> +<pre class="programlisting"><a href="libxml-uri.html#xmlURIPtr">xmlURIPtr</a> <a href="#xmlParseURIRaw">xmlParseURIRaw</a> (const char * str, <br /> int raw)</pre> <pre class="programlisting">int <a href="#xmlParseURIReference">xmlParseURIReference</a> (<a href="libxml-uri.html#xmlURIPtr">xmlURIPtr</a> uri, <br /> const char * str)</pre> <pre class="programlisting">void <a href="#xmlPrintURI">xmlPrintURI</a> (FILE * stream, <br /> <a href="libxml-uri.html#xmlURIPtr">xmlURIPtr</a> uri)</pre> <pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlSaveUri">xmlSaveUri</a> (<a href="libxml-uri.html#xmlURIPtr">xmlURIPtr</a> uri)</pre> @@ -51,7 +52,9 @@ A:link, A:visited, A:active { text-decoration: underline } </pre><p>Applies the 5 normalization steps to a path string--that is, RFC 2396 Section 5.2, steps 6.c through 6.g. Normalization occurs directly on the string, no new allocation is done</p> <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>path</tt></i>:</span></td><td>pointer to the path string</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 or an error code</td></tr></tbody></table></div><h3><a name="xmlParseURI" id="xmlParseURI"></a>Function: xmlParseURI</h3><pre class="programlisting"><a href="libxml-uri.html#xmlURIPtr">xmlURIPtr</a> xmlParseURI (const char * str)<br /> </pre><p>Parse an URI URI-reference = [ absoluteURI | relativeURI ] [ "#" fragment ]</p> -<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>str</tt></i>:</span></td><td>the URI string to analyze</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a newly built <a href="libxml-uri.html#xmlURIPtr">xmlURIPtr</a> or NULL in case of error</td></tr></tbody></table></div><h3><a name="xmlParseURIReference" id="xmlParseURIReference"></a>Function: xmlParseURIReference</h3><pre class="programlisting">int xmlParseURIReference (<a href="libxml-uri.html#xmlURIPtr">xmlURIPtr</a> uri, <br /> const char * str)<br /> +<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>str</tt></i>:</span></td><td>the URI string to analyze</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a newly built <a href="libxml-uri.html#xmlURIPtr">xmlURIPtr</a> or NULL in case of error</td></tr></tbody></table></div><h3><a name="xmlParseURIRaw" id="xmlParseURIRaw"></a>Function: xmlParseURIRaw</h3><pre class="programlisting"><a href="libxml-uri.html#xmlURIPtr">xmlURIPtr</a> xmlParseURIRaw (const char * str, <br /> int raw)<br /> +</pre><p>Parse an URI but allows to keep intact the original fragments. URI-reference = [ absoluteURI | relativeURI ] [ "#" fragment ]</p> +<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>str</tt></i>:</span></td><td>the URI string to analyze</td></tr><tr><td><span class="term"><i><tt>raw</tt></i>:</span></td><td>if 1 unescaping of URI pieces are disabled</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a newly built <a href="libxml-uri.html#xmlURIPtr">xmlURIPtr</a> or NULL in case of error</td></tr></tbody></table></div><h3><a name="xmlParseURIReference" id="xmlParseURIReference"></a>Function: xmlParseURIReference</h3><pre class="programlisting">int xmlParseURIReference (<a href="libxml-uri.html#xmlURIPtr">xmlURIPtr</a> uri, <br /> const char * str)<br /> </pre><p>Parse an URI <a href="libxml-SAX.html#reference">reference</a> string and fills in the appropriate fields of the @uri structure URI-reference = [ absoluteURI | relativeURI ] [ "#" fragment ]</p> <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>uri</tt></i>:</span></td><td>pointer to an URI structure</td></tr><tr><td><span class="term"><i><tt>str</tt></i>:</span></td><td>the string to analyze</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 or the error code</td></tr></tbody></table></div><h3><a name="xmlPrintURI" id="xmlPrintURI"></a>Function: xmlPrintURI</h3><pre class="programlisting">void xmlPrintURI (FILE * stream, <br /> <a href="libxml-uri.html#xmlURIPtr">xmlURIPtr</a> uri)<br /> </pre><p>Prints the URI in the stream @stream.</p> diff --git a/doc/html/libxml-xmlautomata.html b/doc/html/libxml-xmlautomata.html index 8a4471e..25ffb00 100644 --- a/doc/html/libxml-xmlautomata.html +++ b/doc/html/libxml-xmlautomata.html @@ -26,6 +26,7 @@ The content of this structure is not made public by the API. <pre class="programlisting">int <a href="#xmlAutomataNewCounter">xmlAutomataNewCounter</a> (<a href="libxml-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am, <br /> int min, <br /> int max)</pre> <pre class="programlisting"><a href="libxml-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> <a href="#xmlAutomataNewCounterTrans">xmlAutomataNewCounterTrans</a> (<a href="libxml-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am, <br /> <a href="libxml-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> from, <br /> <a href="libxml-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> to, <br /> int counter)</pre> <pre class="programlisting"><a href="libxml-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> <a href="#xmlAutomataNewEpsilon">xmlAutomataNewEpsilon</a> (<a href="libxml-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am, <br /> <a href="libxml-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> from, <br /> <a href="libxml-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> to)</pre> +<pre class="programlisting"><a href="libxml-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> <a href="#xmlAutomataNewNegTrans">xmlAutomataNewNegTrans</a> (<a href="libxml-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am, <br /> <a href="libxml-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> from, <br /> <a href="libxml-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> to, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * token, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * token2, <br /> void * data)</pre> <pre class="programlisting"><a href="libxml-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> <a href="#xmlAutomataNewOnceTrans">xmlAutomataNewOnceTrans</a> (<a href="libxml-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am, <br /> <a href="libxml-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> from, <br /> <a href="libxml-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> to, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * token, <br /> int min, <br /> int max, <br /> void * data)</pre> <pre class="programlisting"><a href="libxml-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> <a href="#xmlAutomataNewOnceTrans2">xmlAutomataNewOnceTrans2</a> (<a href="libxml-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am, <br /> <a href="libxml-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> from, <br /> <a href="libxml-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> to, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * token, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * token2, <br /> int min, <br /> int max, <br /> void * data)</pre> <pre class="programlisting"><a href="libxml-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> <a href="#xmlAutomataNewState">xmlAutomataNewState</a> (<a href="libxml-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am)</pre> @@ -59,7 +60,9 @@ The content of this structure is not made public by the API. </pre><p>If @to is NULL, this creates first a new target state in the automata and then adds an epsilon transition from the @from state to the target state which will be allowed only if the counter is within the right range.</p> <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>am</tt></i>:</span></td><td>an automata</td></tr><tr><td><span class="term"><i><tt>from</tt></i>:</span></td><td>the starting point of the transition</td></tr><tr><td><span class="term"><i><tt>to</tt></i>:</span></td><td>the target point of the transition or NULL</td></tr><tr><td><span class="term"><i><tt>counter</tt></i>:</span></td><td>the counter associated to that transition</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the target state or NULL in case of error</td></tr></tbody></table></div><h3><a name="xmlAutomataNewEpsilon" id="xmlAutomataNewEpsilon"></a>Function: xmlAutomataNewEpsilon</h3><pre class="programlisting"><a href="libxml-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> xmlAutomataNewEpsilon (<a href="libxml-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am, <br /> <a href="libxml-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> from, <br /> <a href="libxml-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> to)<br /> </pre><p>If @to is NULL, this creates first a new target state in the automata and then adds an epsilon transition from the @from state to the target state</p> -<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>am</tt></i>:</span></td><td>an automata</td></tr><tr><td><span class="term"><i><tt>from</tt></i>:</span></td><td>the starting point of the transition</td></tr><tr><td><span class="term"><i><tt>to</tt></i>:</span></td><td>the target point of the transition or NULL</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the target state or NULL in case of error</td></tr></tbody></table></div><h3><a name="xmlAutomataNewOnceTrans" id="xmlAutomataNewOnceTrans"></a>Function: xmlAutomataNewOnceTrans</h3><pre class="programlisting"><a href="libxml-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> xmlAutomataNewOnceTrans (<a href="libxml-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am, <br /> <a href="libxml-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> from, <br /> <a href="libxml-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> to, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * token, <br /> int min, <br /> int max, <br /> void * data)<br /> +<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>am</tt></i>:</span></td><td>an automata</td></tr><tr><td><span class="term"><i><tt>from</tt></i>:</span></td><td>the starting point of the transition</td></tr><tr><td><span class="term"><i><tt>to</tt></i>:</span></td><td>the target point of the transition or NULL</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the target state or NULL in case of error</td></tr></tbody></table></div><h3><a name="xmlAutomataNewNegTrans" id="xmlAutomataNewNegTrans"></a>Function: xmlAutomataNewNegTrans</h3><pre class="programlisting"><a href="libxml-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> xmlAutomataNewNegTrans (<a href="libxml-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am, <br /> <a href="libxml-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> from, <br /> <a href="libxml-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> to, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * token, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * token2, <br /> void * data)<br /> +</pre><p>If @to is NULL, this creates first a new target state in the automata and then adds a transition from the @from state to the target state activated by any value except (@token,@token2) Note that if @token2 is not NULL, then (X, NULL) won't match to follow # the semantic of XSD ##other</p> +<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>am</tt></i>:</span></td><td>an automata</td></tr><tr><td><span class="term"><i><tt>from</tt></i>:</span></td><td>the starting point of the transition</td></tr><tr><td><span class="term"><i><tt>to</tt></i>:</span></td><td>the target point of the transition or NULL</td></tr><tr><td><span class="term"><i><tt>token</tt></i>:</span></td><td>the first input string associated to that transition</td></tr><tr><td><span class="term"><i><tt>token2</tt></i>:</span></td><td>the second input string associated to that transition</td></tr><tr><td><span class="term"><i><tt>data</tt></i>:</span></td><td>data passed to the callback function if the transition is activated</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the target state or NULL in case of error</td></tr></tbody></table></div><h3><a name="xmlAutomataNewOnceTrans" id="xmlAutomataNewOnceTrans"></a>Function: xmlAutomataNewOnceTrans</h3><pre class="programlisting"><a href="libxml-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> xmlAutomataNewOnceTrans (<a href="libxml-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am, <br /> <a href="libxml-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> from, <br /> <a href="libxml-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> to, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * token, <br /> int min, <br /> int max, <br /> void * data)<br /> </pre><p>If @to is NULL, this creates first a new target state in the automata and then adds a transition from the @from state to the target state activated by a succession of input of value @token and whose number is between @min and @max, moreover that transition can only be crossed once.</p> <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>am</tt></i>:</span></td><td>an automata</td></tr><tr><td><span class="term"><i><tt>from</tt></i>:</span></td><td>the starting point of the transition</td></tr><tr><td><span class="term"><i><tt>to</tt></i>:</span></td><td>the target point of the transition or NULL</td></tr><tr><td><span class="term"><i><tt>token</tt></i>:</span></td><td>the input string associated to that transition</td></tr><tr><td><span class="term"><i><tt>min</tt></i>:</span></td><td>the minimum successive occurences of token</td></tr><tr><td><span class="term"><i><tt>max</tt></i>:</span></td><td>the maximum successive occurences of token</td></tr><tr><td><span class="term"><i><tt>data</tt></i>:</span></td><td>data associated to the transition</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the target state or NULL in case of error</td></tr></tbody></table></div><h3><a name="xmlAutomataNewOnceTrans2" id="xmlAutomataNewOnceTrans2"></a>Function: xmlAutomataNewOnceTrans2</h3><pre class="programlisting"><a href="libxml-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> xmlAutomataNewOnceTrans2 (<a href="libxml-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am, <br /> <a href="libxml-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> from, <br /> <a href="libxml-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> to, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * token, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * token2, <br /> int min, <br /> int max, <br /> void * data)<br /> </pre><p>If @to is NULL, this creates first a new target state in the automata and then adds a transition from the @from state to the target state activated by a succession of input of value @token and @token2 and whose number is between @min and @max, moreover that transition can only be crossed once.</p> diff --git a/doc/html/libxml-xmlerror.html b/doc/html/libxml-xmlerror.html index de1188e..fe92d03 100644 --- a/doc/html/libxml-xmlerror.html +++ b/doc/html/libxml-xmlerror.html @@ -79,6 +79,7 @@ void <a href="#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a> (void * userD <a name="XML_FROM_CHECK" id="XML_FROM_CHECK">XML_FROM_CHECK</a> = 24 : The error checking module <a name="XML_FROM_WRITER" id="XML_FROM_WRITER">XML_FROM_WRITER</a> = 25 : The xmlwriter module <a name="XML_FROM_MODULE" id="XML_FROM_MODULE">XML_FROM_MODULE</a> = 26 : The dynamically loaded module modul + <a name="XML_FROM_I18N" id="XML_FROM_I18N">XML_FROM_I18N</a> = 27 : The module handling character conversion } </pre><h3>Enum <a name="xmlErrorLevel" id="xmlErrorLevel">xmlErrorLevel</a></h3><pre class="programlisting">Enum xmlErrorLevel { <a name="XML_ERR_NONE" id="XML_ERR_NONE">XML_ERR_NONE</a> = 0 @@ -754,6 +755,7 @@ void <a href="#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a> (void * userD <a name="XML_SCHEMAP_AU_PROPS_CORRECT_2" id="XML_SCHEMAP_AU_PROPS_CORRECT_2">XML_SCHEMAP_AU_PROPS_CORRECT_2</a> = 3078 : 3078 <a name="XML_SCHEMAP_A_PROPS_CORRECT_2" id="XML_SCHEMAP_A_PROPS_CORRECT_2">XML_SCHEMAP_A_PROPS_CORRECT_2</a> = 3079 : 3079 <a name="XML_SCHEMAP_C_PROPS_CORRECT" id="XML_SCHEMAP_C_PROPS_CORRECT">XML_SCHEMAP_C_PROPS_CORRECT</a> = 3080 : 3080 + <a name="XML_SCHEMAP_SRC_REDEFINE" id="XML_SCHEMAP_SRC_REDEFINE">XML_SCHEMAP_SRC_REDEFINE</a> = 3081 : 3081 <a name="XML_MODULE_OPEN" id="XML_MODULE_OPEN">XML_MODULE_OPEN</a> = 4900 : 4900 <a name="XML_MODULE_CLOSE" id="XML_MODULE_CLOSE">XML_MODULE_CLOSE</a> = 4901 : 4901 <a name="XML_CHECK_FOUND_ELEMENT" id="XML_CHECK_FOUND_ELEMENT">XML_CHECK_FOUND_ELEMENT</a> = 5000 @@ -794,8 +796,13 @@ void <a href="#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a> (void * userD <a name="XML_CHECK_OUTSIDE_DICT" id="XML_CHECK_OUTSIDE_DICT">XML_CHECK_OUTSIDE_DICT</a> = 5035 : 5035 <a name="XML_CHECK_WRONG_NAME" id="XML_CHECK_WRONG_NAME">XML_CHECK_WRONG_NAME</a> = 5036 : 5036 <a name="XML_CHECK_NAME_NOT_NULL" id="XML_CHECK_NAME_NOT_NULL">XML_CHECK_NAME_NOT_NULL</a> = 5037 : 5037 - <a name="XML_CHECK_" id="XML_CHECK_">XML_CHECK_</a> = 5038 : 5033 - <a name="XML_CHECK_X" id="XML_CHECK_X">XML_CHECK_X</a> = 5039 : 503 + <a name="XML_I18N_NO_NAME" id="XML_I18N_NO_NAME">XML_I18N_NO_NAME</a> = 6000 + <a name="XML_I18N_NO_HANDLER" id="XML_I18N_NO_HANDLER">XML_I18N_NO_HANDLER</a> = 6001 : 6001 + <a name="XML_I18N_EXCESS_HANDLER" id="XML_I18N_EXCESS_HANDLER">XML_I18N_EXCESS_HANDLER</a> = 6002 : 6002 + <a name="XML_I18N_CONV_FAILED" id="XML_I18N_CONV_FAILED">XML_I18N_CONV_FAILED</a> = 6003 : 6003 + <a name="XML_I18N_NO_OUTPUT" id="XML_I18N_NO_OUTPUT">XML_I18N_NO_OUTPUT</a> = 6004 : 6004 + <a name="XML_CHECK_" id="XML_CHECK_">XML_CHECK_</a> = 6005 : 5033 + <a name="XML_CHECK_X" id="XML_CHECK_X">XML_CHECK_X</a> = 6006 : 503 } </pre><h3><a name="initGenericErrorDefaultFunc" id="initGenericErrorDefaultFunc"></a>Function: initGenericErrorDefaultFunc</h3><pre class="programlisting">void initGenericErrorDefaultFunc (<a href="libxml-xmlerror.html#xmlGenericErrorFunc">xmlGenericErrorFunc</a> * handler)<br /> </pre><p>Set or reset (if NULL) the default handler for generic errors to the builtin error function.</p> diff --git a/doc/html/libxml-xmlexports.html b/doc/html/libxml-xmlexports.html index dfce7b2..5b4e8b8 100644 --- a/doc/html/libxml-xmlexports.html +++ b/doc/html/libxml-xmlexports.html @@ -10,9 +10,10 @@ A:link, A:visited, A:active { text-decoration: underline } </style><style type="text/css"> div.deprecated pre.programlisting {border-style: double;border-color:red} pre.programlisting {border-style: double;background: #EECFA1} - </style><title>Module xmlexports from libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="../epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="../gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="../w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="../redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="../Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1></h1><h2>Module xmlexports from libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="../search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a style="font-weight:bold" href="../index.html">Main Menu</a></li><li><a style="font-weight:bold" href="../docs.html">Developer Menu</a></li><li><a style="font-weight:bold" href="../examples/index.html">Code Examples</a></li><li><a style="font-weight:bold" href="index.html">API Menu</a></li><li><a href="libxml-parser.html">Parser API</a></li><li><a href="libxml-tree.html">Tree API</a></li><li><a href="libxml-xmlreader.html">Reader API</a></li><li><a href="../guidelines.html">XML Guidelines</a></li><li><a href="../ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="../APIchunk0.html">Alphabetic</a></li><li><a href="../APIconstructors.html">Constructors</a></li><li><a href="../APIfunctions.html">Functions/Types</a></li><li><a href="../APIfiles.html">Modules</a></li><li><a href="../APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://rubyforge.org/projects/xml-tools/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="libxml-xmlerror.html"><img src="left.png" width="24" height="24" border="0" alt="Prev" /></a></td><th align="left"><a href="libxml-xmlerror.html">xmlerror</a></th><td><a accesskey="u" href="index.html"><img src="up.png" width="24" height="24" border="0" alt="Up" /></a></td><th align="left"><a href="index.html">API documentation</a></th><td><a accesskey="h" href="../index.html"><img src="home.png" width="24" height="24" border="0" alt="Home" /></a></td><th align="center"><a href="../index.html">The XML C parser and toolkit of Gnome</a></th><th align="right"><a href="libxml-xmlmemory.html">xmlmemory</a></th><td><a accesskey="n" href="libxml-xmlmemory.html"><img src="right.png" width="24" height="24" border="0" alt="Next" /></a></td></tr></table><p>macros for marking symbols as exportable/importable. </p><h2>Table of Contents</h2><pre class="programlisting">#define <a href="#LIBXML_DLL_IMPORT">LIBXML_DLL_IMPORT</a></pre><pre class="programlisting">#define <a href="#XMLCALL">XMLCALL</a></pre><pre class="programlisting">#define <a href="#XMLPUBFUN">XMLPUBFUN</a></pre><pre class="programlisting">#define <a href="#XMLPUBVAR">XMLPUBVAR</a></pre><pre class="programlisting">#define <a href="#_REENTRANT">_REENTRANT</a></pre><h2>Description</h2> + </style><title>Module xmlexports from libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="../epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="../gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="../w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="../redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="../Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1></h1><h2>Module xmlexports from libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="../search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a style="font-weight:bold" href="../index.html">Main Menu</a></li><li><a style="font-weight:bold" href="../docs.html">Developer Menu</a></li><li><a style="font-weight:bold" href="../examples/index.html">Code Examples</a></li><li><a style="font-weight:bold" href="index.html">API Menu</a></li><li><a href="libxml-parser.html">Parser API</a></li><li><a href="libxml-tree.html">Tree API</a></li><li><a href="libxml-xmlreader.html">Reader API</a></li><li><a href="../guidelines.html">XML Guidelines</a></li><li><a href="../ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="../APIchunk0.html">Alphabetic</a></li><li><a href="../APIconstructors.html">Constructors</a></li><li><a href="../APIfunctions.html">Functions/Types</a></li><li><a href="../APIfiles.html">Modules</a></li><li><a href="../APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://rubyforge.org/projects/xml-tools/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="libxml-xmlerror.html"><img src="left.png" width="24" height="24" border="0" alt="Prev" /></a></td><th align="left"><a href="libxml-xmlerror.html">xmlerror</a></th><td><a accesskey="u" href="index.html"><img src="up.png" width="24" height="24" border="0" alt="Up" /></a></td><th align="left"><a href="index.html">API documentation</a></th><td><a accesskey="h" href="../index.html"><img src="home.png" width="24" height="24" border="0" alt="Home" /></a></td><th align="center"><a href="../index.html">The XML C parser and toolkit of Gnome</a></th><th align="right"><a href="libxml-xmlmemory.html">xmlmemory</a></th><td><a accesskey="n" href="libxml-xmlmemory.html"><img src="right.png" width="24" height="24" border="0" alt="Next" /></a></td></tr></table><p>macros for marking symbols as exportable/importable. </p><h2>Table of Contents</h2><pre class="programlisting">#define <a href="#LIBXML_DLL_IMPORT">LIBXML_DLL_IMPORT</a></pre><pre class="programlisting">#define <a href="#XMLCALL">XMLCALL</a></pre><pre class="programlisting">#define <a href="#XMLCDECL">XMLCDECL</a></pre><pre class="programlisting">#define <a href="#XMLPUBFUN">XMLPUBFUN</a></pre><pre class="programlisting">#define <a href="#XMLPUBVAR">XMLPUBVAR</a></pre><pre class="programlisting">#define <a href="#_REENTRANT">_REENTRANT</a></pre><h2>Description</h2> <h3><a name="LIBXML_DLL_IMPORT" id="LIBXML_DLL_IMPORT"></a>Macro: LIBXML_DLL_IMPORT</h3><pre>#define LIBXML_DLL_IMPORT</pre><p></p> <h3><a name="XMLCALL" id="XMLCALL"></a>Macro: XMLCALL</h3><pre>#define XMLCALL</pre><p></p> +<h3><a name="XMLCDECL" id="XMLCDECL"></a>Macro: XMLCDECL</h3><pre>#define XMLCDECL</pre><p></p> <h3><a name="XMLPUBFUN" id="XMLPUBFUN"></a>Macro: XMLPUBFUN</h3><pre>#define XMLPUBFUN</pre><p></p> <h3><a name="XMLPUBVAR" id="XMLPUBVAR"></a>Macro: XMLPUBVAR</h3><pre>#define XMLPUBVAR</pre><p></p> <h3><a name="_REENTRANT" id="_REENTRANT"></a>Macro: _REENTRANT</h3><pre>#define _REENTRANT</pre><p></p> diff --git a/doc/html/libxml-xmlregexp.html b/doc/html/libxml-xmlregexp.html index 4b6d888..761e105 100644 --- a/doc/html/libxml-xmlregexp.html +++ b/doc/html/libxml-xmlregexp.html @@ -10,13 +10,39 @@ A:link, A:visited, A:active { text-decoration: underline } </style><style type="text/css"> div.deprecated pre.programlisting {border-style: double;border-color:red} pre.programlisting {border-style: double;background: #EECFA1} - </style><title>Module xmlregexp from libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="../epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="../gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="../w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="../redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="../Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1></h1><h2>Module xmlregexp from libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="../search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a style="font-weight:bold" href="../index.html">Main Menu</a></li><li><a style="font-weight:bold" href="../docs.html">Developer Menu</a></li><li><a style="font-weight:bold" href="../examples/index.html">Code Examples</a></li><li><a style="font-weight:bold" href="index.html">API Menu</a></li><li><a href="libxml-parser.html">Parser API</a></li><li><a href="libxml-tree.html">Tree API</a></li><li><a href="libxml-xmlreader.html">Reader API</a></li><li><a href="../guidelines.html">XML Guidelines</a></li><li><a href="../ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="../APIchunk0.html">Alphabetic</a></li><li><a href="../APIconstructors.html">Constructors</a></li><li><a href="../APIfunctions.html">Functions/Types</a></li><li><a href="../APIfiles.html">Modules</a></li><li><a href="../APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://rubyforge.org/projects/xml-tools/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="libxml-xmlreader.html"><img src="left.png" width="24" height="24" border="0" alt="Prev" /></a></td><th align="left"><a href="libxml-xmlreader.html">xmlreader</a></th><td><a accesskey="u" href="index.html"><img src="up.png" width="24" height="24" border="0" alt="Up" /></a></td><th align="left"><a href="index.html">API documentation</a></th><td><a accesskey="h" href="../index.html"><img src="home.png" width="24" height="24" border="0" alt="Home" /></a></td><th align="center"><a href="../index.html">The XML C parser and toolkit of Gnome</a></th><th align="right"><a href="libxml-xmlsave.html">xmlsave</a></th><td><a accesskey="n" href="libxml-xmlsave.html"><img src="right.png" width="24" height="24" border="0" alt="Next" /></a></td></tr></table><p>basic API for libxml regular expressions handling used for XML Schemas and validation. </p><h2>Table of Contents</h2><pre class="programlisting">Structure <a href="#xmlRegExecCtxt">xmlRegExecCtxt</a><br />struct _xmlRegExecCtxt + </style><title>Module xmlregexp from libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="../epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="../gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="../w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="../redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="../Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1></h1><h2>Module xmlregexp from libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="../search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a style="font-weight:bold" href="../index.html">Main Menu</a></li><li><a style="font-weight:bold" href="../docs.html">Developer Menu</a></li><li><a style="font-weight:bold" href="../examples/index.html">Code Examples</a></li><li><a style="font-weight:bold" href="index.html">API Menu</a></li><li><a href="libxml-parser.html">Parser API</a></li><li><a href="libxml-tree.html">Tree API</a></li><li><a href="libxml-xmlreader.html">Reader API</a></li><li><a href="../guidelines.html">XML Guidelines</a></li><li><a href="../ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="../APIchunk0.html">Alphabetic</a></li><li><a href="../APIconstructors.html">Constructors</a></li><li><a href="../APIfunctions.html">Functions/Types</a></li><li><a href="../APIfiles.html">Modules</a></li><li><a href="../APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://rubyforge.org/projects/xml-tools/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="libxml-xmlreader.html"><img src="left.png" width="24" height="24" border="0" alt="Prev" /></a></td><th align="left"><a href="libxml-xmlreader.html">xmlreader</a></th><td><a accesskey="u" href="index.html"><img src="up.png" width="24" height="24" border="0" alt="Up" /></a></td><th align="left"><a href="index.html">API documentation</a></th><td><a accesskey="h" href="../index.html"><img src="home.png" width="24" height="24" border="0" alt="Home" /></a></td><th align="center"><a href="../index.html">The XML C parser and toolkit of Gnome</a></th><th align="right"><a href="libxml-xmlsave.html">xmlsave</a></th><td><a accesskey="n" href="libxml-xmlsave.html"><img src="right.png" width="24" height="24" border="0" alt="Next" /></a></td></tr></table><p>basic API for libxml regular expressions handling used for XML Schemas and validation. </p><h2>Table of Contents</h2><pre class="programlisting">Structure <a href="#xmlExpCtxt">xmlExpCtxt</a><br />struct _xmlExpCtxt +The content of this structure is not made public by the API. +</pre><pre class="programlisting">Typedef <a href="libxml-xmlregexp.html#xmlExpCtxt">xmlExpCtxt</a> * <a name="xmlExpCtxtPtr" id="xmlExpCtxtPtr">xmlExpCtxtPtr</a> +</pre><pre class="programlisting">Structure <a href="#xmlExpNode">xmlExpNode</a><br />struct _xmlExpNode +The content of this structure is not made public by the API. +</pre><pre class="programlisting">Typedef <a href="libxml-xmlregexp.html#xmlExpNode">xmlExpNode</a> * <a name="xmlExpNodePtr" id="xmlExpNodePtr">xmlExpNodePtr</a> +</pre><pre class="programlisting">Enum <a href="#xmlExpNodeType">xmlExpNodeType</a> +</pre><pre class="programlisting">Structure <a href="#xmlRegExecCtxt">xmlRegExecCtxt</a><br />struct _xmlRegExecCtxt The content of this structure is not made public by the API. </pre><pre class="programlisting">Typedef <a href="libxml-xmlregexp.html#xmlRegExecCtxt">xmlRegExecCtxt</a> * <a name="xmlRegExecCtxtPtr" id="xmlRegExecCtxtPtr">xmlRegExecCtxtPtr</a> </pre><pre class="programlisting">Structure <a href="#xmlRegexp">xmlRegexp</a><br />struct _xmlRegexp The content of this structure is not made public by the API. </pre><pre class="programlisting">Typedef <a href="libxml-xmlregexp.html#xmlRegexp">xmlRegexp</a> * <a name="xmlRegexpPtr" id="xmlRegexpPtr">xmlRegexpPtr</a> -</pre><pre class="programlisting">Function type: <a href="#xmlRegExecCallbacks">xmlRegExecCallbacks</a> +</pre><pre class="programlisting">int <a href="#xmlExpCtxtNbCons">xmlExpCtxtNbCons</a> (<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt)</pre> +<pre class="programlisting">int <a href="#xmlExpCtxtNbNodes">xmlExpCtxtNbNodes</a> (<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt)</pre> +<pre class="programlisting">void <a href="#xmlExpDump">xmlExpDump</a> (<a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br /> <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> expr)</pre> +<pre class="programlisting"><a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> <a href="#xmlExpExpDerive">xmlExpExpDerive</a> (<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br /> <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> exp, <br /> <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> sub)</pre> +<pre class="programlisting">void <a href="#xmlExpFree">xmlExpFree</a> (<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br /> <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> exp)</pre> +<pre class="programlisting">void <a href="#xmlExpFreeCtxt">xmlExpFreeCtxt</a> (<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt)</pre> +<pre class="programlisting">int <a href="#xmlExpGetLanguage">xmlExpGetLanguage</a> (<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br /> <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> exp, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> ** list, <br /> int len)</pre> +<pre class="programlisting">int <a href="#xmlExpGetStart">xmlExpGetStart</a> (<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br /> <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> exp, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> ** list, <br /> int len)</pre> +<pre class="programlisting">int <a href="#xmlExpIsNillable">xmlExpIsNillable</a> (<a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> exp)</pre> +<pre class="programlisting">int <a href="#xmlExpMaxToken">xmlExpMaxToken</a> (<a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> expr)</pre> +<pre class="programlisting"><a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> <a href="#xmlExpNewAtom">xmlExpNewAtom</a> (<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br /> int len)</pre> +<pre class="programlisting"><a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> <a href="#xmlExpNewCtxt">xmlExpNewCtxt</a> (int maxNodes, <br /> <a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict)</pre> +<pre class="programlisting"><a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> <a href="#xmlExpNewOr">xmlExpNewOr</a> (<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br /> <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> left, <br /> <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> right)</pre> +<pre class="programlisting"><a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> <a href="#xmlExpNewRange">xmlExpNewRange</a> (<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br /> <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> subset, <br /> int min, <br /> int max)</pre> +<pre class="programlisting"><a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> <a href="#xmlExpNewSeq">xmlExpNewSeq</a> (<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br /> <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> left, <br /> <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> right)</pre> +<pre class="programlisting"><a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> <a href="#xmlExpParse">xmlExpParse</a> (<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br /> const char * expr)</pre> +<pre class="programlisting">void <a href="#xmlExpRef">xmlExpRef</a> (<a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> exp)</pre> +<pre class="programlisting"><a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> <a href="#xmlExpStringDerive">xmlExpStringDerive</a> (<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br /> <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> exp, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * str, <br /> int len)</pre> +<pre class="programlisting">int <a href="#xmlExpSubsume">xmlExpSubsume</a> (<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br /> <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> exp, <br /> <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> sub)</pre> +<pre class="programlisting">Function type: <a href="#xmlRegExecCallbacks">xmlRegExecCallbacks</a> void <a href="#xmlRegExecCallbacks">xmlRegExecCallbacks</a> (<a href="libxml-xmlregexp.html#xmlRegExecCtxtPtr">xmlRegExecCtxtPtr</a> exec, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * token, <br /> void * transdata, <br /> void * inputdata) </pre> <pre class="programlisting">int <a href="#xmlRegExecErrInfo">xmlRegExecErrInfo</a> (<a href="libxml-xmlregexp.html#xmlRegExecCtxtPtr">xmlRegExecCtxtPtr</a> exec, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> ** string, <br /> int * nbval, <br /> int * nbneg, <br /> <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> ** values, <br /> int * terminal)</pre> @@ -31,11 +57,61 @@ void <a href="#xmlRegExecCallbacks">xmlRegExecCallbacks</a> (<a href="libxml-xm <pre class="programlisting">int <a href="#xmlRegexpIsDeterminist">xmlRegexpIsDeterminist</a> (<a href="libxml-xmlregexp.html#xmlRegexpPtr">xmlRegexpPtr</a> comp)</pre> <pre class="programlisting">void <a href="#xmlRegexpPrint">xmlRegexpPrint</a> (FILE * output, <br /> <a href="libxml-xmlregexp.html#xmlRegexpPtr">xmlRegexpPtr</a> regexp)</pre> <h2>Description</h2> -<h3><a name="xmlRegExecCtxt" id="xmlRegExecCtxt">Structure xmlRegExecCtxt</a></h3><pre class="programlisting">Structure xmlRegExecCtxt<br />struct _xmlRegExecCtxt { +<h3><a name="xmlExpCtxt" id="xmlExpCtxt">Structure xmlExpCtxt</a></h3><pre class="programlisting">Structure xmlExpCtxt<br />struct _xmlExpCtxt { +The content of this structure is not made public by the API. +}</pre><h3><a name="xmlExpNode" id="xmlExpNode">Structure xmlExpNode</a></h3><pre class="programlisting">Structure xmlExpNode<br />struct _xmlExpNode { +The content of this structure is not made public by the API. +}</pre><h3>Enum <a name="xmlExpNodeType" id="xmlExpNodeType">xmlExpNodeType</a></h3><pre class="programlisting">Enum xmlExpNodeType { + <a name="XML_EXP_EMPTY" id="XML_EXP_EMPTY">XML_EXP_EMPTY</a> = 0 + <a name="XML_EXP_FORBID" id="XML_EXP_FORBID">XML_EXP_FORBID</a> = 1 + <a name="XML_EXP_ATOM" id="XML_EXP_ATOM">XML_EXP_ATOM</a> = 2 + <a name="XML_EXP_SEQ" id="XML_EXP_SEQ">XML_EXP_SEQ</a> = 3 + <a name="XML_EXP_OR" id="XML_EXP_OR">XML_EXP_OR</a> = 4 + <a name="XML_EXP_COUNT" id="XML_EXP_COUNT">XML_EXP_COUNT</a> = 5 +} +</pre><h3><a name="xmlRegExecCtxt" id="xmlRegExecCtxt">Structure xmlRegExecCtxt</a></h3><pre class="programlisting">Structure xmlRegExecCtxt<br />struct _xmlRegExecCtxt { The content of this structure is not made public by the API. }</pre><h3><a name="xmlRegexp" id="xmlRegexp">Structure xmlRegexp</a></h3><pre class="programlisting">Structure xmlRegexp<br />struct _xmlRegexp { The content of this structure is not made public by the API. -}</pre><h3><a name="xmlRegExecCallbacks" id="xmlRegExecCallbacks"></a>Function type: xmlRegExecCallbacks</h3><pre class="programlisting">Function type: xmlRegExecCallbacks +}</pre><h3><a name="xmlExpCtxtNbCons" id="xmlExpCtxtNbCons"></a>Function: xmlExpCtxtNbCons</h3><pre class="programlisting">int xmlExpCtxtNbCons (<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt)<br /> +</pre><p>Debugging facility provides the number of allocated nodes over lifetime</p> +<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>an expression context</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of nodes ever allocated or -1 in case of error</td></tr></tbody></table></div><h3><a name="xmlExpCtxtNbNodes" id="xmlExpCtxtNbNodes"></a>Function: xmlExpCtxtNbNodes</h3><pre class="programlisting">int xmlExpCtxtNbNodes (<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt)<br /> +</pre><p>Debugging facility provides the number of allocated nodes at a that point</p> +<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>an expression context</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of nodes in use or -1 in case of error</td></tr></tbody></table></div><h3><a name="xmlExpDump" id="xmlExpDump"></a>Function: xmlExpDump</h3><pre class="programlisting">void xmlExpDump (<a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br /> <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> expr)<br /> +</pre><p>Serialize the expression as compiled to the buffer</p> +<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>buf</tt></i>:</span></td><td>a buffer to receive the output</td></tr><tr><td><span class="term"><i><tt>expr</tt></i>:</span></td><td>the compiled expression</td></tr></tbody></table></div><h3><a name="xmlExpExpDerive" id="xmlExpExpDerive"></a>Function: xmlExpExpDerive</h3><pre class="programlisting"><a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> xmlExpExpDerive (<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br /> <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> exp, <br /> <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> sub)<br /> +</pre><p>Evaluates the expression resulting from @exp consuming a sub expression @sub Based on algebraic derivation and sometimes direct Brzozowski derivation it usually tatkes less than linear time and can handle expressions generating infinite languages.</p> +<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the expressions context</td></tr><tr><td><span class="term"><i><tt>exp</tt></i>:</span></td><td>the englobing expression</td></tr><tr><td><span class="term"><i><tt>sub</tt></i>:</span></td><td>the subexpression</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the resulting expression or NULL in case of internal error, the result must be freed</td></tr></tbody></table></div><h3><a name="xmlExpFree" id="xmlExpFree"></a>Function: xmlExpFree</h3><pre class="programlisting">void xmlExpFree (<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br /> <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> exp)<br /> +</pre><p>Dereference the expression</p> +<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the expression context</td></tr><tr><td><span class="term"><i><tt>exp</tt></i>:</span></td><td>the expression</td></tr></tbody></table></div><h3><a name="xmlExpFreeCtxt" id="xmlExpFreeCtxt"></a>Function: xmlExpFreeCtxt</h3><pre class="programlisting">void xmlExpFreeCtxt (<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt)<br /> +</pre><p>Free an expression context</p> +<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>an expression context</td></tr></tbody></table></div><h3><a name="xmlExpGetLanguage" id="xmlExpGetLanguage"></a>Function: xmlExpGetLanguage</h3><pre class="programlisting">int xmlExpGetLanguage (<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br /> <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> exp, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> ** list, <br /> int len)<br /> +</pre><p>Find all the strings used in @exp and store them in @list</p> +<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the expression context</td></tr><tr><td><span class="term"><i><tt>exp</tt></i>:</span></td><td>the expression</td></tr><tr><td><span class="term"><i><tt>list</tt></i>:</span></td><td>where to store the tokens</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the allocated lenght of @list</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of unique strings found, -1 in case of errors and -2 if there is more than @len strings</td></tr></tbody></table></div><h3><a name="xmlExpGetStart" id="xmlExpGetStart"></a>Function: xmlExpGetStart</h3><pre class="programlisting">int xmlExpGetStart (<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br /> <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> exp, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> ** list, <br /> int len)<br /> +</pre><p>Find all the strings that appears at the start of the languages accepted by @exp and store them in @list. E.g. for (a, b) | c it will return the list [a, c]</p> +<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the expression context</td></tr><tr><td><span class="term"><i><tt>exp</tt></i>:</span></td><td>the expression</td></tr><tr><td><span class="term"><i><tt>list</tt></i>:</span></td><td>where to store the tokens</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the allocated lenght of @list</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of unique strings found, -1 in case of errors and -2 if there is more than @len strings</td></tr></tbody></table></div><h3><a name="xmlExpIsNillable" id="xmlExpIsNillable"></a>Function: xmlExpIsNillable</h3><pre class="programlisting">int xmlExpIsNillable (<a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> exp)<br /> +</pre><p>Finds if the expression is nillable, i.e. if it accepts the empty sequqnce</p> +<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>exp</tt></i>:</span></td><td>the expression</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>1 if nillable, 0 if not and -1 in case of error</td></tr></tbody></table></div><h3><a name="xmlExpMaxToken" id="xmlExpMaxToken"></a>Function: xmlExpMaxToken</h3><pre class="programlisting">int xmlExpMaxToken (<a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> expr)<br /> +</pre><p>Indicate the maximum number of input a expression can accept</p> +<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>expr</tt></i>:</span></td><td>a compiled expression</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the maximum length or -1 in case of error</td></tr></tbody></table></div><h3><a name="xmlExpNewAtom" id="xmlExpNewAtom"></a>Function: xmlExpNewAtom</h3><pre class="programlisting"><a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> xmlExpNewAtom (<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br /> int len)<br /> +</pre><p>Get the atom associated to this name from that context</p> +<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the expression context</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the atom name</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the atom name lenght in byte (or -1);</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the node or NULL in case of error</td></tr></tbody></table></div><h3><a name="xmlExpNewCtxt" id="xmlExpNewCtxt"></a>Function: xmlExpNewCtxt</h3><pre class="programlisting"><a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> xmlExpNewCtxt (int maxNodes, <br /> <a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict)<br /> +</pre><p>Creates a new context for manipulating expressions</p> +<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>maxNodes</tt></i>:</span></td><td>the maximum number of nodes</td></tr><tr><td><span class="term"><i><tt>dict</tt></i>:</span></td><td>optional dictionnary to use internally</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the context or NULL in case of error</td></tr></tbody></table></div><h3><a name="xmlExpNewOr" id="xmlExpNewOr"></a>Function: xmlExpNewOr</h3><pre class="programlisting"><a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> xmlExpNewOr (<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br /> <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> left, <br /> <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> right)<br /> +</pre><p>Get the atom associated to the choice @left | @right Note that @left and @right are consumed in the operation, to keep an handle on them use xmlExpRef() and use xmlExpFree() to release them, this is true even in case of failure (unless ctxt == NULL).</p> +<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the expression context</td></tr><tr><td><span class="term"><i><tt>left</tt></i>:</span></td><td>left expression</td></tr><tr><td><span class="term"><i><tt>right</tt></i>:</span></td><td>right expression</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the node or NULL in case of error</td></tr></tbody></table></div><h3><a name="xmlExpNewRange" id="xmlExpNewRange"></a>Function: xmlExpNewRange</h3><pre class="programlisting"><a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> xmlExpNewRange (<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br /> <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> subset, <br /> int min, <br /> int max)<br /> +</pre><p>Get the atom associated to the range (@subset){@min, @max} Note that @subset is consumed in the operation, to keep an handle on it use xmlExpRef() and use xmlExpFree() to release it, this is true even in case of failure (unless ctxt == NULL).</p> +<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the expression context</td></tr><tr><td><span class="term"><i><tt>subset</tt></i>:</span></td><td>the expression to be repeated</td></tr><tr><td><span class="term"><i><tt>min</tt></i>:</span></td><td>the lower bound for the repetition</td></tr><tr><td><span class="term"><i><tt>max</tt></i>:</span></td><td>the upper bound for the repetition, -1 means infinite</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the node or NULL in case of error</td></tr></tbody></table></div><h3><a name="xmlExpNewSeq" id="xmlExpNewSeq"></a>Function: xmlExpNewSeq</h3><pre class="programlisting"><a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> xmlExpNewSeq (<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br /> <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> left, <br /> <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> right)<br /> +</pre><p>Get the atom associated to the sequence @left , @right Note that @left and @right are consumed in the operation, to keep an handle on them use xmlExpRef() and use xmlExpFree() to release them, this is true even in case of failure (unless ctxt == NULL).</p> +<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the expression context</td></tr><tr><td><span class="term"><i><tt>left</tt></i>:</span></td><td>left expression</td></tr><tr><td><span class="term"><i><tt>right</tt></i>:</span></td><td>right expression</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the node or NULL in case of error</td></tr></tbody></table></div><h3><a name="xmlExpParse" id="xmlExpParse"></a>Function: xmlExpParse</h3><pre class="programlisting"><a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> xmlExpParse (<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br /> const char * expr)<br /> +</pre><p>Minimal parser for regexps, it understand the following constructs - string terminals - choice operator | - sequence operator , - subexpressions (...) - usual cardinality operators + * and ? - finite sequences { min, max } - infinite sequences { min, * } There is minimal checkings made especially no checking on strings values</p> +<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the expressions context</td></tr><tr><td><span class="term"><i><tt>expr</tt></i>:</span></td><td>the 0 terminated string</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new expression or NULL in case of failure</td></tr></tbody></table></div><h3><a name="xmlExpRef" id="xmlExpRef"></a>Function: xmlExpRef</h3><pre class="programlisting">void xmlExpRef (<a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> exp)<br /> +</pre><p>Increase the <a href="libxml-SAX.html#reference">reference</a> count of the expression</p> +<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>exp</tt></i>:</span></td><td>the expression</td></tr></tbody></table></div><h3><a name="xmlExpStringDerive" id="xmlExpStringDerive"></a>Function: xmlExpStringDerive</h3><pre class="programlisting"><a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> xmlExpStringDerive (<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br /> <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> exp, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * str, <br /> int len)<br /> +</pre><p>Do one step of Brzozowski derivation of the expression @exp with respect to the input string</p> +<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the expression context</td></tr><tr><td><span class="term"><i><tt>exp</tt></i>:</span></td><td>the expression</td></tr><tr><td><span class="term"><i><tt>str</tt></i>:</span></td><td>the string</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the string len in bytes if available</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the resulting expression or NULL in case of internal error</td></tr></tbody></table></div><h3><a name="xmlExpSubsume" id="xmlExpSubsume"></a>Function: xmlExpSubsume</h3><pre class="programlisting">int xmlExpSubsume (<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br /> <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> exp, <br /> <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> sub)<br /> +</pre><p>Check whether @exp accepts all the languages accexpted by @sub the input being a subexpression.</p> +<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the expressions context</td></tr><tr><td><span class="term"><i><tt>exp</tt></i>:</span></td><td>the englobing expression</td></tr><tr><td><span class="term"><i><tt>sub</tt></i>:</span></td><td>the subexpression</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>1 if true 0 if false and -1 in case of failure.</td></tr></tbody></table></div><h3><a name="xmlRegExecCallbacks" id="xmlRegExecCallbacks"></a>Function type: xmlRegExecCallbacks</h3><pre class="programlisting">Function type: xmlRegExecCallbacks void xmlRegExecCallbacks (<a href="libxml-xmlregexp.html#xmlRegExecCtxtPtr">xmlRegExecCtxtPtr</a> exec, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * token, <br /> void * transdata, <br /> void * inputdata) </pre><p></p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>exec</tt></i>:</span></td><td></td></tr><tr><td><span class="term"><i><tt>token</tt></i>:</span></td><td></td></tr><tr><td><span class="term"><i><tt>transdata</tt></i>:</span></td><td></td></tr><tr><td><span class="term"><i><tt>inputdata</tt></i>:</span></td><td></td></tr></tbody></table></div><br /> <h3><a name="xmlRegExecErrInfo" id="xmlRegExecErrInfo"></a>Function: xmlRegExecErrInfo</h3><pre class="programlisting">int xmlRegExecErrInfo (<a href="libxml-xmlregexp.html#xmlRegExecCtxtPtr">xmlRegExecCtxtPtr</a> exec, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> ** string, <br /> int * nbval, <br /> int * nbneg, <br /> <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> ** values, <br /> int * terminal)<br /> diff --git a/doc/html/libxml-xmlsave.html b/doc/html/libxml-xmlsave.html index b1db142..ef54e58 100644 --- a/doc/html/libxml-xmlsave.html +++ b/doc/html/libxml-xmlsave.html @@ -28,6 +28,7 @@ The content of this structure is not made public by the API. The content of this structure is not made public by the API. }</pre><h3>Enum <a name="xmlSaveOption" id="xmlSaveOption">xmlSaveOption</a></h3><pre class="programlisting">Enum xmlSaveOption { <a name="XML_SAVE_FORMAT" id="XML_SAVE_FORMAT">XML_SAVE_FORMAT</a> = 1 : format save output + <a name="XML_SAVE_NO_DECL" id="XML_SAVE_NO_DECL">XML_SAVE_NO_DECL</a> = 2 : drop the xml declaration } </pre><h3><a name="xmlSaveClose" id="xmlSaveClose"></a>Function: xmlSaveClose</h3><pre class="programlisting">int xmlSaveClose (<a href="libxml-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a> ctxt)<br /> </pre><p>Close a document saving context, i.e. make sure that all bytes have been output and free the associated data.</p> diff --git a/doc/html/libxml-xmlschemas.html b/doc/html/libxml-xmlschemas.html index 201b09b..1277171 100644 --- a/doc/html/libxml-xmlschemas.html +++ b/doc/html/libxml-xmlschemas.html @@ -40,6 +40,7 @@ The content of this structure is not made public by the API. <pre class="programlisting">void <a href="#xmlSchemaSetParserErrors">xmlSchemaSetParserErrors</a> (<a href="libxml-xmlschemas.html#xmlSchemaParserCtxtPtr">xmlSchemaParserCtxtPtr</a> ctxt, <br /> <a href="libxml-xmlschemas.html#xmlSchemaValidityErrorFunc">xmlSchemaValidityErrorFunc</a> err, <br /> <a href="libxml-xmlschemas.html#xmlSchemaValidityWarningFunc">xmlSchemaValidityWarningFunc</a> warn, <br /> void * ctx)</pre> <pre class="programlisting">void <a href="#xmlSchemaSetValidErrors">xmlSchemaSetValidErrors</a> (<a href="libxml-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt, <br /> <a href="libxml-xmlschemas.html#xmlSchemaValidityErrorFunc">xmlSchemaValidityErrorFunc</a> err, <br /> <a href="libxml-xmlschemas.html#xmlSchemaValidityWarningFunc">xmlSchemaValidityWarningFunc</a> warn, <br /> void * ctx)</pre> <pre class="programlisting">int <a href="#xmlSchemaSetValidOptions">xmlSchemaSetValidOptions</a> (<a href="libxml-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt, <br /> int options)</pre> +<pre class="programlisting">void <a href="#xmlSchemaSetValidStructuredErrors">xmlSchemaSetValidStructuredErrors</a> (<a href="libxml-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt, <br /> <a href="libxml-xmlerror.html#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a> serror, <br /> void * ctx)</pre> <pre class="programlisting">int <a href="#xmlSchemaValidCtxtGetOptions">xmlSchemaValidCtxtGetOptions</a> (<a href="libxml-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt)</pre> <pre class="programlisting">int <a href="#xmlSchemaValidateDoc">xmlSchemaValidateDoc</a> (<a href="libxml-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc)</pre> <pre class="programlisting">int <a href="#xmlSchemaValidateFile">xmlSchemaValidateFile</a> (<a href="libxml-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt, <br /> const char * filename, <br /> int options)</pre> @@ -145,7 +146,9 @@ The content of this structure is not made public by the API. </pre><p>Set the error and warning callback informations</p> <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>a schema validation context</td></tr><tr><td><span class="term"><i><tt>err</tt></i>:</span></td><td>the error function</td></tr><tr><td><span class="term"><i><tt>warn</tt></i>:</span></td><td>the warning function</td></tr><tr><td><span class="term"><i><tt>ctx</tt></i>:</span></td><td>the functions context</td></tr></tbody></table></div><h3><a name="xmlSchemaSetValidOptions" id="xmlSchemaSetValidOptions"></a>Function: xmlSchemaSetValidOptions</h3><pre class="programlisting">int xmlSchemaSetValidOptions (<a href="libxml-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt, <br /> int options)<br /> </pre><p>Sets the options to be used during the validation.</p> -<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>a schema validation context</td></tr><tr><td><span class="term"><i><tt>options</tt></i>:</span></td><td>a combination of <a href="libxml-xmlschemas.html#xmlSchemaValidOption">xmlSchemaValidOption</a></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success, -1 in case of an API error.</td></tr></tbody></table></div><h3><a name="xmlSchemaValidCtxtGetOptions" id="xmlSchemaValidCtxtGetOptions"></a>Function: xmlSchemaValidCtxtGetOptions</h3><pre class="programlisting">int xmlSchemaValidCtxtGetOptions (<a href="libxml-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt)<br /> +<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>a schema validation context</td></tr><tr><td><span class="term"><i><tt>options</tt></i>:</span></td><td>a combination of <a href="libxml-xmlschemas.html#xmlSchemaValidOption">xmlSchemaValidOption</a></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success, -1 in case of an API error.</td></tr></tbody></table></div><h3><a name="xmlSchemaSetValidStructuredErrors" id="xmlSchemaSetValidStructuredErrors"></a>Function: xmlSchemaSetValidStructuredErrors</h3><pre class="programlisting">void xmlSchemaSetValidStructuredErrors (<a href="libxml-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt, <br /> <a href="libxml-xmlerror.html#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a> serror, <br /> void * ctx)<br /> +</pre><p>Set the structured error callback</p> +<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>a schema validation context</td></tr><tr><td><span class="term"><i><tt>serror</tt></i>:</span></td><td>the structured error function</td></tr><tr><td><span class="term"><i><tt>ctx</tt></i>:</span></td><td>the functions context</td></tr></tbody></table></div><h3><a name="xmlSchemaValidCtxtGetOptions" id="xmlSchemaValidCtxtGetOptions"></a>Function: xmlSchemaValidCtxtGetOptions</h3><pre class="programlisting">int xmlSchemaValidCtxtGetOptions (<a href="libxml-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt)<br /> </pre><p>Get the validation context options.</p> <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>a schema validation context</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the option combination or -1 on error.</td></tr></tbody></table></div><h3><a name="xmlSchemaValidateDoc" id="xmlSchemaValidateDoc"></a>Function: xmlSchemaValidateDoc</h3><pre class="programlisting">int xmlSchemaValidateDoc (<a href="libxml-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc)<br /> </pre><p>Validate a document tree in memory.</p> diff --git a/doc/html/libxml-xmlversion.html b/doc/html/libxml-xmlversion.html index bdf760c..32609a0 100644 --- a/doc/html/libxml-xmlversion.html +++ b/doc/html/libxml-xmlversion.html @@ -10,7 +10,7 @@ A:link, A:visited, A:active { text-decoration: underline } </style><style type="text/css"> div.deprecated pre.programlisting {border-style: double;border-color:red} pre.programlisting {border-style: double;background: #EECFA1} - </style><title>Module xmlversion from libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="../epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="../gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="../w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="../redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="../Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1></h1><h2>Module xmlversion from libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="../search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a style="font-weight:bold" href="../index.html">Main Menu</a></li><li><a style="font-weight:bold" href="../docs.html">Developer Menu</a></li><li><a style="font-weight:bold" href="../examples/index.html">Code Examples</a></li><li><a style="font-weight:bold" href="index.html">API Menu</a></li><li><a href="libxml-parser.html">Parser API</a></li><li><a href="libxml-tree.html">Tree API</a></li><li><a href="libxml-xmlreader.html">Reader API</a></li><li><a href="../guidelines.html">XML Guidelines</a></li><li><a href="../ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="../APIchunk0.html">Alphabetic</a></li><li><a href="../APIconstructors.html">Constructors</a></li><li><a href="../APIfunctions.html">Functions/Types</a></li><li><a href="../APIfiles.html">Modules</a></li><li><a href="../APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://rubyforge.org/projects/xml-tools/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="libxml-xmlunicode.html"><img src="left.png" width="24" height="24" border="0" alt="Prev" /></a></td><th align="left"><a href="libxml-xmlunicode.html">xmlunicode</a></th><td><a accesskey="u" href="index.html"><img src="up.png" width="24" height="24" border="0" alt="Up" /></a></td><th align="left"><a href="index.html">API documentation</a></th><td><a accesskey="h" href="../index.html"><img src="home.png" width="24" height="24" border="0" alt="Home" /></a></td><th align="center"><a href="../index.html">The XML C parser and toolkit of Gnome</a></th><th align="right"><a href="libxml-xmlwriter.html">xmlwriter</a></th><td><a accesskey="n" href="libxml-xmlwriter.html"><img src="right.png" width="24" height="24" border="0" alt="Next" /></a></td></tr></table><p>compile-time version informations for the XML library </p><h2>Table of Contents</h2><pre class="programlisting">#define <a href="#ATTRIBUTE_UNUSED">ATTRIBUTE_UNUSED</a></pre><pre class="programlisting">#define <a href="#DEBUG_MEMORY_LOCATION">DEBUG_MEMORY_LOCATION</a></pre><pre class="programlisting">#define <a href="#LIBXML_AUTOMATA_ENABLED">LIBXML_AUTOMATA_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_C14N_ENABLED">LIBXML_C14N_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_CATALOG_ENABLED">LIBXML_CATALOG_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_DEBUG_ENABLED">LIBXML_DEBUG_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_DEBUG_RUNTIME">LIBXML_DEBUG_RUNTIME</a></pre><pre class="programlisting">#define <a href="#LIBXML_DOCB_ENABLED">LIBXML_DOCB_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_DOTTED_VERSION">LIBXML_DOTTED_VERSION</a></pre><pre class="programlisting">#define <a href="#LIBXML_FTP_ENABLED">LIBXML_FTP_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_HTML_ENABLED">LIBXML_HTML_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_HTTP_ENABLED">LIBXML_HTTP_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_ICONV_ENABLED">LIBXML_ICONV_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_ISO8859X_ENABLED">LIBXML_ISO8859X_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_LEGACY_ENABLED">LIBXML_LEGACY_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_MODULES_ENABLED">LIBXML_MODULES_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_MODULE_EXTENSION">LIBXML_MODULE_EXTENSION</a></pre><pre class="programlisting">#define <a href="#LIBXML_OUTPUT_ENABLED">LIBXML_OUTPUT_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_PATTERN_ENABLED">LIBXML_PATTERN_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_PUSH_ENABLED">LIBXML_PUSH_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_READER_ENABLED">LIBXML_READER_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_REGEXP_ENABLED">LIBXML_REGEXP_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_SAX1_ENABLED">LIBXML_SAX1_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_SCHEMAS_ENABLED">LIBXML_SCHEMAS_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_TEST_VERSION">LIBXML_TEST_VERSION</a></pre><pre class="programlisting">#define <a href="#LIBXML_THREAD_ENABLED">LIBXML_THREAD_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_TREE_ENABLED">LIBXML_TREE_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_UNICODE_ENABLED">LIBXML_UNICODE_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_VALID_ENABLED">LIBXML_VALID_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_VERSION">LIBXML_VERSION</a></pre><pre class="programlisting">#define <a href="#LIBXML_VERSION_EXTRA">LIBXML_VERSION_EXTRA</a></pre><pre class="programlisting">#define <a href="#LIBXML_VERSION_STRING">LIBXML_VERSION_STRING</a></pre><pre class="programlisting">#define <a href="#LIBXML_WRITER_ENABLED">LIBXML_WRITER_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_XINCLUDE_ENABLED">LIBXML_XINCLUDE_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_XPATH_ENABLED">LIBXML_XPATH_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_XPTR_ENABLED">LIBXML_XPTR_ENABLED</a></pre><pre class="programlisting">#define <a href="#WITHOUT_TRIO">WITHOUT_TRIO</a></pre><pre class="programlisting">#define <a href="#WITH_TRIO">WITH_TRIO</a></pre><pre class="programlisting">void <a href="#xmlCheckVersion">xmlCheckVersion</a> (int version)</pre> + </style><title>Module xmlversion from libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="../epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="../gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="../w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="../redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="../Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1></h1><h2>Module xmlversion from libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="../search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a style="font-weight:bold" href="../index.html">Main Menu</a></li><li><a style="font-weight:bold" href="../docs.html">Developer Menu</a></li><li><a style="font-weight:bold" href="../examples/index.html">Code Examples</a></li><li><a style="font-weight:bold" href="index.html">API Menu</a></li><li><a href="libxml-parser.html">Parser API</a></li><li><a href="libxml-tree.html">Tree API</a></li><li><a href="libxml-xmlreader.html">Reader API</a></li><li><a href="../guidelines.html">XML Guidelines</a></li><li><a href="../ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="../APIchunk0.html">Alphabetic</a></li><li><a href="../APIconstructors.html">Constructors</a></li><li><a href="../APIfunctions.html">Functions/Types</a></li><li><a href="../APIfiles.html">Modules</a></li><li><a href="../APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://rubyforge.org/projects/xml-tools/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="libxml-xmlunicode.html"><img src="left.png" width="24" height="24" border="0" alt="Prev" /></a></td><th align="left"><a href="libxml-xmlunicode.html">xmlunicode</a></th><td><a accesskey="u" href="index.html"><img src="up.png" width="24" height="24" border="0" alt="Up" /></a></td><th align="left"><a href="index.html">API documentation</a></th><td><a accesskey="h" href="../index.html"><img src="home.png" width="24" height="24" border="0" alt="Home" /></a></td><th align="center"><a href="../index.html">The XML C parser and toolkit of Gnome</a></th><th align="right"><a href="libxml-xmlwriter.html">xmlwriter</a></th><td><a accesskey="n" href="libxml-xmlwriter.html"><img src="right.png" width="24" height="24" border="0" alt="Next" /></a></td></tr></table><p>compile-time version informations for the XML library </p><h2>Table of Contents</h2><pre class="programlisting">#define <a href="#ATTRIBUTE_UNUSED">ATTRIBUTE_UNUSED</a></pre><pre class="programlisting">#define <a href="#DEBUG_MEMORY_LOCATION">DEBUG_MEMORY_LOCATION</a></pre><pre class="programlisting">#define <a href="#LIBXML_AUTOMATA_ENABLED">LIBXML_AUTOMATA_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_C14N_ENABLED">LIBXML_C14N_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_CATALOG_ENABLED">LIBXML_CATALOG_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_DEBUG_ENABLED">LIBXML_DEBUG_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_DEBUG_RUNTIME">LIBXML_DEBUG_RUNTIME</a></pre><pre class="programlisting">#define <a href="#LIBXML_DOCB_ENABLED">LIBXML_DOCB_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_DOTTED_VERSION">LIBXML_DOTTED_VERSION</a></pre><pre class="programlisting">#define <a href="#LIBXML_EXPR_ENABLED">LIBXML_EXPR_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_FTP_ENABLED">LIBXML_FTP_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_HTML_ENABLED">LIBXML_HTML_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_HTTP_ENABLED">LIBXML_HTTP_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_ICONV_ENABLED">LIBXML_ICONV_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_ISO8859X_ENABLED">LIBXML_ISO8859X_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_LEGACY_ENABLED">LIBXML_LEGACY_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_MODULES_ENABLED">LIBXML_MODULES_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_MODULE_EXTENSION">LIBXML_MODULE_EXTENSION</a></pre><pre class="programlisting">#define <a href="#LIBXML_OUTPUT_ENABLED">LIBXML_OUTPUT_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_PATTERN_ENABLED">LIBXML_PATTERN_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_PUSH_ENABLED">LIBXML_PUSH_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_READER_ENABLED">LIBXML_READER_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_REGEXP_ENABLED">LIBXML_REGEXP_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_SAX1_ENABLED">LIBXML_SAX1_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_SCHEMAS_ENABLED">LIBXML_SCHEMAS_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_SCHEMATRON_ENABLED">LIBXML_SCHEMATRON_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_TEST_VERSION">LIBXML_TEST_VERSION</a></pre><pre class="programlisting">#define <a href="#LIBXML_THREAD_ENABLED">LIBXML_THREAD_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_TREE_ENABLED">LIBXML_TREE_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_UNICODE_ENABLED">LIBXML_UNICODE_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_VALID_ENABLED">LIBXML_VALID_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_VERSION">LIBXML_VERSION</a></pre><pre class="programlisting">#define <a href="#LIBXML_VERSION_EXTRA">LIBXML_VERSION_EXTRA</a></pre><pre class="programlisting">#define <a href="#LIBXML_VERSION_STRING">LIBXML_VERSION_STRING</a></pre><pre class="programlisting">#define <a href="#LIBXML_WRITER_ENABLED">LIBXML_WRITER_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_XINCLUDE_ENABLED">LIBXML_XINCLUDE_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_XPATH_ENABLED">LIBXML_XPATH_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_XPTR_ENABLED">LIBXML_XPTR_ENABLED</a></pre><pre class="programlisting">#define <a href="#WITHOUT_TRIO">WITHOUT_TRIO</a></pre><pre class="programlisting">#define <a href="#WITH_TRIO">WITH_TRIO</a></pre><pre class="programlisting">void <a href="#xmlCheckVersion">xmlCheckVersion</a> (int version)</pre> <h2>Description</h2> <h3><a name="ATTRIBUTE_UNUSED" id="ATTRIBUTE_UNUSED"></a>Macro: ATTRIBUTE_UNUSED</h3><pre>#define ATTRIBUTE_UNUSED</pre><p>Macro used to signal to GCC unused function parameters</p> <h3><a name="DEBUG_MEMORY_LOCATION" id="DEBUG_MEMORY_LOCATION"></a>Macro: DEBUG_MEMORY_LOCATION</h3><pre>#define DEBUG_MEMORY_LOCATION</pre><p>Whether the memory debugging is configured in</p> @@ -21,6 +21,7 @@ A:link, A:visited, A:active { text-decoration: underline } <h3><a name="LIBXML_DEBUG_RUNTIME" id="LIBXML_DEBUG_RUNTIME"></a>Macro: LIBXML_DEBUG_RUNTIME</h3><pre>#define LIBXML_DEBUG_RUNTIME</pre><p>Whether the runtime debugging is configured in</p> <h3><a name="LIBXML_DOCB_ENABLED" id="LIBXML_DOCB_ENABLED"></a>Macro: LIBXML_DOCB_ENABLED</h3><pre>#define LIBXML_DOCB_ENABLED</pre><p>Whether the SGML Docbook support is configured in</p> <h3><a name="LIBXML_DOTTED_VERSION" id="LIBXML_DOTTED_VERSION"></a>Macro: LIBXML_DOTTED_VERSION</h3><pre>#define LIBXML_DOTTED_VERSION</pre><p>the version string like "1.2.3"</p> +<h3><a name="LIBXML_EXPR_ENABLED" id="LIBXML_EXPR_ENABLED"></a>Macro: LIBXML_EXPR_ENABLED</h3><pre>#define LIBXML_EXPR_ENABLED</pre><p>Whether the formal expressions interfaces are compiled in</p> <h3><a name="LIBXML_FTP_ENABLED" id="LIBXML_FTP_ENABLED"></a>Macro: LIBXML_FTP_ENABLED</h3><pre>#define LIBXML_FTP_ENABLED</pre><p>Whether the FTP support is configured in</p> <h3><a name="LIBXML_HTML_ENABLED" id="LIBXML_HTML_ENABLED"></a>Macro: LIBXML_HTML_ENABLED</h3><pre>#define LIBXML_HTML_ENABLED</pre><p>Whether the HTML support is configured in</p> <h3><a name="LIBXML_HTTP_ENABLED" id="LIBXML_HTTP_ENABLED"></a>Macro: LIBXML_HTTP_ENABLED</h3><pre>#define LIBXML_HTTP_ENABLED</pre><p>Whether the HTTP support is configured in</p> @@ -28,7 +29,7 @@ A:link, A:visited, A:active { text-decoration: underline } <h3><a name="LIBXML_ISO8859X_ENABLED" id="LIBXML_ISO8859X_ENABLED"></a>Macro: LIBXML_ISO8859X_ENABLED</h3><pre>#define LIBXML_ISO8859X_ENABLED</pre><p>Whether ISO-8859-* support is made available in case iconv is not</p> <h3><a name="LIBXML_LEGACY_ENABLED" id="LIBXML_LEGACY_ENABLED"></a>Macro: LIBXML_LEGACY_ENABLED</h3><pre>#define LIBXML_LEGACY_ENABLED</pre><p>Whether the deprecated APIs are compiled in for compatibility</p> <h3><a name="LIBXML_MODULES_ENABLED" id="LIBXML_MODULES_ENABLED"></a>Macro: LIBXML_MODULES_ENABLED</h3><pre>#define LIBXML_MODULES_ENABLED</pre><p>Whether the module interfaces are compiled in</p> -<h3><a name="LIBXML_MODULE_EXTENSION" id="LIBXML_MODULE_EXTENSION"></a>Macro: LIBXML_MODULE_EXTENSION</h3><pre>#define LIBXML_MODULE_EXTENSION</pre><p></p> +<h3><a name="LIBXML_MODULE_EXTENSION" id="LIBXML_MODULE_EXTENSION"></a>Macro: LIBXML_MODULE_EXTENSION</h3><pre>#define LIBXML_MODULE_EXTENSION</pre><p>the string suffix used by dynamic modules (usually shared libraries)</p> <h3><a name="LIBXML_OUTPUT_ENABLED" id="LIBXML_OUTPUT_ENABLED"></a>Macro: LIBXML_OUTPUT_ENABLED</h3><pre>#define LIBXML_OUTPUT_ENABLED</pre><p>Whether the serialization/saving support is configured in</p> <h3><a name="LIBXML_PATTERN_ENABLED" id="LIBXML_PATTERN_ENABLED"></a>Macro: LIBXML_PATTERN_ENABLED</h3><pre>#define LIBXML_PATTERN_ENABLED</pre><p>Whether the <a href="libxml-pattern.html#xmlPattern">xmlPattern</a> node selection interface is configured in</p> <h3><a name="LIBXML_PUSH_ENABLED" id="LIBXML_PUSH_ENABLED"></a>Macro: LIBXML_PUSH_ENABLED</h3><pre>#define LIBXML_PUSH_ENABLED</pre><p>Whether the push parsing interfaces are configured in</p> @@ -36,6 +37,7 @@ A:link, A:visited, A:active { text-decoration: underline } <h3><a name="LIBXML_REGEXP_ENABLED" id="LIBXML_REGEXP_ENABLED"></a>Macro: LIBXML_REGEXP_ENABLED</h3><pre>#define LIBXML_REGEXP_ENABLED</pre><p>Whether the regular expressions interfaces are compiled in</p> <h3><a name="LIBXML_SAX1_ENABLED" id="LIBXML_SAX1_ENABLED"></a>Macro: LIBXML_SAX1_ENABLED</h3><pre>#define LIBXML_SAX1_ENABLED</pre><p>Whether the older SAX1 interface is configured in</p> <h3><a name="LIBXML_SCHEMAS_ENABLED" id="LIBXML_SCHEMAS_ENABLED"></a>Macro: LIBXML_SCHEMAS_ENABLED</h3><pre>#define LIBXML_SCHEMAS_ENABLED</pre><p>Whether the Schemas validation interfaces are compiled in</p> +<h3><a name="LIBXML_SCHEMATRON_ENABLED" id="LIBXML_SCHEMATRON_ENABLED"></a>Macro: LIBXML_SCHEMATRON_ENABLED</h3><pre>#define LIBXML_SCHEMATRON_ENABLED</pre><p>Whether the Schematron validation interfaces are compiled in</p> <h3><a name="LIBXML_TEST_VERSION" id="LIBXML_TEST_VERSION"></a>Macro: LIBXML_TEST_VERSION</h3><pre>#define LIBXML_TEST_VERSION</pre><p>Macro to check that the libxml version in use is compatible with the version the software has been compiled against</p> <h3><a name="LIBXML_THREAD_ENABLED" id="LIBXML_THREAD_ENABLED"></a>Macro: LIBXML_THREAD_ENABLED</h3><pre>#define LIBXML_THREAD_ENABLED</pre><p>Whether the thread support is configured in</p> <h3><a name="LIBXML_TREE_ENABLED" id="LIBXML_TREE_ENABLED"></a>Macro: LIBXML_TREE_ENABLED</h3><pre>#define LIBXML_TREE_ENABLED</pre><p>Whether the DOM like tree manipulation API support is configured in</p> diff --git a/doc/html/libxml-xpath.html b/doc/html/libxml-xpath.html index 30fdc22..ba4265f 100644 --- a/doc/html/libxml-xpath.html +++ b/doc/html/libxml-xpath.html @@ -10,7 +10,7 @@ A:link, A:visited, A:active { text-decoration: underline } </style><style type="text/css"> div.deprecated pre.programlisting {border-style: double;border-color:red} pre.programlisting {border-style: double;background: #EECFA1} - </style><title>Module xpath from libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="../epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="../gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="../w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="../redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="../Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1></h1><h2>Module xpath from libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="../search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a style="font-weight:bold" href="../index.html">Main Menu</a></li><li><a style="font-weight:bold" href="../docs.html">Developer Menu</a></li><li><a style="font-weight:bold" href="../examples/index.html">Code Examples</a></li><li><a style="font-weight:bold" href="index.html">API Menu</a></li><li><a href="libxml-parser.html">Parser API</a></li><li><a href="libxml-tree.html">Tree API</a></li><li><a href="libxml-xmlreader.html">Reader API</a></li><li><a href="../guidelines.html">XML Guidelines</a></li><li><a href="../ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="../APIchunk0.html">Alphabetic</a></li><li><a href="../APIconstructors.html">Constructors</a></li><li><a href="../APIfunctions.html">Functions/Types</a></li><li><a href="../APIfiles.html">Modules</a></li><li><a href="../APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://rubyforge.org/projects/xml-tools/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="libxml-xmlwriter.html"><img src="left.png" width="24" height="24" border="0" alt="Prev" /></a></td><th align="left"><a href="libxml-xmlwriter.html">xmlwriter</a></th><td><a accesskey="u" href="index.html"><img src="up.png" width="24" height="24" border="0" alt="Up" /></a></td><th align="left"><a href="index.html">API documentation</a></th><td><a accesskey="h" href="../index.html"><img src="home.png" width="24" height="24" border="0" alt="Home" /></a></td><th align="center"><a href="../index.html">The XML C parser and toolkit of Gnome</a></th><th align="right"><a href="libxml-xpathInternals.html">xpathInternals</a></th><td><a accesskey="n" href="libxml-xpathInternals.html"><img src="right.png" width="24" height="24" border="0" alt="Next" /></a></td></tr></table><p>API for the XML Path Language implementation XML Path Language implementation XPath is a language for addressing parts of an XML document, designed to be used by both XSLT and XPointer</p><h2>Table of Contents</h2><pre class="programlisting">#define <a href="#xmlXPathNodeSetGetLength">xmlXPathNodeSetGetLength</a></pre><pre class="programlisting">#define <a href="#xmlXPathNodeSetIsEmpty">xmlXPathNodeSetIsEmpty</a></pre><pre class="programlisting">#define <a href="#xmlXPathNodeSetItem">xmlXPathNodeSetItem</a></pre><pre class="programlisting">Structure <a href="#xmlNodeSet">xmlNodeSet</a><br />struct _xmlNodeSet + </style><title>Module xpath from libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="../epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="../gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="../w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="../redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="../Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1></h1><h2>Module xpath from libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="../search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a style="font-weight:bold" href="../index.html">Main Menu</a></li><li><a style="font-weight:bold" href="../docs.html">Developer Menu</a></li><li><a style="font-weight:bold" href="../examples/index.html">Code Examples</a></li><li><a style="font-weight:bold" href="index.html">API Menu</a></li><li><a href="libxml-parser.html">Parser API</a></li><li><a href="libxml-tree.html">Tree API</a></li><li><a href="libxml-xmlreader.html">Reader API</a></li><li><a href="../guidelines.html">XML Guidelines</a></li><li><a href="../ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="../APIchunk0.html">Alphabetic</a></li><li><a href="../APIconstructors.html">Constructors</a></li><li><a href="../APIfunctions.html">Functions/Types</a></li><li><a href="../APIfiles.html">Modules</a></li><li><a href="../APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://rubyforge.org/projects/xml-tools/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="libxml-xmlwriter.html"><img src="left.png" width="24" height="24" border="0" alt="Prev" /></a></td><th align="left"><a href="libxml-xmlwriter.html">xmlwriter</a></th><td><a accesskey="u" href="index.html"><img src="up.png" width="24" height="24" border="0" alt="Up" /></a></td><th align="left"><a href="index.html">API documentation</a></th><td><a accesskey="h" href="../index.html"><img src="home.png" width="24" height="24" border="0" alt="Home" /></a></td><th align="center"><a href="../index.html">The XML C parser and toolkit of Gnome</a></th><th align="right"><a href="libxml-xpathInternals.html">xpathInternals</a></th><td><a accesskey="n" href="libxml-xpathInternals.html"><img src="right.png" width="24" height="24" border="0" alt="Next" /></a></td></tr></table><p>API for the XML Path Language implementation XML Path Language implementation XPath is a language for addressing parts of an XML document, designed to be used by both XSLT and XPointer</p><h2>Table of Contents</h2><pre class="programlisting">#define <a href="#XML_XPATH_CHECKNS">XML_XPATH_CHECKNS</a></pre><pre class="programlisting">#define <a href="#XML_XPATH_NOVAR">XML_XPATH_NOVAR</a></pre><pre class="programlisting">#define <a href="#xmlXPathNodeSetGetLength">xmlXPathNodeSetGetLength</a></pre><pre class="programlisting">#define <a href="#xmlXPathNodeSetIsEmpty">xmlXPathNodeSetIsEmpty</a></pre><pre class="programlisting">#define <a href="#xmlXPathNodeSetItem">xmlXPathNodeSetItem</a></pre><pre class="programlisting">Structure <a href="#xmlNodeSet">xmlNodeSet</a><br />struct _xmlNodeSet </pre><pre class="programlisting">Typedef <a href="libxml-xpath.html#xmlNodeSet">xmlNodeSet</a> * <a name="xmlNodeSetPtr" id="xmlNodeSetPtr">xmlNodeSetPtr</a> </pre><pre class="programlisting">Structure <a href="#xmlXPathAxis">xmlXPathAxis</a><br />struct _xmlXPathAxis </pre><pre class="programlisting">Typedef <a href="libxml-xpath.html#xmlXPathAxis">xmlXPathAxis</a> * <a name="xmlXPathAxisPtr" id="xmlXPathAxisPtr">xmlXPathAxisPtr</a> @@ -86,6 +86,8 @@ void <a href="#xmlXPathFunction">xmlXPathFunction</a> (<a href="libxml-xpath.ht <a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> <a href="#xmlXPathVariableLookupFunc">xmlXPathVariableLookupFunc</a> (void * ctxt, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * ns_uri) </pre> <h2>Description</h2> +<h3><a name="XML_XPATH_CHECKNS" id="XML_XPATH_CHECKNS"></a>Macro: XML_XPATH_CHECKNS</h3><pre>#define XML_XPATH_CHECKNS</pre><p>check namespaces at compilation</p> +<h3><a name="XML_XPATH_NOVAR" id="XML_XPATH_NOVAR"></a>Macro: XML_XPATH_NOVAR</h3><pre>#define XML_XPATH_NOVAR</pre><p>forbid variables in expression</p> <h3><a name="xmlXPathNodeSetGetLength" id="xmlXPathNodeSetGetLength"></a>Macro: xmlXPathNodeSetGetLength</h3><pre>#define xmlXPathNodeSetGetLength</pre><p>Implement a functionality similar to the DOM NodeList.length. Returns the number of nodes in the node-set.</p> <h3><a name="xmlXPathNodeSetIsEmpty" id="xmlXPathNodeSetIsEmpty"></a>Macro: xmlXPathNodeSetIsEmpty</h3><pre>#define xmlXPathNodeSetIsEmpty</pre><p>Checks whether @ns is empty or not. Returns %TRUE if @ns is an empty node-set.</p> <h3><a name="xmlXPathNodeSetItem" id="xmlXPathNodeSetItem"></a>Macro: xmlXPathNodeSetItem</h3><pre>#define xmlXPathNodeSetItem</pre><p>Implements a functionality similar to the DOM NodeList.item(). Returns the <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> at the given @index in @ns or NULL if @index is out of range (0 to length-1)</p> @@ -136,6 +138,7 @@ The content of this structure is not made public by the API. <a href="libxml-xmlerror.html#xmlError">xmlError</a> lastError : the last error <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> debugNode : the source node XSLT dictionnary <a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict : dictionnary if any + int flags : flags to control compilation }</pre><h3>Enum <a name="xmlXPathError" id="xmlXPathError">xmlXPathError</a></h3><pre class="programlisting">Enum xmlXPathError { <a name="XPATH_EXPRESSION_OK" id="XPATH_EXPRESSION_OK">XPATH_EXPRESSION_OK</a> = 0 <a name="XPATH_NUMBER_ERROR" id="XPATH_NUMBER_ERROR">XPATH_NUMBER_ERROR</a> = 1 diff --git a/doc/index.html b/doc/index.html index 69e54ad..e5cdd04 100644 --- a/doc/index.html +++ b/doc/index.html @@ -1,8 +1,7 @@ <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> - <head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> + <head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> <link rel="SHORTCUT ICON" href="/favicon.ico" /> <style type="text/css"> TD {font-family: Verdana,Arial,Helvetica} diff --git a/doc/libxml2-api.xml b/doc/libxml2-api.xml index d100603..26263a5 100644 --- a/doc/libxml2-api.xml +++ b/doc/libxml2-api.xml @@ -35,11 +35,13 @@ <exports symbol='HTML_INVALID' type='enum'/> <exports symbol='HTML_PARSE_NONET' type='enum'/> <exports symbol='HTML_NA' type='enum'/> + <exports symbol='HTML_PARSE_COMPACT' type='enum'/> <exports symbol='HTML_VALID' type='enum'/> - <exports symbol='HTML_PARSE_NOBLANKS' type='enum'/> <exports symbol='HTML_PARSE_NOERROR' type='enum'/> + <exports symbol='HTML_PARSE_NOBLANKS' type='enum'/> <exports symbol='HTML_DEPRECATED' type='enum'/> <exports symbol='HTML_PARSE_PEDANTIC' type='enum'/> + <exports symbol='HTML_PARSE_RECOVER' type='enum'/> <exports symbol='HTML_PARSE_NOWARNING' type='enum'/> <exports symbol='htmlParserNodeInfo' type='typedef'/> <exports symbol='htmlParserInput' type='typedef'/> @@ -661,51 +663,84 @@ <exports symbol='XML_SAX2_MAGIC' type='macro'/> <exports symbol='XML_DETECT_IDS' type='macro'/> <exports symbol='XML_DEFAULT_VERSION' type='macro'/> - <exports symbol='XML_PARSER_ENTITY_DECL' type='enum'/> + <exports symbol='XML_FEATURE_SCHEMAS' type='enum'/> + <exports symbol='XML_FEATURE_TREE' type='enum'/> <exports symbol='XML_PARSER_CONTENT' type='enum'/> + <exports symbol='XML_FEATURE_XINCLUDE' type='enum'/> <exports symbol='XML_PARSE_NOBLANKS' type='enum'/> - <exports symbol='XML_PARSE_NODICT' type='enum'/> - <exports symbol='XML_PARSER_SYSTEM_LITERAL' type='enum'/> + <exports symbol='XML_FEATURE_OUTPUT' type='enum'/> + <exports symbol='XML_FEATURE_PUSH' type='enum'/> + <exports symbol='XML_FEATURE_FTP' type='enum'/> <exports symbol='XML_PARSER_PI' type='enum'/> - <exports symbol='XML_PARSE_PUSH_DOM' type='enum'/> + <exports symbol='XML_FEATURE_EXPR' type='enum'/> + <exports symbol='XML_FEATURE_UNICODE' type='enum'/> + <exports symbol='XML_FEATURE_WRITER' type='enum'/> + <exports symbol='XML_PARSER_ENTITY_DECL' type='enum'/> <exports symbol='XML_PARSER_PROLOG' type='enum'/> - <exports symbol='XML_PARSE_NONET' type='enum'/> - <exports symbol='XML_PARSER_EPILOG' type='enum'/> + <exports symbol='XML_PARSER_MISC' type='enum'/> + <exports symbol='XML_FEATURE_C14N' type='enum'/> <exports symbol='XML_PARSER_END_TAG' type='enum'/> <exports symbol='XML_PARSE_DTDVALID' type='enum'/> - <exports symbol='XML_PARSE_DOM' type='enum'/> - <exports symbol='XML_PARSER_ATTRIBUTE_VALUE' type='enum'/> + <exports symbol='XML_FEATURE_DEBUG_MEM' type='enum'/> + <exports symbol='XML_PARSE_READER' type='enum'/> + <exports symbol='XML_FEATURE_THREAD' type='enum'/> + <exports symbol='XML_FEATURE_SAX1' type='enum'/> <exports symbol='XML_PARSE_PUSH_SAX' type='enum'/> <exports symbol='XML_PARSE_RECOVER' type='enum'/> + <exports symbol='XML_FEATURE_ICONV' type='enum'/> + <exports symbol='XML_FEATURE_READER' type='enum'/> + <exports symbol='XML_PARSE_NONET' type='enum'/> <exports symbol='XML_PARSE_PEDANTIC' type='enum'/> + <exports symbol='XML_FEATURE_AUTOMATA' type='enum'/> <exports symbol='XML_PARSER_EOF' type='enum'/> + <exports symbol='XML_FEATURE_LEGACY' type='enum'/> <exports symbol='XML_PARSER_CDATA_SECTION' type='enum'/> + <exports symbol='XML_FEATURE_REGEXP' type='enum'/> + <exports symbol='XML_PARSE_NOENT' type='enum'/> <exports symbol='XML_PARSE_XINCLUDE' type='enum'/> - <exports symbol='XML_PARSE_NOXINCNODE' type='enum'/> - <exports symbol='XML_PARSE_READER' type='enum'/> + <exports symbol='XML_PARSE_NOCDATA' type='enum'/> + <exports symbol='XML_PARSER_ATTRIBUTE_VALUE' type='enum'/> + <exports symbol='XML_PARSE_NODICT' type='enum'/> + <exports symbol='XML_FEATURE_DEBUG' type='enum'/> <exports symbol='XML_PARSE_SAX' type='enum'/> - <exports symbol='XML_PARSE_NOENT' type='enum'/> + <exports symbol='XML_FEATURE_PATTERN' type='enum'/> <exports symbol='XML_PARSER_ENTITY_VALUE' type='enum'/> <exports symbol='XML_PARSE_DTDLOAD' type='enum'/> + <exports symbol='XML_FEATURE_HTML' type='enum'/> <exports symbol='XML_PARSE_DTDATTR' type='enum'/> <exports symbol='XML_PARSE_NOWARNING' type='enum'/> + <exports symbol='XML_PARSER_EPILOG' type='enum'/> <exports symbol='XML_PARSE_NOERROR' type='enum'/> + <exports symbol='XML_PARSE_DOM' type='enum'/> + <exports symbol='XML_PARSE_PUSH_DOM' type='enum'/> + <exports symbol='XML_FEATURE_CATALOG' type='enum'/> + <exports symbol='XML_FEATURE_MODULES' type='enum'/> + <exports symbol='XML_FEATURE_NONE' type='enum'/> <exports symbol='XML_PARSE_NSCLEAN' type='enum'/> - <exports symbol='XML_PARSE_NOCDATA' type='enum'/> + <exports symbol='XML_FEATURE_XPATH' type='enum'/> + <exports symbol='XML_PARSE_COMPACT' type='enum'/> <exports symbol='XML_PARSE_SAX1' type='enum'/> + <exports symbol='XML_PARSE_NOXINCNODE' type='enum'/> <exports symbol='XML_PARSER_DTD' type='enum'/> - <exports symbol='XML_PARSER_MISC' type='enum'/> + <exports symbol='XML_FEATURE_SCHEMATRON' type='enum'/> <exports symbol='XML_PARSER_START' type='enum'/> + <exports symbol='XML_PARSER_SYSTEM_LITERAL' type='enum'/> <exports symbol='XML_PARSE_UNKNOWN' type='enum'/> <exports symbol='XML_PARSER_START_TAG' type='enum'/> + <exports symbol='XML_FEATURE_ISO8859X' type='enum'/> <exports symbol='XML_PARSER_IGNORE' type='enum'/> <exports symbol='XML_PARSER_COMMENT' type='enum'/> <exports symbol='XML_PARSER_PUBLIC_LITERAL' type='enum'/> + <exports symbol='XML_FEATURE_DEBUG_RUN' type='enum'/> + <exports symbol='XML_FEATURE_HTTP' type='enum'/> + <exports symbol='XML_FEATURE_XPTR' type='enum'/> + <exports symbol='XML_FEATURE_VALID' type='enum'/> <exports symbol='xmlParserNodeInfoSeqPtr' type='typedef'/> <exports symbol='xmlSAXHandlerV1' type='typedef'/> <exports symbol='xmlParserInputState' type='typedef'/> <exports symbol='xmlParserNodeInfoPtr' type='typedef'/> <exports symbol='xmlParserNodeInfoSeq' type='typedef'/> + <exports symbol='xmlFeature' type='typedef'/> <exports symbol='xmlParserMode' type='typedef'/> <exports symbol='xmlParserOption' type='typedef'/> <exports symbol='xmlSAXHandlerV1Ptr' type='typedef'/> @@ -794,6 +829,7 @@ <exports symbol='xmlParserInputRead' type='function'/> <exports symbol='xmlReadFile' type='function'/> <exports symbol='xmlGetFeaturesList' type='function'/> + <exports symbol='xmlHasFeature' type='function'/> <exports symbol='unparsedEntityDeclSAXFunc' type='function'/> <exports symbol='xmlSAXUserParseFile' type='function'/> <exports symbol='fatalErrorSAXFunc' type='function'/> @@ -960,6 +996,7 @@ <exports symbol='xmlStreamCtxt' type='typedef'/> <exports symbol='xmlPattern' type='typedef'/> <exports symbol='xmlPatternPtr' type='typedef'/> + <exports symbol='xmlPatternMinDepth' type='function'/> <exports symbol='xmlPatternGetStreamCtxt' type='function'/> <exports symbol='xmlPatternFromRoot' type='function'/> <exports symbol='xmlFreePatternList' type='function'/> @@ -1033,17 +1070,18 @@ <exports symbol='xmlRelaxNGSetValidErrors' type='function'/> <exports symbol='xmlRelaxNGNewParserCtxt' type='function'/> <exports symbol='xmlRelaxNGGetParserErrors' type='function'/> - <exports symbol='xmlRelaxNGSetParserErrors' type='function'/> + <exports symbol='xmlRelaxNGValidatePopElement' type='function'/> <exports symbol='xmlRelaxNGNewValidCtxt' type='function'/> <exports symbol='xmlRelaxNGNewMemParserCtxt' type='function'/> <exports symbol='xmlRelaxNGDump' type='function'/> - <exports symbol='xmlRelaxNGValidityErrorFunc' type='function'/> + <exports symbol='xmlRelaxNGSetParserErrors' type='function'/> <exports symbol='xmlRelaxNGParse' type='function'/> - <exports symbol='xmlRelaxNGValidatePushElement' type='function'/> <exports symbol='xmlRelaxNGValidateFullElement' type='function'/> - <exports symbol='xmlRelaxNGValidatePopElement' type='function'/> + <exports symbol='xmlRelaxNGValidityErrorFunc' type='function'/> + <exports symbol='xmlRelaxNGValidatePushElement' type='function'/> <exports symbol='xmlRelaxNGFree' type='function'/> <exports symbol='xmlRelaxNGValidateDoc' type='function'/> + <exports symbol='xmlRelaxNGSetValidStructuredErrors' type='function'/> <exports symbol='xmlRelaxNGFreeParserCtxt' type='function'/> <exports symbol='xmlRelaxNGGetValidErrors' type='function'/> <exports symbol='xmlRelaxNGInitTypes' type='function'/> @@ -1273,6 +1311,35 @@ <exports symbol='xmlSchemaFreeType' type='function'/> <exports symbol='xmlSchemaFreeWildcard' type='function'/> </file> + <file name='schematron'> + <summary>XML Schemastron implementation</summary> + <description>interface to the XML Schematron validity checking. </description> + <author>Daniel Veillard </author> + <exports symbol='XML_SCHEMATRON_OUT_IO' type='enum'/> + <exports symbol='XML_SCHEMATRON_OUT_BUFFER' type='enum'/> + <exports symbol='XML_SCHEMATRON_OUT_FILE' type='enum'/> + <exports symbol='XML_SCHEMATRON_OUT_XML' type='enum'/> + <exports symbol='XML_SCHEMATRON_OUT_TEXT' type='enum'/> + <exports symbol='XML_SCHEMATRON_OUT_QUIET' type='enum'/> + <exports symbol='xmlSchematronValidCtxt' type='typedef'/> + <exports symbol='xmlSchematronValidOptions' type='typedef'/> + <exports symbol='xmlSchematronPtr' type='typedef'/> + <exports symbol='xmlSchematronParserCtxt' type='typedef'/> + <exports symbol='xmlSchematron' type='typedef'/> + <exports symbol='xmlSchematronValidCtxtPtr' type='typedef'/> + <exports symbol='xmlSchematronParserCtxtPtr' type='typedef'/> + <exports symbol='xmlSchematronValidateDoc' type='function'/> + <exports symbol='xmlSchematronFreeParserCtxt' type='function'/> + <exports symbol='xmlSchematronNewMemParserCtxt' type='function'/> + <exports symbol='xmlSchematronValidityErrorFunc' type='function'/> + <exports symbol='xmlSchematronNewParserCtxt' type='function'/> + <exports symbol='xmlSchematronValidityWarningFunc' type='function'/> + <exports symbol='xmlSchematronFree' type='function'/> + <exports symbol='xmlSchematronFreeValidCtxt' type='function'/> + <exports symbol='xmlSchematronParse' type='function'/> + <exports symbol='xmlSchematronNewDocParserCtxt' type='function'/> + <exports symbol='xmlSchematronNewValidCtxt' type='function'/> + </file> <file name='threads'> <summary>interfaces for thread handling</summary> <description>set of generic threading related routines should work with pthreads, Windows native or TLS threads </description> @@ -1585,6 +1652,7 @@ <exports symbol='_xmlURI' type='struct'/> <exports symbol='xmlNormalizeURIPath' type='function'/> <exports symbol='xmlPrintURI' type='function'/> + <exports symbol='xmlParseURIRaw' type='function'/> <exports symbol='xmlURIUnescapeString' type='function'/> <exports symbol='xmlParseURI' type='function'/> <exports symbol='xmlCreateURI' type='function'/> @@ -1831,9 +1899,10 @@ <exports symbol='xmlAutomataNewCountedTrans' type='function'/> <exports symbol='xmlAutomataNewCounterTrans' type='function'/> <exports symbol='xmlAutomataCompile' type='function'/> - <exports symbol='xmlNewAutomata' type='function'/> + <exports symbol='xmlAutomataNewNegTrans' type='function'/> <exports symbol='xmlAutomataNewEpsilon' type='function'/> <exports symbol='xmlAutomataNewCountTrans2' type='function'/> + <exports symbol='xmlNewAutomata' type='function'/> <exports symbol='xmlAutomataSetFinalState' type='function'/> <exports symbol='xmlAutomataNewOnceTrans' type='function'/> <exports symbol='xmlAutomataNewTransition' type='function'/> @@ -1912,6 +1981,7 @@ <exports symbol='XML_SCHEMAP_SRC_RESOLVE' type='enum'/> <exports symbol='XML_SCHEMAV_CVC_FACET_VALID' type='enum'/> <exports symbol='XML_SCHEMAP_RESTRICTION_NONAME_NOREF' type='enum'/> + <exports symbol='XML_I18N_NO_OUTPUT' type='enum'/> <exports symbol='XML_CHECK_FOUND_ATTRIBUTE' type='enum'/> <exports symbol='XML_ERR_STANDALONE_VALUE' type='enum'/> <exports symbol='XML_SCHEMAP_REDEFINED_ATTR' type='enum'/> @@ -2032,7 +2102,7 @@ <exports symbol='XML_SCHEMAV_CVC_ELT_4_3' type='enum'/> <exports symbol='XML_FTP_ACCNT' type='enum'/> <exports symbol='XML_SCHEMAV_CVC_ELT_4_1' type='enum'/> - <exports symbol='XML_SCHEMAP_EXTENSION_NO_BASE' type='enum'/> + <exports symbol='XML_RNGP_PAT_START_DATA' type='enum'/> <exports symbol='XML_IO_ENOENT' type='enum'/> <exports symbol='XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_3' type='enum'/> <exports symbol='XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_2' type='enum'/> @@ -2074,6 +2144,7 @@ <exports symbol='XML_DTD_MULTIPLE_ID' type='enum'/> <exports symbol='XML_FROM_XPATH' type='enum'/> <exports symbol='XML_TREE_INVALID_DEC' type='enum'/> + <exports symbol='XML_SCHEMAP_EXTENSION_NO_BASE' type='enum'/> <exports symbol='XML_SCHEMAP_E_PROPS_CORRECT_5' type='enum'/> <exports symbol='XML_SCHEMAP_E_PROPS_CORRECT_4' type='enum'/> <exports symbol='XML_CHECK_FOUND_DOCTYPE' type='enum'/> @@ -2112,7 +2183,7 @@ <exports symbol='XML_SCHEMAP_SRC_ELEMENT_3' type='enum'/> <exports symbol='XML_SCHEMAP_UNKNOWN_REF' type='enum'/> <exports symbol='XML_RNGP_PAT_DATA_EXCEPT_EMPTY' type='enum'/> - <exports symbol='XML_RNGP_PAT_START_DATA' type='enum'/> + <exports symbol='XML_FROM_I18N' type='enum'/> <exports symbol='XML_DTD_MISSING_ATTRIBUTE' type='enum'/> <exports symbol='XML_IO_EMFILE' type='enum'/> <exports symbol='XML_RNGP_EMPTY_NOT_EMPTY' type='enum'/> @@ -2151,6 +2222,7 @@ <exports symbol='XML_DTD_NOTATION_VALUE' type='enum'/> <exports symbol='XML_SCHEMAP_ST_PROPS_CORRECT_2' type='enum'/> <exports symbol='XML_SCHEMAP_ST_PROPS_CORRECT_3' type='enum'/> + <exports symbol='XML_I18N_NO_NAME' type='enum'/> <exports symbol='XML_SCHEMAP_ST_PROPS_CORRECT_1' type='enum'/> <exports symbol='XML_RNGP_EXCEPT_MISSING' type='enum'/> <exports symbol='XML_SCHEMAV_CVC_MAXINCLUSIVE_VALID' type='enum'/> @@ -2158,6 +2230,7 @@ <exports symbol='XML_DTD_MIXED_CORRUPT' type='enum'/> <exports symbol='XML_ERR_ENTITY_BOUNDARY' type='enum'/> <exports symbol='XML_SCHEMAP_ELEMFORMDEFAULT_VALUE' type='enum'/> + <exports symbol='XML_I18N_EXCESS_HANDLER' type='enum'/> <exports symbol='XML_RNGP_DATA_CONTENT' type='enum'/> <exports symbol='XML_ERR_STRING_NOT_STARTED' type='enum'/> <exports symbol='XML_RNGP_EXCEPT_MULTIPLE' type='enum'/> @@ -2319,7 +2392,7 @@ <exports symbol='XML_XPATH_INVALID_ARITY' type='enum'/> <exports symbol='XML_RNGP_ERROR_TYPE_LIB' type='enum'/> <exports symbol='XML_XPTR_EVAL_FAILED' type='enum'/> - <exports symbol='XML_RNGP_INCLUDE_RECURSE' type='enum'/> + <exports symbol='XML_DTD_NO_ROOT' type='enum'/> <exports symbol='XML_SCHEMAP_IMPORT_REDEFINE_NSNAME' type='enum'/> <exports symbol='XML_SCHEMAP_UNKNOWN_ATTR_CHILD' type='enum'/> <exports symbol='XML_ERR_UNKNOWN_ENCODING' type='enum'/> @@ -2346,6 +2419,7 @@ <exports symbol='XML_ERR_CHARREF_IN_DTD' type='enum'/> <exports symbol='XML_IO_ENFILE' type='enum'/> <exports symbol='XML_ERR_ENTITY_IS_PARAMETER' type='enum'/> + <exports symbol='XML_I18N_CONV_FAILED' type='enum'/> <exports symbol='XML_CHECK_WRONG_PARENT' type='enum'/> <exports symbol='XML_RNGP_PARENTREF_NO_NAME' type='enum'/> <exports symbol='XML_IO_EPERM' type='enum'/> @@ -2398,6 +2472,7 @@ <exports symbol='XML_SCHEMAP_UNKNOWN_CHOICE_CHILD' type='enum'/> <exports symbol='XML_RNGP_ELEM_CONTENT_ERROR' type='enum'/> <exports symbol='XML_SCHEMAV_HAVEDEFAULT' type='enum'/> + <exports symbol='XML_I18N_NO_HANDLER' type='enum'/> <exports symbol='XML_RNGP_MISSING_HREF' type='enum'/> <exports symbol='XML_ERR_PI_NOT_FINISHED' type='enum'/> <exports symbol='XML_FROM_RELAXNGP' type='enum'/> @@ -2476,6 +2551,7 @@ <exports symbol='XML_XPATH_ENCODING_ERROR' type='enum'/> <exports symbol='XML_SCHEMAP_SRC_INCLUDE' type='enum'/> <exports symbol='XML_RNGP_NSNAME_ATTR_ANCESTOR' type='enum'/> + <exports symbol='XML_SCHEMAP_SRC_REDEFINE' type='enum'/> <exports symbol='XML_RNGP_REF_CYCLE' type='enum'/> <exports symbol='XML_RNGP_PAT_ATTR_ATTR' type='enum'/> <exports symbol='XML_XPTR_UNKNOWN_SCHEME' type='enum'/> @@ -2517,7 +2593,7 @@ <exports symbol='XML_ERR_ELEMCONTENT_NOT_FINISHED' type='enum'/> <exports symbol='XML_FROM_NAMESPACE' type='enum'/> <exports symbol='XML_IO_EBUSY' type='enum'/> - <exports symbol='XML_DTD_NO_ROOT' type='enum'/> + <exports symbol='XML_RNGP_INCLUDE_RECURSE' type='enum'/> <exports symbol='XML_ERR_INVALID_URI' type='enum'/> <exports symbol='XML_IO_ESRCH' type='enum'/> <exports symbol='XML_FROM_XPOINTER' type='enum'/> @@ -2611,11 +2687,12 @@ <summary>macros for marking symbols as exportable/importable.</summary> <description>macros for marking symbols as exportable/importable. </description> <author>Igor Zlatovic <igor@zlatkovic.com> </author> - <exports symbol='XMLCALL' type='macro'/> <exports symbol='_REENTRANT' type='macro'/> - <exports symbol='XMLPUBFUN' type='macro'/> + <exports symbol='XMLCDECL' type='macro'/> <exports symbol='XMLPUBVAR' type='macro'/> <exports symbol='LIBXML_DLL_IMPORT' type='macro'/> + <exports symbol='XMLCALL' type='macro'/> + <exports symbol='XMLPUBFUN' type='macro'/> </file> <file name='xmlmemory'> <summary>interface for the memory allocator</summary> @@ -2796,27 +2873,60 @@ <summary>regular expressions handling</summary> <description>basic API for libxml regular expressions handling used for XML Schemas and validation. </description> <author>Daniel Veillard </author> + <exports symbol='XML_EXP_COUNT' type='enum'/> + <exports symbol='XML_EXP_EMPTY' type='enum'/> + <exports symbol='XML_EXP_SEQ' type='enum'/> + <exports symbol='XML_EXP_ATOM' type='enum'/> + <exports symbol='XML_EXP_OR' type='enum'/> + <exports symbol='XML_EXP_FORBID' type='enum'/> <exports symbol='xmlRegExecCtxtPtr' type='typedef'/> + <exports symbol='xmlExpCtxt' type='typedef'/> + <exports symbol='xmlExpNodePtr' type='typedef'/> + <exports symbol='xmlExpCtxtPtr' type='typedef'/> + <exports symbol='xmlExpNodeType' type='typedef'/> + <exports symbol='xmlRegExecCtxt' type='typedef'/> + <exports symbol='xmlExpNode' type='typedef'/> <exports symbol='xmlRegexp' type='typedef'/> <exports symbol='xmlRegexpPtr' type='typedef'/> - <exports symbol='xmlRegExecCtxt' type='typedef'/> - <exports symbol='xmlRegExecErrInfo' type='function'/> - <exports symbol='xmlRegFreeExecCtxt' type='function'/> - <exports symbol='xmlRegexpExec' type='function'/> + <exports symbol='forbiddenExp' type='variable'/> + <exports symbol='emptyExp' type='variable'/> <exports symbol='xmlRegExecCallbacks' type='function'/> <exports symbol='xmlRegNewExecCtxt' type='function'/> - <exports symbol='xmlRegExecPushString2' type='function'/> + <exports symbol='xmlExpNewOr' type='function'/> <exports symbol='xmlRegFreeRegexp' type='function'/> + <exports symbol='xmlExpRef' type='function'/> + <exports symbol='xmlRegexpIsDeterminist' type='function'/> + <exports symbol='xmlRegExecErrInfo' type='function'/> + <exports symbol='xmlRegFreeExecCtxt' type='function'/> + <exports symbol='xmlExpCtxtNbCons' type='function'/> + <exports symbol='xmlExpSubsume' type='function'/> + <exports symbol='xmlRegExecPushString2' type='function'/> <exports symbol='xmlRegExecNextValues' type='function'/> + <exports symbol='xmlExpExpDerive' type='function'/> + <exports symbol='xmlExpIsNillable' type='function'/> + <exports symbol='xmlExpFreeCtxt' type='function'/> + <exports symbol='xmlExpDump' type='function'/> + <exports symbol='xmlExpNewSeq' type='function'/> + <exports symbol='xmlExpFree' type='function'/> + <exports symbol='xmlExpNewRange' type='function'/> <exports symbol='xmlRegexpCompile' type='function'/> - <exports symbol='xmlRegexpIsDeterminist' type='function'/> + <exports symbol='xmlExpNewAtom' type='function'/> + <exports symbol='xmlRegexpExec' type='function'/> <exports symbol='xmlRegExecPushString' type='function'/> + <exports symbol='xmlExpGetStart' type='function'/> + <exports symbol='xmlExpParse' type='function'/> + <exports symbol='xmlExpNewCtxt' type='function'/> + <exports symbol='xmlExpGetLanguage' type='function'/> + <exports symbol='xmlExpStringDerive' type='function'/> + <exports symbol='xmlExpCtxtNbNodes' type='function'/> + <exports symbol='xmlExpMaxToken' type='function'/> <exports symbol='xmlRegexpPrint' type='function'/> </file> <file name='xmlsave'> <summary>the XML document serializer</summary> <description>API to save document or subtree of document </description> <author>Daniel Veillard </author> + <exports symbol='XML_SAVE_NO_DECL' type='enum'/> <exports symbol='XML_SAVE_FORMAT' type='enum'/> <exports symbol='xmlSaveOption' type='typedef'/> <exports symbol='xmlSaveCtxt' type='typedef'/> @@ -2883,7 +2993,7 @@ <exports symbol='xmlSchemaValidateStream' type='function'/> <exports symbol='xmlSchemaGetParserErrors' type='function'/> <exports symbol='xmlSchemaValidateOneElement' type='function'/> - <exports symbol='xmlSchemaDump' type='function'/> + <exports symbol='xmlSchemaSetValidStructuredErrors' type='function'/> <exports symbol='xmlSchemaSetValidErrors' type='function'/> <exports symbol='xmlSchemaValidCtxtGetOptions' type='function'/> <exports symbol='xmlSchemaValidateFile' type='function'/> @@ -2894,6 +3004,7 @@ <exports symbol='xmlSchemaSetValidOptions' type='function'/> <exports symbol='xmlSchemaSetParserErrors' type='function'/> <exports symbol='xmlSchemaValidityWarningFunc' type='function'/> + <exports symbol='xmlSchemaDump' type='function'/> <exports symbol='xmlSchemaFreeValidCtxt' type='function'/> <exports symbol='xmlSchemaNewValidCtxt' type='function'/> </file> @@ -3167,6 +3278,7 @@ <exports symbol='LIBXML_PUSH_ENABLED' type='macro'/> <exports symbol='LIBXML_SAX1_ENABLED' type='macro'/> <exports symbol='WITHOUT_TRIO' type='macro'/> + <exports symbol='LIBXML_SCHEMATRON_ENABLED' type='macro'/> <exports symbol='LIBXML_HTTP_ENABLED' type='macro'/> <exports symbol='LIBXML_OUTPUT_ENABLED' type='macro'/> <exports symbol='WITH_TRIO' type='macro'/> @@ -3188,6 +3300,7 @@ <exports symbol='DEBUG_MEMORY_LOCATION' type='macro'/> <exports symbol='LIBXML_TEST_VERSION' type='macro'/> <exports symbol='LIBXML_XPATH_ENABLED' type='macro'/> + <exports symbol='LIBXML_EXPR_ENABLED' type='macro'/> <exports symbol='LIBXML_VALID_ENABLED' type='macro'/> <exports symbol='LIBXML_TREE_ENABLED' type='macro'/> <exports symbol='LIBXML_PATTERN_ENABLED' type='macro'/> @@ -3286,8 +3399,10 @@ <description>API for the XML Path Language implementation XML Path Language implementation XPath is a language for addressing parts of an XML document, designed to be used by both XSLT and XPointer</description> <author>Daniel Veillard </author> <exports symbol='xmlXPathNodeSetGetLength' type='macro'/> - <exports symbol='xmlXPathNodeSetIsEmpty' type='macro'/> + <exports symbol='XML_XPATH_CHECKNS' type='macro'/> + <exports symbol='XML_XPATH_NOVAR' type='macro'/> <exports symbol='xmlXPathNodeSetItem' type='macro'/> + <exports symbol='xmlXPathNodeSetIsEmpty' type='macro'/> <exports symbol='XPATH_NUMBER_ERROR' type='enum'/> <exports symbol='XPATH_BOOLEAN' type='enum'/> <exports symbol='XPATH_START_LITERAL_ERROR' type='enum'/> @@ -3736,6 +3851,9 @@ <macro name='LIBXML_DOTTED_VERSION' file='xmlversion'> <info>the version string like "1.2.3"</info> </macro> + <macro name='LIBXML_EXPR_ENABLED' file='xmlversion'> + <info>Whether the formal expressions interfaces are compiled in</info> + </macro> <macro name='LIBXML_FTP_ENABLED' file='xmlversion'> <info>Whether the FTP support is configured in</info> </macro> @@ -3758,6 +3876,7 @@ <info>Whether the module interfaces are compiled in</info> </macro> <macro name='LIBXML_MODULE_EXTENSION' file='xmlversion'> + <info>the string suffix used by dynamic modules (usually shared libraries)</info> </macro> <macro name='LIBXML_OUTPUT_ENABLED' file='xmlversion'> <info>Whether the serialization/saving support is configured in</info> @@ -3780,6 +3899,9 @@ <macro name='LIBXML_SCHEMAS_ENABLED' file='xmlversion'> <info>Whether the Schemas validation interfaces are compiled in</info> </macro> + <macro name='LIBXML_SCHEMATRON_ENABLED' file='xmlversion'> + <info>Whether the Schematron validation interfaces are compiled in</info> + </macro> <macro name='LIBXML_TEST_VERSION' file='xmlversion'> <info>Macro to check that the libxml version in use is compatible with the version the software has been compiled against</info> </macro> @@ -3866,6 +3988,8 @@ </macro> <macro name='XMLCALL' file='xmlexports'> </macro> + <macro name='XMLCDECL' file='xmlexports'> + </macro> <macro name='XMLPUBFUN' file='xmlexports'> </macro> <macro name='XMLPUBVAR' file='xmlexports'> @@ -4165,6 +4289,12 @@ <macro name='XML_XML_NAMESPACE' file='tree'> <info>This is the namespace for the special xml: prefix predefined in the XML Namespace specification.</info> </macro> + <macro name='XML_XPATH_CHECKNS' file='xpath'> + <info>check namespaces at compilation</info> + </macro> + <macro name='XML_XPATH_NOVAR' file='xpath'> + <info>forbid variables in expression</info> + </macro> <macro name='XP_ERROR' file='xpathInternals'> <info>Macro to raise an XPath error and return.</info> <arg name='X' info='the error code'/> @@ -4354,11 +4484,13 @@ <enum name='HTML_DEPRECATED' file='HTMLparser' value='2' type='htmlStatus'/> <enum name='HTML_INVALID' file='HTMLparser' value='1' type='htmlStatus'/> <enum name='HTML_NA' file='HTMLparser' value='0' type='htmlStatus' info='something we don't check at all'/> + <enum name='HTML_PARSE_COMPACT' file='HTMLparser' value='65536' type='htmlParserOption' info=' compact small text nodes'/> <enum name='HTML_PARSE_NOBLANKS' file='HTMLparser' value='256' type='htmlParserOption' info='remove blank nodes'/> <enum name='HTML_PARSE_NOERROR' file='HTMLparser' value='32' type='htmlParserOption' info='suppress error reports'/> - <enum name='HTML_PARSE_NONET' file='HTMLparser' value='2048' type='htmlParserOption' info=' Forbid network access'/> + <enum name='HTML_PARSE_NONET' file='HTMLparser' value='2048' type='htmlParserOption' info='Forbid network access'/> <enum name='HTML_PARSE_NOWARNING' file='HTMLparser' value='64' type='htmlParserOption' info='suppress warning reports'/> <enum name='HTML_PARSE_PEDANTIC' file='HTMLparser' value='128' type='htmlParserOption' info='pedantic error reporting'/> + <enum name='HTML_PARSE_RECOVER' file='HTMLparser' value='1' type='htmlParserOption' info='Relaxed parsing'/> <enum name='HTML_REQUIRED' file='HTMLparser' value='12' type='htmlStatus' info=' VALID bit set so ( & HTML_VALID ) is TRUE'/> <enum name='HTML_VALID' file='HTMLparser' value='4' type='htmlStatus'/> <enum name='XLINK_ACTUATE_AUTO' file='xlink' value='1' type='xlinkActuate'/> @@ -4434,7 +4566,7 @@ <enum name='XML_CHAR_ENCODING_UTF16BE' file='encoding' value='3' type='xmlCharEncoding' info='UTF-16 big endian'/> <enum name='XML_CHAR_ENCODING_UTF16LE' file='encoding' value='2' type='xmlCharEncoding' info='UTF-16 little endian'/> <enum name='XML_CHAR_ENCODING_UTF8' file='encoding' value='1' type='xmlCharEncoding' info='UTF-8'/> - <enum name='XML_CHECK_' file='xmlerror' value='5038' type='xmlParserErrors' info='5033'/> + <enum name='XML_CHECK_' file='xmlerror' value='6005' type='xmlParserErrors' info='5033'/> <enum name='XML_CHECK_ENTITY_TYPE' file='xmlerror' value='5012' type='xmlParserErrors' info='5012'/> <enum name='XML_CHECK_FOUND_ATTRIBUTE' file='xmlerror' value='5001' type='xmlParserErrors' info='5001'/> <enum name='XML_CHECK_FOUND_CDATA' file='xmlerror' value='5003' type='xmlParserErrors' info='5003'/> @@ -4473,7 +4605,7 @@ <enum name='XML_CHECK_WRONG_NEXT' file='xmlerror' value='5021' type='xmlParserErrors' info='5021'/> <enum name='XML_CHECK_WRONG_PARENT' file='xmlerror' value='5029' type='xmlParserErrors' info='5029'/> <enum name='XML_CHECK_WRONG_PREV' file='xmlerror' value='5019' type='xmlParserErrors' info='5019'/> - <enum name='XML_CHECK_X' file='xmlerror' value='5039' type='xmlParserErrors' info=' 503'/> + <enum name='XML_CHECK_X' file='xmlerror' value='6006' type='xmlParserErrors' info=' 503'/> <enum name='XML_COMMENT_NODE' file='tree' value='8' type='xmlElementType'/> <enum name='XML_DOCB_DOCUMENT_NODE' file='tree' value='21' type='xmlElementType'/> <enum name='XML_DOCUMENT_FRAG_NODE' file='tree' value='11' type='xmlElementType'/> @@ -4642,9 +4774,46 @@ <enum name='XML_ERR_WARNING' file='xmlerror' value='1' type='xmlErrorLevel' info='A simple warning'/> <enum name='XML_ERR_XMLDECL_NOT_FINISHED' file='xmlerror' value='57' type='xmlParserErrors' info='57'/> <enum name='XML_ERR_XMLDECL_NOT_STARTED' file='xmlerror' value='56' type='xmlParserErrors' info='56'/> + <enum name='XML_EXP_ATOM' file='xmlregexp' value='2' type='xmlExpNodeType'/> + <enum name='XML_EXP_COUNT' file='xmlregexp' value='5' type='xmlExpNodeType'/> + <enum name='XML_EXP_EMPTY' file='xmlregexp' value='0' type='xmlExpNodeType'/> + <enum name='XML_EXP_FORBID' file='xmlregexp' value='1' type='xmlExpNodeType'/> + <enum name='XML_EXP_OR' file='xmlregexp' value='4' type='xmlExpNodeType'/> + <enum name='XML_EXP_SEQ' file='xmlregexp' value='3' type='xmlExpNodeType'/> <enum name='XML_EXTERNAL_GENERAL_PARSED_ENTITY' file='entities' value='2' type='xmlEntityType'/> <enum name='XML_EXTERNAL_GENERAL_UNPARSED_ENTITY' file='entities' value='3' type='xmlEntityType'/> <enum name='XML_EXTERNAL_PARAMETER_ENTITY' file='entities' value='5' type='xmlEntityType'/> + <enum name='XML_FEATURE_AUTOMATA' file='parser' value='23' type='xmlFeature'/> + <enum name='XML_FEATURE_C14N' file='parser' value='14' type='xmlFeature'/> + <enum name='XML_FEATURE_CATALOG' file='parser' value='15' type='xmlFeature'/> + <enum name='XML_FEATURE_DEBUG' file='parser' value='28' type='xmlFeature'/> + <enum name='XML_FEATURE_DEBUG_MEM' file='parser' value='29' type='xmlFeature'/> + <enum name='XML_FEATURE_DEBUG_RUN' file='parser' value='30' type='xmlFeature'/> + <enum name='XML_FEATURE_EXPR' file='parser' value='24' type='xmlFeature'/> + <enum name='XML_FEATURE_FTP' file='parser' value='9' type='xmlFeature'/> + <enum name='XML_FEATURE_HTML' file='parser' value='12' type='xmlFeature'/> + <enum name='XML_FEATURE_HTTP' file='parser' value='10' type='xmlFeature'/> + <enum name='XML_FEATURE_ICONV' file='parser' value='19' type='xmlFeature'/> + <enum name='XML_FEATURE_ISO8859X' file='parser' value='20' type='xmlFeature'/> + <enum name='XML_FEATURE_LEGACY' file='parser' value='13' type='xmlFeature'/> + <enum name='XML_FEATURE_MODULES' file='parser' value='27' type='xmlFeature'/> + <enum name='XML_FEATURE_NONE' file='parser' value='99999' type='xmlFeature' info=' just to be sure of allocation size'/> + <enum name='XML_FEATURE_OUTPUT' file='parser' value='3' type='xmlFeature'/> + <enum name='XML_FEATURE_PATTERN' file='parser' value='6' type='xmlFeature'/> + <enum name='XML_FEATURE_PUSH' file='parser' value='4' type='xmlFeature'/> + <enum name='XML_FEATURE_READER' file='parser' value='5' type='xmlFeature'/> + <enum name='XML_FEATURE_REGEXP' file='parser' value='22' type='xmlFeature'/> + <enum name='XML_FEATURE_SAX1' file='parser' value='8' type='xmlFeature'/> + <enum name='XML_FEATURE_SCHEMAS' file='parser' value='25' type='xmlFeature'/> + <enum name='XML_FEATURE_SCHEMATRON' file='parser' value='26' type='xmlFeature'/> + <enum name='XML_FEATURE_THREAD' file='parser' value='1' type='xmlFeature'/> + <enum name='XML_FEATURE_TREE' file='parser' value='2' type='xmlFeature'/> + <enum name='XML_FEATURE_UNICODE' file='parser' value='21' type='xmlFeature'/> + <enum name='XML_FEATURE_VALID' file='parser' value='11' type='xmlFeature'/> + <enum name='XML_FEATURE_WRITER' file='parser' value='7' type='xmlFeature'/> + <enum name='XML_FEATURE_XINCLUDE' file='parser' value='18' type='xmlFeature'/> + <enum name='XML_FEATURE_XPATH' file='parser' value='16' type='xmlFeature'/> + <enum name='XML_FEATURE_XPTR' file='parser' value='17' type='xmlFeature'/> <enum name='XML_FROM_C14N' file='xmlerror' value='21' type='xmlErrorDomain' info='The Canonicalization module'/> <enum name='XML_FROM_CATALOG' file='xmlerror' value='20' type='xmlErrorDomain' info='The Catalog module'/> <enum name='XML_FROM_CHECK' file='xmlerror' value='24' type='xmlErrorDomain' info='The error checking module'/> @@ -4653,9 +4822,10 @@ <enum name='XML_FROM_FTP' file='xmlerror' value='9' type='xmlErrorDomain' info='The FTP module'/> <enum name='XML_FROM_HTML' file='xmlerror' value='5' type='xmlErrorDomain' info='The HTML parser'/> <enum name='XML_FROM_HTTP' file='xmlerror' value='10' type='xmlErrorDomain' info='The HTTP module'/> + <enum name='XML_FROM_I18N' file='xmlerror' value='27' type='xmlErrorDomain' info=' The module handling character conversion'/> <enum name='XML_FROM_IO' file='xmlerror' value='8' type='xmlErrorDomain' info='The Input/Output stack'/> <enum name='XML_FROM_MEMORY' file='xmlerror' value='6' type='xmlErrorDomain' info='The memory allocator'/> - <enum name='XML_FROM_MODULE' file='xmlerror' value='26' type='xmlErrorDomain' info=' The dynamically loaded module modul'/> + <enum name='XML_FROM_MODULE' file='xmlerror' value='26' type='xmlErrorDomain' info='The dynamically loaded module modul'/> <enum name='XML_FROM_NAMESPACE' file='xmlerror' value='3' type='xmlErrorDomain' info='The XML Namespace module'/> <enum name='XML_FROM_NONE' file='xmlerror' value='0' type='xmlErrorDomain'/> <enum name='XML_FROM_OUTPUT' file='xmlerror' value='7' type='xmlErrorDomain' info='The serialization code'/> @@ -4682,6 +4852,11 @@ <enum name='XML_HTTP_UNKNOWN_HOST' file='xmlerror' value='2022' type='xmlParserErrors' info='2022'/> <enum name='XML_HTTP_URL_SYNTAX' file='xmlerror' value='2020' type='xmlParserErrors'/> <enum name='XML_HTTP_USE_IP' file='xmlerror' value='2021' type='xmlParserErrors' info='2021'/> + <enum name='XML_I18N_CONV_FAILED' file='xmlerror' value='6003' type='xmlParserErrors' info='6003'/> + <enum name='XML_I18N_EXCESS_HANDLER' file='xmlerror' value='6002' type='xmlParserErrors' info='6002'/> + <enum name='XML_I18N_NO_HANDLER' file='xmlerror' value='6001' type='xmlParserErrors' info='6001'/> + <enum name='XML_I18N_NO_NAME' file='xmlerror' value='6000' type='xmlParserErrors'/> + <enum name='XML_I18N_NO_OUTPUT' file='xmlerror' value='6004' type='xmlParserErrors' info='6004'/> <enum name='XML_INTERNAL_GENERAL_ENTITY' file='entities' value='1' type='xmlEntityType'/> <enum name='XML_INTERNAL_PARAMETER_ENTITY' file='entities' value='4' type='xmlEntityType'/> <enum name='XML_INTERNAL_PREDEFINED_ENTITY' file='entities' value='6' type='xmlEntityType'/> @@ -4779,6 +4954,7 @@ <enum name='XML_PARSER_SUBST_ENTITIES' file='xmlreader' value='4' type='xmlParserProperties'/> <enum name='XML_PARSER_SYSTEM_LITERAL' file='parser' value='13' type='xmlParserInputState' info='within a SYSTEM value'/> <enum name='XML_PARSER_VALIDATE' file='xmlreader' value='3' type='xmlParserProperties'/> + <enum name='XML_PARSE_COMPACT' file='parser' value='65536' type='xmlParserOption' info=' compact small text nodes'/> <enum name='XML_PARSE_DOM' file='parser' value='1' type='xmlParserMode'/> <enum name='XML_PARSE_DTDATTR' file='parser' value='8' type='xmlParserOption' info='default DTD attributes'/> <enum name='XML_PARSE_DTDLOAD' file='parser' value='4' type='xmlParserOption' info='load the external subset'/> @@ -4790,7 +4966,7 @@ <enum name='XML_PARSE_NOERROR' file='parser' value='32' type='xmlParserOption' info='suppress error reports'/> <enum name='XML_PARSE_NONET' file='parser' value='2048' type='xmlParserOption' info='Forbid network access'/> <enum name='XML_PARSE_NOWARNING' file='parser' value='64' type='xmlParserOption' info='suppress warning reports'/> - <enum name='XML_PARSE_NOXINCNODE' file='parser' value='32768' type='xmlParserOption' info=' do not generate XINCLUDE START/END nodes'/> + <enum name='XML_PARSE_NOXINCNODE' file='parser' value='32768' type='xmlParserOption' info='do not generate XINCLUDE START/END nodes'/> <enum name='XML_PARSE_NSCLEAN' file='parser' value='8192' type='xmlParserOption' info='remove redundant namespaces declarations'/> <enum name='XML_PARSE_PEDANTIC' file='parser' value='128' type='xmlParserOption' info='pedantic error reporting'/> <enum name='XML_PARSE_PUSH_DOM' file='parser' value='3' type='xmlParserMode'/> @@ -4992,8 +5168,9 @@ <enum name='XML_RNGP_XMLNS_NAME' file='xmlerror' value='1121' type='xmlParserErrors' info='1121'/> <enum name='XML_RNGP_XML_NS' file='xmlerror' value='1122' type='xmlParserErrors' info='1122'/> <enum name='XML_SAVE_CHAR_INVALID' file='xmlerror' value='1401' type='xmlParserErrors' info='1401'/> - <enum name='XML_SAVE_FORMAT' file='xmlsave' value='1' type='xmlSaveOption' info=' format save output'/> + <enum name='XML_SAVE_FORMAT' file='xmlsave' value='1' type='xmlSaveOption' info='format save output'/> <enum name='XML_SAVE_NOT_UTF8' file='xmlerror' value='1400' type='xmlParserErrors'/> + <enum name='XML_SAVE_NO_DECL' file='xmlsave' value='2' type='xmlSaveOption' info=' drop the xml declaration'/> <enum name='XML_SAVE_NO_DOCTYPE' file='xmlerror' value='1402' type='xmlParserErrors' info='1402'/> <enum name='XML_SAVE_UNKNOWN_ENCODING' file='xmlerror' value='1403' type='xmlParserErrors' info='1403'/> <enum name='XML_SCHEMAP_ATTRFORMDEFAULT_VALUE' file='xmlerror' value='1701' type='xmlParserErrors' info='1701'/> @@ -5135,6 +5312,7 @@ <enum name='XML_SCHEMAP_SRC_IMPORT_3_2' file='xmlerror' value='1796' type='xmlParserErrors' info='1796'/> <enum name='XML_SCHEMAP_SRC_INCLUDE' file='xmlerror' value='3050' type='xmlParserErrors' info='3050'/> <enum name='XML_SCHEMAP_SRC_LIST_ITEMTYPE_OR_SIMPLETYPE' file='xmlerror' value='3006' type='xmlParserErrors' info='3006'/> + <enum name='XML_SCHEMAP_SRC_REDEFINE' file='xmlerror' value='3081' type='xmlParserErrors' info='3081'/> <enum name='XML_SCHEMAP_SRC_RESOLVE' file='xmlerror' value='3004' type='xmlParserErrors' info='3004'/> <enum name='XML_SCHEMAP_SRC_RESTRICTION_BASE_OR_SIMPLETYPE' file='xmlerror' value='3005' type='xmlParserErrors' info='3005'/> <enum name='XML_SCHEMAP_SRC_SIMPLE_TYPE_1' file='xmlerror' value='3000' type='xmlParserErrors'/> @@ -5251,6 +5429,12 @@ <enum name='XML_SCHEMAS_ULONG' file='schemasInternals' value='38' type='xmlSchemaValType'/> <enum name='XML_SCHEMAS_UNKNOWN' file='schemasInternals' value='0' type='xmlSchemaValType'/> <enum name='XML_SCHEMAS_USHORT' file='schemasInternals' value='40' type='xmlSchemaValType'/> + <enum name='XML_SCHEMATRON_OUT_BUFFER' file='schematron' value='512' type='xmlSchematronValidOptions' info='output to a buffer'/> + <enum name='XML_SCHEMATRON_OUT_FILE' file='schematron' value='256' type='xmlSchematronValidOptions' info='output to a file descriptor'/> + <enum name='XML_SCHEMATRON_OUT_IO' file='schematron' value='1024' type='xmlSchematronValidOptions' info=' output to I/O mechanism'/> + <enum name='XML_SCHEMATRON_OUT_QUIET' file='schematron' value='1' type='xmlSchematronValidOptions' info='quiet no report'/> + <enum name='XML_SCHEMATRON_OUT_TEXT' file='schematron' value='2' type='xmlSchematronValidOptions' info='build a textual report'/> + <enum name='XML_SCHEMATRON_OUT_XML' file='schematron' value='4' type='xmlSchematronValidOptions' info='output SVRL'/> <enum name='XML_SCHEMAV_ATTRINVALID' file='xmlerror' value='1821' type='xmlParserErrors' info='1821'/> <enum name='XML_SCHEMAV_ATTRUNKNOWN' file='xmlerror' value='1820' type='xmlParserErrors' info='1820'/> <enum name='XML_SCHEMAV_CONSTRUCT' file='xmlerror' value='1817' type='xmlParserErrors' info='1817'/> @@ -5757,6 +5941,12 @@ actually an xmlCharEncoding'/> <typedef name='xmlErrorDomain' file='xmlerror' type='enum'/> <typedef name='xmlErrorLevel' file='xmlerror' type='enum'/> <typedef name='xmlErrorPtr' file='xmlerror' type='xmlError *'/> + <struct name='xmlExpCtxt' file='xmlregexp' type='struct _xmlExpCtxt'/> + <typedef name='xmlExpCtxtPtr' file='xmlregexp' type='xmlExpCtxt *'/> + <struct name='xmlExpNode' file='xmlregexp' type='struct _xmlExpNode'/> + <typedef name='xmlExpNodePtr' file='xmlregexp' type='xmlExpNode *'/> + <typedef name='xmlExpNodeType' file='xmlregexp' type='enum'/> + <typedef name='xmlFeature' file='parser' type='enum'/> <struct name='xmlGlobalState' file='globals' type='struct _xmlGlobalState'> <field name='xmlParserVersion' type='const char *' info=''/> <field name='xmlDefaultSAXLocator' type='xmlSAXLocator' info=''/> @@ -6317,6 +6507,13 @@ actually an xmlCharEncoding'/> </struct> <typedef name='xmlSchemaWildcardNsPtr' file='schemasInternals' type='xmlSchemaWildcardNs *'/> <typedef name='xmlSchemaWildcardPtr' file='schemasInternals' type='xmlSchemaWildcard *'/> + <struct name='xmlSchematron' file='schematron' type='struct _xmlSchematron'/> + <struct name='xmlSchematronParserCtxt' file='schematron' type='struct _xmlSchematronParserCtxt'/> + <typedef name='xmlSchematronParserCtxtPtr' file='schematron' type='xmlSchematronParserCtxt *'/> + <typedef name='xmlSchematronPtr' file='schematron' type='xmlSchematron *'/> + <struct name='xmlSchematronValidCtxt' file='schematron' type='struct _xmlSchematronValidCtxt'/> + <typedef name='xmlSchematronValidCtxtPtr' file='schematron' type='xmlSchematronValidCtxt *'/> + <typedef name='xmlSchematronValidOptions' file='schematron' type='enum'/> <struct name='xmlShellCtxt' file='debugXML' type='struct _xmlShellCtxt'> <field name='filename' type='char *' info=''/> <field name='doc' type='xmlDocPtr' info=''/> @@ -6418,6 +6615,7 @@ actually an xmlCharEncoding'/> <field name='lastError' type='xmlError' info=' the last error'/> <field name='debugNode' type='xmlNodePtr' info=' the source node XSLT dictionnary'/> <field name='dict' type='xmlDictPtr' info=' dictionnary if any'/> + <field name='flags' type='int' info=' flags to control compilation'/> </struct> <typedef name='xmlXPathContextPtr' file='xpath' type='xmlXPathContext *'/> <typedef name='xmlXPathError' file='xpath' type='enum'/> @@ -6464,6 +6662,8 @@ actually an xmlCharEncoding'/> </struct> <typedef name='xmlXPathVariablePtr' file='xpath' type='xmlXPathVariable *'/> <variable name='docbDefaultSAXHandler' file='globals' type='xmlSAXHandlerV1'/> + <variable name='emptyExp' file='xmlregexp' type='xmlExpNodePtr'/> + <variable name='forbiddenExp' file='xmlregexp' type='xmlExpNodePtr'/> <variable name='htmlDefaultSAXHandler' file='globals' type='xmlSAXHandlerV1'/> <variable name='oldXMLWDcompatibility' file='globals' type='int'/> <variable name='xmlBufferAllocScheme' file='globals' type='xmlBufferAllocationScheme'/> @@ -7963,6 +8163,17 @@ actually an xmlCharEncoding'/> <arg name='from' type='xmlAutomataStatePtr' info='the starting point of the transition'/> <arg name='to' type='xmlAutomataStatePtr' info='the target point of the transition or NULL'/> </function> + <function name='xmlAutomataNewNegTrans' file='xmlautomata' module='xmlregexp'> + <cond>defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED)</cond> + <info>If @to is NULL, this creates first a new target state in the automata and then adds a transition from the @from state to the target state activated by any value except (@token,@token2) Note that if @token2 is not NULL, then (X, NULL) won't match to follow # the semantic of XSD ##other</info> + <return type='xmlAutomataStatePtr' info='the target state or NULL in case of error'/> + <arg name='am' type='xmlAutomataPtr' info='an automata'/> + <arg name='from' type='xmlAutomataStatePtr' info='the starting point of the transition'/> + <arg name='to' type='xmlAutomataStatePtr' info='the target point of the transition or NULL'/> + <arg name='token' type='const xmlChar *' info='the first input string associated to that transition'/> + <arg name='token2' type='const xmlChar *' info='the second input string associated to that transition'/> + <arg name='data' type='void *' info='data passed to the callback function if the transition is activated'/> + </function> <function name='xmlAutomataNewOnceTrans' file='xmlautomata' module='xmlregexp'> <cond>defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED)</cond> <info>If @to is NULL, this creates first a new target state in the automata and then adds a transition from the @from state to the target state activated by a succession of input of value @token and whose number is between @min and @max, moreover that transition can only be crossed once.</info> @@ -9123,6 +9334,146 @@ actually an xmlCharEncoding'/> <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/> <arg name='extra' type='const char *' info='extra informations'/> </function> + <function name='xmlExpCtxtNbCons' file='xmlregexp' module='xmlregexp'> + <cond>defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED)</cond> + <info>Debugging facility provides the number of allocated nodes over lifetime</info> + <return type='int' info='the number of nodes ever allocated or -1 in case of error'/> + <arg name='ctxt' type='xmlExpCtxtPtr' info='an expression context'/> + </function> + <function name='xmlExpCtxtNbNodes' file='xmlregexp' module='xmlregexp'> + <cond>defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED)</cond> + <info>Debugging facility provides the number of allocated nodes at a that point</info> + <return type='int' info='the number of nodes in use or -1 in case of error'/> + <arg name='ctxt' type='xmlExpCtxtPtr' info='an expression context'/> + </function> + <function name='xmlExpDump' file='xmlregexp' module='xmlregexp'> + <cond>defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED)</cond> + <info>Serialize the expression as compiled to the buffer</info> + <return type='void'/> + <arg name='buf' type='xmlBufferPtr' info='a buffer to receive the output'/> + <arg name='expr' type='xmlExpNodePtr' info='the compiled expression'/> + </function> + <function name='xmlExpExpDerive' file='xmlregexp' module='xmlregexp'> + <cond>defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED)</cond> + <info>Evaluates the expression resulting from @exp consuming a sub expression @sub Based on algebraic derivation and sometimes direct Brzozowski derivation it usually tatkes less than linear time and can handle expressions generating infinite languages.</info> + <return type='xmlExpNodePtr' info='the resulting expression or NULL in case of internal error, the result must be freed'/> + <arg name='ctxt' type='xmlExpCtxtPtr' info='the expressions context'/> + <arg name='exp' type='xmlExpNodePtr' info='the englobing expression'/> + <arg name='sub' type='xmlExpNodePtr' info='the subexpression'/> + </function> + <function name='xmlExpFree' file='xmlregexp' module='xmlregexp'> + <cond>defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED)</cond> + <info>Dereference the expression</info> + <return type='void'/> + <arg name='ctxt' type='xmlExpCtxtPtr' info='the expression context'/> + <arg name='exp' type='xmlExpNodePtr' info='the expression'/> + </function> + <function name='xmlExpFreeCtxt' file='xmlregexp' module='xmlregexp'> + <cond>defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED)</cond> + <info>Free an expression context</info> + <return type='void'/> + <arg name='ctxt' type='xmlExpCtxtPtr' info='an expression context'/> + </function> + <function name='xmlExpGetLanguage' file='xmlregexp' module='xmlregexp'> + <cond>defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED)</cond> + <info>Find all the strings used in @exp and store them in @list</info> + <return type='int' info='the number of unique strings found, -1 in case of errors and -2 if there is more than @len strings'/> + <arg name='ctxt' type='xmlExpCtxtPtr' info='the expression context'/> + <arg name='exp' type='xmlExpNodePtr' info='the expression'/> + <arg name='list' type='const xmlChar **' info='where to store the tokens'/> + <arg name='len' type='int' info='the allocated lenght of @list'/> + </function> + <function name='xmlExpGetStart' file='xmlregexp' module='xmlregexp'> + <cond>defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED)</cond> + <info>Find all the strings that appears at the start of the languages accepted by @exp and store them in @list. E.g. for (a, b) | c it will return the list [a, c]</info> + <return type='int' info='the number of unique strings found, -1 in case of errors and -2 if there is more than @len strings'/> + <arg name='ctxt' type='xmlExpCtxtPtr' info='the expression context'/> + <arg name='exp' type='xmlExpNodePtr' info='the expression'/> + <arg name='list' type='const xmlChar **' info='where to store the tokens'/> + <arg name='len' type='int' info='the allocated lenght of @list'/> + </function> + <function name='xmlExpIsNillable' file='xmlregexp' module='xmlregexp'> + <cond>defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED)</cond> + <info>Finds if the expression is nillable, i.e. if it accepts the empty sequqnce</info> + <return type='int' info='1 if nillable, 0 if not and -1 in case of error'/> + <arg name='exp' type='xmlExpNodePtr' info='the expression'/> + </function> + <function name='xmlExpMaxToken' file='xmlregexp' module='xmlregexp'> + <cond>defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED)</cond> + <info>Indicate the maximum number of input a expression can accept</info> + <return type='int' info='the maximum length or -1 in case of error'/> + <arg name='expr' type='xmlExpNodePtr' info='a compiled expression'/> + </function> + <function name='xmlExpNewAtom' file='xmlregexp' module='xmlregexp'> + <cond>defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED)</cond> + <info>Get the atom associated to this name from that context</info> + <return type='xmlExpNodePtr' info='the node or NULL in case of error'/> + <arg name='ctxt' type='xmlExpCtxtPtr' info='the expression context'/> + <arg name='name' type='const xmlChar *' info='the atom name'/> + <arg name='len' type='int' info='the atom name lenght in byte (or -1);'/> + </function> + <function name='xmlExpNewCtxt' file='xmlregexp' module='xmlregexp'> + <cond>defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED)</cond> + <info>Creates a new context for manipulating expressions</info> + <return type='xmlExpCtxtPtr' info='the context or NULL in case of error'/> + <arg name='maxNodes' type='int' info='the maximum number of nodes'/> + <arg name='dict' type='xmlDictPtr' info='optional dictionnary to use internally'/> + </function> + <function name='xmlExpNewOr' file='xmlregexp' module='xmlregexp'> + <cond>defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED)</cond> + <info>Get the atom associated to the choice @left | @right Note that @left and @right are consumed in the operation, to keep an handle on them use xmlExpRef() and use xmlExpFree() to release them, this is true even in case of failure (unless ctxt == NULL).</info> + <return type='xmlExpNodePtr' info='the node or NULL in case of error'/> + <arg name='ctxt' type='xmlExpCtxtPtr' info='the expression context'/> + <arg name='left' type='xmlExpNodePtr' info='left expression'/> + <arg name='right' type='xmlExpNodePtr' info='right expression'/> + </function> + <function name='xmlExpNewRange' file='xmlregexp' module='xmlregexp'> + <cond>defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED)</cond> + <info>Get the atom associated to the range (@subset){@min, @max} Note that @subset is consumed in the operation, to keep an handle on it use xmlExpRef() and use xmlExpFree() to release it, this is true even in case of failure (unless ctxt == NULL).</info> + <return type='xmlExpNodePtr' info='the node or NULL in case of error'/> + <arg name='ctxt' type='xmlExpCtxtPtr' info='the expression context'/> + <arg name='subset' type='xmlExpNodePtr' info='the expression to be repeated'/> + <arg name='min' type='int' info='the lower bound for the repetition'/> + <arg name='max' type='int' info='the upper bound for the repetition, -1 means infinite'/> + </function> + <function name='xmlExpNewSeq' file='xmlregexp' module='xmlregexp'> + <cond>defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED)</cond> + <info>Get the atom associated to the sequence @left , @right Note that @left and @right are consumed in the operation, to keep an handle on them use xmlExpRef() and use xmlExpFree() to release them, this is true even in case of failure (unless ctxt == NULL).</info> + <return type='xmlExpNodePtr' info='the node or NULL in case of error'/> + <arg name='ctxt' type='xmlExpCtxtPtr' info='the expression context'/> + <arg name='left' type='xmlExpNodePtr' info='left expression'/> + <arg name='right' type='xmlExpNodePtr' info='right expression'/> + </function> + <function name='xmlExpParse' file='xmlregexp' module='xmlregexp'> + <cond>defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED)</cond> + <info>Minimal parser for regexps, it understand the following constructs - string terminals - choice operator | - sequence operator , - subexpressions (...) - usual cardinality operators + * and ? - finite sequences { min, max } - infinite sequences { min, * } There is minimal checkings made especially no checking on strings values</info> + <return type='xmlExpNodePtr' info='a new expression or NULL in case of failure'/> + <arg name='ctxt' type='xmlExpCtxtPtr' info='the expressions context'/> + <arg name='expr' type='const char *' info='the 0 terminated string'/> + </function> + <function name='xmlExpRef' file='xmlregexp' module='xmlregexp'> + <cond>defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED)</cond> + <info>Increase the reference count of the expression</info> + <return type='void'/> + <arg name='exp' type='xmlExpNodePtr' info='the expression'/> + </function> + <function name='xmlExpStringDerive' file='xmlregexp' module='xmlregexp'> + <cond>defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED)</cond> + <info>Do one step of Brzozowski derivation of the expression @exp with respect to the input string</info> + <return type='xmlExpNodePtr' info='the resulting expression or NULL in case of internal error'/> + <arg name='ctxt' type='xmlExpCtxtPtr' info='the expression context'/> + <arg name='exp' type='xmlExpNodePtr' info='the expression'/> + <arg name='str' type='const xmlChar *' info='the string'/> + <arg name='len' type='int' info='the string len in bytes if available'/> + </function> + <function name='xmlExpSubsume' file='xmlregexp' module='xmlregexp'> + <cond>defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED)</cond> + <info>Check whether @exp accepts all the languages accexpted by @sub the input being a subexpression.</info> + <return type='int' info='1 if true 0 if false and -1 in case of failure.'/> + <arg name='ctxt' type='xmlExpCtxtPtr' info='the expressions context'/> + <arg name='exp' type='xmlExpNodePtr' info='the englobing expression'/> + <arg name='sub' type='xmlExpNodePtr' info='the subexpression'/> + </function> <functype name='xmlExternalEntityLoader' file='parser' module='parser'> <info>External entity loaders types.</info> <return type='xmlParserInputPtr' info='the entity input parser.'/> @@ -9539,6 +9890,11 @@ actually an xmlCharEncoding'/> <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/> <arg name='entity' type='xmlEntityPtr' info='an XML entity pointer.'/> </function> + <function name='xmlHasFeature' file='parser' module='parser'> + <info>Examines if the library has been compiled with a given feature.</info> + <return type='int' info='a non-zero value if the feature exist, otherwise zero. Returns zero (0) if the feature does not exist or an unknown unknown feature is requested, non-zero otherwise.'/> + <arg name='feature' type='xmlFeature' info='the feature to be examined'/> + </function> <function name='xmlHasNsProp' file='tree' module='tree'> <info>Search for an attribute associated to a node This attribute has to be anchored in the namespace specified. This does the entity substitution. This function looks in DTD attribute declaration for #FIXED or default declaration values unless DTD use has been turned off. Note that a namespace of NULL indicates to use the default namespace.</info> <return type='xmlAttrPtr' info='the attribute or the attribute declaration or NULL if neither was found.'/> @@ -10171,7 +10527,7 @@ actually an xmlCharEncoding'/> <arg name='pathss' type='const char *' info='a list of directories separated by a colon or a space.'/> </function> <function name='xmlLoadExternalEntity' file='parser' module='xmlIO'> - <info>Load an external entity, note that the use of this function for unparsed entities may generate problems TODO: a more generic External entity API must be designed</info> + <info>Load an external entity, note that the use of this function for unparsed entities may generate problems</info> <return type='xmlParserInputPtr' info='the xmlParserInputPtr or NULL'/> <arg name='URL' type='const char *' info='the URL for the entity to load'/> <arg name='ID' type='const char *' info='the Public ID for the entity to load'/> @@ -11530,6 +11886,12 @@ actually an xmlCharEncoding'/> <return type='xmlURIPtr' info='a newly built xmlURIPtr or NULL in case of error'/> <arg name='str' type='const char *' info='the URI string to analyze'/> </function> + <function name='xmlParseURIRaw' file='uri' module='uri'> + <info>Parse an URI but allows to keep intact the original fragments. URI-reference = [ absoluteURI | relativeURI ] [ "#" fragment ]</info> + <return type='xmlURIPtr' info='a newly built xmlURIPtr or NULL in case of error'/> + <arg name='str' type='const char *' info='the URI string to analyze'/> + <arg name='raw' type='int' info='if 1 unescaping of URI pieces are disabled'/> + </function> <function name='xmlParseURIReference' file='uri' module='uri'> <info>Parse an URI reference string and fills in the appropriate fields of the @uri structure URI-reference = [ absoluteURI | relativeURI ] [ "#" fragment ]</info> <return type='int' info='0 or the error code'/> @@ -11740,6 +12102,12 @@ actually an xmlCharEncoding'/> <return type='int' info='-2 if no limit (using //), otherwise the depth, and -1 in case of error'/> <arg name='comp' type='xmlPatternPtr' info='the precompiled pattern'/> </function> + <function name='xmlPatternMinDepth' file='pattern' module='pattern'> + <cond>defined(LIBXML_PATTERN_ENABLED)</cond> + <info>Check the minimum depth reachable by a pattern, 0 mean the / or . are part of the set.</info> + <return type='int' info='-1 in case of error otherwise the depth,'/> + <arg name='comp' type='xmlPatternPtr' info='the precompiled pattern'/> + </function> <function name='xmlPatternStreamable' file='pattern' module='pattern'> <cond>defined(LIBXML_PATTERN_ENABLED)</cond> <info>Check if the pattern is streamable i.e. xmlPatternGetStreamCtxt() should work.</info> @@ -11752,7 +12120,7 @@ actually an xmlCharEncoding'/> <return type='xmlPatternPtr' info='the compiled form of the pattern or NULL in case of error'/> <arg name='pattern' type='const xmlChar *' info='the pattern to compile'/> <arg name='dict' type='xmlDict *' info='an optional dictionary for interned strings'/> - <arg name='flags' type='xmlPatternFlags' info='compilation flags, undefined yet'/> + <arg name='flags' type='int' info='compilation flags, see xmlPatternFlags'/> <arg name='namespaces' type='const xmlChar **' info='the prefix definitions, array of [URI, prefix] or NULL'/> </function> <function name='xmlPedanticParserDefault' file='parser' module='parserInternals'> @@ -12233,6 +12601,14 @@ actually an xmlCharEncoding'/> <arg name='warn' type='xmlRelaxNGValidityWarningFunc' info='the warning function'/> <arg name='ctx' type='void *' info='the functions context'/> </function> + <function name='xmlRelaxNGSetValidStructuredErrors' file='relaxng' module='relaxng'> + <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond> + <info>Set the structured error callback</info> + <return type='void'/> + <arg name='ctxt' type='xmlRelaxNGValidCtxtPtr' info='a Relax-NG validation context'/> + <arg name='serror' type='xmlStructuredErrorFunc' info='the structured error function'/> + <arg name='ctx' type='void *' info='the functions context'/> + </function> <function name='xmlRelaxNGValidateDoc' file='relaxng' module='relaxng'> <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond> <info>Validate a document tree in memory.</info> @@ -12374,7 +12750,7 @@ actually an xmlCharEncoding'/> <arg name='ctx' type='void *' info='the user data (XML parser context)'/> </function> <function name='xmlSAX2EndElement' file='SAX2' module='SAX2'> - <cond>defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED)</cond> + <cond>defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED)</cond> <info>called when the end of an element has been detected.</info> <return type='void'/> <arg name='ctx' type='void *' info='the user data (XML parser context)'/> @@ -12526,7 +12902,7 @@ actually an xmlCharEncoding'/> <arg name='ctx' type='void *' info='the user data (XML parser context)'/> </function> <function name='xmlSAX2StartElement' file='SAX2' module='SAX2'> - <cond>defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED)</cond> + <cond>defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED)</cond> <info>called when an opening tag has been processed.</info> <return type='void'/> <arg name='ctx' type='void *' info='the user data (XML parser context)'/> @@ -13038,6 +13414,14 @@ actually an xmlCharEncoding'/> <arg name='ctxt' type='xmlSchemaValidCtxtPtr' info='a schema validation context'/> <arg name='options' type='int' info='a combination of xmlSchemaValidOption'/> </function> + <function name='xmlSchemaSetValidStructuredErrors' file='xmlschemas' module='xmlschemas'> + <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond> + <info>Set the structured error callback</info> + <return type='void'/> + <arg name='ctxt' type='xmlSchemaValidCtxtPtr' info='a schema validation context'/> + <arg name='serror' type='xmlStructuredErrorFunc' info='the structured error function'/> + <arg name='ctx' type='void *' info='the functions context'/> + </function> <function name='xmlSchemaValPredefTypeNode' file='xmlschemastypes' module='xmlschemastypes'> <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond> <info>Check that a value conforms to the lexical space of the predefined type. if true a value is computed and returned in @val.</info> @@ -13199,6 +13583,79 @@ actually an xmlCharEncoding'/> <return type='xmlChar *' info='the new string or NULL if no change was required.'/> <arg name='value' type='const xmlChar *' info='a value'/> </function> + <function name='xmlSchematronFree' file='schematron' module='schematron'> + <cond>defined(LIBXML_SCHEMATRON_ENABLED)</cond> + <info>Deallocate a Schematron structure.</info> + <return type='void'/> + <arg name='schema' type='xmlSchematronPtr' info='a schema structure'/> + </function> + <function name='xmlSchematronFreeParserCtxt' file='schematron' module='schematron'> + <cond>defined(LIBXML_SCHEMATRON_ENABLED)</cond> + <info>Free the resources associated to the schema parser context</info> + <return type='void'/> + <arg name='ctxt' type='xmlSchematronParserCtxtPtr' info='the schema parser context'/> + </function> + <function name='xmlSchematronFreeValidCtxt' file='schematron' module='schematron'> + <cond>defined(LIBXML_SCHEMATRON_ENABLED)</cond> + <info>Free the resources associated to the schema validation context</info> + <return type='void'/> + <arg name='ctxt' type='xmlSchematronValidCtxtPtr' info='the schema validation context'/> + </function> + <function name='xmlSchematronNewDocParserCtxt' file='schematron' module='schematron'> + <cond>defined(LIBXML_SCHEMATRON_ENABLED)</cond> + <info>Create an XML Schematrons parse context for that document. NB. The document may be modified during the parsing process.</info> + <return type='xmlSchematronParserCtxtPtr' info='the parser context or NULL in case of error'/> + <arg name='doc' type='xmlDocPtr' info='a preparsed document tree'/> + </function> + <function name='xmlSchematronNewMemParserCtxt' file='schematron' module='schematron'> + <cond>defined(LIBXML_SCHEMATRON_ENABLED)</cond> + <info>Create an XML Schematrons parse context for that memory buffer expected to contain an XML Schematrons file.</info> + <return type='xmlSchematronParserCtxtPtr' info='the parser context or NULL in case of error'/> + <arg name='buffer' type='const char *' info='a pointer to a char array containing the schemas'/> + <arg name='size' type='int' info='the size of the array'/> + </function> + <function name='xmlSchematronNewParserCtxt' file='schematron' module='schematron'> + <cond>defined(LIBXML_SCHEMATRON_ENABLED)</cond> + <info>Create an XML Schematrons parse context for that file/resource expected to contain an XML Schematrons file.</info> + <return type='xmlSchematronParserCtxtPtr' info='the parser context or NULL in case of error'/> + <arg name='URL' type='const char *' info='the location of the schema'/> + </function> + <function name='xmlSchematronNewValidCtxt' file='schematron' module='schematron'> + <cond>defined(LIBXML_SCHEMATRON_ENABLED)</cond> + <info>Create an XML Schematrons validation context based on the given schema.</info> + <return type='xmlSchematronValidCtxtPtr' info='the validation context or NULL in case of error'/> + <arg name='schema' type='xmlSchematronPtr' info='a precompiled XML Schematrons'/> + <arg name='options' type='int' info='a set of xmlSchematronValidOptions'/> + </function> + <function name='xmlSchematronParse' file='schematron' module='schematron'> + <cond>defined(LIBXML_SCHEMATRON_ENABLED)</cond> + <info>parse a schema definition resource and build an internal XML Shema struture which can be used to validate instances.</info> + <return type='xmlSchematronPtr' info='the internal XML Schematron structure built from the resource or NULL in case of error'/> + <arg name='ctxt' type='xmlSchematronParserCtxtPtr' info='a schema validation context'/> + </function> + <function name='xmlSchematronValidateDoc' file='schematron' module='schematron'> + <cond>defined(LIBXML_SCHEMATRON_ENABLED)</cond> + <info>Validate a tree instance against the schematron</info> + <return type='int' info='0 in case of success, -1 in case of internal error and an error count otherwise.'/> + <arg name='ctxt' type='xmlSchematronValidCtxtPtr' info='the schema validation context'/> + <arg name='instance' type='xmlDocPtr' info='the document instace tree'/> + </function> + <functype name='xmlSchematronValidityErrorFunc' file='schematron' module='schematron'> + <cond>defined(LIBXML_SCHEMATRON_ENABLED)</cond> + <info></info> + <return type='void'/> + <arg name='ctx' type='void *' info=''/> + <arg name='msg' type='const char *' info=''/> + <arg name='...' type='...' info=''/> + </functype> + <functype name='xmlSchematronValidityWarningFunc' file='schematron' module='schematron'> + <cond>defined(LIBXML_SCHEMATRON_ENABLED)</cond> + <info></info> + <return type='void'/> + <arg name='ctx' type='void *' info=''/> + <arg name='msg' type='const char *' info=''/> + <arg name='...' type='...' info=''/> + </functype> <function name='xmlSearchNs' file='tree' module='tree'> <info>Search a Ns registered under a given name space for a document. recurse on the parents until it finds the defined namespace or return NULL otherwise. @nameSpace can be NULL, this is a search for the default namespace. We don't allow to cross entities boundaries. If you don't declare the namespace within those you will be in troubles !!! A warning is generated to cover this case.</info> <return type='xmlNsPtr' info='the namespace pointer or NULL.'/> @@ -13464,7 +13921,7 @@ actually an xmlCharEncoding'/> </function> <function name='xmlSplitQName3' file='tree' module='tree'> <info>parse an XML qualified name string,i</info> - <return type='const xmlChar *' info='NULL if it is not a Qualified Name, otherwise, update len with the lenght in byte of the prefix and return a pointer'/> + <return type='const xmlChar *' info='NULL if it is not a Qualified Name, otherwise, update len with the lenght in byte of the prefix and return a pointer to the start of the name without the prefix'/> <arg name='name' type='const xmlChar *' info='the full QName'/> <arg name='len' type='int *' info='an int *'/> </function> diff --git a/doc/libxml2.xsa b/doc/libxml2.xsa index e6e5ffe..f067bd4 100644 --- a/doc/libxml2.xsa +++ b/doc/libxml2.xsa @@ -8,27 +8,47 @@ </vendor> <product id="libxml2"> <name>libxml2</name> - <version>2.6.19</version> - <last-release> Apr 02 2005</last-release> + <version>2.6.20</version> + <last-release> Jul 10 2005</last-release> <info-url>http://xmlsoft.org/</info-url> - <changes> - build fixes: drop .la from RPMs, --with-minimum build fix (William - Brack), use XML_SOCKLEN_T instead of SOCKLEN_T because it breaks with - AIX 5.3 compiler, fixed elfgcchack.h generation and PLT reduction - code on Linux/ELF/gcc4 - - bug fixes: schemas type decimal fixups (William Brack), xmmlint return - code (Gerry Murphy), small schemas fixes (Matthew Burgess and - GUY Fabrice), workaround "DAV:" namespace brokeness in c14n (Aleksey - Sanin), segfault in Schemas (Kasimier Buchcik), Schemas attribute - validation (Kasimier), Prop related functions and xmlNewNodeEatName - (Rob Richards), HTML serialization of name attribute on a elements, - Python error handlers leaks and improvement (Brent Hendricks), - uninitialized variable in encoding code, Relax-NG validation bug, - potential crash if gnorableWhitespace is NULL, xmlSAXParseDoc and - xmlParseDoc signatures, switched back to assuming UTF-8 in case - no encoding is given at serialization time - - improvements: lot of work on Schemas by Kasimier Buchcik on facets - checking and also mixed handling. - - + <changes> - build fixes: Windows build (Rob Richards), Mingw compilation (Igor + Zlatkovic), Windows Makefile (Igor), gcc warnings (Kasimier and + andriy@google.com), use gcc weak references to pthread to avoid the + pthread dependancy on Linux, compilation problem (Steve Nairn), + compiling of subset (Morten Welinder), IPv6/ss_family compilation + (William Brack), compilation when disabling parts of the library, + standalone test distribution. + + - bug fixes: bug in lang(), memory cleanup on errors (William Brack), + HTTP query strings (Aron Stansvik), memory leak in DTD (William), + integer overflow in XPath (William), nanoftp buffer size, pattern + "." apth fixup (Kasimier), leak in tree reported by Malcolm Rowe, + replaceNode patch (Brent Hendricks), CDATA with NULL content + (Mark Vakoc), xml:base fixup on XInclude (William), pattern + fixes (William), attribute bug in exclusive c14n (Aleksey Sanin), + xml:space and xml:lang with SAX2 (Rob Richards), namespace + trouble in complex parsing (Malcolm Rowe), XSD type QNames fixes + (Kasimier), XPath streaming fixups (William), RelaxNG bug (Rob Richards), + Schemas for Schemas fixes (Kasimier), removal of ID (Rob Richards), + a small RelaxNG leak, HTML parsing in push mode bug (James Bursa), + failure to detect UTF-8 parsing bugs in CDATA sections, areBlanks() + heuristic failure, duplicate attributes in DTD bug (William). + + - improvements: lot of work on Schemas by Kasimier Buchcik both on + conformance and streaming, Schemas validation messages (Kasimier + Buchcik, Matthew Burgess), namespace removal at the python level + (Brent Hendricks), Update to new Schemas regression tests from + W3C/Nist (Kasimier), xmlSchemaValidateFile() (Kasimier), implementation + of xmlTextReaderReadInnerXml and xmlTextReaderReadOuterXml (James Wert), + standalone test framework and programs, new DOM import APIs + xmlDOMWrapReconcileNamespaces() xmlDOMWrapAdoptNode() and + xmlDOMWrapRemoveNode(), extension of xmllint capabilities for + SAX and Schemas regression tests, xmlStopParser() available in + pull mode too, ienhancement to xmllint --shell namespaces support, + Windows port of the standalone testing tools (Kasimier and William), + xmlSchemaValidateStream() xmlSchemaSAXPlug() and xmlSchemaSAXUnplug() + SAX Schemas APIs, Schemas xmlReader support. + </changes> </product> diff --git a/doc/news.html b/doc/news.html index 3d6a7b7..1db7042 100644 --- a/doc/news.html +++ b/doc/news.html @@ -12,7 +12,43 @@ to help those</p><ul><li>More testing on RelaxNG</li> <li>Finishing up <a href="http://www.w3.org/TR/xmlschema-1/">XML Schemas</a></li> </ul><p>The <a href="ChangeLog.html">change log</a> describes the recents commits -to the <a href="http://cvs.gnome.org/viewcvs/libxml2/">CVS</a> code base.</p><p>There is the list of public releases:</p><h3>2.6.20: Jul 10 2005</h3><ul><li> build fixes: Windows build (Rob Richards), Mingw compilation (Igor +to the <a href="http://cvs.gnome.org/viewcvs/libxml2/">CVS</a> code base.</p><p>There is the list of public releases:</p><h3>2.6.21: Sep 4 2005</h3><ul><li>build fixes: Cygwin portability fixes (Gerrit P. Haase), calling + convention problems on Windows (Marcus Boerger), cleanups based on + Linus' sparse tool, update of win32/configure.js (Rob Richards), + remove warnings on Windows(Marcus Boerger), compilation without SAX1, + detection of the Python binary, use $GCC inestad of $CC = 'gcc' (Andrew + W. Nosenko), compilation/link with threads and old gcc, compile + problem by C370 on Z/OS, </li> + <li>bug fixes: http_proxy environments (Peter Breitenlohner), HTML UTF-8 + bug (Jiri Netolicky), XPath NaN compare bug (William Brack), + htmlParseScript potential bug, Schemas regexp handling of spaces, + Base64 Schemas comparisons NIST passes, automata build error xsd:all, + xmlGetNodePath for namespaced attributes (Alexander Pohoyda), + xmlSchemas foreign namespaces handling, XML Schemas facet comparison + (Kupriyanov Anatolij), xmlSchemaPSimpleTypeErr error report (Kasimier + Buchcik), xml: namespace ahndling in Schemas (Kasimier), empty model + group in Schemas (Kasimier), wilcard in Schemas (Kasimier), URI + composition (William), xs:anyType in Schemas (Kasimier), Python resolver + emmitting error messages directly, Python xmlAttr.parent (Jakub Piotr + Clapa), trying to fix the file path/URI conversion, + xmlTextReaderGetAttribute fix (Rob Richards), xmlSchemaFreeAnnot memleak + (Kasimier), HTML UTF-8 serialization, streaming XPath, Schemas determinism + detection problem, XInclude bug, Schemas context type (Dean Hill), + validation fix (Derek Poon), xmlTextReaderGetAttribute[Ns] namespaces + (Rob Richards), Schemas type fix (Kuba Nowakowski), UTF-8 parser bug, + error in encoding handling, xmlGetLineNo fixes, bug on entities handling, + entity name extraction in error handling with XInclude, text nodes + in HTML body tags (Gary Coady), xml:id and IDness at the treee level + fixes, XPath streaming patterns bugs.</li> + <li>improvements: structured interfaces for schemas and RNG error reports + (Marcus Boerger), optimization of the char data inner loop parsing + (thanks to Behdad Esfahbod for the idea), schematron validation + though not finished yet, xmlSaveOption to omit XML declaration, + keyref match error reports (Kasimier), formal expression handling + code not plugged yet, more lax mode for the HTML parser, + parser XML_PARSE_COMPACT option for text nodes allocation.</li> + <li>documentation: xmllint man page had --nonet duplicated</li> +</ul><h3>2.6.20: Jul 10 2005</h3><ul><li> build fixes: Windows build (Rob Richards), Mingw compilation (Igor Zlatkovic), Windows Makefile (Igor), gcc warnings (Kasimier and andriy@google.com), use gcc weak references to pthread to avoid the pthread dependancy on Linux, compilation problem (Steve Nairn), diff --git a/doc/xml.html b/doc/xml.html index 7e6e476..90d28a3 100644 --- a/doc/xml.html +++ b/doc/xml.html @@ -670,6 +670,7 @@ href="http://xmlsoft.org/sources/win32/">win32</a> directory.</p> binaries</a>.</li> <li>The HP-UX porting center provides <a href="http://hpux.connect.org.uk/hppd/hpux/Gnome/">HP-UX binaries</a></li> + <li>Bull provides precompiled <a href="http://gnome.bullfreeware.com/new_index.html">RPMs for AIX</a> as patr of their GNOME packages</li> </ul> <p>If you know other supported binary ports, please <a @@ -715,6 +716,45 @@ to the <a href="http://cvs.gnome.org/viewcvs/libxml2/">CVS</a> code base.</p> <p>There is the list of public releases:</p> +<h3>2.6.21: Sep 4 2005</h3> +<ul> + <li>build fixes: Cygwin portability fixes (Gerrit P. Haase), calling + convention problems on Windows (Marcus Boerger), cleanups based on + Linus' sparse tool, update of win32/configure.js (Rob Richards), + remove warnings on Windows(Marcus Boerger), compilation without SAX1, + detection of the Python binary, use $GCC inestad of $CC = 'gcc' (Andrew + W. Nosenko), compilation/link with threads and old gcc, compile + problem by C370 on Z/OS, </li> + <li>bug fixes: http_proxy environments (Peter Breitenlohner), HTML UTF-8 + bug (Jiri Netolicky), XPath NaN compare bug (William Brack), + htmlParseScript potential bug, Schemas regexp handling of spaces, + Base64 Schemas comparisons NIST passes, automata build error xsd:all, + xmlGetNodePath for namespaced attributes (Alexander Pohoyda), + xmlSchemas foreign namespaces handling, XML Schemas facet comparison + (Kupriyanov Anatolij), xmlSchemaPSimpleTypeErr error report (Kasimier + Buchcik), xml: namespace ahndling in Schemas (Kasimier), empty model + group in Schemas (Kasimier), wilcard in Schemas (Kasimier), URI + composition (William), xs:anyType in Schemas (Kasimier), Python resolver + emmitting error messages directly, Python xmlAttr.parent (Jakub Piotr + Clapa), trying to fix the file path/URI conversion, + xmlTextReaderGetAttribute fix (Rob Richards), xmlSchemaFreeAnnot memleak + (Kasimier), HTML UTF-8 serialization, streaming XPath, Schemas determinism + detection problem, XInclude bug, Schemas context type (Dean Hill), + validation fix (Derek Poon), xmlTextReaderGetAttribute[Ns] namespaces + (Rob Richards), Schemas type fix (Kuba Nowakowski), UTF-8 parser bug, + error in encoding handling, xmlGetLineNo fixes, bug on entities handling, + entity name extraction in error handling with XInclude, text nodes + in HTML body tags (Gary Coady), xml:id and IDness at the treee level + fixes, XPath streaming patterns bugs.</li> + <li>improvements: structured interfaces for schemas and RNG error reports + (Marcus Boerger), optimization of the char data inner loop parsing + (thanks to Behdad Esfahbod for the idea), schematron validation + though not finished yet, xmlSaveOption to omit XML declaration, + keyref match error reports (Kasimier), formal expression handling + code not plugged yet, more lax mode for the HTML parser, + parser XML_PARSE_COMPACT option for text nodes allocation.</li> + <li>documentation: xmllint man page had --nonet duplicated</li> +</ul> <h3>2.6.20: Jul 10 2005</h3> <ul> <li> build fixes: Windows build (Rob Richards), Mingw compilation (Igor @@ -2342,11 +2382,8 @@ HTML/textual output).</p> <p>A separate library called libxslt is available implementing XSLT-1.0 for libxml2. This module "libxslt" too can be found in the Gnome CVS base.</p> -<p>You can check the <a -href="http://cvs.gnome.org/lxr/source/libxslt/FEATURES">features</a> -supported and the progresses on the <a -href="http://cvs.gnome.org/lxr/source/libxslt/ChangeLog" -name="Changelog">Changelog</a>.</p> +<p>You can check the progresses on the libxslt <a +href="http://xmlsoft.org/XSLT/ChangeLog.html">Changelog</a>.</p> <h2><a name="Python">Python and bindings</a></h2> diff --git a/doc/xmllint.1 b/doc/xmllint.1 index 0a49b85..db24d61 100644 --- a/doc/xmllint.1 +++ b/doc/xmllint.1 @@ -83,10 +83,6 @@ Suppress output\&. By default, xmllint outputs the result tree\&. Do not use the Internet to fetch DTD's or entities\&. .TP -\fB\-\-nonet\fR -Do not use the Internet to fetch DTD's or entities\&. - -.TP \fB\-\-path\fR \fIpaths\fR Use the list (separated by space or column) of filesystem path specified by \fIpaths\fR to load DTDs or entities \&. diff --git a/doc/xmllint.xml b/doc/xmllint.xml index dfc5d4b..904f43f 100644 --- a/doc/xmllint.xml +++ b/doc/xmllint.xml @@ -226,15 +226,6 @@ </varlistentry> <varlistentry> - <term><option>--nonet</option></term> - <listitem> - <simpara> - Do not use the Internet to fetch DTD's or entities. - </simpara> - </listitem> - </varlistentry> - - <varlistentry> <term> <option>--path</option> <replaceable>paths</replaceable></term> <listitem> <simpara> diff --git a/elfgcchack.h b/elfgcchack.h index e2584c0..44ab139 100644 --- a/elfgcchack.h +++ b/elfgcchack.h @@ -36,6 +36,7 @@ #include "libxml/SAX2.h" #include "libxml/SAX.h" #include "libxml/schemasInternals.h" +#include "libxml/schematron.h" #include "libxml/threads.h" #include "libxml/tree.h" #include "libxml/uri.h" @@ -1224,6 +1225,18 @@ extern __typeof (xmlAutomataNewEpsilon) xmlAutomataNewEpsilon__internal_alias __ #if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED) #ifdef bottom_xmlregexp +#undef xmlAutomataNewNegTrans +extern __typeof (xmlAutomataNewNegTrans) xmlAutomataNewNegTrans __attribute((alias("xmlAutomataNewNegTrans__internal_alias"))); +#else +#ifndef xmlAutomataNewNegTrans +extern __typeof (xmlAutomataNewNegTrans) xmlAutomataNewNegTrans__internal_alias __attribute((visibility("hidden"))); +#define xmlAutomataNewNegTrans xmlAutomataNewNegTrans__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED) +#ifdef bottom_xmlregexp #undef xmlAutomataNewOnceTrans extern __typeof (xmlAutomataNewOnceTrans) xmlAutomataNewOnceTrans __attribute((alias("xmlAutomataNewOnceTrans__internal_alias"))); #else @@ -3094,6 +3107,234 @@ extern __typeof (xmlErrMemory) xmlErrMemory__internal_alias __attribute((visibil #endif #endif +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpCtxtNbCons +extern __typeof (xmlExpCtxtNbCons) xmlExpCtxtNbCons __attribute((alias("xmlExpCtxtNbCons__internal_alias"))); +#else +#ifndef xmlExpCtxtNbCons +extern __typeof (xmlExpCtxtNbCons) xmlExpCtxtNbCons__internal_alias __attribute((visibility("hidden"))); +#define xmlExpCtxtNbCons xmlExpCtxtNbCons__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpCtxtNbNodes +extern __typeof (xmlExpCtxtNbNodes) xmlExpCtxtNbNodes __attribute((alias("xmlExpCtxtNbNodes__internal_alias"))); +#else +#ifndef xmlExpCtxtNbNodes +extern __typeof (xmlExpCtxtNbNodes) xmlExpCtxtNbNodes__internal_alias __attribute((visibility("hidden"))); +#define xmlExpCtxtNbNodes xmlExpCtxtNbNodes__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpDump +extern __typeof (xmlExpDump) xmlExpDump __attribute((alias("xmlExpDump__internal_alias"))); +#else +#ifndef xmlExpDump +extern __typeof (xmlExpDump) xmlExpDump__internal_alias __attribute((visibility("hidden"))); +#define xmlExpDump xmlExpDump__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpExpDerive +extern __typeof (xmlExpExpDerive) xmlExpExpDerive __attribute((alias("xmlExpExpDerive__internal_alias"))); +#else +#ifndef xmlExpExpDerive +extern __typeof (xmlExpExpDerive) xmlExpExpDerive__internal_alias __attribute((visibility("hidden"))); +#define xmlExpExpDerive xmlExpExpDerive__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpFree +extern __typeof (xmlExpFree) xmlExpFree __attribute((alias("xmlExpFree__internal_alias"))); +#else +#ifndef xmlExpFree +extern __typeof (xmlExpFree) xmlExpFree__internal_alias __attribute((visibility("hidden"))); +#define xmlExpFree xmlExpFree__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpFreeCtxt +extern __typeof (xmlExpFreeCtxt) xmlExpFreeCtxt __attribute((alias("xmlExpFreeCtxt__internal_alias"))); +#else +#ifndef xmlExpFreeCtxt +extern __typeof (xmlExpFreeCtxt) xmlExpFreeCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlExpFreeCtxt xmlExpFreeCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpGetLanguage +extern __typeof (xmlExpGetLanguage) xmlExpGetLanguage __attribute((alias("xmlExpGetLanguage__internal_alias"))); +#else +#ifndef xmlExpGetLanguage +extern __typeof (xmlExpGetLanguage) xmlExpGetLanguage__internal_alias __attribute((visibility("hidden"))); +#define xmlExpGetLanguage xmlExpGetLanguage__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpGetStart +extern __typeof (xmlExpGetStart) xmlExpGetStart __attribute((alias("xmlExpGetStart__internal_alias"))); +#else +#ifndef xmlExpGetStart +extern __typeof (xmlExpGetStart) xmlExpGetStart__internal_alias __attribute((visibility("hidden"))); +#define xmlExpGetStart xmlExpGetStart__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpIsNillable +extern __typeof (xmlExpIsNillable) xmlExpIsNillable __attribute((alias("xmlExpIsNillable__internal_alias"))); +#else +#ifndef xmlExpIsNillable +extern __typeof (xmlExpIsNillable) xmlExpIsNillable__internal_alias __attribute((visibility("hidden"))); +#define xmlExpIsNillable xmlExpIsNillable__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpMaxToken +extern __typeof (xmlExpMaxToken) xmlExpMaxToken __attribute((alias("xmlExpMaxToken__internal_alias"))); +#else +#ifndef xmlExpMaxToken +extern __typeof (xmlExpMaxToken) xmlExpMaxToken__internal_alias __attribute((visibility("hidden"))); +#define xmlExpMaxToken xmlExpMaxToken__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpNewAtom +extern __typeof (xmlExpNewAtom) xmlExpNewAtom __attribute((alias("xmlExpNewAtom__internal_alias"))); +#else +#ifndef xmlExpNewAtom +extern __typeof (xmlExpNewAtom) xmlExpNewAtom__internal_alias __attribute((visibility("hidden"))); +#define xmlExpNewAtom xmlExpNewAtom__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpNewCtxt +extern __typeof (xmlExpNewCtxt) xmlExpNewCtxt __attribute((alias("xmlExpNewCtxt__internal_alias"))); +#else +#ifndef xmlExpNewCtxt +extern __typeof (xmlExpNewCtxt) xmlExpNewCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlExpNewCtxt xmlExpNewCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpNewOr +extern __typeof (xmlExpNewOr) xmlExpNewOr __attribute((alias("xmlExpNewOr__internal_alias"))); +#else +#ifndef xmlExpNewOr +extern __typeof (xmlExpNewOr) xmlExpNewOr__internal_alias __attribute((visibility("hidden"))); +#define xmlExpNewOr xmlExpNewOr__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpNewRange +extern __typeof (xmlExpNewRange) xmlExpNewRange __attribute((alias("xmlExpNewRange__internal_alias"))); +#else +#ifndef xmlExpNewRange +extern __typeof (xmlExpNewRange) xmlExpNewRange__internal_alias __attribute((visibility("hidden"))); +#define xmlExpNewRange xmlExpNewRange__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpNewSeq +extern __typeof (xmlExpNewSeq) xmlExpNewSeq __attribute((alias("xmlExpNewSeq__internal_alias"))); +#else +#ifndef xmlExpNewSeq +extern __typeof (xmlExpNewSeq) xmlExpNewSeq__internal_alias __attribute((visibility("hidden"))); +#define xmlExpNewSeq xmlExpNewSeq__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpParse +extern __typeof (xmlExpParse) xmlExpParse __attribute((alias("xmlExpParse__internal_alias"))); +#else +#ifndef xmlExpParse +extern __typeof (xmlExpParse) xmlExpParse__internal_alias __attribute((visibility("hidden"))); +#define xmlExpParse xmlExpParse__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpRef +extern __typeof (xmlExpRef) xmlExpRef __attribute((alias("xmlExpRef__internal_alias"))); +#else +#ifndef xmlExpRef +extern __typeof (xmlExpRef) xmlExpRef__internal_alias __attribute((visibility("hidden"))); +#define xmlExpRef xmlExpRef__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpStringDerive +extern __typeof (xmlExpStringDerive) xmlExpStringDerive __attribute((alias("xmlExpStringDerive__internal_alias"))); +#else +#ifndef xmlExpStringDerive +extern __typeof (xmlExpStringDerive) xmlExpStringDerive__internal_alias __attribute((visibility("hidden"))); +#define xmlExpStringDerive xmlExpStringDerive__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpSubsume +extern __typeof (xmlExpSubsume) xmlExpSubsume __attribute((alias("xmlExpSubsume__internal_alias"))); +#else +#ifndef xmlExpSubsume +extern __typeof (xmlExpSubsume) xmlExpSubsume__internal_alias __attribute((visibility("hidden"))); +#define xmlExpSubsume xmlExpSubsume__internal_alias +#endif +#endif +#endif + #ifdef bottom_xmlIO #undef xmlFileClose extern __typeof (xmlFileClose) xmlFileClose __attribute((alias("xmlFileClose__internal_alias"))); @@ -3830,6 +4071,16 @@ extern __typeof (xmlHandleEntity) xmlHandleEntity__internal_alias __attribute((v #endif #endif +#ifdef bottom_parser +#undef xmlHasFeature +extern __typeof (xmlHasFeature) xmlHasFeature __attribute((alias("xmlHasFeature__internal_alias"))); +#else +#ifndef xmlHasFeature +extern __typeof (xmlHasFeature) xmlHasFeature__internal_alias __attribute((visibility("hidden"))); +#define xmlHasFeature xmlHasFeature__internal_alias +#endif +#endif + #ifdef bottom_tree #undef xmlHasNsProp extern __typeof (xmlHasNsProp) xmlHasNsProp __attribute((alias("xmlHasNsProp__internal_alias"))); @@ -7047,6 +7298,16 @@ extern __typeof (xmlParseURI) xmlParseURI__internal_alias __attribute((visibilit #endif #ifdef bottom_uri +#undef xmlParseURIRaw +extern __typeof (xmlParseURIRaw) xmlParseURIRaw __attribute((alias("xmlParseURIRaw__internal_alias"))); +#else +#ifndef xmlParseURIRaw +extern __typeof (xmlParseURIRaw) xmlParseURIRaw__internal_alias __attribute((visibility("hidden"))); +#define xmlParseURIRaw xmlParseURIRaw__internal_alias +#endif +#endif + +#ifdef bottom_uri #undef xmlParseURIReference extern __typeof (xmlParseURIReference) xmlParseURIReference __attribute((alias("xmlParseURIReference__internal_alias"))); #else @@ -7388,6 +7649,18 @@ extern __typeof (xmlPatternMaxDepth) xmlPatternMaxDepth__internal_alias __attrib #if defined(LIBXML_PATTERN_ENABLED) #ifdef bottom_pattern +#undef xmlPatternMinDepth +extern __typeof (xmlPatternMinDepth) xmlPatternMinDepth __attribute((alias("xmlPatternMinDepth__internal_alias"))); +#else +#ifndef xmlPatternMinDepth +extern __typeof (xmlPatternMinDepth) xmlPatternMinDepth__internal_alias __attribute((visibility("hidden"))); +#define xmlPatternMinDepth xmlPatternMinDepth__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_PATTERN_ENABLED) +#ifdef bottom_pattern #undef xmlPatternStreamable extern __typeof (xmlPatternStreamable) xmlPatternStreamable __attribute((alias("xmlPatternStreamable__internal_alias"))); #else @@ -8134,6 +8407,18 @@ extern __typeof (xmlRelaxNGSetValidErrors) xmlRelaxNGSetValidErrors__internal_al #if defined(LIBXML_SCHEMAS_ENABLED) #ifdef bottom_relaxng +#undef xmlRelaxNGSetValidStructuredErrors +extern __typeof (xmlRelaxNGSetValidStructuredErrors) xmlRelaxNGSetValidStructuredErrors __attribute((alias("xmlRelaxNGSetValidStructuredErrors__internal_alias"))); +#else +#ifndef xmlRelaxNGSetValidStructuredErrors +extern __typeof (xmlRelaxNGSetValidStructuredErrors) xmlRelaxNGSetValidStructuredErrors__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGSetValidStructuredErrors xmlRelaxNGSetValidStructuredErrors__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_relaxng #undef xmlRelaxNGValidateDoc extern __typeof (xmlRelaxNGValidateDoc) xmlRelaxNGValidateDoc __attribute((alias("xmlRelaxNGValidateDoc__internal_alias"))); #else @@ -8328,7 +8613,7 @@ extern __typeof (xmlSAX2EndDocument) xmlSAX2EndDocument__internal_alias __attrib #endif #endif -#if defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) +#if defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED) #ifdef bottom_SAX2 #undef xmlSAX2EndElement extern __typeof (xmlSAX2EndElement) xmlSAX2EndElement __attribute((alias("xmlSAX2EndElement__internal_alias"))); @@ -8574,7 +8859,7 @@ extern __typeof (xmlSAX2StartDocument) xmlSAX2StartDocument__internal_alias __at #endif #endif -#if defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) +#if defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED) #ifdef bottom_SAX2 #undef xmlSAX2StartElement extern __typeof (xmlSAX2StartElement) xmlSAX2StartElement __attribute((alias("xmlSAX2StartElement__internal_alias"))); @@ -9240,6 +9525,18 @@ extern __typeof (xmlSchemaIsBuiltInTypeFacet) xmlSchemaIsBuiltInTypeFacet__inter #if defined(LIBXML_SCHEMAS_ENABLED) #ifdef bottom_xmlschemas +#undef xmlSchemaIsValid +extern __typeof (xmlSchemaIsValid) xmlSchemaIsValid __attribute((alias("xmlSchemaIsValid__internal_alias"))); +#else +#ifndef xmlSchemaIsValid +extern __typeof (xmlSchemaIsValid) xmlSchemaIsValid__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaIsValid xmlSchemaIsValid__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas #undef xmlSchemaNewDocParserCtxt extern __typeof (xmlSchemaNewDocParserCtxt) xmlSchemaNewDocParserCtxt __attribute((alias("xmlSchemaNewDocParserCtxt__internal_alias"))); #else @@ -9348,6 +9645,30 @@ extern __typeof (xmlSchemaParse) xmlSchemaParse__internal_alias __attribute((vis #if defined(LIBXML_SCHEMAS_ENABLED) #ifdef bottom_xmlschemas +#undef xmlSchemaSAXPlug +extern __typeof (xmlSchemaSAXPlug) xmlSchemaSAXPlug __attribute((alias("xmlSchemaSAXPlug__internal_alias"))); +#else +#ifndef xmlSchemaSAXPlug +extern __typeof (xmlSchemaSAXPlug) xmlSchemaSAXPlug__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaSAXPlug xmlSchemaSAXPlug__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaSAXUnplug +extern __typeof (xmlSchemaSAXUnplug) xmlSchemaSAXUnplug __attribute((alias("xmlSchemaSAXUnplug__internal_alias"))); +#else +#ifndef xmlSchemaSAXUnplug +extern __typeof (xmlSchemaSAXUnplug) xmlSchemaSAXUnplug__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaSAXUnplug xmlSchemaSAXUnplug__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas #undef xmlSchemaSetParserErrors extern __typeof (xmlSchemaSetParserErrors) xmlSchemaSetParserErrors __attribute((alias("xmlSchemaSetParserErrors__internal_alias"))); #else @@ -9383,6 +9704,18 @@ extern __typeof (xmlSchemaSetValidOptions) xmlSchemaSetValidOptions__internal_al #endif #if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaSetValidStructuredErrors +extern __typeof (xmlSchemaSetValidStructuredErrors) xmlSchemaSetValidStructuredErrors __attribute((alias("xmlSchemaSetValidStructuredErrors__internal_alias"))); +#else +#ifndef xmlSchemaSetValidStructuredErrors +extern __typeof (xmlSchemaSetValidStructuredErrors) xmlSchemaSetValidStructuredErrors__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaSetValidStructuredErrors xmlSchemaSetValidStructuredErrors__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) #ifdef bottom_xmlschemastypes #undef xmlSchemaValPredefTypeNode extern __typeof (xmlSchemaValPredefTypeNode) xmlSchemaValPredefTypeNode __attribute((alias("xmlSchemaValPredefTypeNode__internal_alias"))); @@ -9598,6 +9931,114 @@ extern __typeof (xmlSchemaWhiteSpaceReplace) xmlSchemaWhiteSpaceReplace__interna #endif #endif +#if defined(LIBXML_SCHEMATRON_ENABLED) +#ifdef bottom_schematron +#undef xmlSchematronFree +extern __typeof (xmlSchematronFree) xmlSchematronFree __attribute((alias("xmlSchematronFree__internal_alias"))); +#else +#ifndef xmlSchematronFree +extern __typeof (xmlSchematronFree) xmlSchematronFree__internal_alias __attribute((visibility("hidden"))); +#define xmlSchematronFree xmlSchematronFree__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMATRON_ENABLED) +#ifdef bottom_schematron +#undef xmlSchematronFreeParserCtxt +extern __typeof (xmlSchematronFreeParserCtxt) xmlSchematronFreeParserCtxt __attribute((alias("xmlSchematronFreeParserCtxt__internal_alias"))); +#else +#ifndef xmlSchematronFreeParserCtxt +extern __typeof (xmlSchematronFreeParserCtxt) xmlSchematronFreeParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlSchematronFreeParserCtxt xmlSchematronFreeParserCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMATRON_ENABLED) +#ifdef bottom_schematron +#undef xmlSchematronFreeValidCtxt +extern __typeof (xmlSchematronFreeValidCtxt) xmlSchematronFreeValidCtxt __attribute((alias("xmlSchematronFreeValidCtxt__internal_alias"))); +#else +#ifndef xmlSchematronFreeValidCtxt +extern __typeof (xmlSchematronFreeValidCtxt) xmlSchematronFreeValidCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlSchematronFreeValidCtxt xmlSchematronFreeValidCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMATRON_ENABLED) +#ifdef bottom_schematron +#undef xmlSchematronNewDocParserCtxt +extern __typeof (xmlSchematronNewDocParserCtxt) xmlSchematronNewDocParserCtxt __attribute((alias("xmlSchematronNewDocParserCtxt__internal_alias"))); +#else +#ifndef xmlSchematronNewDocParserCtxt +extern __typeof (xmlSchematronNewDocParserCtxt) xmlSchematronNewDocParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlSchematronNewDocParserCtxt xmlSchematronNewDocParserCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMATRON_ENABLED) +#ifdef bottom_schematron +#undef xmlSchematronNewMemParserCtxt +extern __typeof (xmlSchematronNewMemParserCtxt) xmlSchematronNewMemParserCtxt __attribute((alias("xmlSchematronNewMemParserCtxt__internal_alias"))); +#else +#ifndef xmlSchematronNewMemParserCtxt +extern __typeof (xmlSchematronNewMemParserCtxt) xmlSchematronNewMemParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlSchematronNewMemParserCtxt xmlSchematronNewMemParserCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMATRON_ENABLED) +#ifdef bottom_schematron +#undef xmlSchematronNewParserCtxt +extern __typeof (xmlSchematronNewParserCtxt) xmlSchematronNewParserCtxt __attribute((alias("xmlSchematronNewParserCtxt__internal_alias"))); +#else +#ifndef xmlSchematronNewParserCtxt +extern __typeof (xmlSchematronNewParserCtxt) xmlSchematronNewParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlSchematronNewParserCtxt xmlSchematronNewParserCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMATRON_ENABLED) +#ifdef bottom_schematron +#undef xmlSchematronNewValidCtxt +extern __typeof (xmlSchematronNewValidCtxt) xmlSchematronNewValidCtxt __attribute((alias("xmlSchematronNewValidCtxt__internal_alias"))); +#else +#ifndef xmlSchematronNewValidCtxt +extern __typeof (xmlSchematronNewValidCtxt) xmlSchematronNewValidCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlSchematronNewValidCtxt xmlSchematronNewValidCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMATRON_ENABLED) +#ifdef bottom_schematron +#undef xmlSchematronParse +extern __typeof (xmlSchematronParse) xmlSchematronParse __attribute((alias("xmlSchematronParse__internal_alias"))); +#else +#ifndef xmlSchematronParse +extern __typeof (xmlSchematronParse) xmlSchematronParse__internal_alias __attribute((visibility("hidden"))); +#define xmlSchematronParse xmlSchematronParse__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMATRON_ENABLED) +#ifdef bottom_schematron +#undef xmlSchematronValidateDoc +extern __typeof (xmlSchematronValidateDoc) xmlSchematronValidateDoc __attribute((alias("xmlSchematronValidateDoc__internal_alias"))); +#else +#ifndef xmlSchematronValidateDoc +extern __typeof (xmlSchematronValidateDoc) xmlSchematronValidateDoc__internal_alias __attribute((visibility("hidden"))); +#define xmlSchematronValidateDoc xmlSchematronValidateDoc__internal_alias +#endif +#endif +#endif + #ifdef bottom_tree #undef xmlSearchNs extern __typeof (xmlSearchNs) xmlSearchNs __attribute((alias("xmlSearchNs__internal_alias"))); @@ -9998,7 +10439,6 @@ extern __typeof (xmlSprintfElementContent) xmlSprintfElementContent__internal_al #endif #endif -#if defined(LIBXML_PUSH_ENABLED) #ifdef bottom_parser #undef xmlStopParser extern __typeof (xmlStopParser) xmlStopParser __attribute((alias("xmlStopParser__internal_alias"))); @@ -10008,7 +10448,6 @@ extern __typeof (xmlStopParser) xmlStopParser__internal_alias __attribute((visib #define xmlStopParser xmlStopParser__internal_alias #endif #endif -#endif #ifdef bottom_xmlstring #undef xmlStrEqual @@ -11056,6 +11495,18 @@ extern __typeof (xmlTextReaderRelaxNGValidate) xmlTextReaderRelaxNGValidate__int #endif #endif +#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderSchemaValidate +extern __typeof (xmlTextReaderSchemaValidate) xmlTextReaderSchemaValidate __attribute((alias("xmlTextReaderSchemaValidate__internal_alias"))); +#else +#ifndef xmlTextReaderSchemaValidate +extern __typeof (xmlTextReaderSchemaValidate) xmlTextReaderSchemaValidate__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderSchemaValidate xmlTextReaderSchemaValidate__internal_alias +#endif +#endif +#endif + #if defined(LIBXML_READER_ENABLED) #ifdef bottom_xmlreader #undef xmlTextReaderSetErrorHandler @@ -11080,6 +11531,18 @@ extern __typeof (xmlTextReaderSetParserProp) xmlTextReaderSetParserProp__interna #endif #endif +#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderSetSchema +extern __typeof (xmlTextReaderSetSchema) xmlTextReaderSetSchema __attribute((alias("xmlTextReaderSetSchema__internal_alias"))); +#else +#ifndef xmlTextReaderSetSchema +extern __typeof (xmlTextReaderSetSchema) xmlTextReaderSetSchema__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderSetSchema xmlTextReaderSetSchema__internal_alias +#endif +#endif +#endif + #if defined(LIBXML_READER_ENABLED) #ifdef bottom_xmlreader #undef xmlTextReaderSetStructuredErrorHandler @@ -14484,7 +14947,7 @@ extern __typeof (xmlValidateElementDecl) xmlValidateElementDecl__internal_alias #endif #endif -#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_DEBUG_ENABLED) +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_DEBUG_ENABLED) || defined (LIBXML_HTML_ENABLED) #ifdef bottom_tree #undef xmlValidateNCName extern __typeof (xmlValidateNCName) xmlValidateNCName __attribute((alias("xmlValidateNCName__internal_alias"))); @@ -70,6 +70,32 @@ static void xmlRegisterCharEncodingHandlersISO8859x (void); static int xmlLittleEndian = 1; +/** + * xmlEncodingErrMemory: + * @extra: extra informations + * + * Handle an out of memory condition + */ +static void +xmlEncodingErrMemory(const char *extra) +{ + __xmlSimpleError(XML_FROM_I18N, XML_ERR_NO_MEMORY, NULL, NULL, extra); +} + +/** + * xmlErrEncoding: + * @error: the error number + * @msg: the error message + * + * n encoding error + */ +static void +xmlEncodingErr(xmlParserErrors error, const char *msg, const char *val) +{ + __xmlRaiseError(NULL, NULL, NULL, NULL, NULL, + XML_FROM_I18N, error, XML_ERR_FATAL, + NULL, 0, val, NULL, NULL, 0, 0, msg, val); +} /************************************************************************ * * @@ -1239,7 +1265,7 @@ xmlNewCharEncodingHandler(const char *name, const char *alias; char upper[500]; int i; - char *up = 0; + char *up = NULL; /* * Do the alias resolution @@ -1252,8 +1278,8 @@ xmlNewCharEncodingHandler(const char *name, * Keep only the uppercase version of the encoding. */ if (name == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlNewCharEncodingHandler : no name !\n"); + xmlEncodingErr(XML_I18N_NO_NAME, + "xmlNewCharEncodingHandler : no name !\n", NULL); return(NULL); } for (i = 0;i < 499;i++) { @@ -1263,8 +1289,7 @@ xmlNewCharEncodingHandler(const char *name, upper[i] = 0; up = xmlMemStrdup(upper); if (up == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlNewCharEncodingHandler : out of memory !\n"); + xmlEncodingErrMemory("xmlNewCharEncodingHandler : out of memory !\n"); return(NULL); } @@ -1275,8 +1300,7 @@ xmlNewCharEncodingHandler(const char *name, xmlMalloc(sizeof(xmlCharEncodingHandler)); if (handler == NULL) { xmlFree(up); - xmlGenericError(xmlGenericErrorContext, - "xmlNewCharEncodingHandler : out of memory !\n"); + xmlEncodingErrMemory("xmlNewCharEncodingHandler : out of memory !\n"); return(NULL); } handler->input = input; @@ -1319,12 +1343,13 @@ xmlInitCharEncodingHandlers(void) { if (*ptr == 0x12) xmlLittleEndian = 0; else if (*ptr == 0x34) xmlLittleEndian = 1; - else xmlGenericError(xmlGenericErrorContext, - "Odd problem at endianness detection\n"); + else { + xmlEncodingErr(XML_ERR_INTERNAL_ERROR, + "Odd problem at endianness detection\n", NULL); + } if (handlers == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlInitCharEncodingHandlers : out of memory !\n"); + xmlEncodingErrMemory("xmlInitCharEncodingHandlers : out of memory !\n"); return; } xmlNewCharEncodingHandler("UTF-8", UTF8ToUTF8, UTF8ToUTF8); @@ -1394,16 +1419,15 @@ void xmlRegisterCharEncodingHandler(xmlCharEncodingHandlerPtr handler) { if (handlers == NULL) xmlInitCharEncodingHandlers(); if (handler == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlRegisterCharEncodingHandler: NULL handler !\n"); + xmlEncodingErr(XML_I18N_NO_HANDLER, + "xmlRegisterCharEncodingHandler: NULL handler !\n", NULL); return; } if (nbCharEncodingHandler >= MAX_ENCODING_HANDLERS) { - xmlGenericError(xmlGenericErrorContext, - "xmlRegisterCharEncodingHandler: Too many handler registered\n"); - xmlGenericError(xmlGenericErrorContext, - "\tincrease MAX_ENCODING_HANDLERS : %s\n", __FILE__); + xmlEncodingErr(XML_I18N_EXCESS_HANDLER, + "xmlRegisterCharEncodingHandler: Too many handler registered, see %s\n", + "MAX_ENCODING_HANDLERS"); return; } handlers[nbCharEncodingHandler++] = handler; @@ -1612,7 +1636,7 @@ xmlFindCharEncodingHandler(const char *name) { #endif return enc; } else if ((icv_in != (iconv_t) -1) || icv_out != (iconv_t) -1) { - xmlGenericError(xmlGenericErrorContext, + xmlEncodingErr(XML_ERR_INTERNAL_ERROR, "iconv : problems with filters for '%s'\n", name); } #endif /* LIBXML_ICONV_ENABLED */ @@ -1878,20 +1902,24 @@ xmlCharEncInFunc(xmlCharEncodingHandler * handler, xmlBufferPtr out, toconv, written, in->use); #endif break; - case -2: - xmlGenericError(xmlGenericErrorContext, - "input conversion failed due to input error\n"); - xmlGenericError(xmlGenericErrorContext, - "Bytes: 0x%02X 0x%02X 0x%02X 0x%02X\n", - in->content[0], in->content[1], - in->content[2], in->content[3]); + case -2: { + char buf[50]; + + snprintf(&buf[0], 49, "0x%02X 0x%02X 0x%02X 0x%02X", + in->content[0], in->content[1], + in->content[2], in->content[3]); + buf[49] = 0; + xmlEncodingErr(XML_I18N_CONV_FAILED, + "input conversion failed due to input error, bytes %s\n", + buf); + } } /* * Ignore when input buffer is not on a boundary */ if (ret == -3) ret = 0; - return (written); + return (written? written : ret); } /** @@ -1997,8 +2025,8 @@ retry: } #endif /* LIBXML_ICONV_ENABLED */ else { - xmlGenericError(xmlGenericErrorContext, - "xmlCharEncOutFunc: no output function !\n"); + xmlEncodingErr(XML_I18N_NO_OUTPUT, + "xmlCharEncOutFunc: no output function !\n", NULL); return(-1); } @@ -2049,18 +2077,21 @@ retry: * and continue the transcoding phase, hoping the error * did not mangle the encoder state. */ - snprintf((char *) charref, sizeof(charref), "&#%d;", cur); + snprintf((char *) &charref[0], sizeof(charref), "&#%d;", cur); xmlBufferShrink(in, len); xmlBufferAddHead(in, charref, -1); goto retry; } else { - xmlGenericError(xmlGenericErrorContext, - "output conversion failed due to conv error\n"); - xmlGenericError(xmlGenericErrorContext, - "Bytes: 0x%02X 0x%02X 0x%02X 0x%02X\n", - in->content[0], in->content[1], - in->content[2], in->content[3]); + char buf[50]; + + snprintf(&buf[0], 49, "0x%02X 0x%02X 0x%02X 0x%02X", + in->content[0], in->content[1], + in->content[2], in->content[3]); + buf[49] = 0; + xmlEncodingErr(XML_I18N_CONV_FAILED, + "output conversion failed due to conv error, bytes %s\n", + buf); in->content[0] = ' '; } break; @@ -16,7 +16,7 @@ #include <libxml/xmlmemory.h> #include <libxml/globals.h> -void xmlGenericErrorDefaultFunc (void *ctx ATTRIBUTE_UNUSED, +void XMLCDECL xmlGenericErrorDefaultFunc (void *ctx ATTRIBUTE_UNUSED, const char *msg, ...); @@ -62,7 +62,7 @@ void xmlGenericErrorDefaultFunc (void *ctx ATTRIBUTE_UNUSED, * * Default handler for out of context error messages. */ -void +void XMLCDECL xmlGenericErrorDefaultFunc(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) { va_list args; @@ -354,6 +354,9 @@ xmlReportError(xmlErrorPtr err, xmlParserCtxtPtr ctxt, const char *str, case XML_FROM_XSLT: channel(data, "XSLT "); break; + case XML_FROM_I18N: + channel(data, "encoding "); + break; default: break; } @@ -437,7 +440,7 @@ xmlReportError(xmlErrorPtr err, xmlParserCtxtPtr ctxt, const char *str, * then forward the error message down the parser or generic * error callback handler */ -void +void XMLCDECL __xmlRaiseError(xmlStructuredErrorFunc schannel, xmlGenericErrorFunc channel, void *data, void *ctx, void *nod, int domain, int code, xmlErrorLevel level, @@ -514,7 +517,7 @@ __xmlRaiseError(xmlStructuredErrorFunc schannel, if ((node->doc != NULL) && (node->doc->URL != NULL)) { baseptr = node; - file = (const char *) node->doc->URL; +/* file = (const char *) node->doc->URL; */ } for (i = 0; ((i < 10) && (node != NULL) && (node->type != XML_ELEMENT_NODE)); @@ -560,10 +563,19 @@ __xmlRaiseError(xmlStructuredErrorFunc schannel, } } if (prev != NULL) { - to->file = (char *) xmlGetProp(prev, BAD_CAST "href"); + if (prev->type == XML_XINCLUDE_START) { + prev->type = XML_ELEMENT_NODE; + to->file = (char *) xmlGetProp(prev, BAD_CAST "href"); + prev->type = XML_XINCLUDE_START; + } else { + to->file = (char *) xmlGetProp(prev, BAD_CAST "href"); + } } else #endif to->file = (char *) xmlStrdup(baseptr->doc->URL); + if ((to->file == NULL) && (node != NULL) && (node->doc != NULL)) { + to->file = (char *) xmlStrdup(node->doc->URL); + } file = to->file; } to->line = line; @@ -595,8 +607,10 @@ __xmlRaiseError(xmlStructuredErrorFunc schannel, schannel = xmlStructuredError; else channel = xmlGenericError; + if (!data) { data = xmlGenericErrorContext; } + } if (schannel != NULL) { schannel(data, to); return; @@ -655,7 +669,7 @@ __xmlSimpleError(int domain, int code, xmlNodePtr node, * Display and format an error messages, gives file, line, position and * extra parameters. */ -void +void XMLCDECL xmlParserError(void *ctx, const char *msg, ...) { xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; @@ -698,7 +712,7 @@ xmlParserError(void *ctx, const char *msg, ...) * Display and format a warning messages, gives file, line, position and * extra parameters. */ -void +void XMLCDECL xmlParserWarning(void *ctx, const char *msg, ...) { xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; @@ -747,7 +761,7 @@ xmlParserWarning(void *ctx, const char *msg, ...) * Display and format an validity error messages, gives file, * line, position and extra parameters. */ -void +void XMLCDECL xmlParserValidityError(void *ctx, const char *msg, ...) { xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; @@ -791,7 +805,7 @@ xmlParserValidityError(void *ctx, const char *msg, ...) * Display and format a validity warning messages, gives file, line, * position and extra parameters. */ -void +void XMLCDECL xmlParserValidityWarning(void *ctx, const char *msg, ...) { xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; diff --git a/example/Makefile.in b/example/Makefile.in index 81a4f16..b97da80 100644 --- a/example/Makefile.in +++ b/example/Makefile.in @@ -174,6 +174,7 @@ TEST_PUSH = @TEST_PUSH@ TEST_REGEXPS = @TEST_REGEXPS@ TEST_SAX = @TEST_SAX@ TEST_SCHEMAS = @TEST_SCHEMAS@ +TEST_SCHEMATRON = @TEST_SCHEMATRON@ TEST_THREADS = @TEST_THREADS@ TEST_VALID = @TEST_VALID@ TEST_VTIME = @TEST_VTIME@ @@ -209,6 +210,7 @@ WITH_REGEXPS = @WITH_REGEXPS@ WITH_RUN_DEBUG = @WITH_RUN_DEBUG@ WITH_SAX1 = @WITH_SAX1@ WITH_SCHEMAS = @WITH_SCHEMAS@ +WITH_SCHEMATRON = @WITH_SCHEMATRON@ WITH_THREADS = @WITH_THREADS@ WITH_TREE = @WITH_TREE@ WITH_TRIO = @WITH_TRIO@ @@ -44,7 +44,7 @@ static xmlMutexPtr xmlThrDefMutex = NULL; * * Additional initialisation for multi-threading */ -void xmlInitGlobals() +void xmlInitGlobals(void) { xmlThrDefMutex = xmlNewMutex(); } @@ -54,7 +54,7 @@ void xmlInitGlobals() * * Additional cleanup for multi-threading */ -void xmlCleanupGlobals() +void xmlCleanupGlobals(void) { if (xmlThrDefMutex != NULL) { xmlFreeMutex(xmlThrDefMutex); @@ -289,7 +289,7 @@ static xmlOutputBufferCreateFilenameFunc xmlOutputBufferCreateFilenameValueThrDe /* xmlGenericErrorFunc xmlGenericError = xmlGenericErrorDefaultFunc; */ /* Must initialize xmlGenericError in xmlInitParser */ -void xmlGenericErrorDefaultFunc (void *ctx ATTRIBUTE_UNUSED, +void XMLCDECL xmlGenericErrorDefaultFunc (void *ctx ATTRIBUTE_UNUSED, const char *msg, ...); /** @@ -344,7 +344,7 @@ static const char *xmlTreeIndentStringThrDef = " "; * Disabled by default */ int xmlSaveNoEmptyTags = 0; -int xmlSaveNoEmptyTagsThrDef = 0; +static int xmlSaveNoEmptyTagsThrDef = 0; #ifdef LIBXML_SAX1_ENABLED /** @@ -496,7 +496,7 @@ xmlInitializeGlobalState(xmlGlobalStatePtr gs) xmlMutexLock(xmlThrDefMutex); -#if defined(LIBXML_DOCB_ENABLED) && defined(LIBXML_LEGACY_ENABLED) +#if defined(LIBXML_DOCB_ENABLED) && defined(LIBXML_LEGACY_ENABLED) && defined(LIBXML_SAX1_ENABLED) initdocbDefaultSAXHandler(&gs->docbDefaultSAXHandler); #endif #if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_LEGACY_ENABLED) diff --git a/include/Makefile.in b/include/Makefile.in index 6c67be8..2ba891f 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -161,6 +161,7 @@ TEST_PUSH = @TEST_PUSH@ TEST_REGEXPS = @TEST_REGEXPS@ TEST_SAX = @TEST_SAX@ TEST_SCHEMAS = @TEST_SCHEMAS@ +TEST_SCHEMATRON = @TEST_SCHEMATRON@ TEST_THREADS = @TEST_THREADS@ TEST_VALID = @TEST_VALID@ TEST_VTIME = @TEST_VTIME@ @@ -196,6 +197,7 @@ WITH_REGEXPS = @WITH_REGEXPS@ WITH_RUN_DEBUG = @WITH_RUN_DEBUG@ WITH_SAX1 = @WITH_SAX1@ WITH_SCHEMAS = @WITH_SCHEMAS@ +WITH_SCHEMATRON = @WITH_SCHEMATRON@ WITH_THREADS = @WITH_THREADS@ WITH_TREE = @WITH_TREE@ WITH_TRIO = @WITH_TRIO@ diff --git a/include/libxml/HTMLparser.h b/include/libxml/HTMLparser.h index 2604d86..8477efb 100644 --- a/include/libxml/HTMLparser.h +++ b/include/libxml/HTMLparser.h @@ -173,11 +173,13 @@ XMLPUBFUN void XMLCALL * to the xmlReadDoc() and similar calls. */ typedef enum { + HTML_PARSE_RECOVER = 1<<0, /* Relaxed parsing */ HTML_PARSE_NOERROR = 1<<5, /* suppress error reports */ HTML_PARSE_NOWARNING= 1<<6, /* suppress warning reports */ HTML_PARSE_PEDANTIC = 1<<7, /* pedantic error reporting */ HTML_PARSE_NOBLANKS = 1<<8, /* remove blank nodes */ - HTML_PARSE_NONET = 1<<11 /* Forbid network access */ + HTML_PARSE_NONET = 1<<11,/* Forbid network access */ + HTML_PARSE_COMPACT = 1<<16 /* compact small text nodes */ } htmlParserOption; XMLPUBFUN void XMLCALL diff --git a/include/libxml/Makefile.am b/include/libxml/Makefile.am index 03f9564..bf03a3b 100644 --- a/include/libxml/Makefile.am +++ b/include/libxml/Makefile.am @@ -48,7 +48,8 @@ xmlinc_HEADERS = \ xmlwriter.h \ chvalid.h \ pattern.h \ - xmlsave.h + xmlsave.h \ + schematron.h install-exec-hook: $(mkinstalldirs) $(DESTDIR)$(xmlincdir) diff --git a/include/libxml/Makefile.in b/include/libxml/Makefile.in index bdcc706..f52f5b0 100644 --- a/include/libxml/Makefile.in +++ b/include/libxml/Makefile.in @@ -165,6 +165,7 @@ TEST_PUSH = @TEST_PUSH@ TEST_REGEXPS = @TEST_REGEXPS@ TEST_SAX = @TEST_SAX@ TEST_SCHEMAS = @TEST_SCHEMAS@ +TEST_SCHEMATRON = @TEST_SCHEMATRON@ TEST_THREADS = @TEST_THREADS@ TEST_VALID = @TEST_VALID@ TEST_VTIME = @TEST_VTIME@ @@ -200,6 +201,7 @@ WITH_REGEXPS = @WITH_REGEXPS@ WITH_RUN_DEBUG = @WITH_RUN_DEBUG@ WITH_SAX1 = @WITH_SAX1@ WITH_SCHEMAS = @WITH_SCHEMAS@ +WITH_SCHEMATRON = @WITH_SCHEMATRON@ WITH_THREADS = @WITH_THREADS@ WITH_TREE = @WITH_TREE@ WITH_TRIO = @WITH_TRIO@ @@ -316,7 +318,8 @@ xmlinc_HEADERS = \ xmlwriter.h \ chvalid.h \ pattern.h \ - xmlsave.h + xmlsave.h \ + schematron.h EXTRA_DIST = xmlversion.h.in all: all-am diff --git a/include/libxml/SAX2.h b/include/libxml/SAX2.h index 6626564..8d2db02 100644 --- a/include/libxml/SAX2.h +++ b/include/libxml/SAX2.h @@ -98,7 +98,7 @@ XMLPUBFUN void XMLCALL xmlSAX2StartDocument (void *ctx); XMLPUBFUN void XMLCALL xmlSAX2EndDocument (void *ctx); -#if defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) +#if defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED) XMLPUBFUN void XMLCALL xmlSAX2StartElement (void *ctx, const xmlChar *fullname, diff --git a/include/libxml/parser.h b/include/libxml/parser.h index 7203ca3..2fe91d4 100644 --- a/include/libxml/parser.h +++ b/include/libxml/parser.h @@ -591,7 +591,7 @@ typedef void (*cdataBlockSAXFunc) ( * * Display and format a warning messages, callback. */ -typedef void (*warningSAXFunc) (void *ctx, +typedef void (XMLCDECL *warningSAXFunc) (void *ctx, const char *msg, ...); /** * errorSAXFunc: @@ -601,7 +601,7 @@ typedef void (*warningSAXFunc) (void *ctx, * * Display and format an error messages, callback. */ -typedef void (*errorSAXFunc) (void *ctx, +typedef void (XMLCDECL *errorSAXFunc) (void *ctx, const char *msg, ...); /** * fatalErrorSAXFunc: @@ -613,7 +613,7 @@ typedef void (*errorSAXFunc) (void *ctx, * Note: so far fatalError() SAX callbacks are not used, error() * get all the callbacks for errors. */ -typedef void (*fatalErrorSAXFunc) (void *ctx, +typedef void (XMLCDECL *fatalErrorSAXFunc) (void *ctx, const char *msg, ...); /** * isStandaloneSAXFunc: @@ -1088,7 +1088,8 @@ typedef enum { XML_PARSE_NODICT = 1<<12,/* Do not reuse the context dictionnary */ XML_PARSE_NSCLEAN = 1<<13,/* remove redundant namespaces declarations */ XML_PARSE_NOCDATA = 1<<14,/* merge CDATA as text nodes */ - XML_PARSE_NOXINCNODE= 1<<15 /* do not generate XINCLUDE START/END nodes */ + XML_PARSE_NOXINCNODE= 1<<15,/* do not generate XINCLUDE START/END nodes */ + XML_PARSE_COMPACT = 1<<16 /* compact small text nodes */ } xmlParserOption; XMLPUBFUN void XMLCALL @@ -1162,6 +1163,52 @@ XMLPUBFUN xmlDocPtr XMLCALL const char *encoding, int options); +/* + * Library wide options + */ +/** + * xmlFeature: + * + * Used to examine the existance of features that can be enabled + * or disabled at compile-time. + */ +typedef enum { + XML_FEATURE_THREAD = 1, + XML_FEATURE_TREE = 2, + XML_FEATURE_OUTPUT = 3, + XML_FEATURE_PUSH = 4, + XML_FEATURE_READER = 5, + XML_FEATURE_PATTERN = 6, + XML_FEATURE_WRITER = 7, + XML_FEATURE_SAX1 = 8, + XML_FEATURE_FTP = 9, + XML_FEATURE_HTTP = 10, + XML_FEATURE_VALID = 11, + XML_FEATURE_HTML = 12, + XML_FEATURE_LEGACY = 13, + XML_FEATURE_C14N = 14, + XML_FEATURE_CATALOG = 15, + XML_FEATURE_XPATH = 16, + XML_FEATURE_XPTR = 17, + XML_FEATURE_XINCLUDE = 18, + XML_FEATURE_ICONV = 19, + XML_FEATURE_ISO8859X = 20, + XML_FEATURE_UNICODE = 21, + XML_FEATURE_REGEXP = 22, + XML_FEATURE_AUTOMATA = 23, + XML_FEATURE_EXPR = 24, + XML_FEATURE_SCHEMAS = 25, + XML_FEATURE_SCHEMATRON = 26, + XML_FEATURE_MODULES = 27, + XML_FEATURE_DEBUG = 28, + XML_FEATURE_DEBUG_MEM = 29, + XML_FEATURE_DEBUG_RUN = 30, + XML_FEATURE_NONE = 99999 /* just to be sure of allocation size */ +} xmlFeature; + +XMLPUBFUN int XMLCALL + xmlHasFeature (xmlFeature feature); + #ifdef __cplusplus } #endif diff --git a/include/libxml/pattern.h b/include/libxml/pattern.h index e3ee76d..1aa6704 100644 --- a/include/libxml/pattern.h +++ b/include/libxml/pattern.h @@ -52,7 +52,7 @@ XMLPUBFUN void XMLCALL XMLPUBFUN xmlPatternPtr XMLCALL xmlPatterncompile (const xmlChar *pattern, xmlDict *dict, - xmlPatternFlags flags, + int flags, const xmlChar **namespaces); XMLPUBFUN int XMLCALL xmlPatternMatch (xmlPatternPtr comp, @@ -67,6 +67,8 @@ XMLPUBFUN int XMLCALL XMLPUBFUN int XMLCALL xmlPatternMaxDepth (xmlPatternPtr comp); XMLPUBFUN int XMLCALL + xmlPatternMinDepth (xmlPatternPtr comp); +XMLPUBFUN int XMLCALL xmlPatternFromRoot (xmlPatternPtr comp); XMLPUBFUN xmlStreamCtxtPtr XMLCALL xmlPatternGetStreamCtxt (xmlPatternPtr comp); diff --git a/include/libxml/relaxng.h b/include/libxml/relaxng.h index ca3c13b..c75aba2 100644 --- a/include/libxml/relaxng.h +++ b/include/libxml/relaxng.h @@ -27,8 +27,8 @@ typedef xmlRelaxNG *xmlRelaxNGPtr; /** * A schemas validation context */ -typedef void (*xmlRelaxNGValidityErrorFunc) (void *ctx, const char *msg, ...); -typedef void (*xmlRelaxNGValidityWarningFunc) (void *ctx, const char *msg, ...); +typedef void (XMLCDECL *xmlRelaxNGValidityErrorFunc) (void *ctx, const char *msg, ...); +typedef void (XMLCDECL *xmlRelaxNGValidityWarningFunc) (void *ctx, const char *msg, ...); typedef struct _xmlRelaxNGParserCtxt xmlRelaxNGParserCtxt; typedef xmlRelaxNGParserCtxt *xmlRelaxNGParserCtxtPtr; @@ -152,6 +152,9 @@ XMLPUBFUN int XMLCALL xmlRelaxNGValidityErrorFunc *err, xmlRelaxNGValidityWarningFunc *warn, void **ctx); +XMLPUBFUN void XMLCALL + xmlRelaxNGSetValidStructuredErrors(xmlRelaxNGValidCtxtPtr ctxt, + xmlStructuredErrorFunc serror, void *ctx); XMLPUBFUN xmlRelaxNGValidCtxtPtr XMLCALL xmlRelaxNGNewValidCtxt (xmlRelaxNGPtr schema); XMLPUBFUN void XMLCALL diff --git a/include/libxml/schematron.h b/include/libxml/schematron.h new file mode 100644 index 0000000..6eaa699 --- /dev/null +++ b/include/libxml/schematron.h @@ -0,0 +1,124 @@ +/* + * Summary: XML Schemastron implementation + * Description: interface to the XML Schematron validity checking. + * + * Copy: See Copyright for the status of this software. + * + * Author: Daniel Veillard + */ + + +#ifndef __XML_SCHEMATRON_H__ +#define __XML_SCHEMATRON_H__ + +#include <libxml/xmlversion.h> + +#ifdef LIBXML_SCHEMATRON_ENABLED + +#include <libxml/tree.h> + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + XML_SCHEMATRON_OUT_QUIET = 1 << 0, /* quiet no report */ + XML_SCHEMATRON_OUT_TEXT = 1 << 1, /* build a textual report */ + XML_SCHEMATRON_OUT_XML = 1 << 2, /* output SVRL */ + XML_SCHEMATRON_OUT_FILE = 1 << 8, /* output to a file descriptor */ + XML_SCHEMATRON_OUT_BUFFER = 1 << 9, /* output to a buffer */ + XML_SCHEMATRON_OUT_IO = 1 << 10 /* output to I/O mechanism */ +} xmlSchematronValidOptions; + +/** + * The schemas related types are kept internal + */ +typedef struct _xmlSchematron xmlSchematron; +typedef xmlSchematron *xmlSchematronPtr; + +/** + * A schemas validation context + */ +typedef void (*xmlSchematronValidityErrorFunc) (void *ctx, const char *msg, ...); +typedef void (*xmlSchematronValidityWarningFunc) (void *ctx, const char *msg, ...); + +typedef struct _xmlSchematronParserCtxt xmlSchematronParserCtxt; +typedef xmlSchematronParserCtxt *xmlSchematronParserCtxtPtr; + +typedef struct _xmlSchematronValidCtxt xmlSchematronValidCtxt; +typedef xmlSchematronValidCtxt *xmlSchematronValidCtxtPtr; + +/* + * Interfaces for parsing. + */ +XMLPUBFUN xmlSchematronParserCtxtPtr XMLCALL + xmlSchematronNewParserCtxt (const char *URL); +XMLPUBFUN xmlSchematronParserCtxtPtr XMLCALL + xmlSchematronNewMemParserCtxt(const char *buffer, + int size); +XMLPUBFUN xmlSchematronParserCtxtPtr XMLCALL + xmlSchematronNewDocParserCtxt(xmlDocPtr doc); +XMLPUBFUN void XMLCALL + xmlSchematronFreeParserCtxt (xmlSchematronParserCtxtPtr ctxt); +/***** +XMLPUBFUN void XMLCALL + xmlSchematronSetParserErrors(xmlSchematronParserCtxtPtr ctxt, + xmlSchematronValidityErrorFunc err, + xmlSchematronValidityWarningFunc warn, + void *ctx); +XMLPUBFUN int XMLCALL + xmlSchematronGetParserErrors(xmlSchematronParserCtxtPtr ctxt, + xmlSchematronValidityErrorFunc * err, + xmlSchematronValidityWarningFunc * warn, + void **ctx); +XMLPUBFUN int XMLCALL + xmlSchematronIsValid (xmlSchematronValidCtxtPtr ctxt); + *****/ +XMLPUBFUN xmlSchematronPtr XMLCALL + xmlSchematronParse (xmlSchematronParserCtxtPtr ctxt); +XMLPUBFUN void XMLCALL + xmlSchematronFree (xmlSchematronPtr schema); +/* + * Interfaces for validating + */ +/****** +XMLPUBFUN void XMLCALL + xmlSchematronSetValidStructuredErrors( + xmlSchematronValidCtxtPtr ctxt, + xmlStructuredErrorFunc serror, + void *ctx); +XMLPUBFUN void XMLCALL + xmlSchematronSetValidErrors (xmlSchematronValidCtxtPtr ctxt, + xmlSchematronValidityErrorFunc err, + xmlSchematronValidityWarningFunc warn, + void *ctx); +XMLPUBFUN int XMLCALL + xmlSchematronGetValidErrors (xmlSchematronValidCtxtPtr ctxt, + xmlSchematronValidityErrorFunc *err, + xmlSchematronValidityWarningFunc *warn, + void **ctx); +XMLPUBFUN int XMLCALL + xmlSchematronSetValidOptions(xmlSchematronValidCtxtPtr ctxt, + int options); +XMLPUBFUN int XMLCALL + xmlSchematronValidCtxtGetOptions(xmlSchematronValidCtxtPtr ctxt); +XMLPUBFUN int XMLCALL + xmlSchematronValidateOneElement (xmlSchematronValidCtxtPtr ctxt, + xmlNodePtr elem); + *******/ + +XMLPUBFUN xmlSchematronValidCtxtPtr XMLCALL + xmlSchematronNewValidCtxt (xmlSchematronPtr schema, + int options); +XMLPUBFUN void XMLCALL + xmlSchematronFreeValidCtxt (xmlSchematronValidCtxtPtr ctxt); +XMLPUBFUN int XMLCALL + xmlSchematronValidateDoc (xmlSchematronValidCtxtPtr ctxt, + xmlDocPtr instance); + +#ifdef __cplusplus +} +#endif + +#endif /* LIBXML_SCHEMATRON_ENABLED */ +#endif /* __XML_SCHEMATRON_H__ */ diff --git a/include/libxml/threads.h b/include/libxml/threads.h index fb6b704..4f7d10f 100644 --- a/include/libxml/threads.h +++ b/include/libxml/threads.h @@ -36,7 +36,6 @@ typedef xmlRMutex *xmlRMutexPtr; #ifdef __cplusplus extern "C" { #endif - XMLPUBFUN xmlMutexPtr XMLCALL xmlNewMutex (void); XMLPUBFUN void XMLCALL diff --git a/include/libxml/tree.h b/include/libxml/tree.h index d995e5c..bd62d0a 100644 --- a/include/libxml/tree.h +++ b/include/libxml/tree.h @@ -55,6 +55,33 @@ typedef xmlEntity *xmlEntityPtr; #define BASE_BUFFER_SIZE 4096 /** + * xmlBufferAllocationScheme: + * + * A buffer allocation scheme can be defined to either match exactly the + * need or double it's allocated size each time it is found too small. + */ + +typedef enum { + XML_BUFFER_ALLOC_DOUBLEIT, + XML_BUFFER_ALLOC_EXACT, + XML_BUFFER_ALLOC_IMMUTABLE +} xmlBufferAllocationScheme; + +/** + * xmlBuffer: + * + * A buffer structure. + */ +typedef struct _xmlBuffer xmlBuffer; +typedef xmlBuffer *xmlBufferPtr; +struct _xmlBuffer { + xmlChar *content; /* The buffer content UTF8 */ + unsigned int use; /* The buffer size used */ + unsigned int size; /* The buffer size */ + xmlBufferAllocationScheme alloc; /* The realloc method */ +}; + +/** * XML_XML_NAMESPACE: * * This is the namespace for the special xml: prefix predefined in the @@ -402,33 +429,6 @@ struct _xmlRef { }; /** - * xmlBufferAllocationScheme: - * - * A buffer allocation scheme can be defined to either match exactly the - * need or double it's allocated size each time it is found too small. - */ - -typedef enum { - XML_BUFFER_ALLOC_DOUBLEIT, - XML_BUFFER_ALLOC_EXACT, - XML_BUFFER_ALLOC_IMMUTABLE -} xmlBufferAllocationScheme; - -/** - * xmlBuffer: - * - * A buffer structure. - */ -typedef struct _xmlBuffer xmlBuffer; -typedef xmlBuffer *xmlBufferPtr; -struct _xmlBuffer { - xmlChar *content; /* The buffer content UTF8 */ - unsigned int use; /* The buffer size used */ - unsigned int size; /* The buffer size */ - xmlBufferAllocationScheme alloc; /* The realloc method */ -}; - -/** * xmlNode: * * A node in an XML tree. diff --git a/include/libxml/uri.h b/include/libxml/uri.h index 90ed06e..89e3653 100644 --- a/include/libxml/uri.h +++ b/include/libxml/uri.h @@ -47,13 +47,16 @@ struct _xmlURI { XMLPUBFUN xmlURIPtr XMLCALL xmlCreateURI (void); XMLPUBFUN xmlChar * XMLCALL - xmlBuildURI (const xmlChar *URI, - const xmlChar *base); + xmlBuildURI (const xmlChar *URI, + const xmlChar *base); XMLPUBFUN xmlChar * XMLCALL xmlBuildRelativeURI (const xmlChar *URI, - const xmlChar *base); + const xmlChar *base); XMLPUBFUN xmlURIPtr XMLCALL xmlParseURI (const char *str); +XMLPUBFUN xmlURIPtr XMLCALL + xmlParseURIRaw (const char *str, + int raw); XMLPUBFUN int XMLCALL xmlParseURIReference (xmlURIPtr uri, const char *str); diff --git a/include/libxml/valid.h b/include/libxml/valid.h index 86e3fce..d13e4eb 100644 --- a/include/libxml/valid.h +++ b/include/libxml/valid.h @@ -39,7 +39,7 @@ typedef xmlValidState *xmlValidStatePtr; * Callback called when a validity error is found. This is a message * oriented function similar to an *printf function. */ -typedef void (*xmlValidityErrorFunc) (void *ctx, +typedef void (XMLCDECL *xmlValidityErrorFunc) (void *ctx, const char *msg, ...); @@ -54,7 +54,7 @@ typedef void (*xmlValidityErrorFunc) (void *ctx, * Callback called when a validity warning is found. This is a message * oriented function similar to an *printf function. */ -typedef void (*xmlValidityWarningFunc) (void *ctx, +typedef void (XMLCDECL *xmlValidityWarningFunc) (void *ctx, const char *msg, ...); diff --git a/include/libxml/xmlIO.h b/include/libxml/xmlIO.h index 0f7b8a8..e67b6e5 100644 --- a/include/libxml/xmlIO.h +++ b/include/libxml/xmlIO.h @@ -31,7 +31,7 @@ extern "C" { * * Returns 1 if yes and 0 if another Input module should be used */ -typedef int (*xmlInputMatchCallback) (char const *filename); +typedef int (XMLCALL *xmlInputMatchCallback) (char const *filename); /** * xmlInputOpenCallback: * @filename: the filename or URI @@ -40,7 +40,7 @@ typedef int (*xmlInputMatchCallback) (char const *filename); * * Returns an Input context or NULL in case or error */ -typedef void * (*xmlInputOpenCallback) (char const *filename); +typedef void * (XMLCALL *xmlInputOpenCallback) (char const *filename); /** * xmlInputReadCallback: * @context: an Input context @@ -51,7 +51,7 @@ typedef void * (*xmlInputOpenCallback) (char const *filename); * * Returns the number of bytes read or -1 in case of error */ -typedef int (*xmlInputReadCallback) (void * context, char * buffer, int len); +typedef int (XMLCALL *xmlInputReadCallback) (void * context, char * buffer, int len); /** * xmlInputCloseCallback: * @context: an Input context @@ -60,7 +60,7 @@ typedef int (*xmlInputReadCallback) (void * context, char * buffer, int len); * * Returns 0 or -1 in case of error */ -typedef int (*xmlInputCloseCallback) (void * context); +typedef int (XMLCALL *xmlInputCloseCallback) (void * context); #ifdef LIBXML_OUTPUT_ENABLED /* @@ -77,7 +77,7 @@ typedef int (*xmlInputCloseCallback) (void * context); * * Returns 1 if yes and 0 if another Output module should be used */ -typedef int (*xmlOutputMatchCallback) (char const *filename); +typedef int (XMLCALL *xmlOutputMatchCallback) (char const *filename); /** * xmlOutputOpenCallback: * @filename: the filename or URI @@ -86,7 +86,7 @@ typedef int (*xmlOutputMatchCallback) (char const *filename); * * Returns an Output context or NULL in case or error */ -typedef void * (*xmlOutputOpenCallback) (char const *filename); +typedef void * (XMLCALL *xmlOutputOpenCallback) (char const *filename); /** * xmlOutputWriteCallback: * @context: an Output context @@ -97,7 +97,7 @@ typedef void * (*xmlOutputOpenCallback) (char const *filename); * * Returns the number of bytes written or -1 in case of error */ -typedef int (*xmlOutputWriteCallback) (void * context, const char * buffer, +typedef int (XMLCALL *xmlOutputWriteCallback) (void * context, const char * buffer, int len); /** * xmlOutputCloseCallback: @@ -107,7 +107,7 @@ typedef int (*xmlOutputWriteCallback) (void * context, const char * buffer, * * Returns 0 or -1 in case of error */ -typedef int (*xmlOutputCloseCallback) (void * context); +typedef int (XMLCALL *xmlOutputCloseCallback) (void * context); #endif /* LIBXML_OUTPUT_ENABLED */ #ifdef __cplusplus diff --git a/include/libxml/xmlautomata.h b/include/libxml/xmlautomata.h index d29ddcf..f98b55e 100644 --- a/include/libxml/xmlautomata.h +++ b/include/libxml/xmlautomata.h @@ -65,6 +65,14 @@ XMLPUBFUN xmlAutomataStatePtr XMLCALL const xmlChar *token, const xmlChar *token2, void *data); +XMLPUBFUN xmlAutomataStatePtr XMLCALL + xmlAutomataNewNegTrans (xmlAutomataPtr am, + xmlAutomataStatePtr from, + xmlAutomataStatePtr to, + const xmlChar *token, + const xmlChar *token2, + void *data); + XMLPUBFUN xmlAutomataStatePtr XMLCALL xmlAutomataNewCountTrans (xmlAutomataPtr am, xmlAutomataStatePtr from, diff --git a/include/libxml/xmlerror.h b/include/libxml/xmlerror.h index 04da1a6..cc35ca8 100644 --- a/include/libxml/xmlerror.h +++ b/include/libxml/xmlerror.h @@ -60,7 +60,8 @@ typedef enum { XML_FROM_VALID, /* The XML DTD validation with valid context */ XML_FROM_CHECK, /* The error checking module */ XML_FROM_WRITER, /* The xmlwriter module */ - XML_FROM_MODULE /* The dynamically loaded module module*/ + XML_FROM_MODULE, /* The dynamically loaded module module*/ + XML_FROM_I18N /* The module handling character conversion */ } xmlErrorDomain; /** @@ -760,6 +761,7 @@ typedef enum { XML_SCHEMAP_AU_PROPS_CORRECT_2, /* 3078 */ XML_SCHEMAP_A_PROPS_CORRECT_2, /* 3079 */ XML_SCHEMAP_C_PROPS_CORRECT, /* 3080 */ + XML_SCHEMAP_SRC_REDEFINE, /* 3081 */ XML_MODULE_OPEN = 4900, /* 4900 */ XML_MODULE_CLOSE, /* 4901 */ XML_CHECK_FOUND_ELEMENT = 5000, @@ -799,7 +801,12 @@ typedef enum { XML_CHECK_NOT_NCNAME, /* 5034 */ XML_CHECK_OUTSIDE_DICT, /* 5035 */ XML_CHECK_WRONG_NAME, /* 5036 */ - XML_CHECK_NAME_NOT_NULL /* 5037 */ + XML_CHECK_NAME_NOT_NULL, /* 5037 */ + XML_I18N_NO_NAME = 6000, + XML_I18N_NO_HANDLER, /* 6001 */ + XML_I18N_EXCESS_HANDLER, /* 6002 */ + XML_I18N_CONV_FAILED, /* 6003 */ + XML_I18N_NO_OUTPUT /* 6004 */ #if 0 XML_CHECK_, /* 5033 */ XML_CHECK_X /* 503 */ @@ -815,7 +822,7 @@ typedef enum { * Signature of the function to use when there is an error and * no parsing or validity context available . */ -typedef void (*xmlGenericErrorFunc) (void *ctx, +typedef void (XMLCDECL *xmlGenericErrorFunc) (void *ctx, const char *msg, ...); /** @@ -826,7 +833,7 @@ typedef void (*xmlGenericErrorFunc) (void *ctx, * Signature of the function to use when there is an error and * the module handles the new error reporting mechanism. */ -typedef void (*xmlStructuredErrorFunc) (void *userData, xmlErrorPtr error); +typedef void (XMLCALL *xmlStructuredErrorFunc) (void *userData, xmlErrorPtr error); /* * Use the following function to reset the two global variables @@ -845,19 +852,19 @@ XMLPUBFUN void XMLCALL * Default message routines used by SAX and Valid context for error * and warning reporting. */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCDECL xmlParserError (void *ctx, const char *msg, ...); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCDECL xmlParserWarning (void *ctx, const char *msg, ...); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCDECL xmlParserValidityError (void *ctx, const char *msg, ...); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCDECL xmlParserValidityWarning (void *ctx, const char *msg, ...); diff --git a/include/libxml/xmlexports.h b/include/libxml/xmlexports.h index ee03cad..29a6f54 100644 --- a/include/libxml/xmlexports.h +++ b/include/libxml/xmlexports.h @@ -40,6 +40,13 @@ * Macros which declare the called convention for exported functions */ #define XMLCALL +/** + * XMLCDECL: + * + * Macro which declares the calling convention for exported functions that + * use '...'. + */ +#define XMLCDECL /** DOC_DISABLE */ @@ -48,6 +55,7 @@ #undef XMLPUBFUN #undef XMLPUBVAR #undef XMLCALL + #undef XMLCDECL #if defined(IN_LIBXML) && !defined(LIBXML_STATIC) #define XMLPUBFUN __declspec(dllexport) #define XMLPUBVAR __declspec(dllexport) @@ -59,7 +67,12 @@ #define XMLPUBVAR extern #endif #endif - #define XMLCALL __cdecl + #if defined(LIBXML_FASTCALL) + #define XMLCALL __fastcall + #else + #define XMLCALL __cdecl + #endif + #define XMLCDECL __cdecl #if !defined _REENTRANT #define _REENTRANT #endif @@ -70,6 +83,7 @@ #undef XMLPUBFUN #undef XMLPUBVAR #undef XMLCALL + #undef XMLCDECL #if defined(IN_LIBXML) && !defined(LIBXML_STATIC) #define XMLPUBFUN __declspec(dllexport) #define XMLPUBVAR __declspec(dllexport) extern @@ -82,6 +96,7 @@ #endif #endif #define XMLCALL __cdecl + #define XMLCDECL __cdecl #if !defined _REENTRANT #define _REENTRANT #endif @@ -92,6 +107,7 @@ #undef XMLPUBFUN #undef XMLPUBVAR #undef XMLCALL + #undef XMLCDECL #if defined(IN_LIBXML) && !defined(LIBXML_STATIC) #define XMLPUBFUN __declspec(dllexport) #define XMLPUBVAR __declspec(dllexport) @@ -104,6 +120,7 @@ #endif #endif #define XMLCALL __cdecl + #define XMLCDECL __cdecl #if !defined _REENTRANT #define _REENTRANT #endif @@ -114,6 +131,7 @@ #undef XMLPUBFUN #undef XMLPUBVAR #undef XMLCALL + #undef XMLCDECL #if defined(IN_LIBXML) && !defined(LIBXML_STATIC) #define XMLPUBFUN __declspec(dllexport) #define XMLPUBVAR __declspec(dllexport) @@ -126,6 +144,7 @@ #endif #endif #define XMLCALL __cdecl + #define XMLCDECL __cdecl #endif /* Compatibility */ diff --git a/include/libxml/xmlregexp.h b/include/libxml/xmlregexp.h index a7b3b29..a257bb4 100644 --- a/include/libxml/xmlregexp.h +++ b/include/libxml/xmlregexp.h @@ -40,6 +40,7 @@ typedef xmlRegExecCtxt *xmlRegExecCtxtPtr; } #endif #include <libxml/tree.h> +#include <libxml/dict.h> #ifdef __cplusplus extern "C" { #endif @@ -99,6 +100,113 @@ XMLPUBFUN int XMLCALL int *nbneg, xmlChar **values, int *terminal); +#ifdef LIBXML_EXPR_ENABLED +/* + * Formal regular expression handling + * Its goal is to do some formal work on content models + */ + +/* expressions are used within a context */ +typedef struct _xmlExpCtxt xmlExpCtxt; +typedef xmlExpCtxt *xmlExpCtxtPtr; + +XMLPUBFUN void XMLCALL + xmlExpFreeCtxt (xmlExpCtxtPtr ctxt); +XMLPUBFUN xmlExpCtxtPtr XMLCALL + xmlExpNewCtxt (int maxNodes, + xmlDictPtr dict); + +XMLPUBFUN int XMLCALL + xmlExpCtxtNbNodes(xmlExpCtxtPtr ctxt); +XMLPUBFUN int XMLCALL + xmlExpCtxtNbCons(xmlExpCtxtPtr ctxt); + +/* Expressions are trees but the tree is opaque */ +typedef struct _xmlExpNode xmlExpNode; +typedef xmlExpNode *xmlExpNodePtr; + +typedef enum { + XML_EXP_EMPTY = 0, + XML_EXP_FORBID = 1, + XML_EXP_ATOM = 2, + XML_EXP_SEQ = 3, + XML_EXP_OR = 4, + XML_EXP_COUNT = 5 +} xmlExpNodeType; + +/* + * 2 core expressions shared by all for the empty language set + * and for the set with just the empty token + */ +XMLPUBVAR xmlExpNodePtr forbiddenExp; +XMLPUBVAR xmlExpNodePtr emptyExp; + +/* + * Expressions are reference counted internally + */ +XMLPUBFUN void XMLCALL + xmlExpFree (xmlExpCtxtPtr ctxt, + xmlExpNodePtr expr); +XMLPUBFUN void XMLCALL + xmlExpRef (xmlExpNodePtr expr); + +/* + * constructors can be either manual or from a string + */ +XMLPUBFUN xmlExpNodePtr XMLCALL + xmlExpParse (xmlExpCtxtPtr ctxt, + const char *expr); +XMLPUBFUN xmlExpNodePtr XMLCALL + xmlExpNewAtom (xmlExpCtxtPtr ctxt, + const xmlChar *name, + int len); +XMLPUBFUN xmlExpNodePtr XMLCALL + xmlExpNewOr (xmlExpCtxtPtr ctxt, + xmlExpNodePtr left, + xmlExpNodePtr right); +XMLPUBFUN xmlExpNodePtr XMLCALL + xmlExpNewSeq (xmlExpCtxtPtr ctxt, + xmlExpNodePtr left, + xmlExpNodePtr right); +XMLPUBFUN xmlExpNodePtr XMLCALL + xmlExpNewRange (xmlExpCtxtPtr ctxt, + xmlExpNodePtr subset, + int min, + int max); +/* + * The really interesting APIs + */ +XMLPUBFUN int XMLCALL + xmlExpIsNillable(xmlExpNodePtr expr); +XMLPUBFUN int XMLCALL + xmlExpMaxToken (xmlExpNodePtr expr); +XMLPUBFUN int XMLCALL + xmlExpGetLanguage(xmlExpCtxtPtr ctxt, + xmlExpNodePtr expr, + const xmlChar**list, + int len); +XMLPUBFUN int XMLCALL + xmlExpGetStart (xmlExpCtxtPtr ctxt, + xmlExpNodePtr expr, + const xmlChar**list, + int len); +XMLPUBFUN xmlExpNodePtr XMLCALL + xmlExpStringDerive(xmlExpCtxtPtr ctxt, + xmlExpNodePtr expr, + const xmlChar *str, + int len); +XMLPUBFUN xmlExpNodePtr XMLCALL + xmlExpExpDerive (xmlExpCtxtPtr ctxt, + xmlExpNodePtr expr, + xmlExpNodePtr sub); +XMLPUBFUN int XMLCALL + xmlExpSubsume (xmlExpCtxtPtr ctxt, + xmlExpNodePtr expr, + xmlExpNodePtr sub); +XMLPUBFUN void XMLCALL + xmlExpDump (xmlBufferPtr buf, + xmlExpNodePtr expr); +#endif /* LIBXML_EXPR_ENABLED */ #ifdef __cplusplus } #endif diff --git a/include/libxml/xmlsave.h b/include/libxml/xmlsave.h index 534fefd..7b8f42c 100644 --- a/include/libxml/xmlsave.h +++ b/include/libxml/xmlsave.h @@ -27,7 +27,8 @@ extern "C" { * to the xmlSaveToFd() and similar calls. */ typedef enum { - XML_SAVE_FORMAT = 1<<0 /* format save output */ + XML_SAVE_FORMAT = 1<<0, /* format save output */ + XML_SAVE_NO_DECL = 1<<1 /* drop the xml declaration */ } xmlSaveOption; diff --git a/include/libxml/xmlschemas.h b/include/libxml/xmlschemas.h index 6cecffd..ab47091 100644 --- a/include/libxml/xmlschemas.h +++ b/include/libxml/xmlschemas.h @@ -87,8 +87,8 @@ typedef xmlSchema *xmlSchemaPtr; /** * A schemas validation context */ -typedef void (*xmlSchemaValidityErrorFunc) (void *ctx, const char *msg, ...); -typedef void (*xmlSchemaValidityWarningFunc) (void *ctx, const char *msg, ...); +typedef void (XMLCDECL *xmlSchemaValidityErrorFunc) (void *ctx, const char *msg, ...); +typedef void (XMLCDECL *xmlSchemaValidityWarningFunc) (void *ctx, const char *msg, ...); typedef struct _xmlSchemaParserCtxt xmlSchemaParserCtxt; typedef xmlSchemaParserCtxt *xmlSchemaParserCtxtPtr; @@ -138,6 +138,9 @@ XMLPUBFUN void XMLCALL xmlSchemaValidityErrorFunc err, xmlSchemaValidityWarningFunc warn, void *ctx); +XMLPUBFUN void XMLCALL + xmlSchemaSetValidStructuredErrors(xmlSchemaValidCtxtPtr ctxt, + xmlStructuredErrorFunc serror, void *ctx); XMLPUBFUN int XMLCALL xmlSchemaGetValidErrors (xmlSchemaValidCtxtPtr ctxt, xmlSchemaValidityErrorFunc *err, diff --git a/include/libxml/xmlversion.h b/include/libxml/xmlversion.h index d6d6149..46cb36d 100644 --- a/include/libxml/xmlversion.h +++ b/include/libxml/xmlversion.h @@ -29,28 +29,28 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version); * * the version string like "1.2.3" */ -#define LIBXML_DOTTED_VERSION "2.6.20" +#define LIBXML_DOTTED_VERSION "2.6.21" /** * LIBXML_VERSION: * * the version number: 1.2.3 value is 1002003 */ -#define LIBXML_VERSION 20620 +#define LIBXML_VERSION 20621 /** * LIBXML_VERSION_STRING: * * the version number string, 1.2.3 value is "1002003" */ -#define LIBXML_VERSION_STRING "20620" +#define LIBXML_VERSION_STRING "20621" /** * LIBXML_VERSION_EXTRA: * * extra version information, used to show a CVS compilation */ -#define LIBXML_VERSION_EXTRA "-CVS2521" +#define LIBXML_VERSION_EXTRA "-CVS2619" /** * LIBXML_TEST_VERSION: @@ -58,7 +58,7 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version); * Macro to check that the libxml version in use is compatible with * the version the software has been compiled against */ -#define LIBXML_TEST_VERSION xmlCheckVersion(20620); +#define LIBXML_TEST_VERSION xmlCheckVersion(20621); #ifndef VMS #if 0 @@ -331,6 +331,15 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version); #endif /** + * LIBXML_EXPR_ENABLED: + * + * Whether the formal expressions interfaces are compiled in + */ +#if 1 +#define LIBXML_EXPR_ENABLED +#endif + +/** * LIBXML_SCHEMAS_ENABLED: * * Whether the Schemas validation interfaces are compiled in @@ -340,12 +349,26 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version); #endif /** + * LIBXML_SCHEMATRON_ENABLED: + * + * Whether the Schematron validation interfaces are compiled in + */ +#if 1 +#define LIBXML_SCHEMATRON_ENABLED +#endif + +/** * LIBXML_MODULES_ENABLED: * * Whether the module interfaces are compiled in */ #if 1 #define LIBXML_MODULES_ENABLED +/** + * LIBXML_MODULE_EXTENSION: + * + * the string suffix used by dynamic modules (usually shared libraries) + */ #define LIBXML_MODULE_EXTENSION ".so" #endif diff --git a/include/libxml/xmlversion.h.in b/include/libxml/xmlversion.h.in index 47a28b9..a628741 100644 --- a/include/libxml/xmlversion.h.in +++ b/include/libxml/xmlversion.h.in @@ -331,6 +331,15 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version); #endif /** + * LIBXML_EXPR_ENABLED: + * + * Whether the formal expressions interfaces are compiled in + */ +#if @WITH_SCHEMAS@ +#define LIBXML_EXPR_ENABLED +#endif + +/** * LIBXML_SCHEMAS_ENABLED: * * Whether the Schemas validation interfaces are compiled in @@ -340,12 +349,26 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version); #endif /** + * LIBXML_SCHEMATRON_ENABLED: + * + * Whether the Schematron validation interfaces are compiled in + */ +#if @WITH_SCHEMATRON@ +#define LIBXML_SCHEMATRON_ENABLED +#endif + +/** * LIBXML_MODULES_ENABLED: * * Whether the module interfaces are compiled in */ #if @WITH_MODULES@ #define LIBXML_MODULES_ENABLED +/** + * LIBXML_MODULE_EXTENSION: + * + * the string suffix used by dynamic modules (usually shared libraries) + */ #define LIBXML_MODULE_EXTENSION "@MODULE_EXTENSION@" #endif diff --git a/include/libxml/xpath.h b/include/libxml/xpath.h index eee2630..76473a6 100644 --- a/include/libxml/xpath.h +++ b/include/libxml/xpath.h @@ -249,6 +249,23 @@ typedef xmlXPathFunction (*xmlXPathFuncLookupFunc) (void *ctxt, const xmlChar *ns_uri); /** + * xmlXPathFlags: + * Flags for XPath engine compilation and runtime + */ +/** + * XML_XPATH_CHECKNS: + * + * check namespaces at compilation + */ +#define XML_XPATH_CHECKNS (1<<0) +/** + * XML_XPATH_NOVAR: + * + * forbid variables in expression + */ +#define XML_XPATH_NOVAR (1<<1) + +/** * xmlXPathContext: * * Expression evaluation occurs with respect to a context. @@ -324,6 +341,8 @@ struct _xmlXPathContext { /* dictionnary */ xmlDictPtr dict; /* dictionnary if any */ + + int flags; /* flags to control compilation */ }; /* diff --git a/libxml.spec.in b/libxml.spec.in index 91972bd..6b5a22c 100644 --- a/libxml.spec.in +++ b/libxml.spec.in @@ -64,31 +64,34 @@ at parse time or later once the document has been modified. # try to use compiler profiling, based on Arjan van de Ven <arjanv@redhat.com> # initial test spec. This really doesn't work okay for most tests done. # -GCC_VERSION=`gcc --version | grep "^gcc" | awk '{ print $3 }' | sed 's+\([0-9]\)\.\([0-9]\)\..*+\1\2+'` -if [ $GCC_VERSION -ge 34 ] -then - PROF_GEN='-fprofile-generate' - PROF_USE='-fprofile-use' -fi - -if [ "$PROF_GEN" != "" ] -then - # First generate a profiling version - CFLAGS="${RPM_OPT_FLAGS} ${PROF_GEN}" %configure - make - # Run a few sampling - make dba100000.xml - ./xmllint --noout dba100000.xml - ./xmllint --stream dba100000.xml - ./xmllint --noout --valid test/valid/REC-xml-19980210.xml - ./xmllint --stream --valid test/valid/REC-xml-19980210.xml - # Then generate code based on profile - CFLAGS="${RPM_OPT_FLAGS} ${PROF_USE}" %configure - make -else - %configure - make -fi +# Well except it's just broken most of the time. +#GCC_VERSION=`gcc --version | grep "^gcc" | awk '{ print $3 }' | sed 's+\([0-9]\)\.\([0-9]\)\..*+\1\2+'` +#if [ $GCC_VERSION -ge 34 ] +#then +# PROF_GEN='-fprofile-generate' +# PROF_USE='-fprofile-use' +#fi +# +#if [ "$PROF_GEN" != "" ] +#then +# # First generate a profiling version +# CFLAGS="${RPM_OPT_FLAGS} ${PROF_GEN}" %configure +# make +# # Run a few sampling +# make dba100000.xml +# ./xmllint --noout dba100000.xml +# ./xmllint --stream dba100000.xml +# ./xmllint --noout --valid test/valid/REC-xml-19980210.xml +# ./xmllint --stream --valid test/valid/REC-xml-19980210.xml +# # Then generate code based on profile +# CFLAGS="${RPM_OPT_FLAGS} ${PROF_USE}" %configure +# make +#else +# %configure +# make +#fi +%configure +make gzip -9 ChangeLog %install diff --git a/libxml2.spec b/libxml2.spec index a6d422d..f5648f8 100644 --- a/libxml2.spec +++ b/libxml2.spec @@ -1,6 +1,6 @@ Summary: Library providing XML and HTML support Name: libxml2 -Version: 2.6.20 +Version: 2.6.21 Release: 1 License: MIT Group: Development/Libraries @@ -64,31 +64,34 @@ at parse time or later once the document has been modified. # try to use compiler profiling, based on Arjan van de Ven <arjanv@redhat.com> # initial test spec. This really doesn't work okay for most tests done. # -GCC_VERSION=`gcc --version | grep "^gcc" | awk '{ print $3 }' | sed 's+\([0-9]\)\.\([0-9]\)\..*+\1\2+'` -if [ $GCC_VERSION -ge 34 ] -then - PROF_GEN='-fprofile-generate' - PROF_USE='-fprofile-use' -fi - -if [ "$PROF_GEN" != "" ] -then - # First generate a profiling version - CFLAGS="${RPM_OPT_FLAGS} ${PROF_GEN}" %configure - make - # Run a few sampling - make dba100000.xml - ./xmllint --noout dba100000.xml - ./xmllint --stream dba100000.xml - ./xmllint --noout --valid test/valid/REC-xml-19980210.xml - ./xmllint --stream --valid test/valid/REC-xml-19980210.xml - # Then generate code based on profile - CFLAGS="${RPM_OPT_FLAGS} ${PROF_USE}" %configure - make -else - %configure - make -fi +# Well except it's just broken most of the time. +#GCC_VERSION=`gcc --version | grep "^gcc" | awk '{ print $3 }' | sed 's+\([0-9]\)\.\([0-9]\)\..*+\1\2+'` +#if [ $GCC_VERSION -ge 34 ] +#then +# PROF_GEN='-fprofile-generate' +# PROF_USE='-fprofile-use' +#fi +# +#if [ "$PROF_GEN" != "" ] +#then +# # First generate a profiling version +# CFLAGS="${RPM_OPT_FLAGS} ${PROF_GEN}" %configure +# make +# # Run a few sampling +# make dba100000.xml +# ./xmllint --noout dba100000.xml +# ./xmllint --stream dba100000.xml +# ./xmllint --noout --valid test/valid/REC-xml-19980210.xml +# ./xmllint --stream --valid test/valid/REC-xml-19980210.xml +# # Then generate code based on profile +# CFLAGS="${RPM_OPT_FLAGS} ${PROF_USE}" %configure +# make +#else +# %configure +# make +#fi +%configure +make gzip -9 ChangeLog %install @@ -150,8 +153,8 @@ rm -fr %{buildroot} %doc doc/python.html %changelog -* Mon Jul 11 2005 Daniel Veillard <veillard@redhat.com> -- upstream release 2.6.20 see http://xmlsoft.org/news.html +* Sun Sep 4 2005 Daniel Veillard <veillard@redhat.com> +- upstream release 2.6.21 see http://xmlsoft.org/news.html * Thu Jan 2 2003 Daniel Veillard <veillard@redhat.com> - integrated drv_libxml2 xml.sax driver from Stéphane Bidoul @@ -316,7 +316,7 @@ xmlNanoFTPScanURL(void *ctx, const char *URL) { } if (URL == NULL) return; - uri = xmlParseURI(URL); + uri = xmlParseURIRaw(URL, 1); if (uri == NULL) return; @@ -377,7 +377,7 @@ xmlNanoFTPUpdateURL(void *ctx, const char *URL) { if (ctxt->hostname == NULL) return(-1); - uri = xmlParseURI(URL); + uri = xmlParseURIRaw(URL, 1); if (uri == NULL) return(-1); @@ -440,7 +440,7 @@ xmlNanoFTPScanProxy(const char *URL) { #endif if (URL == NULL) return; - uri = xmlParseURI(URL); + uri = xmlParseURIRaw(URL, 1); if ((uri == NULL) || (uri->scheme == NULL) || (strcmp(uri->scheme, "ftp")) || (uri->server == NULL)) { __xmlIOErr(XML_FROM_FTP, XML_FTP_URL_SYNTAX, "Syntax Error\n"); @@ -944,7 +944,7 @@ xmlNanoFTPConnect(void *ctx) { ((struct sockaddr_in *)&ctxt->ftpAddr)->sin_family = AF_INET; memcpy (&((struct sockaddr_in *)&ctxt->ftpAddr)->sin_addr, hp->h_addr_list[0], hp->h_length); - ((struct sockaddr_in *)&ctxt->ftpAddr)->sin_port = htons (port); + ((struct sockaddr_in *)&ctxt->ftpAddr)->sin_port = (u_short)htons ((unsigned short)port); ctxt->controlFd = socket (AF_INET, SOCK_STREAM, 0); addrlen = sizeof (struct sockaddr_in); } @@ -248,8 +248,10 @@ done: void xmlNanoHTTPCleanup(void) { - if (proxy != NULL) + if (proxy != NULL) { xmlFree(proxy); + proxy = NULL; + } #ifdef _WINSOCKAPI_ if (initialized) WSACleanup(); @@ -291,7 +293,7 @@ xmlNanoHTTPScanURL(xmlNanoHTTPCtxtPtr ctxt, const char *URL) { } if (URL == NULL) return; - uri = xmlParseURI(URL); + uri = xmlParseURIRaw(URL, 1); if (uri == NULL) return; @@ -344,7 +346,7 @@ xmlNanoHTTPScanProxy(const char *URL) { #endif if (URL == NULL) return; - uri = xmlParseURI(URL); + uri = xmlParseURIRaw(URL, 1); if ((uri == NULL) || (uri->scheme == NULL) || (strcmp(uri->scheme, "http")) || (uri->server == NULL)) { __xmlIOErr(XML_FROM_HTTP, XML_HTTP_URL_SYNTAX, "Syntax Error\n"); @@ -460,7 +462,14 @@ xmlNanoHTTPSend(xmlNanoHTTPCtxtPtr ctxt, const char * xmt_ptr, int outlen) { tv.tv_sec = timeout; tv.tv_usec = 0; FD_ZERO( &wfd ); +#ifdef _MSC_VER +#pragma warning(push) +#pragma warning(disable: 4018) +#endif FD_SET( ctxt->fd, &wfd ); +#ifdef _MSC_VER +#pragma warning(pop) +#endif (void)select( ctxt->fd + 1, NULL, &wfd, NULL, &tv ); } } @@ -553,7 +562,14 @@ xmlNanoHTTPRecv(xmlNanoHTTPCtxtPtr ctxt) { tv.tv_sec = timeout; tv.tv_usec = 0; FD_ZERO(&rfd); +#ifdef _MSC_VER +#pragma warning(push) +#pragma warning(disable: 4018) +#endif FD_SET(ctxt->fd, &rfd); +#ifdef _MSC_VER +#pragma warning(pop) +#endif if ( (select(ctxt->fd+1, &rfd, NULL, NULL, &tv)<1) #if defined(EINTR) @@ -839,7 +855,11 @@ xmlNanoHTTPConnectAttempt(struct sockaddr *addr) tv.tv_sec = timeout; tv.tv_usec = 0; - + +#ifdef _MSC_VER +#pragma warning(push) +#pragma warning(disable: 4018) +#endif FD_ZERO(&wfd); FD_SET(s, &wfd); @@ -851,6 +871,9 @@ xmlNanoHTTPConnectAttempt(struct sockaddr *addr) #else switch(select(s+1, NULL, &wfd, NULL, &tv)) #endif +#ifdef _MSC_VER +#pragma warning(pop) +#endif { case 0: /* Time out */ @@ -1034,7 +1057,7 @@ xmlNanoHTTPConnectHost(const char *host, int port) memcpy (&ia, h->h_addr_list[i], h->h_length); sockin.sin_family = h->h_addrtype; sockin.sin_addr = ia; - sockin.sin_port = htons (port); + sockin.sin_port = (u_short)htons ((unsigned short)port); addr = (struct sockaddr *) &sockin; #ifdef SUPPORT_IP6 } else if (have_ipv6 () && (h->h_addrtype == AF_INET6)) { @@ -583,6 +583,212 @@ xmlNsErr(xmlParserCtxtPtr ctxt, xmlParserErrors error, /************************************************************************ * * + * Library wide options * + * * + ************************************************************************/ + +/** + * xmlHasFeature: + * @feature: the feature to be examined + * + * Examines if the library has been compiled with a given feature. + * + * Returns a non-zero value if the feature exist, otherwise zero. + * Returns zero (0) if the feature does not exist or an unknown + * unknown feature is requested, non-zero otherwise. + */ +int +xmlHasFeature(xmlFeature feature) +{ + switch (feature) { + case XML_FEATURE_THREAD: +#ifdef LIBXML_THREAD_ENABLED + return(1); +#else + return(0); +#endif + case XML_FEATURE_TREE: +#ifdef LIBXML_TREE_ENABLED + return(1); +#else + return(0); +#endif + case XML_FEATURE_OUTPUT: +#ifdef LIBXML_OUTPUT_ENABLED + return(1); +#else + return(0); +#endif + case XML_FEATURE_PUSH: +#ifdef LIBXML_PUSH_ENABLED + return(1); +#else + return(0); +#endif + case XML_FEATURE_READER: +#ifdef LIBXML_READER_ENABLED + return(1); +#else + return(0); +#endif + case XML_FEATURE_PATTERN: +#ifdef LIBXML_PATTERN_ENABLED + return(1); +#else + return(0); +#endif + case XML_FEATURE_WRITER: +#ifdef LIBXML_WRITER_ENABLED + return(1); +#else + return(0); +#endif + case XML_FEATURE_SAX1: +#ifdef LIBXML_SAX1_ENABLED + return(1); +#else + return(0); +#endif + case XML_FEATURE_FTP: +#ifdef LIBXML_FTP_ENABLED + return(1); +#else + return(0); +#endif + case XML_FEATURE_HTTP: +#ifdef LIBXML_HTTP_ENABLED + return(1); +#else + return(0); +#endif + case XML_FEATURE_VALID: +#ifdef LIBXML_VALID_ENABLED + return(1); +#else + return(0); +#endif + case XML_FEATURE_HTML: +#ifdef LIBXML_HTML_ENABLED + return(1); +#else + return(0); +#endif + case XML_FEATURE_LEGACY: +#ifdef LIBXML_LEGACY_ENABLED + return(1); +#else + return(0); +#endif + case XML_FEATURE_C14N: +#ifdef LIBXML_C14N_ENABLED + return(1); +#else + return(0); +#endif + case XML_FEATURE_CATALOG: +#ifdef LIBXML_CATALOG_ENABLED + return(1); +#else + return(0); +#endif + case XML_FEATURE_XPATH: +#ifdef LIBXML_XPATH_ENABLED + return(1); +#else + return(0); +#endif + case XML_FEATURE_XPTR: +#ifdef LIBXML_XPTR_ENABLED + return(1); +#else + return(0); +#endif + case XML_FEATURE_XINCLUDE: +#ifdef LIBXML_XINCLUDE_ENABLED + return(1); +#else + return(0); +#endif + case XML_FEATURE_ICONV: +#ifdef LIBXML_ICONV_ENABLED + return(1); +#else + return(0); +#endif + case XML_FEATURE_ISO8859X: +#ifdef LIBXML_ISO8859X_ENABLED + return(1); +#else + return(0); +#endif + case XML_FEATURE_UNICODE: +#ifdef LIBXML_UNICODE_ENABLED + return(1); +#else + return(0); +#endif + case XML_FEATURE_REGEXP: +#ifdef LIBXML_REGEXP_ENABLED + return(1); +#else + return(0); +#endif + case XML_FEATURE_AUTOMATA: +#ifdef LIBXML_AUTOMATA_ENABLED + return(1); +#else + return(0); +#endif + case XML_FEATURE_EXPR: +#ifdef LIBXML_EXPR_ENABLED + return(1); +#else + return(0); +#endif + case XML_FEATURE_SCHEMAS: +#ifdef LIBXML_SCHEMAS_ENABLED + return(1); +#else + return(0); +#endif + case XML_FEATURE_SCHEMATRON: +#ifdef LIBXML_SCHEMATRON_ENABLED + return(1); +#else + return(0); +#endif + case XML_FEATURE_MODULES: +#ifdef LIBXML_MODULES_ENABLED + return(1); +#else + return(0); +#endif + case XML_FEATURE_DEBUG: +#ifdef LIBXML_DEBUG_ENABLED + return(1); +#else + return(0); +#endif + case XML_FEATURE_DEBUG_MEM: +#ifdef DEBUG_MEMORY_LOCATION + return(1); +#else + return(0); +#endif + case XML_FEATURE_DEBUG_RUN: +#ifdef LIBXML_DEBUG_RUNTIME + return(1); +#else + return(0); +#endif + default: + break; + } + return(0); +} + +/************************************************************************ + * * * SAX2 defaulted attributes handling * * * ************************************************************************/ @@ -684,7 +890,7 @@ xmlAddDefAttrs(xmlParserCtxtPtr ctxt, } /* - * plit the element name into prefix:localname , the string found + * Split the element name into prefix:localname , the string found * are within the DTD and hen not associated to namespace names. */ name = xmlSplitQName3(fullattr, &len); @@ -984,14 +1190,14 @@ inputPop(xmlParserCtxtPtr ctxt) if (ctxt == NULL) return(NULL); if (ctxt->inputNr <= 0) - return (0); + return (NULL); ctxt->inputNr--; if (ctxt->inputNr > 0) ctxt->input = ctxt->inputTab[ctxt->inputNr - 1]; else ctxt->input = NULL; ret = ctxt->inputTab[ctxt->inputNr]; - ctxt->inputTab[ctxt->inputNr] = 0; + ctxt->inputTab[ctxt->inputNr] = NULL; return (ret); } /** @@ -1053,7 +1259,7 @@ nodePop(xmlParserCtxtPtr ctxt) else ctxt->node = NULL; ret = ctxt->nodeTab[ctxt->nodeNr]; - ctxt->nodeTab[ctxt->nodeNr] = 0; + ctxt->nodeTab[ctxt->nodeNr] = NULL; return (ret); } @@ -1118,7 +1324,7 @@ nameNsPop(xmlParserCtxtPtr ctxt) const xmlChar *ret; if (ctxt->nameNr <= 0) - return (0); + return (NULL); ctxt->nameNr--; if (ctxt->nameNr > 0) ctxt->name = ctxt->nameTab[ctxt->nameNr - 1]; @@ -1184,7 +1390,7 @@ namePop(xmlParserCtxtPtr ctxt) else ctxt->name = NULL; ret = ctxt->nameTab[ctxt->nameNr]; - ctxt->nameTab[ctxt->nameNr] = 0; + ctxt->nameTab[ctxt->nameNr] = NULL; return (ret); } @@ -2467,6 +2673,8 @@ xmlParseNameComplex(xmlParserCtxtPtr ctxt) { NEXTL(l); c = CUR_CHAR(l); } + if ((*ctxt->input->cur == '\n') && (ctxt->input->cur[-1] == '\r')) + return(xmlDictLookup(ctxt->dict, ctxt->input->cur - (len + 1), len)); return(xmlDictLookup(ctxt->dict, ctxt->input->cur - len, len)); } @@ -3166,6 +3374,45 @@ xmlParsePubidLiteral(xmlParserCtxtPtr ctxt) { } void xmlParseCharDataComplex(xmlParserCtxtPtr ctxt, int cdata); + +/* + * used for the test in the inner loop of the char data testing + */ +static const unsigned char test_char_data[256] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x9, CR/LF separated */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x00, 0x27, /* & */ + 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x3A, 0x3B, 0x00, 0x3D, 0x3E, 0x3F, /* < */ + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, + 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, + 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x00, 0x5E, 0x5F, /* ] */ + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, + 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, + 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* non-ascii */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + /** * xmlParseCharData: * @ctxt: an XML parser context @@ -3237,14 +3484,10 @@ get_more_space: get_more: ccol = ctxt->input->col; - while (((*in > ']') && (*in <= 0x7F)) || - ((*in > '&') && (*in < '<')) || - ((*in > '<') && (*in < ']')) || - ((*in >= 0x20) && (*in < '&')) || - (*in == 0x09)) { - in++; - ccol++; - } + while (test_char_data[*in]) { + in++; + ccol++; + } ctxt->input->col = ccol; if (*in == 0xA) { ctxt->input->line++; ctxt->input->col = 1; @@ -6063,6 +6306,11 @@ xmlParseEntityRef(xmlParserCtxtPtr ctxt) { } else { xmlErrMsgStr(ctxt, XML_WAR_UNDECLARED_ENTITY, "Entity '%s' not defined\n", name); + if ((ctxt->inSubset == 0) && + (ctxt->sax != NULL) && + (ctxt->sax->reference != NULL)) { + ctxt->sax->reference(ctxt, name); + } } ctxt->valid = 0; } @@ -11277,8 +11525,9 @@ xmlParseBalancedChunkMemoryInternal(xmlParserCtxtPtr oldctxt, *lst = cur; while (cur != NULL) { #ifdef LIBXML_VALID_ENABLED - if (oldctxt->validate && oldctxt->wellFormed && - oldctxt->myDoc && oldctxt->myDoc->intSubset) { + if ((oldctxt->validate) && (oldctxt->wellFormed) && + (oldctxt->myDoc) && (oldctxt->myDoc->intSubset) && + (cur->type == XML_ELEMENT_NODE)) { oldctxt->valid &= xmlValidateElement(&oldctxt->vctxt, oldctxt->myDoc, cur); } @@ -12419,7 +12668,7 @@ xmlSetEntityReferenceFunc(xmlEntityReferenceFunc func) #include <libxml/xpath.h> #endif -extern void xmlGenericErrorDefaultFunc(void *ctx, const char *msg, ...); +extern void XMLCDECL xmlGenericErrorDefaultFunc(void *ctx, const char *msg, ...); static int xmlParserInitialized = 0; /** @@ -12801,6 +13050,10 @@ xmlCtxtUseOptions(xmlParserCtxtPtr ctxt, int options) ctxt->options |= XML_PARSE_NONET; options -= XML_PARSE_NONET; } + if (options & XML_PARSE_COMPACT) { + ctxt->options |= XML_PARSE_COMPACT; + options -= XML_PARSE_COMPACT; + } ctxt->linenumbers = 1; return (options); } diff --git a/parserInternals.c b/parserInternals.c index b5e302e..f3fcd6f 100644 --- a/parserInternals.c +++ b/parserInternals.c @@ -728,7 +728,7 @@ encoding_error: { char buffer[150]; - snprintf(buffer, 149, "Bytes: 0x%02X 0x%02X 0x%02X 0x%02X\n", + snprintf(&buffer[0], 149, "Bytes: 0x%02X 0x%02X 0x%02X 0x%02X\n", ctxt->input->cur[0], ctxt->input->cur[1], ctxt->input->cur[2], ctxt->input->cur[3]); __xmlErrEncoding(ctxt, XML_ERR_INVALID_CHAR, @@ -1794,7 +1794,7 @@ xmlFreeParserCtxt(xmlParserCtxtPtr ctxt) */ xmlParserCtxtPtr -xmlNewParserCtxt() +xmlNewParserCtxt(void) { xmlParserCtxtPtr ctxt; @@ -139,7 +139,7 @@ struct _xmlPattern { xmlDictPtr dict; /* the optional dictionary */ struct _xmlPattern *next; /* next pattern if | is used */ const xmlChar *pattern; /* the pattern */ - xmlPatternFlags flags; /* flags */ + int flags; /* flags */ int nbStep; int maxStep; xmlStepOpPtr steps; /* ops for computation */ @@ -905,20 +905,26 @@ xmlCompileAttributeTest(xmlPatParserContextPtr ctxt) { * This is a namespace match */ token = xmlPatScanName(ctxt); - for (i = 0;i < ctxt->nb_namespaces;i++) { - if (xmlStrEqual(ctxt->namespaces[2 * i + 1], prefix)) { - URL = xmlStrdup(ctxt->namespaces[2 * i]); - break; + if ((prefix[0] == 'x') && + (prefix[1] == 'm') && + (prefix[2] == 'l') && + (prefix[3] == 0)) { + URL = xmlStrdup(XML_XML_NAMESPACE); + } else { + for (i = 0;i < ctxt->nb_namespaces;i++) { + if (xmlStrEqual(ctxt->namespaces[2 * i + 1], prefix)) { + URL = xmlStrdup(ctxt->namespaces[2 * i]); + break; + } + } + if (i >= ctxt->nb_namespaces) { + ERROR5(NULL, NULL, NULL, + "xmlCompileAttributeTest : no namespace bound to prefix %s\n", + prefix); + ctxt->error = 1; + goto error; } } - if (i >= ctxt->nb_namespaces) { - ERROR5(NULL, NULL, NULL, - "xmlCompileAttributeTest : no namespace bound to prefix %s\n", - prefix); - ctxt->error = 1; - goto error; - } - xmlFree(prefix); if (token == NULL) { if (CUR == '*') { @@ -998,18 +1004,25 @@ xmlCompileStepPattern(xmlPatParserContextPtr ctxt) { * This is a namespace match */ token = xmlPatScanName(ctxt); - for (i = 0;i < ctxt->nb_namespaces;i++) { - if (xmlStrEqual(ctxt->namespaces[2 * i + 1], prefix)) { - URL = xmlStrdup(ctxt->namespaces[2 * i]); - break; + if ((prefix[0] == 'x') && + (prefix[1] == 'm') && + (prefix[2] == 'l') && + (prefix[3] == 0)) { + URL = xmlStrdup(XML_XML_NAMESPACE); + } else { + for (i = 0;i < ctxt->nb_namespaces;i++) { + if (xmlStrEqual(ctxt->namespaces[2 * i + 1], prefix)) { + URL = xmlStrdup(ctxt->namespaces[2 * i]); + break; + } + } + if (i >= ctxt->nb_namespaces) { + ERROR5(NULL, NULL, NULL, + "xmlCompileStepPattern : no namespace bound to prefix %s\n", + prefix); + ctxt->error = 1; + goto error; } - } - if (i >= ctxt->nb_namespaces) { - ERROR5(NULL, NULL, NULL, - "xmlCompileStepPattern : no namespace bound to prefix %s\n", - prefix); - ctxt->error = 1; - goto error; } xmlFree(prefix); if (token == NULL) { @@ -1051,18 +1064,25 @@ xmlCompileStepPattern(xmlPatParserContextPtr ctxt) { * This is a namespace match */ token = xmlPatScanName(ctxt); - for (i = 0;i < ctxt->nb_namespaces;i++) { - if (xmlStrEqual(ctxt->namespaces[2 * i + 1], prefix)) { - URL = xmlStrdup(ctxt->namespaces[2 * i]); - break; + if ((prefix[0] == 'x') && + (prefix[1] == 'm') && + (prefix[2] == 'l') && + (prefix[3] == 0)) { + URL = xmlStrdup(XML_XML_NAMESPACE); + } else { + for (i = 0;i < ctxt->nb_namespaces;i++) { + if (xmlStrEqual(ctxt->namespaces[2 * i + 1], prefix)) { + URL = xmlStrdup(ctxt->namespaces[2 * i]); + break; + } + } + if (i >= ctxt->nb_namespaces) { + ERROR5(NULL, NULL, NULL, + "xmlCompileStepPattern : no namespace bound " + "to prefix %s\n", prefix); + ctxt->error = 1; + goto error; } - } - if (i >= ctxt->nb_namespaces) { - ERROR5(NULL, NULL, NULL, - "xmlCompileStepPattern : no namespace bound " - "to prefix %s\n", prefix); - ctxt->error = 1; - goto error; } xmlFree(prefix); if (token == NULL) { @@ -1615,6 +1635,14 @@ xmlStreamPushInternal(xmlStreamCtxtPtr stream, */ if (comp->nbStep == 0) { /* + * / and . are handled at the XPath node set creation + * level by checking min depth + */ + if (stream->flags & XML_PATTERN_XPATH) { + stream = stream->next; + continue; /* while */ + } + /* * For non-pattern like evaluation like XML Schema IDCs * or traditional XPath expressions, this will match if * we are at the first level only, otherwise on every level. @@ -1934,7 +1962,7 @@ xmlStreamPop(xmlStreamCtxtPtr stream) { * xmlPatterncompile: * @pattern: the pattern to compile * @dict: an optional dictionary for interned strings - * @flags: compilation flags, undefined yet + * @flags: compilation flags, see xmlPatternFlags * @namespaces: the prefix definitions, array of [URI, prefix] or NULL * * Compile a pattern. @@ -1942,8 +1970,7 @@ xmlStreamPop(xmlStreamCtxtPtr stream) { * Returns the compiled form of the pattern or NULL in case of error */ xmlPatternPtr -xmlPatterncompile(const xmlChar *pattern, xmlDict *dict, - xmlPatternFlags flags, +xmlPatterncompile(const xmlChar *pattern, xmlDict *dict, int flags, const xmlChar **namespaces) { xmlPatternPtr ret = NULL, cur; xmlPatParserContextPtr ctxt = NULL; @@ -2138,7 +2165,33 @@ xmlPatternMaxDepth(xmlPatternPtr comp) { comp = comp->next; } return(ret); +} +/** + * xmlPatternMinDepth: + * @comp: the precompiled pattern + * + * Check the minimum depth reachable by a pattern, 0 mean the / or . are + * part of the set. + * + * Returns -1 in case of error otherwise the depth, + * + */ +int +xmlPatternMinDepth(xmlPatternPtr comp) { + int ret = 12345678; + if (comp == NULL) + return(-1); + while (comp != NULL) { + if (comp->stream == NULL) + return(-1); + if (comp->stream->nbStep < ret) + ret = comp->stream->nbStep; + if (ret == 0) + return(0); + comp = comp->next; + } + return(ret); } /** diff --git a/python/Makefile.in b/python/Makefile.in index 08a5540..36cac59 100644 --- a/python/Makefile.in +++ b/python/Makefile.in @@ -192,6 +192,7 @@ TEST_PUSH = @TEST_PUSH@ TEST_REGEXPS = @TEST_REGEXPS@ TEST_SAX = @TEST_SAX@ TEST_SCHEMAS = @TEST_SCHEMAS@ +TEST_SCHEMATRON = @TEST_SCHEMATRON@ TEST_THREADS = @TEST_THREADS@ TEST_VALID = @TEST_VALID@ TEST_VTIME = @TEST_VTIME@ @@ -227,6 +228,7 @@ WITH_REGEXPS = @WITH_REGEXPS@ WITH_RUN_DEBUG = @WITH_RUN_DEBUG@ WITH_SAX1 = @WITH_SAX1@ WITH_SCHEMAS = @WITH_SCHEMAS@ +WITH_SCHEMATRON = @WITH_SCHEMATRON@ WITH_THREADS = @WITH_THREADS@ WITH_TREE = @WITH_TREE@ WITH_TRIO = @WITH_TRIO@ diff --git a/python/generator.py b/python/generator.py index f9a8930..642b8d1 100755 --- a/python/generator.py +++ b/python/generator.py @@ -1055,7 +1055,7 @@ def buildWrappers(): classes_ancestor[classname] == "xmlNode": classes.write(" def __repr__(self):\n") format = "<%s (%%s) object at 0x%%x>" % (classname) - classes.write(" return \"%s\" %% (self.name, id (self))\n\n" % ( + classes.write(" return \"%s\" %% (self.name, long(id (self)))\n\n" % ( format)) else: txt.write("Class %s()\n" % (classname)) diff --git a/python/libxml.c b/python/libxml.c index 8fc63f8..ad8ac7c 100644 --- a/python/libxml.c +++ b/python/libxml.c @@ -681,8 +681,12 @@ pythonExternalEntityLoader(const char *URL, const char *ID, result = xmlNewIOInputStream(ctxt, buf, XML_CHAR_ENCODING_NONE); } +#if 0 } else { - printf("pythonExternalEntityLoader: can't read\n"); + if (URL != NULL) + printf("pythonExternalEntityLoader: can't read %s\n", + URL); +#endif } if (result == NULL) { Py_DECREF(ret); @@ -2529,6 +2533,7 @@ libxml_parent(ATTRIBUTE_UNUSED PyObject * self, PyObject * args) res = attr->parent; } + break; case XML_ENTITY_DECL: case XML_NAMESPACE_DECL: case XML_XINCLUDE_START: diff --git a/python/libxml2-py.c b/python/libxml2-py.c index 598f238..b656d7f 100644 --- a/python/libxml2-py.c +++ b/python/libxml2-py.c @@ -951,22 +951,18 @@ libxml_xmlTextReaderGetParserLineNumber(PyObject *self ATTRIBUTE_UNUSED, PyObjec } #endif /* defined(LIBXML_READER_ENABLED) */ -#if defined(LIBXML_UNICODE_ENABLED) PyObject * -libxml_xmlUCSIsKhmerSymbols(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { - PyObject *py_retval; - int c_retval; - int code; +libxml_xmlCheckVersion(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { + int version; - if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsKhmerSymbols", &code)) + if (!PyArg_ParseTuple(args, (char *)"i:xmlCheckVersion", &version)) return(NULL); - c_retval = xmlUCSIsKhmerSymbols(code); - py_retval = libxml_intWrap((int) c_retval); - return(py_retval); + xmlCheckVersion(version); + Py_INCREF(Py_None); + return(Py_None); } -#endif /* defined(LIBXML_UNICODE_ENABLED) */ PyObject * libxml_xmlParseMarkupDecl(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { xmlParserCtxtPtr ctxt; @@ -1198,22 +1194,28 @@ libxml_xmlIOHTTPMatch(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { } #endif /* defined(LIBXML_HTTP_ENABLED) */ -#if defined(LIBXML_XPATH_ENABLED) PyObject * -libxml_xmlXPathNewFloat(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { +libxml_xmlStringLenDecodeEntities(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { PyObject *py_retval; - xmlXPathObjectPtr c_retval; - double val; + xmlChar * c_retval; + xmlParserCtxtPtr ctxt; + PyObject *pyobj_ctxt; + xmlChar * str; + int len; + int what; + xmlChar end; + xmlChar end2; + xmlChar end3; - if (!PyArg_ParseTuple(args, (char *)"d:xmlXPathNewFloat", &val)) + if (!PyArg_ParseTuple(args, (char *)"Oziiccc:xmlStringLenDecodeEntities", &pyobj_ctxt, &str, &len, &what, &end, &end2, &end3)) return(NULL); + ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt); - c_retval = xmlXPathNewFloat(val); - py_retval = libxml_xmlXPathObjectPtrWrap((xmlXPathObjectPtr) c_retval); + c_retval = xmlStringLenDecodeEntities(ctxt, str, len, what, end, end2, end3); + py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval); return(py_retval); } -#endif /* defined(LIBXML_XPATH_ENABLED) */ #if defined(LIBXML_UNICODE_ENABLED) PyObject * libxml_xmlUCSIsCatCc(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { @@ -2943,13 +2945,17 @@ libxml_htmlCtxtUseOptions(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { #endif /* defined(LIBXML_HTML_ENABLED) */ #if defined(LIBXML_CATALOG_ENABLED) PyObject * -libxml_xmlCatalogConvert(PyObject *self ATTRIBUTE_UNUSED, PyObject *args ATTRIBUTE_UNUSED) { - PyObject *py_retval; - int c_retval; +libxml_xmlFreeCatalog(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { + xmlCatalogPtr catal; + PyObject *pyobj_catal; - c_retval = xmlCatalogConvert(); - py_retval = libxml_intWrap((int) c_retval); - return(py_retval); + if (!PyArg_ParseTuple(args, (char *)"O:xmlFreeCatalog", &pyobj_catal)) + return(NULL); + catal = (xmlCatalogPtr) Pycatalog_Get(pyobj_catal); + + xmlFreeCatalog(catal); + Py_INCREF(Py_None); + return(Py_None); } #endif /* defined(LIBXML_CATALOG_ENABLED) */ @@ -3334,20 +3340,6 @@ libxml_htmlParseElement(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { } #endif /* defined(LIBXML_HTML_ENABLED) */ -PyObject * -libxml_xmlSubstituteEntitiesDefault(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { - PyObject *py_retval; - int c_retval; - int val; - - if (!PyArg_ParseTuple(args, (char *)"i:xmlSubstituteEntitiesDefault", &val)) - return(NULL); - - c_retval = xmlSubstituteEntitiesDefault(val); - py_retval = libxml_intWrap((int) c_retval); - return(py_retval); -} - #if defined(LIBXML_UNICODE_ENABLED) PyObject * libxml_xmlUCSIsGreek(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { @@ -3501,22 +3493,16 @@ libxml_xmlNanoHTTPScanProxy(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { } #endif /* defined(LIBXML_HTTP_ENABLED) */ -#if defined(LIBXML_UNICODE_ENABLED) +#if defined(LIBXML_SCHEMAS_ENABLED) PyObject * -libxml_xmlUCSIsCatMc(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { - PyObject *py_retval; - int c_retval; - int code; - - if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCatMc", &code)) - return(NULL); +libxml_xmlRelaxNGCleanupTypes(PyObject *self ATTRIBUTE_UNUSED, PyObject *args ATTRIBUTE_UNUSED) { - c_retval = xmlUCSIsCatMc(code); - py_retval = libxml_intWrap((int) c_retval); - return(py_retval); + xmlRelaxNGCleanupTypes(); + Py_INCREF(Py_None); + return(Py_None); } -#endif /* defined(LIBXML_UNICODE_ENABLED) */ +#endif /* defined(LIBXML_SCHEMAS_ENABLED) */ PyObject * libxml_xmlStringLenGetNodeList(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { PyObject *py_retval; @@ -4290,6 +4276,23 @@ libxml_xmlHasProp(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { return(py_retval); } +#if defined(LIBXML_XPATH_ENABLED) +PyObject * +libxml_xmlXPathNamespaceURIFunction(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { + xmlXPathParserContextPtr ctxt; + PyObject *pyobj_ctxt; + int nargs; + + if (!PyArg_ParseTuple(args, (char *)"Oi:xmlXPathNamespaceURIFunction", &pyobj_ctxt, &nargs)) + return(NULL); + ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt); + + xmlXPathNamespaceURIFunction(ctxt, nargs); + Py_INCREF(Py_None); + return(Py_None); +} + +#endif /* defined(LIBXML_XPATH_ENABLED) */ PyObject * libxml_xmlURISetScheme(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { xmlURIPtr URI; @@ -4995,18 +4998,22 @@ libxml_xmlDocSetRootElement(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { } #endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) */ +#if defined(LIBXML_UNICODE_ENABLED) PyObject * -libxml_xmlCheckVersion(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { - int version; +libxml_xmlUCSIsKhmerSymbols(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { + PyObject *py_retval; + int c_retval; + int code; - if (!PyArg_ParseTuple(args, (char *)"i:xmlCheckVersion", &version)) + if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsKhmerSymbols", &code)) return(NULL); - xmlCheckVersion(version); - Py_INCREF(Py_None); - return(Py_None); + c_retval = xmlUCSIsKhmerSymbols(code); + py_retval = libxml_intWrap((int) c_retval); + return(py_retval); } +#endif /* defined(LIBXML_UNICODE_ENABLED) */ #if defined(LIBXML_REGEXP_ENABLED) PyObject * libxml_xmlRegFreeRegexp(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { @@ -5396,6 +5403,20 @@ libxml_htmlDocDump(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { } #endif /* defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */ +PyObject * +libxml_xmlCheckFilename(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { + PyObject *py_retval; + int c_retval; + char * path; + + if (!PyArg_ParseTuple(args, (char *)"z:xmlCheckFilename", &path)) + return(NULL); + + c_retval = xmlCheckFilename(path); + py_retval = libxml_intWrap((int) c_retval); + return(py_retval); +} + #if defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED) PyObject * libxml_xmlTextReaderRelaxNGValidate(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { @@ -5546,16 +5567,22 @@ libxml_xmlUCSIsCatMn(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { } #endif /* defined(LIBXML_UNICODE_ENABLED) */ -#if defined(LIBXML_SCHEMAS_ENABLED) +#if defined(LIBXML_UNICODE_ENABLED) PyObject * -libxml_xmlRelaxNGCleanupTypes(PyObject *self ATTRIBUTE_UNUSED, PyObject *args ATTRIBUTE_UNUSED) { +libxml_xmlUCSIsCatMc(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { + PyObject *py_retval; + int c_retval; + int code; - xmlRelaxNGCleanupTypes(); - Py_INCREF(Py_None); - return(Py_None); + if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCatMc", &code)) + return(NULL); + + c_retval = xmlUCSIsCatMc(code); + py_retval = libxml_intWrap((int) c_retval); + return(py_retval); } -#endif /* defined(LIBXML_SCHEMAS_ENABLED) */ +#endif /* defined(LIBXML_UNICODE_ENABLED) */ #if defined(LIBXML_UNICODE_ENABLED) PyObject * libxml_xmlUCSIsCatMe(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { @@ -5642,23 +5669,6 @@ libxml_xmlStrdup(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { return(py_retval); } -#if defined(LIBXML_XPATH_ENABLED) -PyObject * -libxml_xmlXPathNamespaceURIFunction(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { - xmlXPathParserContextPtr ctxt; - PyObject *pyobj_ctxt; - int nargs; - - if (!PyArg_ParseTuple(args, (char *)"Oi:xmlXPathNamespaceURIFunction", &pyobj_ctxt, &nargs)) - return(NULL); - ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt); - - xmlXPathNamespaceURIFunction(ctxt, nargs); - Py_INCREF(Py_None); - return(Py_None); -} - -#endif /* defined(LIBXML_XPATH_ENABLED) */ PyObject * libxml_xmlCtxtReadDoc(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { PyObject *py_retval; @@ -5679,6 +5689,20 @@ libxml_xmlCtxtReadDoc(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { return(py_retval); } +PyObject * +libxml_xmlSubstituteEntitiesDefault(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { + PyObject *py_retval; + int c_retval; + int val; + + if (!PyArg_ParseTuple(args, (char *)"i:xmlSubstituteEntitiesDefault", &val)) + return(NULL); + + c_retval = xmlSubstituteEntitiesDefault(val); + py_retval = libxml_intWrap((int) c_retval); + return(py_retval); +} + #if defined(LIBXML_READER_ENABLED) PyObject * libxml_xmlTextReaderQuoteChar(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { @@ -5817,20 +5841,6 @@ libxml_xmlErrorGetDomain(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { return(py_retval); } -PyObject * -libxml_xmlCheckFilename(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { - PyObject *py_retval; - int c_retval; - char * path; - - if (!PyArg_ParseTuple(args, (char *)"z:xmlCheckFilename", &path)) - return(NULL); - - c_retval = xmlCheckFilename(path); - py_retval = libxml_intWrap((int) c_retval); - return(py_retval); -} - #if defined(LIBXML_XPATH_ENABLED) PyObject * libxml_xmlXPathFloorFunction(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { @@ -7406,6 +7416,22 @@ libxml_xmlXPathNextAncestorOrSelf(PyObject *self ATTRIBUTE_UNUSED, PyObject *arg #endif /* defined(LIBXML_XPATH_ENABLED) */ #if defined(LIBXML_XPATH_ENABLED) PyObject * +libxml_xmlXPathNewFloat(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { + PyObject *py_retval; + xmlXPathObjectPtr c_retval; + double val; + + if (!PyArg_ParseTuple(args, (char *)"d:xmlXPathNewFloat", &val)) + return(NULL); + + c_retval = xmlXPathNewFloat(val); + py_retval = libxml_xmlXPathObjectPtrWrap((xmlXPathObjectPtr) c_retval); + return(py_retval); +} + +#endif /* defined(LIBXML_XPATH_ENABLED) */ +#if defined(LIBXML_XPATH_ENABLED) +PyObject * libxml_xmlXPathNewString(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { PyObject *py_retval; xmlXPathObjectPtr c_retval; @@ -7982,28 +8008,6 @@ libxml_xmlNanoFTPProxy(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { } #endif /* defined(LIBXML_FTP_ENABLED) */ -PyObject * -libxml_xmlStringLenDecodeEntities(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { - PyObject *py_retval; - xmlChar * c_retval; - xmlParserCtxtPtr ctxt; - PyObject *pyobj_ctxt; - xmlChar * str; - int len; - int what; - xmlChar end; - xmlChar end2; - xmlChar end3; - - if (!PyArg_ParseTuple(args, (char *)"Oziiccc:xmlStringLenDecodeEntities", &pyobj_ctxt, &str, &len, &what, &end, &end2, &end3)) - return(NULL); - ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt); - - c_retval = xmlStringLenDecodeEntities(ctxt, str, len, what, end, end2, end3); - py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval); - return(py_retval); -} - #if defined(LIBXML_UNICODE_ENABLED) PyObject * libxml_xmlUCSIsCJKUnifiedIdeographsExtensionA(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { @@ -8421,20 +8425,28 @@ libxml_xmlTextReaderSetSchema(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { } #endif /* defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED) */ +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) PyObject * -libxml_xmlCharStrdup(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { +libxml_xmlUnsetNsProp(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { PyObject *py_retval; - xmlChar * c_retval; - char * cur; + int c_retval; + xmlNodePtr node; + PyObject *pyobj_node; + xmlNsPtr ns; + PyObject *pyobj_ns; + xmlChar * name; - if (!PyArg_ParseTuple(args, (char *)"z:xmlCharStrdup", &cur)) + if (!PyArg_ParseTuple(args, (char *)"OOz:xmlUnsetNsProp", &pyobj_node, &pyobj_ns, &name)) return(NULL); + node = (xmlNodePtr) PyxmlNode_Get(pyobj_node); + ns = (xmlNsPtr) PyxmlNode_Get(pyobj_ns); - c_retval = xmlCharStrdup(cur); - py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval); + c_retval = xmlUnsetNsProp(node, ns, name); + py_retval = libxml_intWrap((int) c_retval); return(py_retval); } +#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */ #if defined(LIBXML_OUTPUT_ENABLED) PyObject * libxml_xmlElemDump(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { @@ -9319,22 +9331,22 @@ libxml_xmlEncodeSpecialChars(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { return(py_retval); } +#if defined(LIBXML_UNICODE_ENABLED) PyObject * -libxml_namePop(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { +libxml_xmlUCSIsEthiopic(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { PyObject *py_retval; - const xmlChar * c_retval; - xmlParserCtxtPtr ctxt; - PyObject *pyobj_ctxt; + int c_retval; + int code; - if (!PyArg_ParseTuple(args, (char *)"O:namePop", &pyobj_ctxt)) + if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsEthiopic", &code)) return(NULL); - ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt); - c_retval = namePop(ctxt); - py_retval = libxml_xmlCharPtrConstWrap((const xmlChar *) c_retval); + c_retval = xmlUCSIsEthiopic(code); + py_retval = libxml_intWrap((int) c_retval); return(py_retval); } +#endif /* defined(LIBXML_UNICODE_ENABLED) */ PyObject * libxml_xmlParseContent(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { xmlParserCtxtPtr ctxt; @@ -9733,22 +9745,6 @@ libxml_xmlNodeAddContent(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { return(Py_None); } -PyObject * -libxml_xmlErrorGetLevel(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { - PyObject *py_retval; - int c_retval; - xmlErrorPtr Error; - PyObject *pyobj_Error; - - if (!PyArg_ParseTuple(args, (char *)"O:xmlErrorGetLevel", &pyobj_Error)) - return(NULL); - Error = (xmlErrorPtr) PyError_Get(pyobj_Error); - - c_retval = Error->level; - py_retval = libxml_intWrap((int) c_retval); - return(py_retval); -} - #if defined(LIBXML_XPATH_ENABLED) PyObject * libxml_xmlXPathNewParserContext(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { @@ -11866,22 +11862,22 @@ libxml_xmlInitGlobals(PyObject *self ATTRIBUTE_UNUSED, PyObject *args ATTRIBUTE_ return(Py_None); } -#if defined(LIBXML_UNICODE_ENABLED) PyObject * -libxml_xmlUCSIsEthiopic(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { +libxml_namePop(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { PyObject *py_retval; - int c_retval; - int code; + const xmlChar * c_retval; + xmlParserCtxtPtr ctxt; + PyObject *pyobj_ctxt; - if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsEthiopic", &code)) + if (!PyArg_ParseTuple(args, (char *)"O:namePop", &pyobj_ctxt)) return(NULL); + ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt); - c_retval = xmlUCSIsEthiopic(code); - py_retval = libxml_intWrap((int) c_retval); + c_retval = namePop(ctxt); + py_retval = libxml_xmlCharPtrConstWrap((const xmlChar *) c_retval); return(py_retval); } -#endif /* defined(LIBXML_UNICODE_ENABLED) */ #if defined(LIBXML_HTML_ENABLED) PyObject * libxml_htmlParseFile(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { @@ -12479,6 +12475,21 @@ libxml_xmlBuildRelativeURI(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { return(py_retval); } +PyObject * +libxml_xmlParseURIRaw(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { + PyObject *py_retval; + xmlURIPtr c_retval; + char * str; + int raw; + + if (!PyArg_ParseTuple(args, (char *)"zi:xmlParseURIRaw", &str, &raw)) + return(NULL); + + c_retval = xmlParseURIRaw(str, raw); + py_retval = libxml_xmlURIPtrWrap((xmlURIPtr) c_retval); + return(py_retval); +} + #if defined(LIBXML_CATALOG_ENABLED) PyObject * libxml_xmlACatalogResolvePublic(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { @@ -12514,17 +12525,13 @@ libxml_xmlThrDefParserDebugEntities(PyObject *self ATTRIBUTE_UNUSED, PyObject *a #if defined(LIBXML_CATALOG_ENABLED) PyObject * -libxml_xmlFreeCatalog(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { - xmlCatalogPtr catal; - PyObject *pyobj_catal; - - if (!PyArg_ParseTuple(args, (char *)"O:xmlFreeCatalog", &pyobj_catal)) - return(NULL); - catal = (xmlCatalogPtr) Pycatalog_Get(pyobj_catal); +libxml_xmlCatalogConvert(PyObject *self ATTRIBUTE_UNUSED, PyObject *args ATTRIBUTE_UNUSED) { + PyObject *py_retval; + int c_retval; - xmlFreeCatalog(catal); - Py_INCREF(Py_None); - return(Py_None); + c_retval = xmlCatalogConvert(); + py_retval = libxml_intWrap((int) c_retval); + return(py_retval); } #endif /* defined(LIBXML_CATALOG_ENABLED) */ @@ -13445,28 +13452,20 @@ libxml_xmlUTF8Strpos(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { return(py_retval); } -#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) PyObject * -libxml_xmlUnsetNsProp(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { +libxml_xmlCharStrdup(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { PyObject *py_retval; - int c_retval; - xmlNodePtr node; - PyObject *pyobj_node; - xmlNsPtr ns; - PyObject *pyobj_ns; - xmlChar * name; + xmlChar * c_retval; + char * cur; - if (!PyArg_ParseTuple(args, (char *)"OOz:xmlUnsetNsProp", &pyobj_node, &pyobj_ns, &name)) + if (!PyArg_ParseTuple(args, (char *)"z:xmlCharStrdup", &cur)) return(NULL); - node = (xmlNodePtr) PyxmlNode_Get(pyobj_node); - ns = (xmlNsPtr) PyxmlNode_Get(pyobj_ns); - c_retval = xmlUnsetNsProp(node, ns, name); - py_retval = libxml_intWrap((int) c_retval); + c_retval = xmlCharStrdup(cur); + py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval); return(py_retval); } -#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */ #if defined(LIBXML_XPATH_ENABLED) PyObject * libxml_xmlXPathRegisterNs(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { @@ -13933,6 +13932,22 @@ libxml_xmlUCSIsAegeanNumbers(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { #endif /* defined(LIBXML_UNICODE_ENABLED) */ PyObject * +libxml_xmlErrorGetLevel(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { + PyObject *py_retval; + int c_retval; + xmlErrorPtr Error; + PyObject *pyobj_Error; + + if (!PyArg_ParseTuple(args, (char *)"O:xmlErrorGetLevel", &pyobj_Error)) + return(NULL); + Error = (xmlErrorPtr) PyError_Get(pyobj_Error); + + c_retval = Error->level; + py_retval = libxml_intWrap((int) c_retval); + return(py_retval); +} + +PyObject * libxml_xmlCheckUTF8(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { PyObject *py_retval; int c_retval; diff --git a/python/setup.py b/python/setup.py index fd3154d..a02d80b 100755 --- a/python/setup.py +++ b/python/setup.py @@ -226,7 +226,7 @@ else: setup (name = "libxml2-python", # On *nix, the version number is created from setup.py.in # On windows, it is set by configure.js - version = "2.6.20", + version = "2.6.21", description = descr, author = "Daniel Veillard", author_email = "veillard@redhat.com", diff --git a/python/tests/Makefile.in b/python/tests/Makefile.in index a344e07..60338e4 100644 --- a/python/tests/Makefile.in +++ b/python/tests/Makefile.in @@ -152,6 +152,7 @@ TEST_PUSH = @TEST_PUSH@ TEST_REGEXPS = @TEST_REGEXPS@ TEST_SAX = @TEST_SAX@ TEST_SCHEMAS = @TEST_SCHEMAS@ +TEST_SCHEMATRON = @TEST_SCHEMATRON@ TEST_THREADS = @TEST_THREADS@ TEST_VALID = @TEST_VALID@ TEST_VTIME = @TEST_VTIME@ @@ -187,6 +188,7 @@ WITH_REGEXPS = @WITH_REGEXPS@ WITH_RUN_DEBUG = @WITH_RUN_DEBUG@ WITH_SAX1 = @WITH_SAX1@ WITH_SCHEMAS = @WITH_SCHEMAS@ +WITH_SCHEMATRON = @WITH_SCHEMATRON@ WITH_THREADS = @WITH_THREADS@ WITH_TREE = @WITH_TREE@ WITH_TRIO = @WITH_TRIO@ diff --git a/python/tests/tstLastError.py b/python/tests/tstLastError.py index 442609c..d26e82c 100755 --- a/python/tests/tstLastError.py +++ b/python/tests/tstLastError.py @@ -5,6 +5,10 @@ import libxml2 class TestCase(unittest.TestCase): + def runTest(self): + self.test1() + self.test2() + def setUp(self): libxml2.debugMemory(1) @@ -13,6 +17,8 @@ class TestCase(unittest.TestCase): if libxml2.debugMemory(1) != 0: libxml2.dumpMemory() self.fail("Memory leak %d bytes" % (libxml2.debugMemory(1),)) + else: + print "OK" def failUnlessXmlError(self,f,args,exc,domain,code,message,level,file,line): """Run function f, with arguments args and expect an exception exc; @@ -69,4 +75,8 @@ class TestCase(unittest.TestCase): line=3) if __name__ == "__main__": - unittest.main() + test = TestCase() + test.setUp() + test.test1() + test.test2() + test.tearDown() @@ -254,6 +254,7 @@ struct _xmlRelaxNGParserCtxt { #define FLAGS_IGNORABLE 1 #define FLAGS_NEGATIVE 2 #define FLAGS_MIXED_CONTENT 4 +#define FLAGS_NOERROR 8 /** * xmlRelaxNGInterleaveGroup: @@ -435,10 +436,12 @@ xmlRngPErrMemory(xmlRelaxNGParserCtxtPtr ctxt, const char *extra) void *data = NULL; if (ctxt != NULL) { - channel = ctxt->error; + if (ctxt->serror != NULL) + schannel = ctxt->serror; + else + channel = ctxt->error; data = ctxt->userData; ctxt->nbErrors++; - schannel = ctxt->serror; } if (extra) __xmlRaiseError(schannel, channel, data, @@ -468,10 +471,12 @@ xmlRngVErrMemory(xmlRelaxNGValidCtxtPtr ctxt, const char *extra) void *data = NULL; if (ctxt != NULL) { - channel = ctxt->error; + if (ctxt->serror != NULL) + schannel = ctxt->serror; + else + channel = ctxt->error; data = ctxt->userData; ctxt->nbErrors++; - schannel = ctxt->serror; } if (extra) __xmlRaiseError(schannel, channel, data, @@ -506,10 +511,12 @@ xmlRngPErr(xmlRelaxNGParserCtxtPtr ctxt, xmlNodePtr node, int error, void *data = NULL; if (ctxt != NULL) { - channel = ctxt->error; + if (ctxt->serror != NULL) + schannel = ctxt->serror; + else + channel = ctxt->error; data = ctxt->userData; ctxt->nbErrors++; - schannel = ctxt->serror; } __xmlRaiseError(schannel, channel, data, NULL, node, XML_FROM_RELAXNGP, @@ -538,10 +545,12 @@ xmlRngVErr(xmlRelaxNGValidCtxtPtr ctxt, xmlNodePtr node, int error, void *data = NULL; if (ctxt != NULL) { - channel = ctxt->error; + if (ctxt->serror != NULL) + schannel = ctxt->serror; + else + channel = ctxt->error; data = ctxt->userData; ctxt->nbErrors++; - schannel = ctxt->serror; } __xmlRaiseError(schannel, channel, data, NULL, node, XML_FROM_RELAXNGV, @@ -1477,14 +1486,14 @@ xmlRelaxNGIncludePop(xmlRelaxNGParserCtxtPtr ctxt) xmlRelaxNGIncludePtr ret; if (ctxt->incNr <= 0) - return (0); + return (NULL); ctxt->incNr--; if (ctxt->incNr > 0) ctxt->inc = ctxt->incTab[ctxt->incNr - 1]; else ctxt->inc = NULL; ret = ctxt->incTab[ctxt->incNr]; - ctxt->incTab[ctxt->incNr] = 0; + ctxt->incTab[ctxt->incNr] = NULL; return (ret); } @@ -1889,14 +1898,14 @@ xmlRelaxNGDocumentPop(xmlRelaxNGParserCtxtPtr ctxt) xmlRelaxNGDocumentPtr ret; if (ctxt->docNr <= 0) - return (0); + return (NULL); ctxt->docNr--; if (ctxt->docNr > 0) ctxt->doc = ctxt->docTab[ctxt->docNr - 1]; else ctxt->doc = NULL; ret = ctxt->docTab[ctxt->docNr]; - ctxt->docTab[ctxt->docNr] = 0; + ctxt->docTab[ctxt->docNr] = NULL; return (ret); } @@ -2220,7 +2229,7 @@ xmlRelaxNGShowValidError(xmlRelaxNGValidCtxtPtr ctxt, { xmlChar *msg; - if (ctxt->error == NULL) + if (ctxt->flags & FLAGS_NOERROR) return; #ifdef DEBUG_ERROR @@ -2332,7 +2341,9 @@ xmlRelaxNGAddValidError(xmlRelaxNGValidCtxtPtr ctxt, xmlRelaxNGValidErr err, const xmlChar * arg1, const xmlChar * arg2, int dup) { - if ((ctxt == NULL) || (ctxt->error == NULL)) + if (ctxt == NULL) + return; + if (ctxt->flags & FLAGS_NOERROR) return; #ifdef DEBUG_ERROR @@ -3739,10 +3750,10 @@ xmlRelaxNGCompareNameClasses(xmlRelaxNGDefinePtr def1, xmlNs ns; xmlRelaxNGValidCtxt ctxt; - ctxt.flags = FLAGS_IGNORABLE; - memset(&ctxt, 0, sizeof(xmlRelaxNGValidCtxt)); + ctxt.flags = FLAGS_IGNORABLE | FLAGS_NOERROR; + if ((def1->type == XML_RELAXNG_ELEMENT) || (def1->type == XML_RELAXNG_ATTRIBUTE)) { if (def2->type == XML_RELAXNG_TEXT) @@ -7469,6 +7480,7 @@ xmlRelaxNGSetParserErrors(xmlRelaxNGParserCtxtPtr ctxt, return; ctxt->error = err; ctxt->warning = warn; + ctxt->serror = NULL; ctxt->userData = ctx; } @@ -8638,8 +8650,6 @@ xmlRelaxNGValidateValue(xmlRelaxNGValidCtxtPtr ctxt, if (ctxt->errNr > 0) xmlRelaxNGPopErrors(ctxt, 0); } - if (ret == 0) - xmlRelaxNGNextValue(ctxt); break; } case XML_RELAXNG_LIST:{ @@ -10591,7 +10601,8 @@ xmlRelaxNGNewValidCtxt(xmlRelaxNGPtr schema) ret->errMax = 0; ret->err = NULL; ret->errTab = NULL; - ret->idref = schema->idref; + if (schema != NULL) + ret->idref = schema->idref; ret->states = NULL; ret->freeState = NULL; ret->freeStates = NULL; @@ -10660,6 +10671,27 @@ xmlRelaxNGSetValidErrors(xmlRelaxNGValidCtxtPtr ctxt, ctxt->error = err; ctxt->warning = warn; ctxt->userData = ctx; + ctxt->serror = NULL; +} + +/** + * xmlRelaxNGSetValidStructuredErrors: + * @ctxt: a Relax-NG validation context + * @serror: the structured error function + * @ctx: the functions context + * + * Set the structured error callback + */ +void +xmlRelaxNGSetValidStructuredErrors(xmlRelaxNGValidCtxtPtr ctxt, + xmlStructuredErrorFunc serror, void *ctx) +{ + if (ctxt == NULL) + return; + ctxt->serror = serror; + ctxt->error = NULL; + ctxt->warning = NULL; + ctxt->userData = ctx; } /** diff --git a/result/HTML/Down.html b/result/HTML/Down.html index cd99aa1..929ed8a 100644 --- a/result/HTML/Down.html +++ b/result/HTML/Down.html @@ -3,10 +3,8 @@ <head><title>This service is temporary down</title></head> <body bgcolor="#FFFFFF"> <h1 align="center">Sorry, this service is temporary down</h1> -<p> We are doing our best to get it back on-line, -</p> <p>The W3C system administrators</p> </body> </html> diff --git a/result/HTML/Down.html.sax b/result/HTML/Down.html.sax index a8c32c9..c23c332 100644 --- a/result/HTML/Down.html.sax +++ b/result/HTML/Down.html.sax @@ -16,19 +16,17 @@ SAX.ignorableWhitespace( , 2) SAX.startElement(body, bgcolor='#FFFFFF') -SAX.ignorableWhitespace( +SAX.characters( , 1) SAX.startElement(h1, align='center') SAX.characters(Sorry, this service is tempora, 37) SAX.endElement(h1) -SAX.startElement(p) SAX.characters( We are doing our best to get , 48) -SAX.endElement(p) SAX.startElement(p) SAX.characters(The W3C system administrators, 29) SAX.endElement(p) -SAX.ignorableWhitespace( +SAX.characters( , 1) SAX.endElement(body) SAX.ignorableWhitespace( diff --git a/result/HTML/attrents.html b/result/HTML/attrents.html index 3231d1e..0433f48 100644 --- a/result/HTML/attrents.html +++ b/result/HTML/attrents.html @@ -1,4 +1,4 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> -<html><body bgcolor="#FFFFFF"> -<a href="mailto:katherine@cbfanc.org,website@bis.doc.gov?subject=South%20San%20Francisco%20BIS%20Seminar%20-%20October%2016th"></a><br> +<html><body bgcolor="#FFFFFF">
+ <a href="mailto:katherine@cbfanc.org,website@bis.doc.gov?subject=South%20San%20Francisco%20BIS%20Seminar%20-%20October%2016th"></a><br> </body></html> diff --git a/result/HTML/attrents.html.sax b/result/HTML/attrents.html.sax index 976bbbe..c1cfb42 100644 --- a/result/HTML/attrents.html.sax +++ b/result/HTML/attrents.html.sax @@ -4,13 +4,13 @@ SAX.startElement(html) SAX.ignorableWhitespace(
, 2) SAX.startElement(body, bgcolor='#FFFFFF') -SAX.ignorableWhitespace(
+SAX.characters(
, 18) SAX.startElement(a, href='mailto:katherine@cbfanc.org,website@bis.doc.gov?subject=South San Francisco BIS Seminar - October 16th') SAX.endElement(a) SAX.startElement(br) SAX.endElement(br) -SAX.ignorableWhitespace(
+SAX.characters(
, 2) SAX.endElement(body) SAX.ignorableWhitespace(
diff --git a/result/HTML/cf_128.html b/result/HTML/cf_128.html index 8c4f11a..b3e6b41 100644 --- a/result/HTML/cf_128.html +++ b/result/HTML/cf_128.html @@ -1,7 +1,9 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html> <head><title>gnome-xml push mode bug</title></head> -<body><table border="4"><tr> +<body> + +<table border="4"><tr> <td bgcolor="white"> Foo1 <table border="4"><tr><td>Foo2<p></p> @@ -9,5 +11,6 @@ </td></tr></table> </td> <td bgcolor="blue">Foo3</td> - </tr></table></body> + </tr></table> +</body> </html> diff --git a/result/HTML/cf_128.html.sax b/result/HTML/cf_128.html.sax index 8aa82c1..8f66a42 100644 --- a/result/HTML/cf_128.html.sax +++ b/result/HTML/cf_128.html.sax @@ -16,7 +16,7 @@ SAX.endElement(head) SAX.ignorableWhitespace( , 1) SAX.startElement(body) -SAX.ignorableWhitespace( +SAX.characters( , 2) SAX.startElement(table, border='4') @@ -58,7 +58,7 @@ SAX.endElement(tr) SAX.characters( , 3) SAX.endElement(table) -SAX.ignorableWhitespace( +SAX.characters( , 3) SAX.endElement(body) SAX.ignorableWhitespace( diff --git a/result/HTML/doc2.htm b/result/HTML/doc2.htm index 0446695..2c7e230 100644 --- a/result/HTML/doc2.htm +++ b/result/HTML/doc2.htm @@ -20,7 +20,9 @@ </frameset> <noframes> - <body bgcolor="#FFFFFF" text="#000000" link="#000080" vlink="#000080" alink="#000080" topmargin="0" leftmargin="0" marginheight="0" marginwidth="0"><p>This page uses frames, but your browser doesn't support them.</p></body> + <body bgcolor="#FFFFFF" text="#000000" link="#000080" vlink="#000080" alink="#000080" topmargin="0" leftmargin="0" marginheight="0" marginwidth="0"> + <p>This page uses frames, but your browser doesn't support them.</p> + </body> </noframes> </frameset> </html> diff --git a/result/HTML/doc2.htm.sax b/result/HTML/doc2.htm.sax index 27d458a..7cbbc51 100644 --- a/result/HTML/doc2.htm.sax +++ b/result/HTML/doc2.htm.sax @@ -51,12 +51,12 @@ SAX.characters( , 4) SAX.startElement(body, bgcolor='#FFFFFF', text='#000000', link='#000080', vlink='#000080', alink='#000080', topmargin='0', leftmargin='0', marginheight='0', marginwidth='0') -SAX.ignorableWhitespace( +SAX.characters( , 3) SAX.startElement(p) SAX.characters(This page uses frames, but you, 61) SAX.endElement(p) -SAX.ignorableWhitespace( +SAX.characters( , 3) SAX.endElement(body) SAX.characters( diff --git a/result/HTML/doc3.htm b/result/HTML/doc3.htm index ef6fddd..a53c27b 100644 --- a/result/HTML/doc3.htm +++ b/result/HTML/doc3.htm @@ -32,7 +32,7 @@ eval("page" + id + " = window.open(URL, '" + id + "', 'toolbars=0, scrollbars=0, // End --> </script><meta content="MSHTML 5.00.3103.1000" name="GENERATOR"> </head> -<body alink="red" bgcolor="black" link="red" text="white" vlink="red"> +<body alink="red" bgcolor="black" link="red" text="white" vlink="red">
<p>
</p> <div align="center">
@@ -439,7 +439,7 @@ eval("page" + id + " = window.open(URL, '" + id + "', 'toolbars=0, scrollbars=0, </td></tr> <!-- <TR> <TD WIDTH="780"> <P ALIGN="CENTER"><FONT SIZE="1" COLOR="#999999" FACE="Verdana,arial">Site design by Tim Brinkley</FONT> </TD> </TR> --> </tbody></table> -</div> +</div>
<script> window.open=NS_ActualOpen; </script> </body> </html> diff --git a/result/HTML/doc3.htm.sax b/result/HTML/doc3.htm.sax index 93f5a9f..2cc38fa 100644 --- a/result/HTML/doc3.htm.sax +++ b/result/HTML/doc3.htm.sax @@ -73,7 +73,7 @@ SAX.endElement(head) SAX.ignorableWhitespace(
, 2) SAX.startElement(body, alink='red', bgcolor='black', link='red', text='white', vlink='red') -SAX.ignorableWhitespace(
+SAX.characters(
, 2) SAX.startElement(p) SAX.characters(
@@ -2905,12 +2905,12 @@ SAX.comment( <TR> <TD WIDTH="780"> <P ALIGN="CENTER"><FONT SIZE="1" COLOR="#9 SAX.endElement(tbody) SAX.endElement(table) SAX.endElement(div) -SAX.ignorableWhitespace(
+SAX.characters(
, 2) SAX.startElement(script) SAX.cdata( window.open=NS_ActualOpen; , 28) SAX.endElement(script) -SAX.ignorableWhitespace(
+SAX.characters(
, 2) SAX.endElement(body) SAX.endElement(html) diff --git a/result/HTML/fp40.htm b/result/HTML/fp40.htm index e78b8bd..a1244dd 100644 --- a/result/HTML/fp40.htm +++ b/result/HTML/fp40.htm @@ -44,7 +44,8 @@ configuration file, usually http.conf. To prevent the server extensions from usi configuration files (access.conf, srm.conf), add the following lines to http.conf:</p> -</font><blockquote> +</font> +<blockquote> <font face="Courier New"> ResourceConfig /dev/null <br> AccessConfig /dev/null</font> diff --git a/result/HTML/fp40.htm.sax b/result/HTML/fp40.htm.sax index 3859458..6f77794 100644 --- a/result/HTML/fp40.htm.sax +++ b/result/HTML/fp40.htm.sax @@ -26,7 +26,7 @@ SAX.ignorableWhitespace( , 2) SAX.startElement(body) -SAX.ignorableWhitespace( +SAX.characters( , 1) SAX.startElement(font, face='Verdana') SAX.characters( @@ -167,7 +167,7 @@ SAX.characters( , 3) SAX.endElement(font) -SAX.ignorableWhitespace( +SAX.characters( , 1) SAX.startElement(blockquote) SAX.characters( @@ -184,7 +184,7 @@ SAX.endElement(font) SAX.characters( , 1) SAX.endElement(blockquote) -SAX.ignorableWhitespace( +SAX.characters( , 1) SAX.startElement(font, face='Verdana') SAX.characters( @@ -452,7 +452,7 @@ SAX.characters( , 4) SAX.endElement(font) -SAX.ignorableWhitespace( +SAX.characters( , 1) SAX.endElement(body) SAX.ignorableWhitespace( diff --git a/result/HTML/liclose.html b/result/HTML/liclose.html index b8a464e..f4e4edb 100644 --- a/result/HTML/liclose.html +++ b/result/HTML/liclose.html @@ -1,10 +1,12 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> <html> <head><title></title></head> -<body><ul> +<body> +<ul> <li>First item </li> <li>Second item, closes the first one </li> -</ul></body> +</ul> +</body> </html> diff --git a/result/HTML/liclose.html.sax b/result/HTML/liclose.html.sax index 30f26c0..eabcdf6 100644 --- a/result/HTML/liclose.html.sax +++ b/result/HTML/liclose.html.sax @@ -15,7 +15,7 @@ SAX.endElement(head) SAX.ignorableWhitespace( , 1) SAX.startElement(body) -SAX.ignorableWhitespace( +SAX.characters( , 1) SAX.startElement(ul) SAX.characters( @@ -28,7 +28,7 @@ SAX.startElement(li) SAX.characters(Second item, closes the first , 34) SAX.endElement(li) SAX.endElement(ul) -SAX.ignorableWhitespace( +SAX.characters( , 2) SAX.endElement(body) diff --git a/result/HTML/pre.html b/result/HTML/pre.html index 17f5b3f..5308b6d 100644 --- a/result/HTML/pre.html +++ b/result/HTML/pre.html @@ -1,2 +1,4 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> -<html><body><pre><a href="toto"></a><img src="titi"></pre></body></html> +<html><body> +<pre><a href="toto"></a><img src="titi"></pre> +</body></html> diff --git a/result/HTML/pre.html.sax b/result/HTML/pre.html.sax index 4f567ae..f8782b7 100644 --- a/result/HTML/pre.html.sax +++ b/result/HTML/pre.html.sax @@ -4,7 +4,7 @@ SAX.startElement(html) SAX.ignorableWhitespace( , 1) SAX.startElement(body) -SAX.ignorableWhitespace( +SAX.characters( , 1) SAX.startElement(pre) SAX.startElement(a, href='toto') @@ -12,7 +12,7 @@ SAX.endElement(a) SAX.startElement(img, src='titi') SAX.endElement(img) SAX.endElement(pre) -SAX.ignorableWhitespace( +SAX.characters( , 1) SAX.endElement(body) SAX.ignorableWhitespace( diff --git a/result/HTML/python.html b/result/HTML/python.html index e5f9d56..5fdc6a2 100644 --- a/result/HTML/python.html +++ b/result/HTML/python.html @@ -1,5 +1,6 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <?xml-stylesheet href="./css/ht2html.css" type="text/css"?><html> <!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. --><head><title>Python Programming Language</title></head> -<body></body> +<body> +</body> </html> diff --git a/result/HTML/python.html.sax b/result/HTML/python.html.sax index 4f96e8a..665539c 100644 --- a/result/HTML/python.html.sax +++ b/result/HTML/python.html.sax @@ -20,7 +20,7 @@ SAX.endElement(head) SAX.ignorableWhitespace( , 1) SAX.startElement(body) -SAX.ignorableWhitespace( +SAX.characters( , 1) SAX.endElement(body) SAX.endElement(html) diff --git a/result/HTML/reg1.html.sax b/result/HTML/reg1.html.sax index 1ca0271..c8ee3ac 100644 --- a/result/HTML/reg1.html.sax +++ b/result/HTML/reg1.html.sax @@ -15,12 +15,12 @@ SAX.endElement(head) SAX.ignorableWhitespace( , 1) SAX.startElement(body) -SAX.ignorableWhitespace( +SAX.characters( , 1) SAX.startElement(h1) SAX.characters(Regression test 1, 17) SAX.endElement(h1) -SAX.ignorableWhitespace( +SAX.characters( , 1) SAX.startElement(p) SAX.characters( diff --git a/result/HTML/reg2.html.sax b/result/HTML/reg2.html.sax index 63acfd4..f85691e 100644 --- a/result/HTML/reg2.html.sax +++ b/result/HTML/reg2.html.sax @@ -15,12 +15,12 @@ SAX.endElement(head) SAX.ignorableWhitespace( , 1) SAX.startElement(body) -SAX.ignorableWhitespace( +SAX.characters( , 1) SAX.startElement(h1) SAX.characters(Regression test 2, 17) SAX.endElement(h1) -SAX.ignorableWhitespace( +SAX.characters( , 1) SAX.startElement(p) SAX.characters( diff --git a/result/HTML/reg3.html.sax b/result/HTML/reg3.html.sax index 5d498b2..ec0f039 100644 --- a/result/HTML/reg3.html.sax +++ b/result/HTML/reg3.html.sax @@ -15,12 +15,12 @@ SAX.endElement(head) SAX.ignorableWhitespace( , 1) SAX.startElement(body) -SAX.ignorableWhitespace( +SAX.characters( , 1) SAX.startElement(h1) SAX.characters(Regression test 3, 17) SAX.endElement(h1) -SAX.ignorableWhitespace( +SAX.characters( , 1) SAX.startElement(p) SAX.characters( @@ -29,7 +29,7 @@ Autoclose of tag P SAX.endElement(p) SAX.startElement(hr) SAX.endElement(hr) -SAX.ignorableWhitespace( +SAX.characters( , 1) SAX.startElement(p) SAX.characters( diff --git a/result/HTML/reg4.html.sax b/result/HTML/reg4.html.sax index 5a4eacf..4c5147c 100644 --- a/result/HTML/reg4.html.sax +++ b/result/HTML/reg4.html.sax @@ -15,12 +15,12 @@ SAX.endElement(head) SAX.ignorableWhitespace( , 1) SAX.startElement(body) -SAX.ignorableWhitespace( +SAX.characters( , 1) SAX.startElement(h1) SAX.characters(Regression test 4, 17) SAX.endElement(h1) -SAX.ignorableWhitespace( +SAX.characters( , 1) SAX.startElement(p) SAX.characters( @@ -29,10 +29,10 @@ Wrong close of tag P SAX.endElement(p) SAX.startElement(hr) SAX.endElement(hr) -SAX.ignorableWhitespace( +SAX.characters( , 1) SAX.error: Unexpected end tag : p -SAX.ignorableWhitespace( +SAX.characters( , 1) SAX.endElement(body) SAX.ignorableWhitespace( diff --git a/result/HTML/script.html.sax b/result/HTML/script.html.sax index 3a47061..b259f7f 100644 --- a/result/HTML/script.html.sax +++ b/result/HTML/script.html.sax @@ -11,17 +11,17 @@ SAX.endElement(head) SAX.ignorableWhitespace( , 1) SAX.startElement(body) -SAX.ignorableWhitespace( +SAX.characters( , 1) SAX.startElement(script, language='javascript') SAX.cdata( if (window.open<max) ;, 28) SAX.endElement(script) -SAX.ignorableWhitespace( +SAX.characters( , 1) SAX.startElement(input, onclick='if(window.open<max);') SAX.endElement(input) -SAX.ignorableWhitespace( +SAX.characters( , 1) SAX.endElement(body) SAX.ignorableWhitespace( diff --git a/result/HTML/script2.html b/result/HTML/script2.html new file mode 100644 index 0000000..2be4f93 --- /dev/null +++ b/result/HTML/script2.html @@ -0,0 +1,16 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title>Test Page</title> +</head> +<body> +<div id="portal"> +<script type="text/javascript"> + documen.write("PĹ™Ăliš ĹľluĹĄouÄŤkĂ˝ kĹŻĹ ĂşpÄ›l ďábelksĂ© Ăłdy"); +</script><p> + PĹ™Ăliš ĹľluĹĄouÄŤkĂ˝ kĹŻĹ ĂşpÄ›l ďábelksĂ© Ăłdy; + </p> +</div> +</body> +</html> diff --git a/result/HTML/script2.html.err b/result/HTML/script2.html.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/result/HTML/script2.html.err diff --git a/result/HTML/script2.html.sax b/result/HTML/script2.html.sax new file mode 100644 index 0000000..1971991 --- /dev/null +++ b/result/HTML/script2.html.sax @@ -0,0 +1,50 @@ +SAX.setDocumentLocator() +SAX.startDocument() +SAX.internalSubset(html, -//W3C//DTD XHTML 1.0 Strict//EN, http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd) +SAX.startElement(html, xmlns='http://www.w3.org/1999/xhtml') +SAX.ignorableWhitespace( + , 2) +SAX.startElement(head) +SAX.ignorableWhitespace( + , 3) +SAX.startElement(meta, http-equiv='Content-Type', content='text/html; charset=UTF-8') +SAX.endElement(meta) +SAX.ignorableWhitespace( +, 1) +SAX.startElement(title) +SAX.characters(Test Page, 9) +SAX.endElement(title) +SAX.ignorableWhitespace( +, 1) +SAX.endElement(head) +SAX.ignorableWhitespace( +, 1) +SAX.startElement(body) +SAX.characters( +, 1) +SAX.startElement(div, id='portal') +SAX.characters( +, 1) +SAX.startElement(script, type='text/javascript') +SAX.cdata( + documen.write("Př, 74) +SAX.endElement(script) +SAX.characters( + , 2) +SAX.startElement(p) +SAX.characters( + Příliš , 58) +SAX.endElement(p) +SAX.characters( +, 1) +SAX.endElement(div) +SAX.characters( +, 1) +SAX.endElement(body) +SAX.ignorableWhitespace( +, 1) +SAX.endElement(html) +SAX.ignorableWhitespace( + +, 2) +SAX.endDocument() diff --git a/result/HTML/test2.html b/result/HTML/test2.html index ef62dc6..98a2716 100644 --- a/result/HTML/test2.html +++ b/result/HTML/test2.html @@ -2,6 +2,7 @@ <html> <head><title>Linux Today</title></head> <body bgcolor="White" link="Blue" text="Black" vlink="Black" alink="Red"> + <center> <table border="0" width="100%" cellspacing="0" cellpadding="0"><tr bgcolor="#FFFFFF"> <td height="90"> diff --git a/result/HTML/test2.html.sax b/result/HTML/test2.html.sax index 03f7285..78bb090 100644 --- a/result/HTML/test2.html.sax +++ b/result/HTML/test2.html.sax @@ -11,7 +11,7 @@ SAX.endElement(head) SAX.ignorableWhitespace( , 1) SAX.startElement(body, bgcolor='White', link='Blue', text='Black', vlink='Black', alink='Red') -SAX.ignorableWhitespace( +SAX.characters( , 2) SAX.startElement(center) @@ -130,7 +130,7 @@ SAX.endElement(font) SAX.characters( , 1) SAX.endElement(center) -SAX.ignorableWhitespace( +SAX.characters( , 1) SAX.startElement(p) SAX.characters( diff --git a/result/HTML/test3.html b/result/HTML/test3.html index 4437f4d..903723c 100644 --- a/result/HTML/test3.html +++ b/result/HTML/test3.html @@ -38,7 +38,7 @@ <dt><h4>Class <a href="ProblemDomain.Note.html#ProblemDomain.Note">ProblemDomain.Note</a> </h4></dt>
</dl> -<h4><b>Links</b></h4> +<h4><b>Links</b></h4>
<ul><li> <b>Link to </b><a href="HumanInterface.Package.html#HumanInterface.Package">HumanInterface</a> </li></ul> diff --git a/result/HTML/test3.html.sax b/result/HTML/test3.html.sax index 1f76e50..c9f6638 100644 --- a/result/HTML/test3.html.sax +++ b/result/HTML/test3.html.sax @@ -26,7 +26,7 @@ SAX.endElement(p) SAX.startElement(hr) SAX.endElement(hr) SAX.error: Unexpected end tag : p -SAX.ignorableWhitespace(
+SAX.characters(
, 2) SAX.startElement(dl) SAX.characters(
@@ -59,14 +59,14 @@ SAX.characters(Interface, thats stores and ma, 58) SAX.endElement(dd) SAX.endElement(dd) SAX.endElement(dl) -SAX.ignorableWhitespace(
+SAX.characters(
, 2) SAX.startElement(p) SAX.endElement(p) SAX.startElement(hr) SAX.endElement(hr) SAX.error: Unexpected end tag : p -SAX.ignorableWhitespace(
+SAX.characters(
, 2) SAX.startElement(dl) SAX.characters(
@@ -163,7 +163,7 @@ SAX.endElement(dt) SAX.characters(
, 2) SAX.endElement(dl) -SAX.ignorableWhitespace(
+SAX.characters(
, 4) SAX.startElement(h4) @@ -173,7 +173,7 @@ SAX.error: Opening and ending tag mismatch: h4 and b SAX.endElement(b) SAX.endElement(h4) SAX.error: Unexpected end tag : b -SAX.ignorableWhitespace(
+SAX.characters(
, 2) SAX.startElement(ul) SAX.startElement(li) @@ -185,11 +185,11 @@ SAX.characters(HumanInterface, 14) SAX.endElement(a) SAX.endElement(li) SAX.endElement(ul) -SAX.ignorableWhitespace(
+SAX.characters(
, 2) SAX.startElement(dir) SAX.endElement(dir) -SAX.ignorableWhitespace(
+SAX.characters(
, 2) SAX.startElement(ul) SAX.startElement(li) @@ -201,11 +201,11 @@ SAX.characters(DataManagement.FlatFile, 23) SAX.endElement(a) SAX.endElement(li) SAX.endElement(ul) -SAX.ignorableWhitespace(
+SAX.characters(
, 2) SAX.startElement(dir) SAX.endElement(dir) -SAX.ignorableWhitespace(
+SAX.characters(
, 2) SAX.startElement(ul) SAX.startElement(li) @@ -217,11 +217,11 @@ SAX.characters(DataManagement, 14) SAX.endElement(a) SAX.endElement(li) SAX.endElement(ul) -SAX.ignorableWhitespace(
+SAX.characters(
, 2) SAX.startElement(dir) SAX.endElement(dir) -SAX.ignorableWhitespace(
+SAX.characters(
, 2) SAX.endElement(body) SAX.endElement(html) diff --git a/result/HTML/wired.html b/result/HTML/wired.html index 674623f..f7123e8 100644 --- a/result/HTML/wired.html +++ b/result/HTML/wired.html @@ -2,6 +2,7 @@ <!-- Vignette StoryServer 4 Fri Oct 15 11:37:12 1999 --><html> <head><title>Top Stories News from Wired News</title></head> <body bgcolor="#FFFFFF" text="#000000" link="#333399" vlink="#660066" alink="#666699"> + <table border="0" width="600" cellspacing="0" cellpadding="0"><tr> <td valign="top" align="LEFT"><table border="0" cellpadding="0" cellspacing="0" width="468" height="60" bgcolor="#FFFFFF"> <form method="GET" action="http://nsads.hotwired.com/event.ng/Type=click&ProfileID=9688&RunID=14074&AdID=22584&GroupID=1&FamilyID=2684&TagValues=8.25.156.159.166.171.172.174.179.180.181.182.183.196.197.199.208.389.412.436.2041.6750.78456.79630.81880&Redirect=http://www.springstreet.com/aa/citysearch.htm" id="form1" name="form1">
@@ -69,7 +70,8 @@ </table></td> <td valign="top" align="RIGHT"><a href="http://nsads.hotwired.com/event.ng/Type=click&ProfileID=5597&RunID=17167&AdID=22588&GroupID=1&FamilyID=3228&TagValues=8.25.159.171.172.174.179.180.181.182.183.196.197.199.208.241.389.412.436.2035.6749.6750.70367.78456.79630.81880&Redirect=http:%2F%2Fwww.hp.com%2Fgo%2Foriginal%20" target="_top"><img src="http://static.wired.com/advertising/blipverts/hp_colorinkjet/hp_970c_120x60_6.gif" border="1" height="60" width="120" alt="True to the Original"></a></td> </tr></table> -<!-- WIRED NEWS header --><!-- CMD_HOST = scoop.hotwired.com --><a name="#"></a><table border="0" width="600" cellspacing="0" cellpadding="0"> +<!-- WIRED NEWS header --><!-- CMD_HOST = scoop.hotwired.com --><a name="#"></a> +<table border="0" width="600" cellspacing="0" cellpadding="0"> <tr> <td></td> <td colspan="2"><img src="http://static.wired.com/news/images/spacer.gif" height="5" width="447" alt=""></td> diff --git a/result/HTML/wired.html.sax b/result/HTML/wired.html.sax index 0edd57e..3860c76 100644 --- a/result/HTML/wired.html.sax +++ b/result/HTML/wired.html.sax @@ -8,7 +8,7 @@ SAX.characters(Top Stories News from Wired Ne, 32) SAX.endElement(title) SAX.endElement(head) SAX.startElement(body, bgcolor='#FFFFFF', text='#000000', link='#333399', vlink='#660066', alink='#666699') -SAX.ignorableWhitespace( +SAX.characters( , 2) SAX.startElement(table, border='0', width='600', cellspacing='0', cellpadding='0') @@ -315,19 +315,19 @@ SAX.endElement(tr) SAX.characters( , 1) SAX.endElement(table) -SAX.ignorableWhitespace( +SAX.characters( , 2) SAX.comment( WIRED NEWS header ) -SAX.ignorableWhitespace( +SAX.characters( , 1) SAX.comment( CMD_HOST = scoop.hotwired.com ) -SAX.ignorableWhitespace( +SAX.characters( , 2) SAX.startElement(a, name='#') SAX.endElement(a) -SAX.ignorableWhitespace( +SAX.characters( , 1) SAX.startElement(table, border='0', width='600', cellspacing='0', cellpadding='0') SAX.characters( @@ -574,14 +574,14 @@ SAX.comment( SAX.characters( , 1) SAX.endElement(table) -SAX.ignorableWhitespace( +SAX.characters( , 1) SAX.comment( end WIRED NEWS header ) -SAX.ignorableWhitespace( +SAX.characters( , 2) SAX.comment( begin upper left side Navigation ) -SAX.ignorableWhitespace( +SAX.characters( , 2) SAX.startElement(table, border='0', cellpadding='3', cellspacing='0', align='LEFT', bgcolor='#FFFFFF') @@ -1463,14 +1463,14 @@ SAX.characters( , 2) SAX.endElement(table) -SAX.ignorableWhitespace( +SAX.characters( , 2) SAX.comment( end lower left side Navigation ) -SAX.ignorableWhitespace( +SAX.characters( , 1) SAX.comment( CONTENT TABLE ) -SAX.ignorableWhitespace( +SAX.characters( , 2) SAX.startElement(table, border='0', width='447', cellspacing='0', cellpadding='0', bordercolor='#66FF00') @@ -2830,13 +2830,13 @@ SAX.endElement(tr) SAX.characters( , 1) SAX.endElement(table) -SAX.ignorableWhitespace( +SAX.characters( , 3) SAX.startElement(br) SAX.endElement(br) -SAX.ignorableWhitespace( +SAX.characters( , 1) SAX.endElement(body) SAX.ignorableWhitespace( diff --git a/result/ent2.sax b/result/ent2.sax index 382bac1..07d2ce4 100644 --- a/result/ent2.sax +++ b/result/ent2.sax @@ -11,6 +11,7 @@ SAX.characters( , 3) SAX.getEntity(title) SAX.error: Entity 'title' not defined +SAX.reference(title) SAX.characters( This text is about XML, the, 31) SAX.getEntity(xml) diff --git a/result/ent2.sax2 b/result/ent2.sax2 index 8c28ea9..d7c8002 100644 --- a/result/ent2.sax2 +++ b/result/ent2.sax2 @@ -11,6 +11,7 @@ SAX.characters( , 3) SAX.getEntity(title) SAX.error: Entity 'title' not defined +SAX.reference(title) SAX.characters( This text is about XML, the, 31) SAX.getEntity(xml) diff --git a/result/ent7.sax b/result/ent7.sax index 0d5befa..3228de3 100644 --- a/result/ent7.sax +++ b/result/ent7.sax @@ -11,6 +11,7 @@ SAX.error: PEReference: %sampleEnt; not found SAX.characters('they called me , 16) SAX.getEntity(sampleEnt) SAX.error: Entity 'sampleEnt' not defined +SAX.reference(sampleEnt) SAX.characters(', 1) SAX.endDocument() xmlSAXUserParseFile returned error 27 diff --git a/result/ent7.sax2 b/result/ent7.sax2 index 0d5befa..3228de3 100644 --- a/result/ent7.sax2 +++ b/result/ent7.sax2 @@ -11,6 +11,7 @@ SAX.error: PEReference: %sampleEnt; not found SAX.characters('they called me , 16) SAX.getEntity(sampleEnt) SAX.error: Entity 'sampleEnt' not defined +SAX.reference(sampleEnt) SAX.characters(', 1) SAX.endDocument() xmlSAXUserParseFile returned error 27 diff --git a/result/expr/base b/result/expr/base new file mode 100644 index 0000000..9ab0d19 --- /dev/null +++ b/result/expr/base @@ -0,0 +1,85 @@ +Expression: a +Subexp: a => accept, Ok +Subexp: a | a => accept, Ok +Subexp: b => reject, Ok +Expression: a|b +Subexp: a => accept, Ok +Subexp: b => accept, Ok +Subexp: a | b => accept, Ok +Subexp: a{0} => reject, Ok +Subexp: b{0} => reject, Ok +Expression: a | b | a +Subexp: a => accept, Ok +Subexp: b => accept, Ok +Subexp: a | b => accept, Ok +Subexp: b | a => accept, Ok +Subexp: a | b | b => accept, Ok +Subexp: a | b | a => accept, Ok +Subexp: b | a | b => accept, Ok +Expression: a,a +Subexp: a,a => accept, Ok +Subexp: a => reject, Ok +Subexp: a,a,a => reject, Ok +Expression: a{0,3} +Subexp: a{3} => accept, Ok +Subexp: a => accept, Ok +Subexp: a,a,a => accept, Ok +Subexp: a{1,3} => accept, Ok +Expression: (a|b){0,4} +Subexp: a => accept, Ok +Subexp: b => accept, Ok +Subexp: a,b => accept, Ok +Subexp: a,b,a,b => accept, Ok +Subexp: b,a,b,a,b => reject, Ok +Subexp: b,a{1,3} => accept, Ok +Subexp: a{1,3},b => accept, Ok +Subexp: a{1,3},b,a => reject, Ok +Subexp: a{1,4},b => reject, Ok +Subexp: a{0,5} => reject, Ok +Subexp: (b|a){0,4} => accept, Ok +Subexp: (b|a){0,4},a => reject, Ok +Subexp: (a,b){0,2} => accept, Ok +Subexp: (a,b){0,1},b => accept, Ok +Expression: a* +Subexp: a => accept, Ok +Subexp: a? => accept, Ok +Subexp: a+ => accept, Ok +Subexp: a* => accept, Ok +Subexp: a{0} => accept, Ok +Expression: a+ +Subexp: a => accept, Ok +Subexp: a? => reject, Ok +Subexp: a+ => accept, Ok +Subexp: a* => reject, Ok +Subexp: a?,a => accept, Ok +Subexp: a,a* => accept, Ok +Subexp: a*,a => accept, Ok +Subexp: a?,a*,a => accept, Ok +Subexp: a*,a?,a => accept, Ok +Expression: (a|b)* +Subexp: a => accept, Ok +Subexp: b => accept, Ok +Subexp: a,b => accept, Ok +Subexp: a,b,a,b => accept, Ok +Subexp: (b|a){0,4} => accept, Ok +Subexp: (b|a){0,4},a => accept, Ok +Subexp: a* => accept, Ok +Subexp: b* => accept, Ok +Subexp: (a|b)* => accept, Ok +Subexp: a{1,3} => accept, Ok +Subexp: b,a{1,3} => accept, Ok +Subexp: a{1,3},b => accept, Ok +Subexp: a*,(a|b)* => accept, Ok +Subexp: a*,b{2,5} => accept, Ok +Subexp: a*,(a|b)*,b{2,5} => accept, Ok +Expression: (a|b)+,(c|d) +Subexp: a+,c => accept, Ok +Subexp: a*,c => reject, Ok +Subexp: a,c => accept, Ok +Subexp: a,b*,a*,c => accept, Ok +Expression: (a|b),(a|c){0,100} +Subexp: a{0,100},(a|c) => accept, Ok +Subexp: a{0,101},(a|c) => reject, Ok +Expression: (a, ((b, c, d){0,5}, e{0,1}){0,4}, f) +Subexp: (a, b, (c, d, b){2,3}, c, d, e, f) => accept, Ok +Ops: 0 nodes, 221 cons diff --git a/result/regexp/* b/result/regexp/* new file mode 100644 index 0000000..b730347 --- /dev/null +++ b/result/regexp/* @@ -0,0 +1 @@ +Ops: 0 nodes, 0 cons diff --git a/result/relaxng/307377_0 b/result/relaxng/307377_0 new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/result/relaxng/307377_0 diff --git a/result/relaxng/307377_0.err b/result/relaxng/307377_0.err new file mode 100644 index 0000000..1f465bb --- /dev/null +++ b/result/relaxng/307377_0.err @@ -0,0 +1,2 @@ +./test/relaxng/307377_0.xml:1: element number: Relax-NG validity error : Element number failed to validate attributes +./test/relaxng/307377_0.xml fails to validate diff --git a/result/relaxng/307377_1 b/result/relaxng/307377_1 new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/result/relaxng/307377_1 diff --git a/result/relaxng/307377_1.err b/result/relaxng/307377_1.err new file mode 100644 index 0000000..abfb533 --- /dev/null +++ b/result/relaxng/307377_1.err @@ -0,0 +1,3 @@ +./test/relaxng/307377_1.xml:1: element number: Relax-NG validity error : Extra data in list: a +./test/relaxng/307377_1.xml:1: element number: Relax-NG validity error : Element number failed to validate attributes +./test/relaxng/307377_1.xml fails to validate diff --git a/result/relaxng/307377_2 b/result/relaxng/307377_2 new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/result/relaxng/307377_2 diff --git a/result/relaxng/307377_2.err b/result/relaxng/307377_2.err new file mode 100644 index 0000000..158ea42 --- /dev/null +++ b/result/relaxng/307377_2.err @@ -0,0 +1 @@ +./test/relaxng/307377_2.xml validates diff --git a/result/relaxng/307377_err b/result/relaxng/307377_err new file mode 100644 index 0000000..5705eab --- /dev/null +++ b/result/relaxng/307377_err @@ -0,0 +1 @@ +./test/relaxng/307377.rng validates diff --git a/result/relaxng/307377_valid b/result/relaxng/307377_valid new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/result/relaxng/307377_valid diff --git a/result/schemas/allsg_0_0 b/result/schemas/allsg_0_0 new file mode 100644 index 0000000..a078f05 --- /dev/null +++ b/result/schemas/allsg_0_0 @@ -0,0 +1 @@ +./test/schemas/allsg_0.xml validates diff --git a/result/schemas/allsg_0_0.err b/result/schemas/allsg_0_0.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/result/schemas/allsg_0_0.err diff --git a/result/schemas/allsg_0_1 b/result/schemas/allsg_0_1 new file mode 100644 index 0000000..ab3cf58 --- /dev/null +++ b/result/schemas/allsg_0_1 @@ -0,0 +1 @@ +./test/schemas/allsg_1.xml validates diff --git a/result/schemas/allsg_0_1.err b/result/schemas/allsg_0_1.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/result/schemas/allsg_0_1.err diff --git a/result/schemas/allsg_0_2 b/result/schemas/allsg_0_2 new file mode 100644 index 0000000..da3de52 --- /dev/null +++ b/result/schemas/allsg_0_2 @@ -0,0 +1 @@ +./test/schemas/allsg_2.xml validates diff --git a/result/schemas/allsg_0_2.err b/result/schemas/allsg_0_2.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/result/schemas/allsg_0_2.err diff --git a/result/schemas/allsg_0_3 b/result/schemas/allsg_0_3 new file mode 100644 index 0000000..f98152b --- /dev/null +++ b/result/schemas/allsg_0_3 @@ -0,0 +1 @@ +./test/schemas/allsg_3.xml fails to validate diff --git a/result/schemas/allsg_0_3.err b/result/schemas/allsg_0_3.err new file mode 100644 index 0000000..756473b --- /dev/null +++ b/result/schemas/allsg_0_3.err @@ -0,0 +1 @@ +./test/schemas/allsg_3.xml:6: element gm-B-1: Schemas validity error : Element '{urn:test:foo}gm-B-1': This element is not expected. Expected is one of ( {urn:test:foo}gh-A, {urn:test:foo}gm-A-2, {urn:test:foo}gm-A-1 ). diff --git a/result/schemas/allsg_0_4 b/result/schemas/allsg_0_4 new file mode 100644 index 0000000..3fe69c1 --- /dev/null +++ b/result/schemas/allsg_0_4 @@ -0,0 +1 @@ +./test/schemas/allsg_4.xml fails to validate diff --git a/result/schemas/allsg_0_4.err b/result/schemas/allsg_0_4.err new file mode 100644 index 0000000..b63fa39 --- /dev/null +++ b/result/schemas/allsg_0_4.err @@ -0,0 +1 @@ +./test/schemas/allsg_4.xml:6: element gm-A-1: Schemas validity error : Element '{urn:test:foo}gm-A-1': This element is not expected. Expected is one of ( {urn:test:foo}gh-B, {urn:test:foo}gm-B-2, {urn:test:foo}gm-B-1 ). diff --git a/result/schemas/allsg_0_5 b/result/schemas/allsg_0_5 new file mode 100644 index 0000000..2689cf0 --- /dev/null +++ b/result/schemas/allsg_0_5 @@ -0,0 +1 @@ +./test/schemas/allsg_5.xml fails to validate diff --git a/result/schemas/allsg_0_5.err b/result/schemas/allsg_0_5.err new file mode 100644 index 0000000..26a1446 --- /dev/null +++ b/result/schemas/allsg_0_5.err @@ -0,0 +1 @@ +./test/schemas/allsg_5.xml:7: element gm-B-2: Schemas validity error : Element '{urn:test:foo}gm-B-2': This element is not expected. diff --git a/result/schemas/any3_0_0.err b/result/schemas/any3_0_0.err index 19036ce..49ce581 100644 --- a/result/schemas/any3_0_0.err +++ b/result/schemas/any3_0_0.err @@ -1 +1 @@ -./test/schemas/any3_0.xml:12: element bar.A: Schemas validity error : Element 'bar.A': This element is not expected. Expected is one of ( {##other:http://FOO}* ). +./test/schemas/any3_0.xml:12: element bar.A: Schemas validity error : Element 'bar.A': This element is not expected. Expected is ( ##other{http://FOO}* ). diff --git a/result/schemas/any5_0_0 b/result/schemas/any5_0_0 new file mode 100644 index 0000000..910f8bb --- /dev/null +++ b/result/schemas/any5_0_0 @@ -0,0 +1 @@ +./test/schemas/any5_0.xml fails to validate diff --git a/result/schemas/any5_0_0.err b/result/schemas/any5_0_0.err new file mode 100644 index 0000000..b69fd57 --- /dev/null +++ b/result/schemas/any5_0_0.err @@ -0,0 +1 @@ +./test/schemas/any5_0.xml:6: element boo: Schemas validity error : Element '{urn:test:foo}boo': This element is not expected. Expected is ( ##other{urn:test:foo}* ). diff --git a/result/schemas/any5_0_1 b/result/schemas/any5_0_1 new file mode 100644 index 0000000..5e2c461 --- /dev/null +++ b/result/schemas/any5_0_1 @@ -0,0 +1 @@ +./test/schemas/any5_1.xml fails to validate diff --git a/result/schemas/any5_0_1.err b/result/schemas/any5_0_1.err new file mode 100644 index 0000000..79d7e35 --- /dev/null +++ b/result/schemas/any5_0_1.err @@ -0,0 +1 @@ +./test/schemas/any5_1.xml:11: element boo: Schemas validity error : Element '{urn:test:bar}boo': This element is not expected. diff --git a/result/schemas/any5_0_2 b/result/schemas/any5_0_2 new file mode 100644 index 0000000..b049478 --- /dev/null +++ b/result/schemas/any5_0_2 @@ -0,0 +1 @@ +./test/schemas/any5_2.xml fails to validate diff --git a/result/schemas/any5_0_2.err b/result/schemas/any5_0_2.err new file mode 100644 index 0000000..a5bf4c0 --- /dev/null +++ b/result/schemas/any5_0_2.err @@ -0,0 +1 @@ +./test/schemas/any5_2.xml:7: element boo: Schemas validity error : Element '{urn:test:foo}boo': This element is not expected. diff --git a/result/schemas/any5_0_3 b/result/schemas/any5_0_3 new file mode 100644 index 0000000..8cfb94e --- /dev/null +++ b/result/schemas/any5_0_3 @@ -0,0 +1 @@ +./test/schemas/any5_3.xml validates diff --git a/result/schemas/any5_0_3.err b/result/schemas/any5_0_3.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/result/schemas/any5_0_3.err diff --git a/result/schemas/any5_0_4 b/result/schemas/any5_0_4 new file mode 100644 index 0000000..0a4bce0 --- /dev/null +++ b/result/schemas/any5_0_4 @@ -0,0 +1 @@ +./test/schemas/any5_4.xml fails to validate diff --git a/result/schemas/any5_0_4.err b/result/schemas/any5_0_4.err new file mode 100644 index 0000000..74a6bda --- /dev/null +++ b/result/schemas/any5_0_4.err @@ -0,0 +1 @@ +./test/schemas/any5_4.xml:11: element boo: Schemas validity error : Element '{urn:test:bar}boo': This element is not expected. diff --git a/result/schemas/any5_0_5 b/result/schemas/any5_0_5 new file mode 100644 index 0000000..6c15d25 --- /dev/null +++ b/result/schemas/any5_0_5 @@ -0,0 +1 @@ +./test/schemas/any5_5.xml fails to validate diff --git a/result/schemas/any5_0_5.err b/result/schemas/any5_0_5.err new file mode 100644 index 0000000..e50113f --- /dev/null +++ b/result/schemas/any5_0_5.err @@ -0,0 +1 @@ +./test/schemas/any5_5.xml:11: element boo: Schemas validity error : Element '{urn:test:foo}boo': This element is not expected. diff --git a/result/schemas/any5_0_6 b/result/schemas/any5_0_6 new file mode 100644 index 0000000..c9df562 --- /dev/null +++ b/result/schemas/any5_0_6 @@ -0,0 +1 @@ +./test/schemas/any5_6.xml fails to validate diff --git a/result/schemas/any5_0_6.err b/result/schemas/any5_0_6.err new file mode 100644 index 0000000..b64cd4f --- /dev/null +++ b/result/schemas/any5_0_6.err @@ -0,0 +1 @@ +./test/schemas/any5_6.xml:11: element boo: Schemas validity error : Element '{urn:test:bar}boo': This element is not expected. diff --git a/result/schemas/any5_1_0 b/result/schemas/any5_1_0 new file mode 100644 index 0000000..910f8bb --- /dev/null +++ b/result/schemas/any5_1_0 @@ -0,0 +1 @@ +./test/schemas/any5_0.xml fails to validate diff --git a/result/schemas/any5_1_0.err b/result/schemas/any5_1_0.err new file mode 100644 index 0000000..b69fd57 --- /dev/null +++ b/result/schemas/any5_1_0.err @@ -0,0 +1 @@ +./test/schemas/any5_0.xml:6: element boo: Schemas validity error : Element '{urn:test:foo}boo': This element is not expected. Expected is ( ##other{urn:test:foo}* ). diff --git a/result/schemas/any5_1_1 b/result/schemas/any5_1_1 new file mode 100644 index 0000000..5e2c461 --- /dev/null +++ b/result/schemas/any5_1_1 @@ -0,0 +1 @@ +./test/schemas/any5_1.xml fails to validate diff --git a/result/schemas/any5_1_1.err b/result/schemas/any5_1_1.err new file mode 100644 index 0000000..bbfccb4 --- /dev/null +++ b/result/schemas/any5_1_1.err @@ -0,0 +1 @@ +./test/schemas/any5_1.xml:11: element boo: Schemas validity error : Element '{urn:test:bar}boo': This element is not expected. Expected is ( {urn:test:foo}boo ). diff --git a/result/schemas/any5_1_2 b/result/schemas/any5_1_2 new file mode 100644 index 0000000..6eab2bb --- /dev/null +++ b/result/schemas/any5_1_2 @@ -0,0 +1 @@ +./test/schemas/any5_2.xml validates diff --git a/result/schemas/any5_1_2.err b/result/schemas/any5_1_2.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/result/schemas/any5_1_2.err diff --git a/result/schemas/any5_1_3 b/result/schemas/any5_1_3 new file mode 100644 index 0000000..f114a67 --- /dev/null +++ b/result/schemas/any5_1_3 @@ -0,0 +1 @@ +./test/schemas/any5_3.xml fails to validate diff --git a/result/schemas/any5_1_3.err b/result/schemas/any5_1_3.err new file mode 100644 index 0000000..e6c07b2 --- /dev/null +++ b/result/schemas/any5_1_3.err @@ -0,0 +1 @@ +./test/schemas/any5_3.xml:4: element foo: Schemas validity error : Element '{urn:test:foo}foo': Missing child element(s). diff --git a/result/schemas/any5_1_4 b/result/schemas/any5_1_4 new file mode 100644 index 0000000..0a4bce0 --- /dev/null +++ b/result/schemas/any5_1_4 @@ -0,0 +1 @@ +./test/schemas/any5_4.xml fails to validate diff --git a/result/schemas/any5_1_4.err b/result/schemas/any5_1_4.err new file mode 100644 index 0000000..6d89773 --- /dev/null +++ b/result/schemas/any5_1_4.err @@ -0,0 +1 @@ +./test/schemas/any5_4.xml:11: element boo: Schemas validity error : Element '{urn:test:bar}boo': This element is not expected. Expected is ( {urn:test:foo}boo ). diff --git a/result/schemas/any5_1_5 b/result/schemas/any5_1_5 new file mode 100644 index 0000000..e573d46 --- /dev/null +++ b/result/schemas/any5_1_5 @@ -0,0 +1 @@ +./test/schemas/any5_5.xml validates diff --git a/result/schemas/any5_1_5.err b/result/schemas/any5_1_5.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/result/schemas/any5_1_5.err diff --git a/result/schemas/any5_1_6 b/result/schemas/any5_1_6 new file mode 100644 index 0000000..c9df562 --- /dev/null +++ b/result/schemas/any5_1_6 @@ -0,0 +1 @@ +./test/schemas/any5_6.xml fails to validate diff --git a/result/schemas/any5_1_6.err b/result/schemas/any5_1_6.err new file mode 100644 index 0000000..8c3f020 --- /dev/null +++ b/result/schemas/any5_1_6.err @@ -0,0 +1 @@ +./test/schemas/any5_6.xml:11: element boo: Schemas validity error : Element '{urn:test:bar}boo': This element is not expected. Expected is ( {urn:test:foo}boo ). diff --git a/result/schemas/any6_1_0 b/result/schemas/any6_1_0 new file mode 100644 index 0000000..1bb493c --- /dev/null +++ b/result/schemas/any6_1_0 @@ -0,0 +1 @@ +./test/schemas/any6_0.xml validates diff --git a/result/schemas/any6_1_0.err b/result/schemas/any6_1_0.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/result/schemas/any6_1_0.err diff --git a/result/schemas/any6_2_0 b/result/schemas/any6_2_0 new file mode 100644 index 0000000..1bb493c --- /dev/null +++ b/result/schemas/any6_2_0 @@ -0,0 +1 @@ +./test/schemas/any6_0.xml validates diff --git a/result/schemas/any6_2_0.err b/result/schemas/any6_2_0.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/result/schemas/any6_2_0.err diff --git a/result/schemas/any7_1_0 b/result/schemas/any7_1_0 new file mode 100644 index 0000000..cfd9dcc --- /dev/null +++ b/result/schemas/any7_1_0 @@ -0,0 +1 @@ +./test/schemas/any7_0.xml fails to validate diff --git a/result/schemas/any7_1_0.err b/result/schemas/any7_1_0.err new file mode 100644 index 0000000..a4274f8 --- /dev/null +++ b/result/schemas/any7_1_0.err @@ -0,0 +1 @@ +./test/schemas/any7_0.xml:18: element moo: Schemas validity error : Element 'moo': This element is not expected. Expected is ( ##other{urn:test:foo}* ). diff --git a/result/schemas/any7_1_1 b/result/schemas/any7_1_1 new file mode 100644 index 0000000..2a6f5d7 --- /dev/null +++ b/result/schemas/any7_1_1 @@ -0,0 +1 @@ +./test/schemas/any7_1.xml fails to validate diff --git a/result/schemas/any7_1_1.err b/result/schemas/any7_1_1.err new file mode 100644 index 0000000..8745468 --- /dev/null +++ b/result/schemas/any7_1_1.err @@ -0,0 +1 @@ +./test/schemas/any7_1.xml:17: element bar: Schemas validity error : Element '{urn:test:foo}bar': This element is not expected. Expected is ( ##other{urn:test:foo}* ). diff --git a/result/schemas/any7_1_2 b/result/schemas/any7_1_2 new file mode 100644 index 0000000..6f35e2d --- /dev/null +++ b/result/schemas/any7_1_2 @@ -0,0 +1 @@ +./test/schemas/any7_2.xml validates diff --git a/result/schemas/any7_1_2.err b/result/schemas/any7_1_2.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/result/schemas/any7_1_2.err diff --git a/result/schemas/any7_2_0 b/result/schemas/any7_2_0 new file mode 100644 index 0000000..cfd9dcc --- /dev/null +++ b/result/schemas/any7_2_0 @@ -0,0 +1 @@ +./test/schemas/any7_0.xml fails to validate diff --git a/result/schemas/any7_2_0.err b/result/schemas/any7_2_0.err new file mode 100644 index 0000000..a4274f8 --- /dev/null +++ b/result/schemas/any7_2_0.err @@ -0,0 +1 @@ +./test/schemas/any7_0.xml:18: element moo: Schemas validity error : Element 'moo': This element is not expected. Expected is ( ##other{urn:test:foo}* ). diff --git a/result/schemas/any7_2_1 b/result/schemas/any7_2_1 new file mode 100644 index 0000000..2a6f5d7 --- /dev/null +++ b/result/schemas/any7_2_1 @@ -0,0 +1 @@ +./test/schemas/any7_1.xml fails to validate diff --git a/result/schemas/any7_2_1.err b/result/schemas/any7_2_1.err new file mode 100644 index 0000000..8745468 --- /dev/null +++ b/result/schemas/any7_2_1.err @@ -0,0 +1 @@ +./test/schemas/any7_1.xml:17: element bar: Schemas validity error : Element '{urn:test:foo}bar': This element is not expected. Expected is ( ##other{urn:test:foo}* ). diff --git a/result/schemas/any7_2_2 b/result/schemas/any7_2_2 new file mode 100644 index 0000000..6f35e2d --- /dev/null +++ b/result/schemas/any7_2_2 @@ -0,0 +1 @@ +./test/schemas/any7_2.xml validates diff --git a/result/schemas/any7_2_2.err b/result/schemas/any7_2_2.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/result/schemas/any7_2_2.err diff --git a/result/schemas/any8_1_0 b/result/schemas/any8_1_0 new file mode 100644 index 0000000..f5f4ed9 --- /dev/null +++ b/result/schemas/any8_1_0 @@ -0,0 +1 @@ +./test/schemas/any8_0.xml validates diff --git a/result/schemas/any8_1_0.err b/result/schemas/any8_1_0.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/result/schemas/any8_1_0.err diff --git a/result/schemas/bug303566_1_1.err b/result/schemas/bug303566_1_1.err index 5dc5a59..43515ea 100644 --- a/result/schemas/bug303566_1_1.err +++ b/result/schemas/bug303566_1_1.err @@ -1 +1 @@ -./test/schemas/bug303566_1.xml:5: element Country: Schemas validity error : Element 'Country': No match found for key-sequence ['B'] of key reference 'PartRefCountryDummy'. +./test/schemas/bug303566_1.xml:9: Schemas validity error : Element 'Part': No match found for key-sequence ['B'] of key reference 'PartRefCountryDummy'. diff --git a/result/schemas/bug310264_0_0 b/result/schemas/bug310264_0_0 new file mode 100644 index 0000000..e07293d --- /dev/null +++ b/result/schemas/bug310264_0_0 @@ -0,0 +1 @@ +./test/schemas/bug310264_0.xml validates diff --git a/result/schemas/bug310264_0_0.err b/result/schemas/bug310264_0_0.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/result/schemas/bug310264_0_0.err diff --git a/result/schemas/bug312957_1_0 b/result/schemas/bug312957_1_0 new file mode 100644 index 0000000..1ec6269 --- /dev/null +++ b/result/schemas/bug312957_1_0 @@ -0,0 +1 @@ +./test/schemas/bug312957_0.xml fails to validate diff --git a/result/schemas/bug312957_1_0.err b/result/schemas/bug312957_1_0.err new file mode 100644 index 0000000..5ab33fb --- /dev/null +++ b/result/schemas/bug312957_1_0.err @@ -0,0 +1 @@ +./test/schemas/bug312957_0.xml:11: Schemas validity error : Element 'sister': No match found for key-sequence ['annie'] of key reference 'sibling_key_ref'. diff --git a/result/schemas/bug313982_0_0 b/result/schemas/bug313982_0_0 new file mode 100644 index 0000000..19855cf --- /dev/null +++ b/result/schemas/bug313982_0_0 @@ -0,0 +1 @@ +./test/schemas/bug313982_0.xml validates diff --git a/result/schemas/bug313982_0_0.err b/result/schemas/bug313982_0_0.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/result/schemas/bug313982_0_0.err diff --git a/result/schemas/extension2_1_0 b/result/schemas/extension2_1_0 new file mode 100644 index 0000000..88c15aa --- /dev/null +++ b/result/schemas/extension2_1_0 @@ -0,0 +1 @@ +./test/schemas/extension2_0.xml validates diff --git a/result/schemas/extension2_1_0.err b/result/schemas/extension2_1_0.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/result/schemas/extension2_1_0.err diff --git a/result/schematron/zvon10_0 b/result/schematron/zvon10_0 new file mode 100644 index 0000000..9aae4b1 --- /dev/null +++ b/result/schematron/zvon10_0 @@ -0,0 +1,4 @@ +<?xml version="1.0"?> +<AAA> + <BBB/> +</AAA> diff --git a/result/schematron/zvon10_0.err b/result/schematron/zvon10_0.err new file mode 100644 index 0000000..524ecd8 --- /dev/null +++ b/result/schematron/zvon10_0.err @@ -0,0 +1,5 @@ +Pattern: Open model +/AAA line 1: CCC element is not present +Pattern: Closed model +/AAA line 1: CCC element is not present +./test/schematron/zvon10_0.xml fails to validate diff --git a/result/schematron/zvon10_1 b/result/schematron/zvon10_1 new file mode 100644 index 0000000..d82353a --- /dev/null +++ b/result/schematron/zvon10_1 @@ -0,0 +1,5 @@ +<?xml version="1.0"?> +<AAA> + <BBB/> + <DDD/> +</AAA> diff --git a/result/schematron/zvon10_1.err b/result/schematron/zvon10_1.err new file mode 100644 index 0000000..9bc361c --- /dev/null +++ b/result/schematron/zvon10_1.err @@ -0,0 +1,6 @@ +Pattern: Open model +/AAA line 1: CCC element is not present +Pattern: Closed model +/AAA line 1: CCC element is not present +/AAA line 1: There is an extra element +./test/schematron/zvon10_1.xml fails to validate diff --git a/result/schematron/zvon11_0 b/result/schematron/zvon11_0 new file mode 100644 index 0000000..49c8005 --- /dev/null +++ b/result/schematron/zvon11_0 @@ -0,0 +1,4 @@ +<?xml version="1.0"?> +<AAA> + <BBB aaa="A" bbb="B"/> +</AAA> diff --git a/result/schematron/zvon11_0.err b/result/schematron/zvon11_0.err new file mode 100644 index 0000000..ab4aa74 --- /dev/null +++ b/result/schematron/zvon11_0.err @@ -0,0 +1,2 @@ +Pattern: Attributes present +./test/schematron/zvon11_0.xml validates diff --git a/result/schematron/zvon11_1 b/result/schematron/zvon11_1 new file mode 100644 index 0000000..a5328e0 --- /dev/null +++ b/result/schematron/zvon11_1 @@ -0,0 +1,4 @@ +<?xml version="1.0"?> +<AAA> + <BBB bbb="B"/> +</AAA> diff --git a/result/schematron/zvon11_1.err b/result/schematron/zvon11_1.err new file mode 100644 index 0000000..c1ae243 --- /dev/null +++ b/result/schematron/zvon11_1.err @@ -0,0 +1,3 @@ +Pattern: Attributes present +/AAA/BBB line 2: The element must not have an isolated bbb attribute +./test/schematron/zvon11_1.xml fails to validate diff --git a/result/schematron/zvon11_2 b/result/schematron/zvon11_2 new file mode 100644 index 0000000..673a7af --- /dev/null +++ b/result/schematron/zvon11_2 @@ -0,0 +1,4 @@ +<?xml version="1.0"?> +<AAA> + <BBB aaa="A"/> +</AAA> diff --git a/result/schematron/zvon11_2.err b/result/schematron/zvon11_2.err new file mode 100644 index 0000000..35117f7 --- /dev/null +++ b/result/schematron/zvon11_2.err @@ -0,0 +1,3 @@ +Pattern: Attributes present +/AAA/BBB line 2: The element must not have an isolated aaa attribute +./test/schematron/zvon11_2.xml fails to validate diff --git a/result/schematron/zvon11_3 b/result/schematron/zvon11_3 new file mode 100644 index 0000000..9aae4b1 --- /dev/null +++ b/result/schematron/zvon11_3 @@ -0,0 +1,4 @@ +<?xml version="1.0"?> +<AAA> + <BBB/> +</AAA> diff --git a/result/schematron/zvon11_3.err b/result/schematron/zvon11_3.err new file mode 100644 index 0000000..18517e5 --- /dev/null +++ b/result/schematron/zvon11_3.err @@ -0,0 +1,2 @@ +Pattern: Attributes present +./test/schematron/zvon11_3.xml validates diff --git a/result/schematron/zvon12_0 b/result/schematron/zvon12_0 new file mode 100644 index 0000000..7220804 --- /dev/null +++ b/result/schematron/zvon12_0 @@ -0,0 +1,4 @@ +<?xml version="1.0"?> +<AAA> + <BBB bbb="C"/> +</AAA> diff --git a/result/schematron/zvon12_0.err b/result/schematron/zvon12_0.err new file mode 100644 index 0000000..c7e9ed2 --- /dev/null +++ b/result/schematron/zvon12_0.err @@ -0,0 +1,3 @@ +Pattern: Number of characters in an abbreviation +/AAA/BBB line 2: There is not enough letters in the abbreviation +./test/schematron/zvon12_0.xml fails to validate diff --git a/result/schematron/zvon12_1 b/result/schematron/zvon12_1 new file mode 100644 index 0000000..362de34 --- /dev/null +++ b/result/schematron/zvon12_1 @@ -0,0 +1,4 @@ +<?xml version="1.0"?> +<AAA> + <BBB bbb="CZ"/> +</AAA> diff --git a/result/schematron/zvon12_1.err b/result/schematron/zvon12_1.err new file mode 100644 index 0000000..486c0be --- /dev/null +++ b/result/schematron/zvon12_1.err @@ -0,0 +1,2 @@ +Pattern: Number of characters in an abbreviation +./test/schematron/zvon12_1.xml validates diff --git a/result/schematron/zvon12_2 b/result/schematron/zvon12_2 new file mode 100644 index 0000000..bbbf7c7 --- /dev/null +++ b/result/schematron/zvon12_2 @@ -0,0 +1,4 @@ +<?xml version="1.0"?> +<AAA> + <BBB bbb="CZCZ"/> +</AAA> diff --git a/result/schematron/zvon12_2.err b/result/schematron/zvon12_2.err new file mode 100644 index 0000000..5edaf30 --- /dev/null +++ b/result/schematron/zvon12_2.err @@ -0,0 +1,3 @@ +Pattern: Number of characters in an abbreviation +/AAA/BBB line 2: There is too much letters in the abbreviation +./test/schematron/zvon12_2.xml fails to validate diff --git a/result/schematron/zvon13_0 b/result/schematron/zvon13_0 new file mode 100644 index 0000000..e1295c3 --- /dev/null +++ b/result/schematron/zvon13_0 @@ -0,0 +1,7 @@ +<?xml version="1.0"?> +<Total> + <Percent>20</Percent> + <Percent>30</Percent> + <Percent>10</Percent> + <Percent>50</Percent> +</Total> diff --git a/result/schematron/zvon13_0.err b/result/schematron/zvon13_0.err new file mode 100644 index 0000000..ed98cb3 --- /dev/null +++ b/result/schematron/zvon13_0.err @@ -0,0 +1,3 @@ +Pattern: Sum equals 100%. +/Total line 1: The values do not sum to 100%. +./test/schematron/zvon13_0.xml fails to validate diff --git a/result/schematron/zvon13_1 b/result/schematron/zvon13_1 new file mode 100644 index 0000000..401e919 --- /dev/null +++ b/result/schematron/zvon13_1 @@ -0,0 +1,6 @@ +<?xml version="1.0"?> +<Total> + <Percent>20</Percent> + <Percent>10</Percent> + <Percent>50</Percent> +</Total> diff --git a/result/schematron/zvon13_1.err b/result/schematron/zvon13_1.err new file mode 100644 index 0000000..e0f02c2 --- /dev/null +++ b/result/schematron/zvon13_1.err @@ -0,0 +1,3 @@ +Pattern: Sum equals 100%. +/Total line 1: The values do not sum to 100%. +./test/schematron/zvon13_1.xml fails to validate diff --git a/result/schematron/zvon13_2 b/result/schematron/zvon13_2 new file mode 100644 index 0000000..cb1df2e --- /dev/null +++ b/result/schematron/zvon13_2 @@ -0,0 +1,6 @@ +<?xml version="1.0"?> +<Total> + <Percent>20</Percent> + <Percent>30</Percent> + <Percent>50</Percent> +</Total> diff --git a/result/schematron/zvon13_2.err b/result/schematron/zvon13_2.err new file mode 100644 index 0000000..dfab61f --- /dev/null +++ b/result/schematron/zvon13_2.err @@ -0,0 +1,2 @@ +Pattern: Sum equals 100%. +./test/schematron/zvon13_2.xml validates diff --git a/result/schematron/zvon14_0 b/result/schematron/zvon14_0 new file mode 100644 index 0000000..c72e0c2 --- /dev/null +++ b/result/schematron/zvon14_0 @@ -0,0 +1,13 @@ +<?xml version="1.0"?> +<AAA> + <BBB> + <CCC/> + </BBB> + <CCC/> + <DDD> + <CCC/> + <EEE> + <CCC/> + </EEE> + </DDD> +</AAA> diff --git a/result/schematron/zvon14_0.err b/result/schematron/zvon14_0.err new file mode 100644 index 0000000..60155da --- /dev/null +++ b/result/schematron/zvon14_0.err @@ -0,0 +1,4 @@ +Pattern: a child of selected elements +/AAA/CCC line 5: Element CCC must not be a child of element AAA +/AAA/DDD/EEE/CCC line 9: Element CCC must not be a child of element EEE +./test/schematron/zvon14_0.xml fails to validate diff --git a/result/schematron/zvon15_0 b/result/schematron/zvon15_0 new file mode 100644 index 0000000..56500fe --- /dev/null +++ b/result/schematron/zvon15_0 @@ -0,0 +1,5 @@ +<?xml version="1.0"?> +<AAA name="aaa"> +<BBB id="bbb"/> +<CCC color="ccc"/> +</AAA> diff --git a/result/schematron/zvon15_0.err b/result/schematron/zvon15_0.err new file mode 100644 index 0000000..5234889 --- /dev/null +++ b/result/schematron/zvon15_0.err @@ -0,0 +1,4 @@ +Pattern: id is the only permited attribute name +/AAA line 1: Attribute name is forbidden in element AAA +/AAA/CCC line 3: Attribute color is forbidden in element CCC +./test/schematron/zvon15_0.xml fails to validate diff --git a/result/schematron/zvon16_0 b/result/schematron/zvon16_0 new file mode 100644 index 0000000..709ce41 --- /dev/null +++ b/result/schematron/zvon16_0 @@ -0,0 +1,18 @@ +<?xml version="1.0"?> +<!DOCTYPE ideg [ +<!ELEMENT ideg (dog , cat , catowner+)> +<!ELEMENT dog (#PCDATA)> +<!ELEMENT cat (#PCDATA)> +<!ELEMENT catowner (#PCDATA)> +<!ATTLIST dog id ID #REQUIRED> +<!ATTLIST cat id ID #REQUIRED> +<!ATTLIST catowner pet IDREF #REQUIRED> +]> +<ideg> + <dog id="danny">Danny</dog> + <cat id="bede">Bede</cat> + <catowner>Harold</catowner> + <catowner pet="poochi">Fumiaki</catowner> + <catowner pet="danny">Jimmy</catowner> + <catowner pet="bede">Rick</catowner> +</ideg> diff --git a/result/schematron/zvon16_0.err b/result/schematron/zvon16_0.err new file mode 100644 index 0000000..1759ec6 --- /dev/null +++ b/result/schematron/zvon16_0.err @@ -0,0 +1,3 @@ +./test/schematron/zvon16.sct:17: element rule: Schemas parser error : Failed to compile context expression catowner[@pet] +./test/schematron/zvon16.sct:24: element rule: Schemas parser error : Failed to compile context expression catowner[@pet] +Schematron schema ./test/schematron/zvon16.sct failed to compile diff --git a/result/schematron/zvon1_0 b/result/schematron/zvon1_0 new file mode 100644 index 0000000..9aae4b1 --- /dev/null +++ b/result/schematron/zvon1_0 @@ -0,0 +1,4 @@ +<?xml version="1.0"?> +<AAA> + <BBB/> +</AAA> diff --git a/result/schematron/zvon1_0.err b/result/schematron/zvon1_0.err new file mode 100644 index 0000000..0d42184 --- /dev/null +++ b/result/schematron/zvon1_0.err @@ -0,0 +1,8 @@ +Pattern: Print both cases +/AAA line 1: BBB element is present. +/AAA line 1: AAA misses attribute name. +Pattern: Print positive result only +/AAA line 1: BBB element is present. +Pattern: Print negative result only +/AAA line 1: AAA misses attribute name. +./test/schematron/zvon1_0.xml fails to validate diff --git a/result/schematron/zvon1_1 b/result/schematron/zvon1_1 new file mode 100644 index 0000000..0a06953 --- /dev/null +++ b/result/schematron/zvon1_1 @@ -0,0 +1,4 @@ +<?xml version="1.0"?> +<AAA> + <CCC/> +</AAA> diff --git a/result/schematron/zvon1_1.err b/result/schematron/zvon1_1.err new file mode 100644 index 0000000..70ee87a --- /dev/null +++ b/result/schematron/zvon1_1.err @@ -0,0 +1,8 @@ +Pattern: Print both cases +/AAA line 1: BBB element is missing. +/AAA line 1: AAA misses attribute name. +Pattern: Print positive result only +Pattern: Print negative result only +/AAA line 1: BBB element is missing. +/AAA line 1: AAA misses attribute name. +./test/schematron/zvon1_1.xml fails to validate diff --git a/result/schematron/zvon2_0 b/result/schematron/zvon2_0 new file mode 100644 index 0000000..695bc8f --- /dev/null +++ b/result/schematron/zvon2_0 @@ -0,0 +1,5 @@ +<?xml version="1.0"?> +<AAA> + <BBB>bbbb</BBB> + <CCC>cccc</CCC> +</AAA> diff --git a/result/schematron/zvon2_0.err b/result/schematron/zvon2_0.err new file mode 100644 index 0000000..f4e4a7f --- /dev/null +++ b/result/schematron/zvon2_0.err @@ -0,0 +1,2 @@ +Pattern: Character @ forbidden +./test/schematron/zvon2_0.xml validates diff --git a/result/schematron/zvon2_1 b/result/schematron/zvon2_1 new file mode 100644 index 0000000..2af2cd0 --- /dev/null +++ b/result/schematron/zvon2_1 @@ -0,0 +1,5 @@ +<?xml version="1.0"?> +<AAA> + <BBB>bbbb@bbb.com</BBB> + <CCC>ccc@ccc.com</CCC> +</AAA> diff --git a/result/schematron/zvon2_1.err b/result/schematron/zvon2_1.err new file mode 100644 index 0000000..28f3e99 --- /dev/null +++ b/result/schematron/zvon2_1.err @@ -0,0 +1,5 @@ +Pattern: Character @ forbidden +/AAA line 1: Text in element AAA must not contain character @ +/AAA/BBB line 2: Text in element BBB must not contain character @ +/AAA/CCC line 3: Text in element CCC must not contain character @ +./test/schematron/zvon2_1.xml fails to validate diff --git a/result/schematron/zvon2_2 b/result/schematron/zvon2_2 new file mode 100644 index 0000000..585cf0c --- /dev/null +++ b/result/schematron/zvon2_2 @@ -0,0 +1,6 @@ +<?xml version="1.0"?> +<AAA> + <BBB>bbbb</BBB> + <CCC>cccc</CCC> + aaa@aaa.net +</AAA> diff --git a/result/schematron/zvon2_2.err b/result/schematron/zvon2_2.err new file mode 100644 index 0000000..40dc7ca --- /dev/null +++ b/result/schematron/zvon2_2.err @@ -0,0 +1,3 @@ +Pattern: Character @ forbidden +/AAA line 1: Text in element AAA must not contain character @ +./test/schematron/zvon2_2.xml fails to validate diff --git a/result/schematron/zvon3_0 b/result/schematron/zvon3_0 new file mode 100644 index 0000000..a8a6ed7 --- /dev/null +++ b/result/schematron/zvon3_0 @@ -0,0 +1,9 @@ +<?xml version="1.0"?> +<AAA> + <BBB> + <CCC/> + <CCC/> + </BBB> + <CCC name="c1"/> + <CCC name="c2"/> +</AAA> diff --git a/result/schematron/zvon3_0.err b/result/schematron/zvon3_0.err new file mode 100644 index 0000000..419e729 --- /dev/null +++ b/result/schematron/zvon3_0.err @@ -0,0 +1,6 @@ +Pattern: Attribute test +/AAA/BBB/CCC[1] line 3: attribute name is not present +/AAA/BBB/CCC[2] line 4: attribute name is not present +/AAA/CCC[1] line 6: attribute name is present +/AAA/CCC[2] line 7: attribute name is present +./test/schematron/zvon3_0.xml fails to validate diff --git a/result/schematron/zvon4_0 b/result/schematron/zvon4_0 new file mode 100644 index 0000000..b1e694e --- /dev/null +++ b/result/schematron/zvon4_0 @@ -0,0 +1,7 @@ +<?xml version="1.0"?> +<AAA> + <BBB> + <CCC/> + <CCC/> + </BBB> +</AAA> diff --git a/result/schematron/zvon4_0.err b/result/schematron/zvon4_0.err new file mode 100644 index 0000000..6aa6b2b --- /dev/null +++ b/result/schematron/zvon4_0.err @@ -0,0 +1,3 @@ +Pattern: Root test +/AAA line 1: Root element is AAA +./test/schematron/zvon4_0.xml fails to validate diff --git a/result/schematron/zvon4_1 b/result/schematron/zvon4_1 new file mode 100644 index 0000000..6b1facc --- /dev/null +++ b/result/schematron/zvon4_1 @@ -0,0 +1,7 @@ +<?xml version="1.0"?> +<XXX> + <BBB> + <CCC/> + <CCC/> + </BBB> +</XXX> diff --git a/result/schematron/zvon4_1.err b/result/schematron/zvon4_1.err new file mode 100644 index 0000000..4ad324f --- /dev/null +++ b/result/schematron/zvon4_1.err @@ -0,0 +1,3 @@ +Pattern: Root test +/XXX line 1: Root element is XXX, not AAA +./test/schematron/zvon4_1.xml fails to validate diff --git a/result/schematron/zvon5_0 b/result/schematron/zvon5_0 new file mode 100644 index 0000000..d763505 --- /dev/null +++ b/result/schematron/zvon5_0 @@ -0,0 +1,6 @@ +<?xml version="1.0"?> +<AAA> + <BBB> + <CCC/> + </BBB> +</AAA> diff --git a/result/schematron/zvon5_0.err b/result/schematron/zvon5_0.err new file mode 100644 index 0000000..91ef5f2 --- /dev/null +++ b/result/schematron/zvon5_0.err @@ -0,0 +1,7 @@ +Pattern: Select empty elements CCC +/AAA/BBB/CCC line 3: Source contains an empty element CCC +/AAA/BBB/CCC line 3: [1]An element CCC does not contain any text +/AAA/BBB/CCC line 3: [2]An element CCC does not contain any text +/AAA/BBB/CCC line 3: [1]An element CCC does not contain any child element +/AAA/BBB/CCC line 3: [2]An element CCC does not contain any child element +./test/schematron/zvon5_0.xml fails to validate diff --git a/result/schematron/zvon5_1 b/result/schematron/zvon5_1 new file mode 100644 index 0000000..c76b756 --- /dev/null +++ b/result/schematron/zvon5_1 @@ -0,0 +1,6 @@ +<?xml version="1.0"?> +<AAA> + <BBB> + <CCC>I am CCC element</CCC> + </BBB> +</AAA> diff --git a/result/schematron/zvon5_1.err b/result/schematron/zvon5_1.err new file mode 100644 index 0000000..f4ce6d4 --- /dev/null +++ b/result/schematron/zvon5_1.err @@ -0,0 +1,5 @@ +Pattern: Select empty elements CCC +/AAA/BBB/CCC line 3: Source contains an empty element CCC +/AAA/BBB/CCC line 3: [1]An element CCC does not contain any child element +/AAA/BBB/CCC line 3: [2]An element CCC does not contain any child element +./test/schematron/zvon5_1.xml fails to validate diff --git a/result/schematron/zvon5_2 b/result/schematron/zvon5_2 new file mode 100644 index 0000000..ddc11fe --- /dev/null +++ b/result/schematron/zvon5_2 @@ -0,0 +1,8 @@ +<?xml version="1.0"?> +<AAA> + <BBB> + <CCC> + <DDD/> + </CCC> + </BBB> +</AAA> diff --git a/result/schematron/zvon5_2.err b/result/schematron/zvon5_2.err new file mode 100644 index 0000000..8c69e79 --- /dev/null +++ b/result/schematron/zvon5_2.err @@ -0,0 +1,5 @@ +Pattern: Select empty elements CCC +/AAA/BBB/CCC line 3: Source contains an empty element CCC +/AAA/BBB/CCC line 3: [1]An element CCC does not contain any text +/AAA/BBB/CCC line 3: [2]An element CCC does not contain any text +./test/schematron/zvon5_2.xml fails to validate diff --git a/result/schematron/zvon6_0 b/result/schematron/zvon6_0 new file mode 100644 index 0000000..6539765 --- /dev/null +++ b/result/schematron/zvon6_0 @@ -0,0 +1,4 @@ +<?xml version="1.0"?> +<AAA> +aaa +</AAA> diff --git a/result/schematron/zvon6_0.err b/result/schematron/zvon6_0.err new file mode 100644 index 0000000..5cc3b37 --- /dev/null +++ b/result/schematron/zvon6_0.err @@ -0,0 +1,3 @@ +Pattern: Predefined values +/AAA line 1: O.K. +./test/schematron/zvon6_0.xml fails to validate diff --git a/result/schematron/zvon6_1 b/result/schematron/zvon6_1 new file mode 100644 index 0000000..e0c2e73 --- /dev/null +++ b/result/schematron/zvon6_1 @@ -0,0 +1,4 @@ +<?xml version="1.0"?> +<AAA> + bbb +</AAA> diff --git a/result/schematron/zvon6_1.err b/result/schematron/zvon6_1.err new file mode 100644 index 0000000..8b728d4 --- /dev/null +++ b/result/schematron/zvon6_1.err @@ -0,0 +1,3 @@ +Pattern: Predefined values +/AAA line 1: O.K. +./test/schematron/zvon6_1.xml fails to validate diff --git a/result/schematron/zvon6_2 b/result/schematron/zvon6_2 new file mode 100644 index 0000000..edc24a9 --- /dev/null +++ b/result/schematron/zvon6_2 @@ -0,0 +1,4 @@ +<?xml version="1.0"?> +<AAA> + ccc +</AAA> diff --git a/result/schematron/zvon6_2.err b/result/schematron/zvon6_2.err new file mode 100644 index 0000000..1868934 --- /dev/null +++ b/result/schematron/zvon6_2.err @@ -0,0 +1,3 @@ +Pattern: Predefined values +/AAA line 1: The AAA value is not permitted. +./test/schematron/zvon6_2.xml fails to validate diff --git a/result/schematron/zvon7_0 b/result/schematron/zvon7_0 new file mode 100644 index 0000000..6539765 --- /dev/null +++ b/result/schematron/zvon7_0 @@ -0,0 +1,4 @@ +<?xml version="1.0"?> +<AAA> +aaa +</AAA> diff --git a/result/schematron/zvon7_0.err b/result/schematron/zvon7_0.err new file mode 100644 index 0000000..df427d6 --- /dev/null +++ b/result/schematron/zvon7_0.err @@ -0,0 +1,3 @@ +Pattern: Test integer +/AAA line 1: The AAA value is not an integer. +./test/schematron/zvon7_0.xml fails to validate diff --git a/result/schematron/zvon7_1 b/result/schematron/zvon7_1 new file mode 100644 index 0000000..0a4007a --- /dev/null +++ b/result/schematron/zvon7_1 @@ -0,0 +1,4 @@ +<?xml version="1.0"?> +<AAA> + 12.234 +</AAA> diff --git a/result/schematron/zvon7_1.err b/result/schematron/zvon7_1.err new file mode 100644 index 0000000..aa1e0a1 --- /dev/null +++ b/result/schematron/zvon7_1.err @@ -0,0 +1,3 @@ +Pattern: Test integer +/AAA line 1: The AAA value is not an integer. +./test/schematron/zvon7_1.xml fails to validate diff --git a/result/schematron/zvon7_2 b/result/schematron/zvon7_2 new file mode 100644 index 0000000..8eb45e3 --- /dev/null +++ b/result/schematron/zvon7_2 @@ -0,0 +1,4 @@ +<?xml version="1.0"?> +<AAA> +45 +</AAA> diff --git a/result/schematron/zvon7_2.err b/result/schematron/zvon7_2.err new file mode 100644 index 0000000..abf8cc7 --- /dev/null +++ b/result/schematron/zvon7_2.err @@ -0,0 +1,3 @@ +Pattern: Test integer +/AAA line 1: O.K. +./test/schematron/zvon7_2.xml fails to validate diff --git a/result/schematron/zvon7_3 b/result/schematron/zvon7_3 new file mode 100644 index 0000000..35089dd --- /dev/null +++ b/result/schematron/zvon7_3 @@ -0,0 +1,4 @@ +<?xml version="1.0"?> +<AAA> +0 +</AAA> diff --git a/result/schematron/zvon7_3.err b/result/schematron/zvon7_3.err new file mode 100644 index 0000000..5b4b59f --- /dev/null +++ b/result/schematron/zvon7_3.err @@ -0,0 +1,3 @@ +Pattern: Test integer +/AAA line 1: O.K. +./test/schematron/zvon7_3.xml fails to validate diff --git a/result/schematron/zvon7_4 b/result/schematron/zvon7_4 new file mode 100644 index 0000000..0739eb4 --- /dev/null +++ b/result/schematron/zvon7_4 @@ -0,0 +1,4 @@ +<?xml version="1.0"?> +<AAA> +-45 +</AAA> diff --git a/result/schematron/zvon7_4.err b/result/schematron/zvon7_4.err new file mode 100644 index 0000000..de1ee89 --- /dev/null +++ b/result/schematron/zvon7_4.err @@ -0,0 +1,3 @@ +Pattern: Test integer +/AAA line 1: O.K. +./test/schematron/zvon7_4.xml fails to validate diff --git a/result/schematron/zvon8_0 b/result/schematron/zvon8_0 new file mode 100644 index 0000000..1932cd0 --- /dev/null +++ b/result/schematron/zvon8_0 @@ -0,0 +1,9 @@ +<?xml version="1.0"?> +<XXX> + <BBB/> + <BBB/> + <AAA/> + <BBB/> + <AAA/> + <AAA/> +</XXX> diff --git a/result/schematron/zvon8_0.err b/result/schematron/zvon8_0.err new file mode 100644 index 0000000..085e1de --- /dev/null +++ b/result/schematron/zvon8_0.err @@ -0,0 +1,3 @@ +Pattern: Test count +/XXX line 1: O.K. +./test/schematron/zvon8_0.xml fails to validate diff --git a/result/schematron/zvon8_1 b/result/schematron/zvon8_1 new file mode 100644 index 0000000..93e5cfd --- /dev/null +++ b/result/schematron/zvon8_1 @@ -0,0 +1,8 @@ +<?xml version="1.0"?> +<XXX> + <BBB/> + <AAA/> + <BBB/> + <AAA/> + <AAA/> +</XXX> diff --git a/result/schematron/zvon8_1.err b/result/schematron/zvon8_1.err new file mode 100644 index 0000000..ae07d05 --- /dev/null +++ b/result/schematron/zvon8_1.err @@ -0,0 +1,3 @@ +Pattern: Test count +/XXX line 1: Some BBB are missing +./test/schematron/zvon8_1.xml fails to validate diff --git a/result/schematron/zvon8_2 b/result/schematron/zvon8_2 new file mode 100644 index 0000000..4eea77b --- /dev/null +++ b/result/schematron/zvon8_2 @@ -0,0 +1,8 @@ +<?xml version="1.0"?> +<XXX> + <BBB/> + <BBB/> + <AAA/> + <BBB/> + <AAA/> +</XXX> diff --git a/result/schematron/zvon8_2.err b/result/schematron/zvon8_2.err new file mode 100644 index 0000000..37e8432 --- /dev/null +++ b/result/schematron/zvon8_2.err @@ -0,0 +1,3 @@ +Pattern: Test count +/XXX line 1: Some AAA are missing +./test/schematron/zvon8_2.xml fails to validate diff --git a/result/schematron/zvon9_0 b/result/schematron/zvon9_0 new file mode 100644 index 0000000..1f254ec --- /dev/null +++ b/result/schematron/zvon9_0 @@ -0,0 +1,8 @@ +<?xml version="1.0"?> +<AAA> + <CCC/> + <CCC/> + <BBB> + <CCC id="Q1"/> + </BBB> +</AAA> diff --git a/result/schematron/zvon9_0.err b/result/schematron/zvon9_0.err new file mode 100644 index 0000000..a39ceeb --- /dev/null +++ b/result/schematron/zvon9_0.err @@ -0,0 +1,2 @@ +Pattern: Test attribute +./test/schematron/zvon9_0.xml validates diff --git a/result/schematron/zvon9_1 b/result/schematron/zvon9_1 new file mode 100644 index 0000000..0dc0df7 --- /dev/null +++ b/result/schematron/zvon9_1 @@ -0,0 +1,8 @@ +<?xml version="1.0"?> +<AAA> + <CCC id="Q2"/> + <CCC/> + <BBB> + <CCC id="Q1"/> + </BBB> +</AAA> diff --git a/result/schematron/zvon9_1.err b/result/schematron/zvon9_1.err new file mode 100644 index 0000000..44c6f67 --- /dev/null +++ b/result/schematron/zvon9_1.err @@ -0,0 +1,3 @@ +Pattern: Test attribute +/AAA/CCC[1] line 2: Attribute id is used in wrong context +./test/schematron/zvon9_1.xml fails to validate diff --git a/result/schematron/zvon9_2 b/result/schematron/zvon9_2 new file mode 100644 index 0000000..b9218fc --- /dev/null +++ b/result/schematron/zvon9_2 @@ -0,0 +1,8 @@ +<?xml version="1.0"?> +<AAA> + <CCC/> + <CCC/> + <BBB> + <CCC/> + </BBB> +</AAA> diff --git a/result/schematron/zvon9_2.err b/result/schematron/zvon9_2.err new file mode 100644 index 0000000..20b0884 --- /dev/null +++ b/result/schematron/zvon9_2.err @@ -0,0 +1,3 @@ +Pattern: Test attribute +/AAA/BBB/CCC line 5: Attribute id is missing +./test/schematron/zvon9_2.xml fails to validate diff --git a/result/valid/objednavka.xml b/result/valid/objednavka.xml new file mode 100644 index 0000000..b0ffd92 --- /dev/null +++ b/result/valid/objednavka.xml @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE objednavka SYSTEM "dtds/objednavka.dtd"> +<objednavka> + <AdDoruÄŤeni> + <JmĂ©no>Jan Novák</JmĂ©no> + <Ulice>BÄ›lehradská 147</Ulice> + <MÄ›sto>Praha 2</MÄ›sto> + <PSÄŚ>12000</PSÄŚ> + </AdDoruÄŤeni> + <AdÚčtovacĂ> + <JmĂ©no>Petra Nováková</JmĂ©no> + <Ulice>Anglická 15</Ulice> + <MÄ›sto>Praha 2</MÄ›sto> + <PSÄŚ>12000</PSÄŚ> + </AdÚčtovacĂ> + <ZpĹŻsobDopravy>DPD</ZpĹŻsobDopravy> + <ZpĹŻsobPlatby>dobĂrka</ZpĹŻsobPlatby> + <DatumPĹ™ijetĂ>2004-11-14</DatumPĹ™ijetĂ> + <DatumDoruÄŤenĂ>2004-11-19</DatumDoruÄŤenĂ> + <ObsahObjednávky> + <ZboĹľĂ> + <KĂłd>2N7-516</KĂłd> + <Název>SekaÄŤka na trávu</Název> + <PoÄŤet jednotka="ks">1</PoÄŤet> + <Cena>2999</Cena> + <Popis>http://example.org/sekacka.html</Popis> + </ZboĹľĂ> + <ZboĹľĂ> + <KĂłd>Q3Y-116</KĂłd> + <Název>TravnĂ semeno</Název> + <PoÄŤet jednotka="kg">2.5</PoÄŤet> + <Cena>127.50</Cena> + </ZboĹľĂ> + </ObsahObjednávky> + <Komentář> + <Ĺádka>O dodávku mám zájem pouze v pĹ™ĂpadÄ›, Ĺľe se jedná o trávu v odrĹŻdÄ› konopĂ.</Ĺádka> + <Ĺádka>Dále jsem se chtÄ›l zeptat, zda je doprava zdarma.</Ĺádka> + </Komentář> +</objednavka> diff --git a/result/valid/objednavka.xml.err b/result/valid/objednavka.xml.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/result/valid/objednavka.xml.err diff --git a/result/xml2.sax b/result/xml2.sax index e848473..141accd 100644 --- a/result/xml2.sax +++ b/result/xml2.sax @@ -12,6 +12,7 @@ SAX.error: PEReference: %xx; not found SAX.characters(This sample shows a , 20) SAX.getEntity(tricky) SAX.error: Entity 'tricky' not defined +SAX.reference(tricky) SAX.characters( method., 8) SAX.endDocument() xmlSAXUserParseFile returned error 27 diff --git a/result/xml2.sax2 b/result/xml2.sax2 index e848473..141accd 100644 --- a/result/xml2.sax2 +++ b/result/xml2.sax2 @@ -12,6 +12,7 @@ SAX.error: PEReference: %xx; not found SAX.characters(This sample shows a , 20) SAX.getEntity(tricky) SAX.error: Entity 'tricky' not defined +SAX.reference(tricky) SAX.characters( method., 8) SAX.endDocument() xmlSAXUserParseFile returned error 27 @@ -30,8 +30,8 @@ #include <libxml/xmlschemastypes.h> #define LOGFILE "runsuite.log" -FILE *logfile = NULL; -int verbose = 0;
+static FILE *logfile = NULL; +static int verbose = 0;
#if defined(_WIN32) && !defined(__CYGWIN__)
#define vsnprintf _vsnprintf
@@ -96,9 +96,9 @@ fatalError(void) { * that's needed to implement <resource> */ #define MAX_ENTITIES 20 -char *testEntitiesName[MAX_ENTITIES]; -char *testEntitiesValue[MAX_ENTITIES]; -int nb_entities = 0; +static char *testEntitiesName[MAX_ENTITIES]; +static char *testEntitiesValue[MAX_ENTITIES]; +static int nb_entities = 0; static void resetEntities(void) { int i; @@ -205,7 +205,7 @@ testErrorHandler(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) { testErrors[testErrorsSize] = 0; } -xmlXPathContextPtr ctxtXPath; +static xmlXPathContextPtr ctxtXPath; static void initializeLibxml2(void) { @@ -241,7 +241,7 @@ testExternalEntityLoader(const char *URL, const char *ID, static char testErrors[32769]; static int testErrorsSize = 0; -static void +static void XMLCDECL testErrorHandler(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) { va_list args; int res; @@ -263,7 +263,7 @@ testErrorHandler(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) { testErrors[testErrorsSize] = 0; } -static void +static void XMLCDECL channel(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) { va_list args; int res; @@ -714,12 +714,12 @@ static int unloadMem(const char *mem) { * * ************************************************************************/ -FILE *SAXdebug = NULL; +static FILE *SAXdebug = NULL; /* * empty SAX block */ -xmlSAXHandler emptySAXHandlerStruct = { +static xmlSAXHandler emptySAXHandlerStruct = { NULL, /* internalSubset */ NULL, /* isStandalone */ NULL, /* hasInternalSubset */ @@ -755,8 +755,8 @@ xmlSAXHandler emptySAXHandlerStruct = { }; static xmlSAXHandlerPtr emptySAXHandler = &emptySAXHandlerStruct; -int callbacks = 0; -int quiet = 0; +static int callbacks = 0; +static int quiet = 0; /** * isStandaloneDebug: @@ -1287,7 +1287,7 @@ commentDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *value) * Display and format a warning messages, gives file, line, position and * extra parameters. */ -static void +static void XMLCDECL warningDebug(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) { va_list args; @@ -1310,7 +1310,7 @@ warningDebug(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) * Display and format a error messages, gives file, line, position and * extra parameters. */ -static void +static void XMLCDECL errorDebug(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) { va_list args; @@ -1333,7 +1333,7 @@ errorDebug(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) * Display and format a fatalError messages, gives file, line, position and * extra parameters. */ -static void +static void XMLCDECL fatalErrorDebug(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) { va_list args; @@ -1347,7 +1347,7 @@ fatalErrorDebug(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) va_end(args); } -xmlSAXHandler debugSAXHandlerStruct = { +static xmlSAXHandler debugSAXHandlerStruct = { internalSubsetDebug, isStandaloneDebug, hasInternalSubsetDebug, @@ -1382,7 +1382,7 @@ xmlSAXHandler debugSAXHandlerStruct = { NULL }; -xmlSAXHandlerPtr debugSAXHandler = &debugSAXHandlerStruct; +static xmlSAXHandlerPtr debugSAXHandler = &debugSAXHandlerStruct; /* * SAX2 specific callbacks @@ -1471,7 +1471,7 @@ endElementNsDebug(void *ctx ATTRIBUTE_UNUSED, fprintf(SAXdebug, ", '%s')\n", (char *) URI); } -xmlSAXHandler debugSAX2HandlerStruct = { +static xmlSAXHandler debugSAX2HandlerStruct = { internalSubsetDebug, isStandaloneDebug, hasInternalSubsetDebug, @@ -1506,7 +1506,7 @@ xmlSAXHandler debugSAX2HandlerStruct = { NULL }; -xmlSAXHandlerPtr debugSAX2Handler = &debugSAX2HandlerStruct; +static xmlSAXHandlerPtr debugSAX2Handler = &debugSAX2HandlerStruct; #ifdef LIBXML_HTML_ENABLED /** @@ -1586,7 +1586,7 @@ htmlcdataDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *ch, int len) fprintf(SAXdebug, "SAX.cdata(%s, %d)\n", output, len); } -xmlSAXHandler debugHTMLSAXHandlerStruct = { +static xmlSAXHandler debugHTMLSAXHandlerStruct = { internalSubsetDebug, isStandaloneDebug, hasInternalSubsetDebug, @@ -1621,7 +1621,7 @@ xmlSAXHandler debugHTMLSAXHandlerStruct = { NULL }; -xmlSAXHandlerPtr debugHTMLSAXHandler = &debugHTMLSAXHandlerStruct; +static xmlSAXHandlerPtr debugHTMLSAXHandler = &debugHTMLSAXHandlerStruct; #endif /* LIBXML_HTML_ENABLED */ #ifdef LIBXML_SAX1_ENABLED @@ -2247,8 +2247,8 @@ streamMemParseTest(const char *filename, const char *result, const char *err, * * ************************************************************************/ -FILE *xpathOutput; -xmlDocPtr xpathDocument; +static FILE *xpathOutput; +static xmlDocPtr xpathDocument; static void testXPath(const char *str, int xptr, int expr) { @@ -2692,6 +2692,178 @@ uriBaseTest(const char *filename, "http://foo.com/path/to/index.html?orig#help")); } +static int urip_success = 1; +static int urip_current = 0; +static const char *urip_testURLs[] = { + "urip://example.com/a b.html", + "urip://example.com/a%20b.html", + "file:///path/to/a b.html", + "file:///path/to/a%20b.html", + "/path/to/a b.html", + "/path/to/a%20b.html", + "urip://example.com/résumé.html", + "urip://example.com/test?a=1&b=2%263&c=4#foo", + NULL +}; +static const char *urip_rcvsURLs[] = { + /* it is an URI the strings must be escaped */ + "urip://example.com/a%20b.html", + /* check that % escaping is not broken */ + "urip://example.com/a%20b.html", + /* it's an URI path the strings must be escaped */ + "file:///path/to/a%20b.html", + /* check that % escaping is not broken */ + "file:///path/to/a%20b.html", + /* this is not an URI, this is a path, so this should not be escaped */ + "/path/to/a b.html", + /* check that paths with % are not broken */ + "/path/to/a%20b.html", + /* out of context the encoding can't be guessed byte by byte conversion */ + "urip://example.com/r%E9sum%E9.html", + /* verify we don't destroy URIs especially the query part */ + "urip://example.com/test?a=1&b=2%263&c=4#foo", + NULL +}; +static const char *urip_res = "<list/>"; +static const char *urip_cur = NULL; +static int urip_rlen; + +/** + * uripMatch: + * @URI: an URI to test + * + * Check for an urip: query + * + * Returns 1 if yes and 0 if another Input module should be used + */ +static int +uripMatch(const char * URI) { + if ((URI == NULL) || (!strcmp(URI, "file:///etc/xml/catalog"))) + return(0); + /* Verify we received the escaped URL */ + if (strcmp(urip_rcvsURLs[urip_current], URI)) + urip_success = 0; + return(1); +} + +/** + * uripOpen: + * @URI: an URI to test + * + * Return a pointer to the urip: query handler, in this example simply + * the urip_current pointer... + * + * Returns an Input context or NULL in case or error + */ +static void * +uripOpen(const char * URI) { + if ((URI == NULL) || (!strcmp(URI, "file:///etc/xml/catalog"))) + return(NULL); + /* Verify we received the escaped URL */ + if (strcmp(urip_rcvsURLs[urip_current], URI)) + urip_success = 0; + urip_cur = urip_res; + urip_rlen = strlen(urip_res); + return((void *) urip_cur); +} + +/** + * uripClose: + * @context: the read context + * + * Close the urip: query handler + * + * Returns 0 or -1 in case of error + */ +static int +uripClose(void * context) { + if (context == NULL) return(-1); + urip_cur = NULL; + urip_rlen = 0; + return(0); +} + +/** + * uripRead: + * @context: the read context + * @buffer: where to store data + * @len: number of bytes to read + * + * Implement an urip: query read. + * + * Returns the number of bytes read or -1 in case of error + */ +static int +uripRead(void * context, char * buffer, int len) { + const char *ptr = (const char *) context; + + if ((context == NULL) || (buffer == NULL) || (len < 0)) + return(-1); + + if (len > urip_rlen) len = urip_rlen; + memcpy(buffer, ptr, len); + urip_rlen -= len; + return(len); +} + +static int +urip_checkURL(const char *URL) { + xmlDocPtr doc; + + doc = xmlReadFile(URL, NULL, 0); + if (doc == NULL) + return(-1); + xmlFreeDoc(doc); + return(1); +} + +/** + * uriPathTest: + * @filename: ignored + * @result: ignored + * @err: ignored + * + * Run a set of tests to check how Path and URI are handled before + * being passed to the I/O layer + * + * Returns 0 in case of success, an error code otherwise + */ +static int +uriPathTest(const char *filename ATTRIBUTE_UNUSED, + const char *result ATTRIBUTE_UNUSED, + const char *err ATTRIBUTE_UNUSED, + int options ATTRIBUTE_UNUSED) { + int parsed; + int failures = 0; + + /* + * register the new I/O handlers + */ + if (xmlRegisterInputCallbacks(uripMatch, uripOpen, uripRead, uripClose) < 0) + { + fprintf(stderr, "failed to register HTTP handler\n"); + return(-1); + } + + for (urip_current = 0;urip_testURLs[urip_current] != NULL;urip_current++) { + urip_success = 1; + parsed = urip_checkURL(urip_testURLs[urip_current]); + if (urip_success != 1) { + fprintf(stderr, "failed the URL passing test for %s", + urip_testURLs[urip_current]); + failures++; + } else if (parsed != 1) { + fprintf(stderr, "failed the parsing test for %s", + urip_testURLs[urip_current]); + failures++; + } + nb_tests++; + } + + xmlPopInputCallbacks(); + return(failures); +} + #ifdef LIBXML_SCHEMAS_ENABLED /************************************************************************ * * @@ -3076,7 +3248,7 @@ rngStreamTest(const char *filename, * hack is also done in the Makefile */ if ((!strcmp(prefix, "tutor10_1")) || (!strcmp(prefix, "tutor10_2")) || - (!strcmp(prefix, "tutor3_2"))) + (!strcmp(prefix, "tutor3_2")) || (!strcmp(prefix, "307377"))) disable_err = 1; snprintf(pattern, 499, "./test/relaxng/%s_?.xml", prefix); @@ -3357,7 +3529,7 @@ load_xpath_expr (xmlDocPtr parent_doc, const char* filename) { xmlLoadExtDtdDefaultValue = XML_DETECT_IDS | XML_COMPLETE_ATTRS; xmlSubstituteEntitiesDefault(1); - doc = xmlParseFile(filename); + doc = xmlReadFile(filename, NULL, XML_PARSE_DTDATTR | XML_PARSE_NOENT); if (doc == NULL) { fprintf(stderr, "Error: unable to parse file \"%s\"\n", filename); return(NULL); @@ -3509,7 +3681,7 @@ c14nRunTest(const char* xml_filename, int with_comments, int exclusive, xmlLoadExtDtdDefaultValue = XML_DETECT_IDS | XML_COMPLETE_ATTRS; xmlSubstituteEntitiesDefault(1); - doc = xmlParseFile(xml_filename); + doc = xmlReadFile(xml_filename, NULL, XML_PARSE_DTDATTR | XML_PARSE_NOENT); if (doc == NULL) { fprintf(stderr, "Error: unable to parse file \"%s\"\n", xml_filename); return(-1); @@ -3644,7 +3816,7 @@ c14nExcWithoutCommentTest(const char *filename, return(c14nCommonTest(filename, 0, 1, "exc-without-comments")); } #endif -#if defined(LIBXML_THREAD_ENABLED) && defined(LIBXML_CATALOG_ENABLED) +#if defined(LIBXML_THREAD_ENABLED) && defined(LIBXML_CATALOG_ENABLED) && defined (LIBXML_SAX1_ENABLED) /************************************************************************ * * * Catalog and threads test * @@ -3667,8 +3839,8 @@ static const char *testfiles[] = { "test/threads/invalid.xml", }; -const char *Okay = "OK"; -const char *Failed = "Failed"; +static const char *Okay = "OK"; +static const char *Failed = "Failed"; #ifndef xmlDoValidityCheckingDefaultValue #error xmlDoValidityCheckingDefaultValue is not a macro @@ -4039,6 +4211,9 @@ testDesc testDescriptions[] = { { "URI base composition tests" , uriBaseTest, "./test/URI/*.data", "result/URI/", "", NULL, 0 }, + { "Path URI conversion tests" , + uriPathTest, NULL, NULL, NULL, NULL, + 0 }, #ifdef LIBXML_SCHEMAS_ENABLED { "Schemas regression tests" , schemasTest, "./test/schemas/*_*.xsd", NULL, NULL, NULL, @@ -4070,7 +4245,7 @@ testDesc testDescriptions[] = { c14nExcWithoutCommentTest, "./test/c14n/exc-without-comments/*.xml", NULL, NULL, NULL, 0 }, #endif -#if defined(LIBXML_THREAD_ENABLED) && defined(LIBXML_CATALOG_ENABLED) +#if defined(LIBXML_THREAD_ENABLED) && defined(LIBXML_CATALOG_ENABLED) && defined(LIBXML_SAX1_ENABLED) { "Catalog and Threads regression tests" , threadsTest, NULL, NULL, NULL, NULL, 0 }, @@ -4131,7 +4306,7 @@ launchTests(testDescPtr tst) { testErrorsSize = 0; testErrors[0] = 0; res = tst->func(globbuf.gl_pathv[i], result, error, - tst->options); + tst->options | XML_PARSE_COMPACT); xmlResetLastError(); if (res != 0) { fprintf(stderr, "File %s generated an error\n", @@ -4169,33 +4344,59 @@ launchTests(testDescPtr tst) { return(err); } +static int verbose = 0; +static int tests_quiet = 0; + +static int +runtest(int i) { + int ret = 0, res; + int old_errors, old_tests, old_leaks; + + old_errors = nb_errors; + old_tests = nb_tests; + old_leaks = nb_leaks; + if ((tests_quiet == 0) && (testDescriptions[i].desc != NULL)) + printf("## %s\n", testDescriptions[i].desc); + res = launchTests(&testDescriptions[i]); + if (res != 0) + ret++; + if (verbose) { + if ((nb_errors == old_errors) && (nb_leaks == old_leaks)) + printf("Ran %d tests, no errors\n", nb_tests - old_tests); + else + printf("Ran %d tests, %d errors, %d leaks\n", + nb_tests - old_tests, + nb_errors - old_errors, + nb_leaks - old_leaks); + } + return(ret); +} + int main(int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED) { - int i = 0, res, ret = 0; - int verbose = 0; - int old_errors, old_tests, old_leaks; + int i, a, ret = 0; + int subset = 0; initializeLibxml2(); - if ((argc >= 2) && (!strcmp(argv[1], "-v"))) - verbose = 1; - for (i = 0; testDescriptions[i].func != NULL; i++) { - old_errors = nb_errors; - old_tests = nb_tests; - old_leaks = nb_leaks; - if (testDescriptions[i].desc != NULL) - printf("## %s\n", testDescriptions[i].desc); - res = launchTests(&testDescriptions[i]); - if (res != 0) - ret++; - if (verbose) { - if ((nb_errors == old_errors) && (nb_leaks == old_leaks)) - printf("Ran %d tests, no errors\n", nb_tests - old_tests); - else - printf("Ran %d tests, %d errors, %d leaks\n", - nb_tests - old_tests, - nb_errors - old_errors, - nb_leaks - old_leaks); + + for (a = 1; a < argc;a++) { + if (!strcmp(argv[a], "-v")) + verbose = 1; + else if (!strcmp(argv[a], "-quiet")) + tests_quiet = 1; + else { + for (i = 0; testDescriptions[i].func != NULL; i++) { + if (strstr(testDescriptions[i].desc, argv[a])) { + ret += runtest(i); + subset++; + } + } + } + } + if (subset == 0) { + for (i = 0; testDescriptions[i].func != NULL; i++) { + ret += runtest(i); } } if ((nb_errors == 0) && (nb_leaks == 0)) { diff --git a/schematron.c b/schematron.c new file mode 100644 index 0000000..9cb5027 --- /dev/null +++ b/schematron.c @@ -0,0 +1,1729 @@ +/* + * schematron.c : implementation of the Schematron schema validity checking + * + * See Copyright for the status of this software. + * + * Daniel Veillard <daniel@veillard.com> + */ + +/* + * TODO: + * + double check the semantic, especially + * - multiple rules applying in a single pattern/node + * - the semantic of libxml2 patterns vs. XSLT production referenced + * by the spec. + * + export of results in SVRL + * + full parsing and coverage of the spec, conformance of the input to the + * spec + * + divergences between the draft and the ISO proposed standard :-( + * + hook and test include + * + try and compare with the XSLT version + */ + +#define IN_LIBXML +#include "libxml.h" + +#ifdef LIBXML_SCHEMATRON_ENABLED + +#include <string.h> +#include <libxml/parser.h> +#include <libxml/tree.h> +#include <libxml/uri.h> +#include <libxml/xpath.h> +#include <libxml/xpathInternals.h> +#include <libxml/pattern.h> +#include <libxml/schematron.h> + +#define SCHEMATRON_PARSE_OPTIONS XML_PARSE_NOENT + +#define SCT_OLD_NS BAD_CAST "http://www.ascc.net/xml/schematron" + +#define XML_SCHEMATRON_NS BAD_CAST "http://purl.oclc.org/dsdl/schematron" + + +static const xmlChar *xmlSchematronNs = XML_SCHEMATRON_NS; +static const xmlChar *xmlOldSchematronNs = SCT_OLD_NS; + +#define IS_SCHEMATRON(node, elem) \ + ((node != NULL) && (node->type == XML_ELEMENT_NODE ) && \ + (node->ns != NULL) && \ + (xmlStrEqual(node->name, (const xmlChar *) elem)) && \ + ((xmlStrEqual(node->ns->href, xmlSchematronNs)) || \ + (xmlStrEqual(node->ns->href, xmlOldSchematronNs)))) + +#define NEXT_SCHEMATRON(node) \ + while (node != NULL) { \ + if ((node->type == XML_ELEMENT_NODE ) && (node->ns != NULL) && \ + ((xmlStrEqual(node->ns->href, xmlSchematronNs)) || \ + (xmlStrEqual(node->ns->href, xmlOldSchematronNs)))) \ + break; \ + node = node->next; \ + } + +/** + * TODO: + * + * macro to flag unimplemented blocks + */ +#define TODO \ + xmlGenericError(xmlGenericErrorContext, \ + "Unimplemented block at %s:%d\n", \ + __FILE__, __LINE__); + +typedef enum { + XML_SCHEMATRON_ASSERT=1, + XML_SCHEMATRON_REPORT=2 +} xmlSchematronTestType; + +/** + * _xmlSchematronTest: + * + * A Schematrons test, either an assert or a report + */ +typedef struct _xmlSchematronTest xmlSchematronTest; +typedef xmlSchematronTest *xmlSchematronTestPtr; +struct _xmlSchematronTest { + xmlSchematronTestPtr next; /* the next test in the list */ + xmlSchematronTestType type; /* the test type */ + xmlNodePtr node; /* the node in the tree */ + xmlChar *test; /* the expression to test */ + xmlXPathCompExprPtr comp; /* the compiled expression */ + xmlChar *report; /* the message to report */ +}; + +/** + * _xmlSchematronRule: + * + * A Schematrons rule + */ +typedef struct _xmlSchematronRule xmlSchematronRule; +typedef xmlSchematronRule *xmlSchematronRulePtr; +struct _xmlSchematronRule { + xmlSchematronRulePtr next; /* the next rule in the list */ + xmlSchematronRulePtr patnext;/* the next rule in the pattern list */ + xmlNodePtr node; /* the node in the tree */ + xmlChar *context; /* the context evaluation rule */ + xmlSchematronTestPtr tests; /* the list of tests */ + xmlPatternPtr pattern; /* the compiled pattern associated */ + xmlChar *report; /* the message to report */ +}; + +/** + * _xmlSchematronPattern: + * + * A Schematrons pattern + */ +typedef struct _xmlSchematronPattern xmlSchematronPattern; +typedef xmlSchematronPattern *xmlSchematronPatternPtr; +struct _xmlSchematronPattern { + xmlSchematronPatternPtr next;/* the next pattern in the list */ + xmlSchematronRulePtr rules; /* the list of rules */ + xmlChar *name; /* the name of the pattern */ +}; + +/** + * _xmlSchematron: + * + * A Schematrons definition + */ +struct _xmlSchematron { + const xmlChar *name; /* schema name */ + int preserve; /* was the document passed by the user */ + xmlDocPtr doc; /* pointer to the parsed document */ + int flags; /* specific to this schematron */ + + void *_private; /* unused by the library */ + xmlDictPtr dict; /* the dictionnary used internally */ + + const xmlChar *title; /* the title if any */ + + int nbNs; /* the number of namespaces */ + + int nbPattern; /* the number of patterns */ + xmlSchematronPatternPtr patterns;/* the patterns found */ + xmlSchematronRulePtr rules; /* the rules gathered */ + int nbNamespaces; /* number of namespaces in the array */ + int maxNamespaces; /* size of the array */ + const xmlChar **namespaces; /* the array of namespaces */ +}; + +/** + * xmlSchematronValidCtxt: + * + * A Schematrons validation context + */ +struct _xmlSchematronValidCtxt { + int type; + int flags; /* an or of xmlSchematronValidOptions */ + + xmlDictPtr dict; + int nberrors; + int err; + + xmlSchematronPtr schema; + xmlXPathContextPtr xctxt; + + FILE *outputFile; /* if using XML_SCHEMATRON_OUT_FILE */ + xmlBufferPtr outputBuffer; /* if using XML_SCHEMATRON_OUT_BUFFER */ + xmlOutputWriteCallback iowrite; /* if using XML_SCHEMATRON_OUT_IO */ + xmlOutputCloseCallback ioclose; + void *ioctx; +}; + +struct _xmlSchematronParserCtxt { + int type; + const xmlChar *URL; + xmlDocPtr doc; + int preserve; /* Whether the doc should be freed */ + const char *buffer; + int size; + + xmlDictPtr dict; /* dictionnary for interned string names */ + + int nberrors; + int err; + xmlXPathContextPtr xctxt; /* the XPath context used for compilation */ + xmlSchematronPtr schema; + + int nbNamespaces; /* number of namespaces in the array */ + int maxNamespaces; /* size of the array */ + const xmlChar **namespaces; /* the array of namespaces */ + + int nbIncludes; /* number of includes in the array */ + int maxIncludes; /* size of the array */ + xmlNodePtr *includes; /* the array of includes */ + + /* error rreporting data */ + void *userData; /* user specific data block */ + xmlSchematronValidityErrorFunc error;/* the callback in case of errors */ + xmlSchematronValidityWarningFunc warning;/* callback in case of warning */ + xmlStructuredErrorFunc serror; /* the structured function */ + +}; + +#define XML_STRON_CTXT_PARSER 1 +#define XML_STRON_CTXT_VALIDATOR 2 + +/************************************************************************ + * * + * Error reporting * + * * + ************************************************************************/ + +/** + * xmlSchematronPErrMemory: + * @node: a context node + * @extra: extra informations + * + * Handle an out of memory condition + */ +static void +xmlSchematronPErrMemory(xmlSchematronParserCtxtPtr ctxt, + const char *extra, xmlNodePtr node) +{ + if (ctxt != NULL) + ctxt->nberrors++; + __xmlSimpleError(XML_FROM_SCHEMASP, XML_ERR_NO_MEMORY, node, NULL, + extra); +} + +/** + * xmlSchematronPErr: + * @ctxt: the parsing context + * @node: the context node + * @error: the error code + * @msg: the error message + * @str1: extra data + * @str2: extra data + * + * Handle a parser error + */ +static void +xmlSchematronPErr(xmlSchematronParserCtxtPtr ctxt, xmlNodePtr node, int error, + const char *msg, const xmlChar * str1, const xmlChar * str2) +{ + xmlGenericErrorFunc channel = NULL; + xmlStructuredErrorFunc schannel = NULL; + void *data = NULL; + + if (ctxt != NULL) { + ctxt->nberrors++; + channel = ctxt->error; + data = ctxt->userData; + schannel = ctxt->serror; + } + __xmlRaiseError(schannel, channel, data, ctxt, node, XML_FROM_SCHEMASP, + error, XML_ERR_ERROR, NULL, 0, + (const char *) str1, (const char *) str2, NULL, 0, 0, + msg, str1, str2); +} + +/** + * xmlSchematronVTypeErrMemory: + * @node: a context node + * @extra: extra informations + * + * Handle an out of memory condition + */ +static void +xmlSchematronVErrMemory(xmlSchematronValidCtxtPtr ctxt, + const char *extra, xmlNodePtr node) +{ + if (ctxt != NULL) { + ctxt->nberrors++; + ctxt->err = XML_SCHEMAV_INTERNAL; + } + __xmlSimpleError(XML_FROM_SCHEMASV, XML_ERR_NO_MEMORY, node, NULL, + extra); +} + +/************************************************************************ + * * + * Parsing and compilation of the Schematrontrons * + * * + ************************************************************************/ + +/** + * xmlSchematronAddTest: + * @ctxt: the schema parsing context + * @type: the type of test + * @rule: the parent rule + * @node: the node hosting the test + * @test: the associated test + * @report: the associated report string + * + * Add a test to a schematron + * + * Returns the new pointer or NULL in case of error + */ +static xmlSchematronTestPtr +xmlSchematronAddTest(xmlSchematronParserCtxtPtr ctxt, + xmlSchematronTestType type, + xmlSchematronRulePtr rule, + xmlNodePtr node, xmlChar *test, xmlChar *report) +{ + xmlSchematronTestPtr ret; + xmlXPathCompExprPtr comp; + + if ((ctxt == NULL) || (rule == NULL) || (node == NULL) || + (test == NULL)) + return(NULL); + + /* + * try first to compile the test expression + */ + comp = xmlXPathCtxtCompile(ctxt->xctxt, test); + if (comp == NULL) { + xmlSchematronPErr(ctxt, node, + XML_SCHEMAP_NOROOT, + "Failed to compile test expression %s", + test, NULL); + return(NULL); + } + + ret = (xmlSchematronTestPtr) xmlMalloc(sizeof(xmlSchematronTest)); + if (ret == NULL) { + xmlSchematronPErrMemory(ctxt, "allocating schema test", node); + return (NULL); + } + memset(ret, 0, sizeof(xmlSchematronTest)); + ret->type = type; + ret->node = node; + ret->test = test; + ret->comp = comp; + ret->report = report; + ret->next = NULL; + if (rule->tests == NULL) { + rule->tests = ret; + } else { + xmlSchematronTestPtr prev = rule->tests; + + while (prev->next != NULL) + prev = prev->next; + prev->next = ret; + } + return (ret); +} + +/** + * xmlSchematronFreeTests: + * @tests: a list of tests + * + * Free a list of tests. + */ +static void +xmlSchematronFreeTests(xmlSchematronTestPtr tests) { + xmlSchematronTestPtr next; + + while (tests != NULL) { + next = tests->next; + if (tests->test != NULL) + xmlFree(tests->test); + if (tests->comp != NULL) + xmlXPathFreeCompExpr(tests->comp); + if (tests->report != NULL) + xmlFree(tests->report); + xmlFree(tests); + tests = next; + } +} + +/** + * xmlSchematronAddRule: + * @ctxt: the schema parsing context + * @schema: a schema structure + * @node: the node hosting the rule + * @context: the associated context string + * @report: the associated report string + * + * Add a rule to a schematron + * + * Returns the new pointer or NULL in case of error + */ +static xmlSchematronRulePtr +xmlSchematronAddRule(xmlSchematronParserCtxtPtr ctxt, xmlSchematronPtr schema, + xmlSchematronPatternPtr pat, xmlNodePtr node, + xmlChar *context, xmlChar *report) +{ + xmlSchematronRulePtr ret; + xmlPatternPtr pattern; + + if ((ctxt == NULL) || (schema == NULL) || (node == NULL) || + (context == NULL)) + return(NULL); + + /* + * Try first to compile the pattern + */ + pattern = xmlPatterncompile(context, ctxt->dict, XML_PATTERN_XPATH, + ctxt->namespaces); + if (pattern == NULL) { + xmlSchematronPErr(ctxt, node, + XML_SCHEMAP_NOROOT, + "Failed to compile context expression %s", + context, NULL); + } + + ret = (xmlSchematronRulePtr) xmlMalloc(sizeof(xmlSchematronRule)); + if (ret == NULL) { + xmlSchematronPErrMemory(ctxt, "allocating schema rule", node); + return (NULL); + } + memset(ret, 0, sizeof(xmlSchematronRule)); + ret->node = node; + ret->context = context; + ret->pattern = pattern; + ret->report = report; + ret->next = NULL; + if (schema->rules == NULL) { + schema->rules = ret; + } else { + xmlSchematronRulePtr prev = schema->rules; + + while (prev->next != NULL) + prev = prev->next; + prev->next = ret; + } + ret->patnext = NULL; + if (pat->rules == NULL) { + pat->rules = ret; + } else { + xmlSchematronRulePtr prev = pat->rules; + + while (prev->patnext != NULL) + prev = prev->patnext; + prev->patnext = ret; + } + return (ret); +} + +/** + * xmlSchematronFreeRules: + * @rules: a list of rules + * + * Free a list of rules. + */ +static void +xmlSchematronFreeRules(xmlSchematronRulePtr rules) { + xmlSchematronRulePtr next; + + while (rules != NULL) { + next = rules->next; + if (rules->tests) + xmlSchematronFreeTests(rules->tests); + if (rules->context != NULL) + xmlFree(rules->context); + if (rules->pattern) + xmlFreePattern(rules->pattern); + if (rules->report != NULL) + xmlFree(rules->report); + xmlFree(rules); + rules = next; + } +} + +/** + * xmlSchematronAddPattern: + * @ctxt: the schema parsing context + * @schema: a schema structure + * @node: the node hosting the pattern + * @id: the id or name of the pattern + * + * Add a pattern to a schematron + * + * Returns the new pointer or NULL in case of error + */ +static xmlSchematronPatternPtr +xmlSchematronAddPattern(xmlSchematronParserCtxtPtr ctxt, + xmlSchematronPtr schema, xmlNodePtr node, xmlChar *name) +{ + xmlSchematronPatternPtr ret; + + if ((ctxt == NULL) || (schema == NULL) || (node == NULL) || (name == NULL)) + return(NULL); + + ret = (xmlSchematronPatternPtr) xmlMalloc(sizeof(xmlSchematronPattern)); + if (ret == NULL) { + xmlSchematronPErrMemory(ctxt, "allocating schema pattern", node); + return (NULL); + } + memset(ret, 0, sizeof(xmlSchematronPattern)); + ret->name = name; + ret->next = NULL; + if (schema->patterns == NULL) { + schema->patterns = ret; + } else { + xmlSchematronPatternPtr prev = schema->patterns; + + while (prev->next != NULL) + prev = prev->next; + prev->next = ret; + } + return (ret); +} + +/** + * xmlSchematronFreePatterns: + * @patterns: a list of patterns + * + * Free a list of patterns. + */ +static void +xmlSchematronFreePatterns(xmlSchematronPatternPtr patterns) { + xmlSchematronPatternPtr next; + + while (patterns != NULL) { + next = patterns->next; + if (patterns->name != NULL) + xmlFree(patterns->name); + xmlFree(patterns); + patterns = next; + } +} + +/** + * xmlSchematronNewSchematron: + * @ctxt: a schema validation context + * + * Allocate a new Schematron structure. + * + * Returns the newly allocated structure or NULL in case or error + */ +static xmlSchematronPtr +xmlSchematronNewSchematron(xmlSchematronParserCtxtPtr ctxt) +{ + xmlSchematronPtr ret; + + ret = (xmlSchematronPtr) xmlMalloc(sizeof(xmlSchematron)); + if (ret == NULL) { + xmlSchematronPErrMemory(ctxt, "allocating schema", NULL); + return (NULL); + } + memset(ret, 0, sizeof(xmlSchematron)); + ret->dict = ctxt->dict; + xmlDictReference(ret->dict); + + return (ret); +} + +/** + * xmlSchematronFree: + * @schema: a schema structure + * + * Deallocate a Schematron structure. + */ +void +xmlSchematronFree(xmlSchematronPtr schema) +{ + if (schema == NULL) + return; + + if ((schema->doc != NULL) && (!(schema->preserve))) + xmlFreeDoc(schema->doc); + + if (schema->namespaces != NULL) + xmlFree(schema->namespaces); + + xmlSchematronFreeRules(schema->rules); + xmlSchematronFreePatterns(schema->patterns); + xmlDictFree(schema->dict); + xmlFree(schema); +} + +/** + * xmlSchematronNewParserCtxt: + * @URL: the location of the schema + * + * Create an XML Schematrons parse context for that file/resource expected + * to contain an XML Schematrons file. + * + * Returns the parser context or NULL in case of error + */ +xmlSchematronParserCtxtPtr +xmlSchematronNewParserCtxt(const char *URL) +{ + xmlSchematronParserCtxtPtr ret; + + if (URL == NULL) + return (NULL); + + ret = + (xmlSchematronParserCtxtPtr) + xmlMalloc(sizeof(xmlSchematronParserCtxt)); + if (ret == NULL) { + xmlSchematronPErrMemory(NULL, "allocating schema parser context", + NULL); + return (NULL); + } + memset(ret, 0, sizeof(xmlSchematronParserCtxt)); + ret->type = XML_STRON_CTXT_PARSER; + ret->dict = xmlDictCreate(); + ret->URL = xmlDictLookup(ret->dict, (const xmlChar *) URL, -1); + ret->includes = NULL; + ret->xctxt = xmlXPathNewContext(NULL); + if (ret->xctxt == NULL) { + xmlSchematronPErrMemory(NULL, "allocating schema parser XPath context", + NULL); + xmlSchematronFreeParserCtxt(ret); + return (NULL); + } + ret->xctxt->flags = XML_XPATH_CHECKNS; + return (ret); +} + +/** + * xmlSchematronNewMemParserCtxt: + * @buffer: a pointer to a char array containing the schemas + * @size: the size of the array + * + * Create an XML Schematrons parse context for that memory buffer expected + * to contain an XML Schematrons file. + * + * Returns the parser context or NULL in case of error + */ +xmlSchematronParserCtxtPtr +xmlSchematronNewMemParserCtxt(const char *buffer, int size) +{ + xmlSchematronParserCtxtPtr ret; + + if ((buffer == NULL) || (size <= 0)) + return (NULL); + + ret = + (xmlSchematronParserCtxtPtr) + xmlMalloc(sizeof(xmlSchematronParserCtxt)); + if (ret == NULL) { + xmlSchematronPErrMemory(NULL, "allocating schema parser context", + NULL); + return (NULL); + } + memset(ret, 0, sizeof(xmlSchematronParserCtxt)); + ret->buffer = buffer; + ret->size = size; + ret->dict = xmlDictCreate(); + ret->xctxt = xmlXPathNewContext(NULL); + if (ret->xctxt == NULL) { + xmlSchematronPErrMemory(NULL, "allocating schema parser XPath context", + NULL); + xmlSchematronFreeParserCtxt(ret); + return (NULL); + } + return (ret); +} + +/** + * xmlSchematronNewDocParserCtxt: + * @doc: a preparsed document tree + * + * Create an XML Schematrons parse context for that document. + * NB. The document may be modified during the parsing process. + * + * Returns the parser context or NULL in case of error + */ +xmlSchematronParserCtxtPtr +xmlSchematronNewDocParserCtxt(xmlDocPtr doc) +{ + xmlSchematronParserCtxtPtr ret; + + if (doc == NULL) + return (NULL); + + ret = + (xmlSchematronParserCtxtPtr) + xmlMalloc(sizeof(xmlSchematronParserCtxt)); + if (ret == NULL) { + xmlSchematronPErrMemory(NULL, "allocating schema parser context", + NULL); + return (NULL); + } + memset(ret, 0, sizeof(xmlSchematronParserCtxt)); + ret->doc = doc; + ret->dict = xmlDictCreate(); + /* The application has responsibility for the document */ + ret->preserve = 1; + ret->xctxt = xmlXPathNewContext(doc); + if (ret->xctxt == NULL) { + xmlSchematronPErrMemory(NULL, "allocating schema parser XPath context", + NULL); + xmlSchematronFreeParserCtxt(ret); + return (NULL); + } + + return (ret); +} + +/** + * xmlSchematronFreeParserCtxt: + * @ctxt: the schema parser context + * + * Free the resources associated to the schema parser context + */ +void +xmlSchematronFreeParserCtxt(xmlSchematronParserCtxtPtr ctxt) +{ + if (ctxt == NULL) + return; + if (ctxt->doc != NULL && !ctxt->preserve) + xmlFreeDoc(ctxt->doc); + if (ctxt->xctxt != NULL) { + xmlXPathFreeContext(ctxt->xctxt); + } + if (ctxt->namespaces != NULL) + xmlFree(ctxt->namespaces); + xmlDictFree(ctxt->dict); + xmlFree(ctxt); +} + +/** + * xmlSchematronPushInclude: + * @ctxt: the schema parser context + * @doc: the included document + * @cur: the current include node + * + * Add an included document + */ +static void +xmlSchematronPushInclude(xmlSchematronParserCtxtPtr ctxt, + xmlDocPtr doc, xmlNodePtr cur) +{ + if (ctxt->includes == NULL) { + ctxt->maxIncludes = 10; + ctxt->includes = (xmlNodePtr *) + xmlMalloc(ctxt->maxIncludes * 2 * sizeof(xmlNodePtr)); + if (ctxt->includes == NULL) { + xmlSchematronPErrMemory(NULL, "allocating parser includes", + NULL); + return; + } + ctxt->nbIncludes = 0; + } else if (ctxt->nbIncludes + 2 >= ctxt->maxIncludes) { + xmlNodePtr *tmp; + + tmp = (xmlNodePtr *) + xmlRealloc(ctxt->includes, ctxt->maxIncludes * 4 * + sizeof(xmlNodePtr)); + if (tmp == NULL) { + xmlSchematronPErrMemory(NULL, "allocating parser includes", + NULL); + return; + } + ctxt->includes = tmp; + ctxt->maxIncludes *= 2; + } + ctxt->includes[2 * ctxt->nbIncludes] = cur; + ctxt->includes[2 * ctxt->nbIncludes + 1] = (xmlNodePtr) doc; + ctxt->nbIncludes++; +} + +/** + * xmlSchematronPopInclude: + * @ctxt: the schema parser context + * + * Pop an include level. The included document is being freed + * + * Returns the node immediately following the include or NULL if the + * include list was empty. + */ +static xmlNodePtr +xmlSchematronPopInclude(xmlSchematronParserCtxtPtr ctxt) +{ + xmlDocPtr doc; + xmlNodePtr ret; + + if (ctxt->nbIncludes <= 0) + return(NULL); + ctxt->nbIncludes--; + doc = (xmlDocPtr) ctxt->includes[2 * ctxt->nbIncludes + 1]; + ret = ctxt->includes[2 * ctxt->nbIncludes]; + xmlFreeDoc(doc); + if (ret != NULL) + ret = ret->next; + if (ret == NULL) + return(xmlSchematronPopInclude(ctxt)); + return(ret); +} + +/** + * xmlSchematronAddNamespace: + * @ctxt: the schema parser context + * @prefix: the namespace prefix + * @ns: the namespace name + * + * Add a namespace definition in the context + */ +static void +xmlSchematronAddNamespace(xmlSchematronParserCtxtPtr ctxt, + const xmlChar *prefix, const xmlChar *ns) +{ + if (ctxt->namespaces == NULL) { + ctxt->maxNamespaces = 10; + ctxt->namespaces = (const xmlChar **) + xmlMalloc(ctxt->maxNamespaces * 2 * sizeof(const xmlChar *)); + if (ctxt->namespaces == NULL) { + xmlSchematronPErrMemory(NULL, "allocating parser namespaces", + NULL); + return; + } + ctxt->nbNamespaces = 0; + } else if (ctxt->nbNamespaces + 2 >= ctxt->maxNamespaces) { + const xmlChar **tmp; + + tmp = (const xmlChar **) + xmlRealloc(ctxt->namespaces, ctxt->maxNamespaces * 4 * + sizeof(const xmlChar *)); + if (tmp == NULL) { + xmlSchematronPErrMemory(NULL, "allocating parser namespaces", + NULL); + return; + } + ctxt->namespaces = tmp; + ctxt->maxNamespaces *= 2; + } + ctxt->namespaces[2 * ctxt->nbNamespaces] = + xmlDictLookup(ctxt->dict, ns, -1); + ctxt->namespaces[2 * ctxt->nbNamespaces + 1] = + xmlDictLookup(ctxt->dict, prefix, -1); + ctxt->nbNamespaces++; + ctxt->namespaces[2 * ctxt->nbNamespaces] = NULL; + ctxt->namespaces[2 * ctxt->nbNamespaces + 1] = NULL; + +} + +/** + * xmlSchematronParseRule: + * @ctxt: a schema validation context + * @rule: the rule node + * + * parse a rule element + */ +static void +xmlSchematronParseRule(xmlSchematronParserCtxtPtr ctxt, + xmlSchematronPatternPtr pattern, + xmlNodePtr rule) +{ + xmlNodePtr cur; + int nbChecks = 0; + xmlChar *test; + xmlChar *context; + xmlChar *report; + xmlSchematronRulePtr ruleptr; + xmlSchematronTestPtr testptr; + + if ((ctxt == NULL) || (rule == NULL)) return; + + context = xmlGetNoNsProp(rule, BAD_CAST "context"); + if (context == NULL) { + xmlSchematronPErr(ctxt, rule, + XML_SCHEMAP_NOROOT, + "rule has no context attribute", + NULL, NULL); + return; + } else if (context[0] == 0) { + xmlSchematronPErr(ctxt, rule, + XML_SCHEMAP_NOROOT, + "rule has an empty context attribute", + NULL, NULL); + xmlFree(context); + return; + } else { + ruleptr = xmlSchematronAddRule(ctxt, ctxt->schema, pattern, + rule, context, NULL); + if (ruleptr == NULL) { + xmlFree(context); + return; + } + } + + cur = rule->children; + NEXT_SCHEMATRON(cur); + while (cur != NULL) { + if (IS_SCHEMATRON(cur, "assert")) { + nbChecks++; + test = xmlGetNoNsProp(cur, BAD_CAST "test"); + if (test == NULL) { + xmlSchematronPErr(ctxt, cur, + XML_SCHEMAP_NOROOT, + "assert has no test attribute", + NULL, NULL); + } else if (test[0] == 0) { + xmlSchematronPErr(ctxt, cur, + XML_SCHEMAP_NOROOT, + "assert has an empty test attribute", + NULL, NULL); + xmlFree(test); + } else { + /* TODO will need dynamic processing instead */ + report = xmlNodeGetContent(cur); + + testptr = xmlSchematronAddTest(ctxt, XML_SCHEMATRON_ASSERT, + ruleptr, cur, test, report); + if (testptr == NULL) + xmlFree(test); + } + } else if (IS_SCHEMATRON(cur, "report")) { + nbChecks++; + test = xmlGetNoNsProp(cur, BAD_CAST "test"); + if (test == NULL) { + xmlSchematronPErr(ctxt, cur, + XML_SCHEMAP_NOROOT, + "assert has no test attribute", + NULL, NULL); + } else if (test[0] == 0) { + xmlSchematronPErr(ctxt, cur, + XML_SCHEMAP_NOROOT, + "assert has an empty test attribute", + NULL, NULL); + xmlFree(test); + } else { + /* TODO will need dynamic processing instead */ + report = xmlNodeGetContent(cur); + + testptr = xmlSchematronAddTest(ctxt, XML_SCHEMATRON_REPORT, + ruleptr, cur, test, report); + if (testptr == NULL) + xmlFree(test); + } + } else { + xmlSchematronPErr(ctxt, cur, + XML_SCHEMAP_NOROOT, + "Expecting an assert or a report element instead of %s", + cur->name, NULL); + } + cur = cur->next; + NEXT_SCHEMATRON(cur); + } + if (nbChecks == 0) { + xmlSchematronPErr(ctxt, rule, + XML_SCHEMAP_NOROOT, + "rule has no assert nor report element", NULL, NULL); + } +} + +/** + * xmlSchematronParsePattern: + * @ctxt: a schema validation context + * @pat: the pattern node + * + * parse a pattern element + */ +static void +xmlSchematronParsePattern(xmlSchematronParserCtxtPtr ctxt, xmlNodePtr pat) +{ + xmlNodePtr cur; + xmlSchematronPatternPtr pattern; + int nbRules = 0; + xmlChar *id; + + if ((ctxt == NULL) || (pat == NULL)) return; + + id = xmlGetNoNsProp(pat, BAD_CAST "id"); + if (id == NULL) { + id = xmlGetNoNsProp(pat, BAD_CAST "name"); + } + pattern = xmlSchematronAddPattern(ctxt, ctxt->schema, pat, id); + if (pattern == NULL) { + if (id != NULL) + xmlFree(id); + return; + } + cur = pat->children; + NEXT_SCHEMATRON(cur); + while (cur != NULL) { + if (IS_SCHEMATRON(cur, "rule")) { + xmlSchematronParseRule(ctxt, pattern, cur); + nbRules++; + } else { + xmlSchematronPErr(ctxt, cur, + XML_SCHEMAP_NOROOT, + "Expecting a rule element instead of %s", cur->name, NULL); + } + cur = cur->next; + NEXT_SCHEMATRON(cur); + } + if (nbRules == 0) { + xmlSchematronPErr(ctxt, pat, + XML_SCHEMAP_NOROOT, + "Pattern has no rule element", NULL, NULL); + } +} + +/** + * xmlSchematronLoadInclude: + * @ctxt: a schema validation context + * @cur: the include element + * + * Load the include document, Push the current pointer + * + * Returns the updated node pointer + */ +static xmlNodePtr +xmlSchematronLoadInclude(xmlSchematronParserCtxtPtr ctxt, xmlNodePtr cur) +{ + xmlNodePtr ret = NULL; + xmlDocPtr doc = NULL; + xmlChar *href = NULL; + xmlChar *base = NULL; + xmlChar *URI = NULL; + + if ((ctxt == NULL) || (cur == NULL)) + return(NULL); + + href = xmlGetNoNsProp(cur, BAD_CAST "href"); + if (href == NULL) { + xmlSchematronPErr(ctxt, cur, + XML_SCHEMAP_NOROOT, + "Include has no href attribute", NULL, NULL); + return(cur->next); + } + + /* do the URI base composition, load and find the root */ + base = xmlNodeGetBase(cur->doc, cur); + URI = xmlBuildURI(href, base); + doc = xmlReadFile((const char *) URI, NULL, SCHEMATRON_PARSE_OPTIONS); + if (doc == NULL) { + xmlSchematronPErr(ctxt, cur, + XML_SCHEMAP_FAILED_LOAD, + "could not load include '%s'.\n", + URI, NULL); + goto done; + } + ret = xmlDocGetRootElement(doc); + if (ret == NULL) { + xmlSchematronPErr(ctxt, cur, + XML_SCHEMAP_FAILED_LOAD, + "could not find root from include '%s'.\n", + URI, NULL); + goto done; + } + + /* Success, push the include for rollback on exit */ + xmlSchematronPushInclude(ctxt, doc, cur); + +done: + if (ret == NULL) { + if (doc != NULL) + xmlFreeDoc(doc); + } + if (href == NULL) + xmlFree(href); + if (base == NULL) + xmlFree(base); + if (URI == NULL) + xmlFree(URI); + return(ret); +} + +/** + * xmlSchematronParse: + * @ctxt: a schema validation context + * + * parse a schema definition resource and build an internal + * XML Shema struture which can be used to validate instances. + * + * Returns the internal XML Schematron structure built from the resource or + * NULL in case of error + */ +xmlSchematronPtr +xmlSchematronParse(xmlSchematronParserCtxtPtr ctxt) +{ + xmlSchematronPtr ret = NULL; + xmlDocPtr doc; + xmlNodePtr root, cur; + int preserve = 0; + + if (ctxt == NULL) + return (NULL); + + ctxt->nberrors = 0; + + /* + * First step is to parse the input document into an DOM/Infoset + */ + if (ctxt->URL != NULL) { + doc = xmlReadFile((const char *) ctxt->URL, NULL, + SCHEMATRON_PARSE_OPTIONS); + if (doc == NULL) { + xmlSchematronPErr(ctxt, NULL, + XML_SCHEMAP_FAILED_LOAD, + "xmlSchematronParse: could not load '%s'.\n", + ctxt->URL, NULL); + return (NULL); + } + ctxt->preserve = 0; + } else if (ctxt->buffer != NULL) { + doc = xmlReadMemory(ctxt->buffer, ctxt->size, NULL, NULL, + SCHEMATRON_PARSE_OPTIONS); + if (doc == NULL) { + xmlSchematronPErr(ctxt, NULL, + XML_SCHEMAP_FAILED_PARSE, + "xmlSchematronParse: could not parse.\n", + NULL, NULL); + return (NULL); + } + doc->URL = xmlStrdup(BAD_CAST "in_memory_buffer"); + ctxt->URL = xmlDictLookup(ctxt->dict, BAD_CAST "in_memory_buffer", -1); + ctxt->preserve = 0; + } else if (ctxt->doc != NULL) { + doc = ctxt->doc; + preserve = 1; + ctxt->preserve = 1; + } else { + xmlSchematronPErr(ctxt, NULL, + XML_SCHEMAP_NOTHING_TO_PARSE, + "xmlSchematronParse: could not parse.\n", + NULL, NULL); + return (NULL); + } + + /* + * Then extract the root and Schematron parse it + */ + root = xmlDocGetRootElement(doc); + if (root == NULL) { + xmlSchematronPErr(ctxt, (xmlNodePtr) doc, + XML_SCHEMAP_NOROOT, + "The schema has no document element.\n", NULL, NULL); + if (!preserve) { + xmlFreeDoc(doc); + } + return (NULL); + } + + if (!IS_SCHEMATRON(root, "schema")) { + xmlSchematronPErr(ctxt, root, + XML_SCHEMAP_NOROOT, + "The XML document '%s' is not a XML schematron document", + ctxt->URL, NULL); + goto exit; + } + ret = xmlSchematronNewSchematron(ctxt); + if (ret == NULL) + goto exit; + ctxt->schema = ret; + + /* + * scan the schema elements + */ + cur = root->children; + NEXT_SCHEMATRON(cur); + if (IS_SCHEMATRON(cur, "title")) { + xmlChar *title = xmlNodeGetContent(cur); + if (title != NULL) { + ret->title = xmlDictLookup(ret->dict, title, -1); + xmlFree(title); + } + cur = cur->next; + NEXT_SCHEMATRON(cur); + } + while (IS_SCHEMATRON(cur, "ns")) { + xmlChar *prefix = xmlGetNoNsProp(cur, BAD_CAST "prefix"); + xmlChar *uri = xmlGetNoNsProp(cur, BAD_CAST "uri"); + if ((uri == NULL) || (uri[0] == 0)) { + xmlSchematronPErr(ctxt, cur, + XML_SCHEMAP_NOROOT, + "ns element has no uri", NULL, NULL); + } + if ((prefix == NULL) || (prefix[0] == 0)) { + xmlSchematronPErr(ctxt, cur, + XML_SCHEMAP_NOROOT, + "ns element has no prefix", NULL, NULL); + } + if ((prefix) && (uri)) { + xmlXPathRegisterNs(ctxt->xctxt, prefix, uri); + xmlSchematronAddNamespace(ctxt, prefix, uri); + ret->nbNs++; + } + if (uri) + xmlFree(uri); + if (prefix) + xmlFree(prefix); + cur = cur->next; + NEXT_SCHEMATRON(cur); + } + while (cur != NULL) { + if (IS_SCHEMATRON(cur, "pattern")) { + xmlSchematronParsePattern(ctxt, cur); + ret->nbPattern++; + } else { + xmlSchematronPErr(ctxt, cur, + XML_SCHEMAP_NOROOT, + "Expecting a pattern element instead of %s", cur->name, NULL); + } + cur = cur->next; + NEXT_SCHEMATRON(cur); + } + if (ret->nbPattern == 0) { + xmlSchematronPErr(ctxt, root, + XML_SCHEMAP_NOROOT, + "The schematron document '%s' has no pattern", + ctxt->URL, NULL); + goto exit; + } + /* the original document must be kept for reporting */ + ret->doc = doc; + preserve = 1; + +exit: + if (!preserve) { + xmlFreeDoc(doc); + } + if (ctxt->nberrors != 0) { + xmlSchematronFree(ret); + ret = NULL; + } else { + ret->namespaces = ctxt->namespaces; + ret->nbNamespaces = ctxt->nbNamespaces; + ctxt->namespaces = NULL; + } + return (ret); +} + +/************************************************************************ + * * + * Schematrontron Reports handler * + * * + ************************************************************************/ + +static xmlNodePtr +xmlSchematronGetNode(xmlSchematronValidCtxtPtr ctxt, + xmlNodePtr cur, const xmlChar *xpath) { + xmlNodePtr node = NULL; + xmlXPathObjectPtr ret; + + if ((ctxt == NULL) || (cur == NULL) || (xpath == NULL)) + return(NULL); + + ctxt->xctxt->doc = cur->doc; + ctxt->xctxt->node = cur; + ret = xmlXPathEval(xpath, ctxt->xctxt); + if (ret == NULL) + return(NULL); + + if ((ret->type == XPATH_NODESET) && + (ret->nodesetval != NULL) && (ret->nodesetval->nodeNr > 0)) + node = ret->nodesetval->nodeTab[0]; + + xmlXPathFreeObject(ret); + return(node); +} + +/** + * xmlSchematronReportOutput: + * @ctxt: the validation context + * @cur: the current node tested + * @msg: the message output + * + * Output part of the report to whatever channel the user selected + */ +static void +xmlSchematronReportOutput(xmlSchematronValidCtxtPtr ctxt ATTRIBUTE_UNUSED, + xmlNodePtr cur ATTRIBUTE_UNUSED, + const char *msg) { + /* TODO */ + fprintf(stderr, "%s", msg); +} + +/** + * xmlSchematronFormatReport: + * @ctxt: the validation context + * @test: the test node + * @cur: the current node tested + * + * Build the string being reported to the user. + * + * Returns a report string or NULL in case of error. The string needs + * to be deallocated by teh caller + */ +static xmlChar * +xmlSchematronFormatReport(xmlSchematronValidCtxtPtr ctxt, + xmlNodePtr test, xmlNodePtr cur) { + xmlChar *ret = NULL; + xmlNodePtr child, node; + + if ((test == NULL) || (cur == NULL)) + return(ret); + + child = test->children; + while (child != NULL) { + if ((child->type == XML_TEXT_NODE) || + (child->type == XML_CDATA_SECTION_NODE)) + ret = xmlStrcat(ret, child->content); + else if (IS_SCHEMATRON(child, "name")) { + xmlChar *path; + + path = xmlGetNoNsProp(child, BAD_CAST "path"); + + node = cur; + if (path != NULL) { + node = xmlSchematronGetNode(ctxt, cur, path); + if (node == NULL) + node = cur; + xmlFree(path); + } + + if ((node->ns == NULL) || (node->ns->prefix == NULL)) + ret = xmlStrcat(ret, node->name); + else { + ret = xmlStrcat(ret, node->ns->prefix); + ret = xmlStrcat(ret, BAD_CAST ":"); + ret = xmlStrcat(ret, node->name); + } + } else { + child = child->next; + continue; + } + + /* + * remove superfluous \n + */ + if (ret != NULL) { + int len = xmlStrlen(ret); + xmlChar c; + + if (len > 0) { + c = ret[len - 1]; + if ((c == ' ') || (c == '\n') || (c == '\r') || (c == '\t')) { + while ((c == ' ') || (c == '\n') || + (c == '\r') || (c == '\t')) { + len--; + if (len == 0) + break; + c = ret[len - 1]; + } + ret[len] = ' '; + ret[len + 1] = 0; + } + } + } + + child = child->next; + } + return(ret); +} + +/** + * xmlSchematronReportSuccess: + * @ctxt: the validation context + * @test: the compiled test + * @cur: the current node tested + * @success: boolean value for the result + * + * called from the validation engine when an assert or report test have + * been done. + */ +static void +xmlSchematronReportSuccess(xmlSchematronValidCtxtPtr ctxt, + xmlSchematronTestPtr test, xmlNodePtr cur, int success) { + if ((ctxt == NULL) || (cur == NULL) || (test == NULL)) + return; + /* if quiet and not SVRL report only failures */ + if ((ctxt->flags & XML_SCHEMATRON_OUT_QUIET) && + ((ctxt->flags & XML_SCHEMATRON_OUT_XML) == 0) && + (test->type == XML_SCHEMATRON_REPORT)) + return; + if (ctxt->flags & XML_SCHEMATRON_OUT_XML) { + TODO + } else { + xmlChar *path; + char msg[1000]; + long line; + const xmlChar *report = NULL; + + if (((test->type == XML_SCHEMATRON_REPORT) & (!success)) || + ((test->type == XML_SCHEMATRON_ASSERT) & (success))) + return; + line = xmlGetLineNo(cur); + path = xmlGetNodePath(cur); + if (path == NULL) + path = (xmlChar *) cur->name; +#if 0 + if ((test->report != NULL) && (test->report[0] != 0)) + report = test->report; +#endif + if (test->node != NULL) + report = xmlSchematronFormatReport(ctxt, test->node, cur); + if (report == NULL) { + if (test->type == XML_SCHEMATRON_ASSERT) { + snprintf(msg, 999, "%s line %ld: node failed assert\n", + (const char *) path, line); + } else { + snprintf(msg, 999, "%s line %ld: node failed report\n", + (const char *) path, line); + } + } else { + snprintf(msg, 999, "%s line %ld: %s\n", (const char *) path, + line, (const char *) report); + xmlFree((char *) report); + } + xmlSchematronReportOutput(ctxt, cur, &msg[0]); + if ((path != NULL) && (path != (xmlChar *) cur->name)) + xmlFree(path); + } +} + +/** + * xmlSchematronReportPattern: + * @ctxt: the validation context + * @pattern: the current pattern + * + * called from the validation engine when starting to check a pattern + */ +static void +xmlSchematronReportPattern(xmlSchematronValidCtxtPtr ctxt, + xmlSchematronPatternPtr pattern) { + if ((ctxt == NULL) || (pattern == NULL)) + return; + if (ctxt->flags & XML_SCHEMATRON_OUT_QUIET) + return; + if (ctxt->flags & XML_SCHEMATRON_OUT_XML) { + TODO + } else { + char msg[1000]; + + if (pattern->name == NULL) + return; + snprintf(msg, 999, "Pattern: %s\n", (const char *) pattern->name); + xmlSchematronReportOutput(ctxt, NULL, &msg[0]); + } +} + + +/************************************************************************ + * * + * Validation against a Schematrontron * + * * + ************************************************************************/ + +/** + * xmlSchematronNewValidCtxt: + * @schema: a precompiled XML Schematrons + * @options: a set of xmlSchematronValidOptions + * + * Create an XML Schematrons validation context based on the given schema. + * + * Returns the validation context or NULL in case of error + */ +xmlSchematronValidCtxtPtr +xmlSchematronNewValidCtxt(xmlSchematronPtr schema, int options) +{ + int i; + xmlSchematronValidCtxtPtr ret; + + ret = (xmlSchematronValidCtxtPtr) xmlMalloc(sizeof(xmlSchematronValidCtxt)); + if (ret == NULL) { + xmlSchematronVErrMemory(NULL, "allocating validation context", + NULL); + return (NULL); + } + memset(ret, 0, sizeof(xmlSchematronValidCtxt)); + ret->type = XML_STRON_CTXT_VALIDATOR; + ret->schema = schema; + ret->xctxt = xmlXPathNewContext(NULL); + ret->flags = options; + if (ret->xctxt == NULL) { + xmlSchematronPErrMemory(NULL, "allocating schema parser XPath context", + NULL); + xmlSchematronFreeValidCtxt(ret); + return (NULL); + } + for (i = 0;i < schema->nbNamespaces;i++) { + if ((schema->namespaces[2 * i] == NULL) || + (schema->namespaces[2 * i + 1] == NULL)) + break; + xmlXPathRegisterNs(ret->xctxt, schema->namespaces[2 * i + 1], + schema->namespaces[2 * i]); + } + return (ret); +} + +/** + * xmlSchematronFreeValidCtxt: + * @ctxt: the schema validation context + * + * Free the resources associated to the schema validation context + */ +void +xmlSchematronFreeValidCtxt(xmlSchematronValidCtxtPtr ctxt) +{ + if (ctxt == NULL) + return; + if (ctxt->xctxt != NULL) + xmlXPathFreeContext(ctxt->xctxt); + if (ctxt->dict != NULL) + xmlDictFree(ctxt->dict); + xmlFree(ctxt); +} + +static xmlNodePtr +xmlSchematronNextNode(xmlNodePtr cur) { + if (cur->children != NULL) { + /* + * Do not descend on entities declarations + */ + if (cur->children->type != XML_ENTITY_DECL) { + cur = cur->children; + /* + * Skip DTDs + */ + if (cur->type != XML_DTD_NODE) + return(cur); + } + } + + while (cur->next != NULL) { + cur = cur->next; + if ((cur->type != XML_ENTITY_DECL) && + (cur->type != XML_DTD_NODE)) + return(cur); + } + + do { + cur = cur->parent; + if (cur == NULL) return(NULL); + if (cur->type == XML_DOCUMENT_NODE) return(NULL); + if (cur->next != NULL) { + cur = cur->next; + return(cur); + } + } while (cur != NULL); + return(cur); +} + +/** + * xmlSchematronRunTest: + * @ctxt: the schema validation context + * @test: the current test + * @instance: the document instace tree + * @cur: the current node in the instance + * + * Validate a rule against a tree instance at a given position + * + * Returns 1 in case of success, 0 if error and -1 in case of internal error + */ +static int +xmlSchematronRunTest(xmlSchematronValidCtxtPtr ctxt, + xmlSchematronTestPtr test, xmlDocPtr instance, xmlNodePtr cur) +{ + xmlXPathObjectPtr ret; + int failed; + + failed = 0; + ctxt->xctxt->doc = instance; + ctxt->xctxt->node = cur; + ret = xmlXPathCompiledEval(test->comp, ctxt->xctxt); + if (ret == NULL) { + failed = 1; + } else { + switch (ret->type) { + case XPATH_XSLT_TREE: + case XPATH_NODESET: + if ((ret->nodesetval == NULL) || + (ret->nodesetval->nodeNr == 0)) + failed = 1; + break; + case XPATH_BOOLEAN: + failed = !ret->boolval; + break; + case XPATH_NUMBER: + if ((xmlXPathIsNaN(ret->floatval)) || + (ret->floatval == 0.0)) + failed = 1; + break; + case XPATH_STRING: + if ((ret->stringval == NULL) || + (ret->stringval[0] == 0)) + failed = 1; + break; + case XPATH_UNDEFINED: + case XPATH_POINT: + case XPATH_RANGE: + case XPATH_LOCATIONSET: + case XPATH_USERS: + failed = 1; + break; + } + xmlXPathFreeObject(ret); + } + if ((failed) && (test->type == XML_SCHEMATRON_ASSERT)) + ctxt->nberrors++; + else if ((!failed) && (test->type == XML_SCHEMATRON_REPORT)) + ctxt->nberrors++; + + xmlSchematronReportSuccess(ctxt, test, cur, !failed); + + return(!failed); +} + +/** + * xmlSchematronValidateDoc: + * @ctxt: the schema validation context + * @instance: the document instace tree + * + * Validate a tree instance against the schematron + * + * Returns 0 in case of success, -1 in case of internal error + * and an error count otherwise. + */ +int +xmlSchematronValidateDoc(xmlSchematronValidCtxtPtr ctxt, xmlDocPtr instance) +{ + xmlNodePtr cur, root; + xmlSchematronPatternPtr pattern; + xmlSchematronRulePtr rule; + xmlSchematronTestPtr test; + + if ((ctxt == NULL) || (ctxt->schema == NULL) || + (ctxt->schema->rules == NULL) || (instance == NULL)) + return(-1); + ctxt->nberrors = 0; + root = xmlDocGetRootElement(instance); + if (root == NULL) { + TODO + ctxt->nberrors++; + return(1); + } + if ((ctxt->flags & XML_SCHEMATRON_OUT_QUIET) || + (ctxt->flags == 0)) { + /* + * we are just trying to assert the validity of the document, + * speed primes over the output, run in a single pass + */ + cur = root; + while (cur != NULL) { + rule = ctxt->schema->rules; + while (rule != NULL) { + if (xmlPatternMatch(rule->pattern, cur) == 1) { + test = rule->tests; + while (test != NULL) { + xmlSchematronRunTest(ctxt, test, instance, cur); + test = test->next; + } + } + rule = rule->next; + } + + cur = xmlSchematronNextNode(cur); + } + } else { + /* + * Process all contexts one at a time + */ + pattern = ctxt->schema->patterns; + + while (pattern != NULL) { + xmlSchematronReportPattern(ctxt, pattern); + + /* + * TODO convert the pattern rule to a direct XPath and + * compute directly instead of using the pattern matching + * over the full document... + * Check the exact semantic + */ + cur = root; + while (cur != NULL) { + rule = pattern->rules; + while (rule != NULL) { + if (xmlPatternMatch(rule->pattern, cur) == 1) { + test = rule->tests; + while (test != NULL) { + xmlSchematronRunTest(ctxt, test, instance, cur); + test = test->next; + } + } + rule = rule->patnext; + } + + cur = xmlSchematronNextNode(cur); + } + pattern = pattern->next; + } + } + return(ctxt->nberrors); +} + +#ifdef STANDALONE +int +main(void) +{ + int ret; + xmlDocPtr instance; + xmlSchematronParserCtxtPtr pctxt; + xmlSchematronValidCtxtPtr vctxt; + xmlSchematronPtr schema = NULL; + + pctxt = xmlSchematronNewParserCtxt("tst.sct"); + if (pctxt == NULL) { + fprintf(stderr, "failed to build schematron parser\n"); + } else { + schema = xmlSchematronParse(pctxt); + if (schema == NULL) { + fprintf(stderr, "failed to compile schematron\n"); + } + xmlSchematronFreeParserCtxt(pctxt); + } + instance = xmlReadFile("tst.sct", NULL, + XML_PARSE_NOENT | XML_PARSE_NOCDATA); + if (instance == NULL) { + fprintf(stderr, "failed to parse instance\n"); + } + if ((schema != NULL) && (instance != NULL)) { + vctxt = xmlSchematronNewValidCtxt(schema); + if (vctxt == NULL) { + fprintf(stderr, "failed to build schematron validator\n"); + } else { + ret = xmlSchematronValidateDoc(vctxt, instance); + xmlSchematronFreeValidCtxt(vctxt); + } + } + xmlSchematronFree(schema); + xmlFreeDoc(instance); + + xmlCleanupParser(); + xmlMemoryDump(); + + return (0); +} +#endif +#define bottom_schematron +#include "elfgcchack.h" +#endif /* LIBXML_SCHEMATRON_ENABLED */ diff --git a/test/HTML/script2.html b/test/HTML/script2.html new file mode 100644 index 0000000..2606a83 --- /dev/null +++ b/test/HTML/script2.html @@ -0,0 +1,19 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> +<title>Test Page</title> +</head> +<body> +<div id="portal"> +<script type="text/javascript"> + documen.write("PĹ™Ăliš ĹľluĹĄouÄŤkĂ˝ kĹŻĹ ĂşpÄ›l ďábelksĂ© Ăłdy"); +</script> + <p> + PĹ™Ăliš ĹľluĹĄouÄŤkĂ˝ kĹŻĹ ĂşpÄ›l ďábelksĂ© Ăłdy; + </p> +</div> +</body> +</html> + diff --git a/test/expr/base b/test/expr/base new file mode 100644 index 0000000..7ba11e2 --- /dev/null +++ b/test/expr/base @@ -0,0 +1,86 @@ +=>a +1 a +1 a | a +0 b +=>a|b +1 a +1 b +1 a | b +0 a{0} +0 b{0} +=>a | b | a +1 a +1 b +1 a | b +1 b | a +1 a | b | b +1 a | b | a +1 b | a | b +=>a,a +1 a,a +0 a +0 a,a,a +=>a{0,3} +1 a{3} +1 a +1 a,a,a +1 a{1,3} +=>(a|b){0,4} +1 a +1 b +1 a,b +1 a,b,a,b +0 b,a,b,a,b +1 b,a{1,3} +1 a{1,3},b +0 a{1,3},b,a +0 a{1,4},b +0 a{0,5} +1 (b|a){0,4} +0 (b|a){0,4},a +1 (a,b){0,2} +1 (a,b){0,1},b +=> a* +1 a +1 a? +1 a+ +1 a* +1 a{0} +=> a+ +1 a +0 a? +1 a+ +0 a* +1 a?,a +1 a,a* +1 a*,a +1 a?,a*,a +1 a*,a?,a +=>(a|b)* +1 a +1 b +1 a,b +1 a,b,a,b +1 (b|a){0,4} +1 (b|a){0,4},a +1 a* +1 b* +1 (a|b)* +1 a{1,3} +1 b,a{1,3} +1 a{1,3},b +1 a*,(a|b)* +1 a*,b{2,5} +1 a*,(a|b)*,b{2,5} +=>(a|b)+,(c|d) +1 a+,c +0 a*,c +1 a,c +1 a,b*,a*,c +# more complex +=>(a|b),(a|c){0,100} +1 a{0,100},(a|c) +0 a{0,101},(a|c) +# the example from cmsmcq at extreme markup 05 +=>(a, ((b, c, d){0,5}, e{0,1}){0,4}, f) +1 (a, b, (c, d, b){2,3}, c, d, e, f) diff --git a/test/relaxng/307377.rng b/test/relaxng/307377.rng new file mode 100644 index 0000000..37a87c9 --- /dev/null +++ b/test/relaxng/307377.rng @@ -0,0 +1,14 @@ +<element name="number" xmlns="http://relaxng.org/ns/structure/1.0"> + <attribute name="val"> + <list> + <oneOrMore> + <choice> + <value>1</value> + <value>2</value> + <value>3</value> + </choice> + </oneOrMore> + </list> + </attribute> + <text/> +</element> diff --git a/test/relaxng/307377_0.xml b/test/relaxng/307377_0.xml new file mode 100644 index 0000000..106d02a --- /dev/null +++ b/test/relaxng/307377_0.xml @@ -0,0 +1 @@ +<number val="a 1 b 2 c 3" /> diff --git a/test/relaxng/307377_1.xml b/test/relaxng/307377_1.xml new file mode 100644 index 0000000..73b0d1c --- /dev/null +++ b/test/relaxng/307377_1.xml @@ -0,0 +1 @@ +<number val="1 a 2 b 3 c" /> diff --git a/test/relaxng/307377_2.xml b/test/relaxng/307377_2.xml new file mode 100644 index 0000000..4a041aa --- /dev/null +++ b/test/relaxng/307377_2.xml @@ -0,0 +1 @@ +<number val="1 2 3" /> diff --git a/test/relaxng/docbook_0.xml b/test/relaxng/docbook_0.xml index 963d8e7..ede051d 100644 --- a/test/relaxng/docbook_0.xml +++ b/test/relaxng/docbook_0.xml @@ -1,6 +1,5 @@ <?xml version="1.0"?> -<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" - "../dtd/4.1.2/docbookx.dtd" [ +<!DOCTYPE article [ <!ENTITY version "1.0.53"> <!ENTITY mdash "--"> <!ENTITY hellip "..."> diff --git a/test/schemas/.memdump b/test/schemas/.memdump index 0a6efc4..f2a70c2 100644 --- a/test/schemas/.memdump +++ b/test/schemas/.memdump @@ -1,4 +1,4 @@ - 01:13:40 PM + 05:55:56 PM - MEMORY ALLOCATED : 0, MAX was 28425 + MEMORY ALLOCATED : 0, MAX was 31048 BLOCK NUMBER SIZE TYPE diff --git a/test/schemas/allsg_0.xml b/test/schemas/allsg_0.xml new file mode 100644 index 0000000..814646f --- /dev/null +++ b/test/schemas/allsg_0.xml @@ -0,0 +1,7 @@ +<?xml version="1.0"?> +<foo xmlns="urn:test:foo" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="urn:test:foo sg-all.xsd"> + <gm-B-2/> + <gm-A-1/> +</foo>
\ No newline at end of file diff --git a/test/schemas/allsg_0.xsd b/test/schemas/allsg_0.xsd new file mode 100644 index 0000000..11d27a8 --- /dev/null +++ b/test/schemas/allsg_0.xsd @@ -0,0 +1,26 @@ +<?xml version="1.0"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + targetNamespace="urn:test:foo" + xmlns:foo="urn:test:foo"> + + <!-- Substitution group heads. --> + <xsd:element name="gh-A" abstract="true"/> + <xsd:element name="gh-B" abstract="true"/> + + <!-- Substitution group members. --> + <xsd:element name="gm-A-1" substitutionGroup="foo:gh-A"/> + <xsd:element name="gm-A-2" substitutionGroup="foo:gh-A"/> + + <xsd:element name="gm-B-1" substitutionGroup="foo:gh-B"/> + <xsd:element name="gm-B-2" substitutionGroup="foo:gh-B"/> + + <xsd:element name="foo"> + <xsd:complexType> + <xsd:all> + <xsd:element ref="foo:gh-A"/> + <xsd:element ref="foo:gh-B"/> + </xsd:all> + </xsd:complexType> + </xsd:element> + +</xsd:schema>
\ No newline at end of file diff --git a/test/schemas/allsg_1.xml b/test/schemas/allsg_1.xml new file mode 100644 index 0000000..d1dc9c4 --- /dev/null +++ b/test/schemas/allsg_1.xml @@ -0,0 +1,8 @@ +<?xml version="1.0"?> +<foo xmlns="urn:test:foo" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="urn:test:foo sg-all.xsd"> + <gm-B-2/> + <gm-A-2/> +</foo> + diff --git a/test/schemas/allsg_2.xml b/test/schemas/allsg_2.xml new file mode 100644 index 0000000..b39cb7a --- /dev/null +++ b/test/schemas/allsg_2.xml @@ -0,0 +1,8 @@ +<?xml version="1.0"?> +<foo xmlns="urn:test:foo" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="urn:test:foo sg-all.xsd"> + <gm-A-2/> + <gm-B-2/> +</foo> + diff --git a/test/schemas/allsg_3.xml b/test/schemas/allsg_3.xml new file mode 100644 index 0000000..ac37b7b --- /dev/null +++ b/test/schemas/allsg_3.xml @@ -0,0 +1,7 @@ +<?xml version="1.0"?> +<foo xmlns="urn:test:foo" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="urn:test:foo sg-all.xsd"> + <gm-B-2/> + <gm-B-1/> +</foo> diff --git a/test/schemas/allsg_4.xml b/test/schemas/allsg_4.xml new file mode 100644 index 0000000..bbb654a --- /dev/null +++ b/test/schemas/allsg_4.xml @@ -0,0 +1,7 @@ +<?xml version="1.0"?> +<foo xmlns="urn:test:foo" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="urn:test:foo sg-all.xsd"> + <gm-A-1/> + <gm-A-1/> +</foo> diff --git a/test/schemas/allsg_5.xml b/test/schemas/allsg_5.xml new file mode 100644 index 0000000..44dde3e --- /dev/null +++ b/test/schemas/allsg_5.xml @@ -0,0 +1,8 @@ +<?xml version="1.0"?> +<foo xmlns="urn:test:foo" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="urn:test:foo sg-all.xsd"> + <gm-B-1/> + <gm-A-2/> + <gm-B-2/> +</foo> diff --git a/test/schemas/any5_0.xml b/test/schemas/any5_0.xml new file mode 100644 index 0000000..e716cb1 --- /dev/null +++ b/test/schemas/any5_0.xml @@ -0,0 +1,7 @@ +<?xml version="1.0"?> +<foo xmlns="urn:test:foo" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="urn:test:foo any5_0.xsd"> + <boo/> + <boo/> +</foo> diff --git a/test/schemas/any5_0.xsd b/test/schemas/any5_0.xsd new file mode 100644 index 0000000..70c8789 --- /dev/null +++ b/test/schemas/any5_0.xsd @@ -0,0 +1,13 @@ +<?xml version="1.0"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + targetNamespace="urn:test:foo" + elementFormDefault="qualified"> + <xsd:element name="foo"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="boo"/> + <xsd:any namespace="##other" maxOccurs="5" processContents="lax"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> +</xsd:schema>
\ No newline at end of file diff --git a/test/schemas/any5_1.xml b/test/schemas/any5_1.xml new file mode 100644 index 0000000..91dcb54 --- /dev/null +++ b/test/schemas/any5_1.xml @@ -0,0 +1,12 @@ +<?xml version="1.0"?> +<foo xmlns="urn:test:foo" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="urn:test:foo any5_0.xsd"> + <boo/> + <boo xmlns="urn:test:bar"/> + <boo xmlns="urn:test:bar"/> + <boo xmlns="urn:test:bar"/> + <boo xmlns="urn:test:bar"/> + <boo xmlns="urn:test:bar"/> + <boo xmlns="urn:test:bar"/> +</foo> diff --git a/test/schemas/any5_1.xsd b/test/schemas/any5_1.xsd new file mode 100644 index 0000000..4d3c9de --- /dev/null +++ b/test/schemas/any5_1.xsd @@ -0,0 +1,14 @@ +<?xml version="1.0"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + targetNamespace="urn:test:foo" + elementFormDefault="qualified"> + <xsd:element name="foo"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="boo"/> + <xsd:any namespace="##other" maxOccurs="5" processContents="lax"/> + <xsd:element name="boo"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> +</xsd:schema> diff --git a/test/schemas/any5_2.xml b/test/schemas/any5_2.xml new file mode 100644 index 0000000..e8434d1 --- /dev/null +++ b/test/schemas/any5_2.xml @@ -0,0 +1,8 @@ +<?xml version="1.0"?> +<foo xmlns="urn:test:foo" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="urn:test:foo any5_0.xsd"> + <boo/> + <boo xmlns="urn:test:bar"/> + <boo/> +</foo> diff --git a/test/schemas/any5_3.xml b/test/schemas/any5_3.xml new file mode 100644 index 0000000..828c4b3 --- /dev/null +++ b/test/schemas/any5_3.xml @@ -0,0 +1,11 @@ +<?xml version="1.0"?> +<foo xmlns="urn:test:foo" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="urn:test:foo any5_0.xsd"> + <boo/> + <boo xmlns="urn:test:bar"/> + <boo xmlns="urn:test:bar"/> + <boo xmlns="urn:test:bar"/> + <boo xmlns="urn:test:bar"/> + <boo xmlns="urn:test:bar"/> +</foo> diff --git a/test/schemas/any5_4.xml b/test/schemas/any5_4.xml new file mode 100644 index 0000000..91dcb54 --- /dev/null +++ b/test/schemas/any5_4.xml @@ -0,0 +1,12 @@ +<?xml version="1.0"?> +<foo xmlns="urn:test:foo" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="urn:test:foo any5_0.xsd"> + <boo/> + <boo xmlns="urn:test:bar"/> + <boo xmlns="urn:test:bar"/> + <boo xmlns="urn:test:bar"/> + <boo xmlns="urn:test:bar"/> + <boo xmlns="urn:test:bar"/> + <boo xmlns="urn:test:bar"/> +</foo> diff --git a/test/schemas/any5_5.xml b/test/schemas/any5_5.xml new file mode 100644 index 0000000..e09d8a1 --- /dev/null +++ b/test/schemas/any5_5.xml @@ -0,0 +1,12 @@ +<?xml version="1.0"?> +<foo xmlns="urn:test:foo" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="urn:test:foo any5_0.xsd"> + <boo/> + <boo xmlns="urn:test:bar"/> + <boo xmlns="urn:test:bar"/> + <boo xmlns="urn:test:bar"/> + <boo xmlns="urn:test:bar"/> + <boo xmlns="urn:test:bar"/> + <boo/> +</foo> diff --git a/test/schemas/any5_6.xml b/test/schemas/any5_6.xml new file mode 100644 index 0000000..3b0ad73 --- /dev/null +++ b/test/schemas/any5_6.xml @@ -0,0 +1,13 @@ +<?xml version="1.0"?> +<foo xmlns="urn:test:foo" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="urn:test:foo any5_0.xsd"> + <boo/> + <boo xmlns="urn:test:bar"/> + <boo xmlns="urn:test:bar"/> + <boo xmlns="urn:test:bar"/> + <boo xmlns="urn:test:bar"/> + <boo xmlns="urn:test:bar"/> + <boo xmlns="urn:test:bar"/> + <boo/> +</foo> diff --git a/test/schemas/any6_0.xml b/test/schemas/any6_0.xml new file mode 100755 index 0000000..068a1a9 --- /dev/null +++ b/test/schemas/any6_0.xml @@ -0,0 +1,8 @@ +<?xml version="1.0"?> +<!-- Dummy instance for any-1_1.xsd --> +<foo:foo xmlns:foo="urn:test:foo" xmlns:moo="urn:test:moo" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="urn:test:foo any-1_1.xsd"> + <foo:bar/> + <moo:moo/> +</foo:foo>
\ No newline at end of file diff --git a/test/schemas/any6_1.xsd b/test/schemas/any6_1.xsd new file mode 100644 index 0000000..23b2f5d --- /dev/null +++ b/test/schemas/any6_1.xsd @@ -0,0 +1,36 @@ +<?xml version="1.0"?> +<!-- +Content model error: + +any-err-not-determinist-1.xsd:29: element complexType: Schemas parser error : +local complex type: The content model is not determinist. + +As per Xerces and XSV this schema is OK. + +The problem appears when the maxOccurs of <bar> is greater than +the one of the <any> wildcard. Additionally if both are "unbounded". +If the latter is a different issue we should add an explicit test +for it. + +Examples: +<bar> <any> result + 2 1 error + 2 2 OK + 1 2 OK + unbounded 2 error + unbounded unbounded error + 2 unbounded OK +--> + +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" + targetNamespace="urn:test:foo" + elementFormDefault="qualified"> + <xs:element name="foo"> + <xs:complexType> + <xs:sequence> + <xs:element name="bar" maxOccurs="2"/> + <xs:any namespace="##other" maxOccurs="1" processContents="lax"/> + </xs:sequence> + </xs:complexType> + </xs:element> +</xs:schema>
\ No newline at end of file diff --git a/test/schemas/any6_2.xsd b/test/schemas/any6_2.xsd new file mode 100644 index 0000000..a552ca8 --- /dev/null +++ b/test/schemas/any6_2.xsd @@ -0,0 +1,19 @@ +<?xml version="1.0"?> +<!-- + "element complexType: Schemas parser error : + local complex type: The content model is not determinist." + + This schema is OK with XSV and Xerces. +--> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" + targetNamespace="urn:test:foo" + elementFormDefault="qualified"> + <xs:element name="foo"> + <xs:complexType> + <xs:sequence> + <xs:element name="bar" maxOccurs="unbounded"/> + <xs:any namespace="##other" processContents="lax"/> + </xs:sequence> + </xs:complexType> + </xs:element> +</xs:schema> diff --git a/test/schemas/any7_0.xml b/test/schemas/any7_0.xml new file mode 100755 index 0000000..288b1e7 --- /dev/null +++ b/test/schemas/any7_0.xml @@ -0,0 +1,19 @@ +<?xml version="1.0"?> +<!-- +No error reported. + +Seems like <moo> is accepted, but should not, since "##other" rules out +elements in no namespace. + +Xerces reports: +any-err-2.xml:18,8: (Error) cvc-complex-type.2.4.a: Invalid content starting +with element 'moo'. +One of '{"urn:test:foo":bar, WC[##other:"urn:test:foo"]}' is expected. + +--> +<foo:foo xmlns:foo="urn:test:foo" xmlns:moo="urn:test:moo" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="urn:test:foo any-2_1.xsd"> + <foo:bar/> + <moo/> +</foo:foo> diff --git a/test/schemas/any7_1.xml b/test/schemas/any7_1.xml new file mode 100755 index 0000000..624c712 --- /dev/null +++ b/test/schemas/any7_1.xml @@ -0,0 +1,18 @@ +<?xml version="1.0"?> +<!-- +Error reported: + +any-2_1.xml:17: element bar: Schemas validity error : +Element '{urn:test:foo}bar': This element is not expected. +Expected is one of ( {##other:urn:test:foo}* ). + +Tiny glitch: the error report mechanism fails to recognize +that there is only one element of choice. It should report: +"Excepted is ( {##other:urn:test:foo}* ).". +--> +<foo:foo xmlns:foo="urn:test:foo" xmlns:moo="urn:test:moo" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="urn:test:foo any-2_1.xsd"> + <foo:bar/> + <foo:bar/> +</foo:foo>
\ No newline at end of file diff --git a/test/schemas/any7_1.xsd b/test/schemas/any7_1.xsd new file mode 100755 index 0000000..546904f --- /dev/null +++ b/test/schemas/any7_1.xsd @@ -0,0 +1,13 @@ +<?xml version="1.0"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="urn:test:foo"
+ elementFormDefault="qualified">
+ <xs:element name="foo">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="bar"/>
+ <xs:any namespace="##other" processContents="lax"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
\ No newline at end of file diff --git a/test/schemas/any7_2.xml b/test/schemas/any7_2.xml new file mode 100644 index 0000000..66d84d0 --- /dev/null +++ b/test/schemas/any7_2.xml @@ -0,0 +1,20 @@ +<?xml version="1.0"?> +<!-- +No error reported. + +Seems like <moo> is accepted, but should not, since "##other" rules out +elements in no namespace. + +Xerces reports: +any-err-2.xml:18,8: (Error) cvc-complex-type.2.4.a: Invalid content starting +with element 'moo'. +One of '{"urn:test:foo":bar, WC[##other:"urn:test:foo"]}' is expected. + +--> +<foo:foo xmlns:foo="urn:test:foo" xmlns:moo="urn:test:moo" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="urn:test:foo any7_2.xsd"> + <foo:bar/> + <moo:moo/> +</foo:foo> + diff --git a/test/schemas/any7_2.xsd b/test/schemas/any7_2.xsd new file mode 100755 index 0000000..cabfd98 --- /dev/null +++ b/test/schemas/any7_2.xsd @@ -0,0 +1,13 @@ +<?xml version="1.0"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="urn:test:foo"
+ elementFormDefault="qualified">
+ <xs:element name="foo">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="bar"/>
+ <xs:any namespace="##other" processContents="lax" maxOccurs="2"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/test/schemas/any8_0.xml b/test/schemas/any8_0.xml new file mode 100644 index 0000000..6e87cff --- /dev/null +++ b/test/schemas/any8_0.xml @@ -0,0 +1,9 @@ +<?xml version="1.0"?> +<foo:foo xmlns:foo="urn:test:foo" + xmlns:moo="urn:test:moo" + xmlns:boo="urn:test:boo" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="urn:test:foo any8_1.xsd"> + <foo:bar/> + <foo:bar/> +</foo:foo> diff --git a/test/schemas/any8_1.xsd b/test/schemas/any8_1.xsd new file mode 100644 index 0000000..9264893 --- /dev/null +++ b/test/schemas/any8_1.xsd @@ -0,0 +1,20 @@ +<?xml version="1.0"?> +<!-- + "element complexType: Schemas parser error : + local complex type: The content model is not determinist." + + This schema is OK with XSV and Xerces. +-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="urn:test:foo"
+ elementFormDefault="qualified">
+ <xs:element name="foo">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="bar"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0"/> + <xs:element name="bar"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema> diff --git a/test/schemas/bug310264_0.xml b/test/schemas/bug310264_0.xml new file mode 100644 index 0000000..98f057c --- /dev/null +++ b/test/schemas/bug310264_0.xml @@ -0,0 +1,41 @@ +<c xmlns="http://myns" > + <a/> <!-- 1 --> + <a/> <!-- 2 --> + <a/> <!-- 3 --> + <a/> <!-- 4 --> + <a/> <!-- 5 --> + <a/> <!-- 6 --> + <a/> <!-- 7 --> + <a/> <!-- 8 --> + <a/> <!-- 9 --> + <a/> <!-- 10 --> + <a/> <!-- 1 --> + <a/> <!-- 2 --> + <a/> <!-- 3 --> + <a/> <!-- 4 --> + <a/> <!-- 5 --> + <a/> <!-- 6 --> + <a/> <!-- 7 --> + <a/> <!-- 8 --> + <a/> <!-- 9 --> + <a/> <!-- 20 --> + <a/> <!-- 1 --> + <a/> <!-- 2 --> + <a/> <!-- 3 --> + <a/> <!-- 4 --> + <a/> <!-- 5 --> + <a/> <!-- 6 --> + <a/> <!-- 7 --> + <a/> <!-- 8 --> + <a/> <!-- 9 --> + <a/> <!-- 30 --> + <a/> <!-- 1 --> + <a/> <!-- 2 --> + <a/> <!-- 3 --> + <a/> <!-- 4 --> + <a/> <!-- 5 --> + <a/> <!-- 6 --> + <a/> <!-- 7 --> + <a/> <!-- 8 --> +</c> + diff --git a/test/schemas/bug310264_0.xsd b/test/schemas/bug310264_0.xsd new file mode 100644 index 0000000..6f2b333 --- /dev/null +++ b/test/schemas/bug310264_0.xsd @@ -0,0 +1,18 @@ +<xs:schema xmlns:tns="http://myns" + targetNamespace="http://myns" + xmlns:xs="http://www.w3.org/2001/XMLSchema" +> + + <xs:element name="a" /> + + <xs:complexType name="c" > + <xs:sequence minOccurs="2" maxOccurs="4"> + <xs:sequence minOccurs="19" maxOccurs="20"> + <xs:element ref="tns:a" /> + </xs:sequence> + </xs:sequence> + </xs:complexType> + + <xs:element name="c" type="tns:c" /> + +</xs:schema> diff --git a/test/schemas/bug312957_0.xml b/test/schemas/bug312957_0.xml new file mode 100644 index 0000000..c22444f --- /dev/null +++ b/test/schemas/bug312957_0.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="ISO-8859-1"?>
+<family xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="bug312957_1.xsd"
+ name="test">
+ <siblings>
+ <sibling name="gill"/>
+ </siblings>
+ <sisters>
+ <sister name="gill"/>
+ <sister name="annie"/>
+ </sisters>
+</family>
+
+
diff --git a/test/schemas/bug312957_1.xsd b/test/schemas/bug312957_1.xsd new file mode 100644 index 0000000..fb7972e --- /dev/null +++ b/test/schemas/bug312957_1.xsd @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="ISO-8859-1"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <xs:element name="family" type="family_type">
+ <xs:key name="sibling_key">
+ <xs:selector xpath="siblings/sibling"/>
+ <xs:field xpath="@name"/>
+ </xs:key>
+ <xs:keyref name="sibling_key_ref" refer="sibling_key">
+ <xs:selector xpath="sisters/sister"/>
+ <xs:field xpath="@name"/>
+ </xs:keyref>
+ </xs:element>
+ <xs:complexType name="family_type">
+ <xs:sequence>
+ <xs:element name="siblings" type="siblings_type" />
+ <xs:element name="sisters" type="sisters_type" />
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:string"/>
+ </xs:complexType>
+ <xs:complexType name="siblings_type">
+ <xs:sequence>
+ <xs:element name="sibling" type="sibling_type" minOccurs="0"
+maxOccurs="unbounded" />
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="sisters_type">
+ <xs:sequence>
+ <xs:element name="sister" type="sister_type" minOccurs="0"
+maxOccurs="unbounded" />
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="sibling_type">
+ <xs:attribute name="name" type="xs:string"/>
+ </xs:complexType>
+ <xs:complexType name="sister_type">
+ <xs:attribute name="name" type="xs:string"/>
+ </xs:complexType>
+</xs:schema>
diff --git a/test/schemas/bug313982_0.xml b/test/schemas/bug313982_0.xml new file mode 100644 index 0000000..18c81ea --- /dev/null +++ b/test/schemas/bug313982_0.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8"?> +<testDecimalFacet xmlns="http://www.foo.com" +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.foo.com bug313982_0.xsd">0.99</testDecimalFacet> diff --git a/test/schemas/bug313982_0.xsd b/test/schemas/bug313982_0.xsd new file mode 100644 index 0000000..69d0613 --- /dev/null +++ b/test/schemas/bug313982_0.xsd @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xsd:schema targetNamespace="http://www.foo.com" elementFormDefault="qualified" +xmlns="http://www.foo.com" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <xsd:element name="testDecimalFacet"> + <xsd:simpleType> + <xsd:restriction base="xsd:decimal"> + <xsd:minInclusive value="0"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:element> +</xsd:schema> diff --git a/test/schemas/extension2_0.xml b/test/schemas/extension2_0.xml new file mode 100644 index 0000000..202c988 --- /dev/null +++ b/test/schemas/extension2_0.xml @@ -0,0 +1,4 @@ +<?xml version="1.0"?> +<foo xmlns="http://myns" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://myns extension2_1.xsd"/> diff --git a/test/schemas/extension2_1.xsd b/test/schemas/extension2_1.xsd new file mode 100644 index 0000000..0fa88af --- /dev/null +++ b/test/schemas/extension2_1.xsd @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> + <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" + xmlns="http://myns" + targetNamespace="http://myns" + elementFormDefault="qualified" + attributeFormDefault="unqualified" + xml:lang="en"> + + <xs:complexType name="dataInlineType"> + <xs:complexContent> + <xs:extension base="xs:anyType"/> + </xs:complexContent> + </xs:complexType> + + <xs:element name="foo" type="dataInlineType"/> + + </xs:schema> diff --git a/test/schematron/.memdump b/test/schematron/.memdump new file mode 100644 index 0000000..3e7dafa --- /dev/null +++ b/test/schematron/.memdump @@ -0,0 +1,4 @@ + 04:51:26 PM + + MEMORY ALLOCATED : 0, MAX was 40912 +BLOCK NUMBER SIZE TYPE diff --git a/test/schematron/zvon1.sct b/test/schematron/zvon1.sct new file mode 100644 index 0000000..36179dd --- /dev/null +++ b/test/schematron/zvon1.sct @@ -0,0 +1,23 @@ +<schema xmlns="http://www.ascc.net/xml/schematron" > + <pattern name="Print both cases"> + <rule context="AAA"> + <assert test="BBB">BBB element is missing.</assert> + <report test="BBB">BBB element is present.</report> + <assert test="@name">AAA misses attribute name.</assert> + <report test="@name">AAA contains attribute name.</report> + </rule> + </pattern> + <pattern name="Print positive result only"> + <rule context="AAA"> + <report test="BBB">BBB element is present.</report> + <report test="@name">AAA contains attribute name.</report> + </rule> + </pattern> + <pattern name="Print negative result only"> + <rule context="AAA"> + <assert test="BBB">BBB element is missing.</assert> + <assert test="@name">AAA misses attribute name.</assert> + </rule> + </pattern> +</schema> + diff --git a/test/schematron/zvon10.sct b/test/schematron/zvon10.sct new file mode 100644 index 0000000..783fac5 --- /dev/null +++ b/test/schematron/zvon10.sct @@ -0,0 +1,15 @@ +<schema xmlns="http://www.ascc.net/xml/schematron" > + <pattern name="Open model"> + <rule context="AAA"> + <assert test="BBB"> BBB element is not present</assert> + <assert test="CCC"> CCC element is not present</assert> + </rule> + </pattern> + <pattern name="Closed model"> + <rule context="AAA"> + <assert test="BBB"> BBB element is not present</assert> + <assert test="CCC"> CCC element is not present</assert> + <assert test="count(BBB|CCC) = count (*)">There is an extra element</assert> + </rule> + </pattern> +</schema> diff --git a/test/schematron/zvon10_0.xml b/test/schematron/zvon10_0.xml new file mode 100644 index 0000000..d3ac388 --- /dev/null +++ b/test/schematron/zvon10_0.xml @@ -0,0 +1,3 @@ +<AAA> + <BBB/> +</AAA> diff --git a/test/schematron/zvon10_1.xml b/test/schematron/zvon10_1.xml new file mode 100644 index 0000000..ba9bdca --- /dev/null +++ b/test/schematron/zvon10_1.xml @@ -0,0 +1,4 @@ +<AAA> + <BBB/> + <DDD/> +</AAA> diff --git a/test/schematron/zvon11.sct b/test/schematron/zvon11.sct new file mode 100644 index 0000000..79b01fd --- /dev/null +++ b/test/schematron/zvon11.sct @@ -0,0 +1,8 @@ +<schema xmlns="http://www.ascc.net/xml/schematron" > + <pattern name="Attributes present"> + <rule context="BBB"> + <assert test="not(@aaa) or (@aaa and @bbb)">The element must not have an isolated aaa attribute</assert> + <assert test="not(@bbb) or (@aaa and @bbb)">The element must not have an isolated bbb attribute</assert> + </rule> + </pattern> +</schema> diff --git a/test/schematron/zvon11_0.xml b/test/schematron/zvon11_0.xml new file mode 100644 index 0000000..f065eed --- /dev/null +++ b/test/schematron/zvon11_0.xml @@ -0,0 +1,3 @@ +<AAA> + <BBB aaa="A" bbb="B"/> +</AAA> diff --git a/test/schematron/zvon11_1.xml b/test/schematron/zvon11_1.xml new file mode 100644 index 0000000..c889933 --- /dev/null +++ b/test/schematron/zvon11_1.xml @@ -0,0 +1,3 @@ +<AAA> + <BBB bbb="B"/> +</AAA> diff --git a/test/schematron/zvon11_2.xml b/test/schematron/zvon11_2.xml new file mode 100644 index 0000000..26e1221 --- /dev/null +++ b/test/schematron/zvon11_2.xml @@ -0,0 +1,3 @@ +<AAA> + <BBB aaa="A"/> +</AAA> diff --git a/test/schematron/zvon11_3.xml b/test/schematron/zvon11_3.xml new file mode 100644 index 0000000..d3ac388 --- /dev/null +++ b/test/schematron/zvon11_3.xml @@ -0,0 +1,3 @@ +<AAA> + <BBB/> +</AAA> diff --git a/test/schematron/zvon12.sct b/test/schematron/zvon12.sct new file mode 100644 index 0000000..049b125 --- /dev/null +++ b/test/schematron/zvon12.sct @@ -0,0 +1,8 @@ +<schema xmlns="http://www.ascc.net/xml/schematron" > + <pattern name="Number of characters in an abbreviation"> + <rule context="BBB"> + <report test="string-length(@bbb) < 2">There is not enough letters in the abbreviation</report> + <report test="string-length(@bbb) > 3">There is too much letters in the abbreviation</report> + </rule> + </pattern> +</schema> diff --git a/test/schematron/zvon12_0.xml b/test/schematron/zvon12_0.xml new file mode 100644 index 0000000..d5f28d5 --- /dev/null +++ b/test/schematron/zvon12_0.xml @@ -0,0 +1,3 @@ +<AAA> + <BBB bbb="C"/> +</AAA> diff --git a/test/schematron/zvon12_1.xml b/test/schematron/zvon12_1.xml new file mode 100644 index 0000000..3507f6b --- /dev/null +++ b/test/schematron/zvon12_1.xml @@ -0,0 +1,3 @@ +<AAA> + <BBB bbb="CZ"/> +</AAA> diff --git a/test/schematron/zvon12_2.xml b/test/schematron/zvon12_2.xml new file mode 100644 index 0000000..e0d81af --- /dev/null +++ b/test/schematron/zvon12_2.xml @@ -0,0 +1,3 @@ +<AAA> + <BBB bbb="CZCZ"/> +</AAA> diff --git a/test/schematron/zvon13.sct b/test/schematron/zvon13.sct new file mode 100644 index 0000000..cd433e0 --- /dev/null +++ b/test/schematron/zvon13.sct @@ -0,0 +1,7 @@ +<schema xmlns="http://www.ascc.net/xml/schematron" > + <pattern name="Sum equals 100%."> + <rule context="Total"> + <assert test="sum(//Percent) = 100">The values do not sum to 100%. </assert> + </rule> + </pattern> +</schema> diff --git a/test/schematron/zvon13_0.xml b/test/schematron/zvon13_0.xml new file mode 100644 index 0000000..52619c3 --- /dev/null +++ b/test/schematron/zvon13_0.xml @@ -0,0 +1,6 @@ +<Total> + <Percent>20</Percent> + <Percent>30</Percent> + <Percent>10</Percent> + <Percent>50</Percent> +</Total> diff --git a/test/schematron/zvon13_1.xml b/test/schematron/zvon13_1.xml new file mode 100644 index 0000000..8fb7368 --- /dev/null +++ b/test/schematron/zvon13_1.xml @@ -0,0 +1,5 @@ +<Total> + <Percent>20</Percent> + <Percent>10</Percent> + <Percent>50</Percent> +</Total> diff --git a/test/schematron/zvon13_2.xml b/test/schematron/zvon13_2.xml new file mode 100644 index 0000000..af4d76a --- /dev/null +++ b/test/schematron/zvon13_2.xml @@ -0,0 +1,5 @@ +<Total> + <Percent>20</Percent> + <Percent>30</Percent> + <Percent>50</Percent> +</Total> diff --git a/test/schematron/zvon14.sct b/test/schematron/zvon14.sct new file mode 100644 index 0000000..f98b6d8 --- /dev/null +++ b/test/schematron/zvon14.sct @@ -0,0 +1,10 @@ +<schema xmlns="http://www.ascc.net/xml/schematron" > + <pattern name="a child of selected elements"> + <rule context="CCC"> + <assert test="parent::*[name()='BBB' or name()='DDD']">Element CCC must not be a child of element + <name path="parent::*"/> + </assert> + </rule> + </pattern> +</schema> + diff --git a/test/schematron/zvon14_0.xml b/test/schematron/zvon14_0.xml new file mode 100644 index 0000000..b627043 --- /dev/null +++ b/test/schematron/zvon14_0.xml @@ -0,0 +1,12 @@ +<AAA> + <BBB> + <CCC/> + </BBB> + <CCC/> + <DDD> + <CCC/> + <EEE> + <CCC/> + </EEE> + </DDD> +</AAA> diff --git a/test/schematron/zvon15.sct b/test/schematron/zvon15.sct new file mode 100644 index 0000000..7da5d86 --- /dev/null +++ b/test/schematron/zvon15.sct @@ -0,0 +1,11 @@ +<schema xmlns="http://www.ascc.net/xml/schematron" > + <pattern name="id is the only permited attribute name"> + <rule context="*"> + <report test="@*[not(name()='id')]">Attribute + <name path="@*[not(name()='id')]"/> is forbidden in element + <name/> + </report> + </rule> + </pattern> +</schema> + diff --git a/test/schematron/zvon15_0.xml b/test/schematron/zvon15_0.xml new file mode 100644 index 0000000..390aedb --- /dev/null +++ b/test/schematron/zvon15_0.xml @@ -0,0 +1,4 @@ +<AAA name="aaa"> +<BBB id="bbb"/> +<CCC color="ccc"/> +</AAA> diff --git a/test/schematron/zvon16.sct b/test/schematron/zvon16.sct new file mode 100644 index 0000000..3be75cd --- /dev/null +++ b/test/schematron/zvon16.sct @@ -0,0 +1,30 @@ +<schema xmlns="http://www.ascc.net/xml/schematron" > + <pattern name="Required ID"> + <rule context="cat | dog"> + <assert test="@id">An element of type + <name/> should have an id attribute that is a unique identifier for that animal. + </assert> + </rule> + </pattern> + <pattern name="Required IDREF"> + <rule context="catowner"> + <assert test="@pet">An element of type + <name/> should have a pet attribute. + </assert> + </rule> + </pattern> + <pattern name="IDREF should reference an ID used in the same document"> + <rule context="catowner[@pet]"> + <assert test="id(@pet)">An element of type + <name/> should have a pet attribute that should contain a unique identifier. + </assert> + </rule> + </pattern> + <pattern name="IDREF should reference an ID of a certain element type only"> + <rule context="catowner[@pet]"> + <assert test="(name(id(@pet)) ='cat')">An element of type + <name/> should have a pet attribute that should contain the unique identifier for a cat. + </assert> + </rule> + </pattern> +</schema> diff --git a/test/schematron/zvon16_0.xml b/test/schematron/zvon16_0.xml new file mode 100644 index 0000000..95132e1 --- /dev/null +++ b/test/schematron/zvon16_0.xml @@ -0,0 +1,19 @@ +<!DOCTYPE ideg +[ +<!ELEMENT ideg ( dog, cat, catowner+ )> +<!ELEMENT dog ( #PCDATA )> +<!ELEMENT cat ( #PCDATA )> +<!ELEMENT catowner ( #PCDATA )> +<!ATTLIST dog id ID #REQUIRED > +<!ATTLIST cat id ID #REQUIRED > +<!ATTLIST catowner pet IDREF #REQUIRED> +]> +<ideg> + <dog id="danny" >Danny</dog> + <cat id="bede" >Bede</cat> + <catowner >Harold</catowner> + <catowner pet="poochi" >Fumiaki</catowner> + <catowner pet="danny" >Jimmy</catowner> + <catowner pet="bede" >Rick</catowner> +</ideg> + diff --git a/test/schematron/zvon1_0.xml b/test/schematron/zvon1_0.xml new file mode 100644 index 0000000..d3ac388 --- /dev/null +++ b/test/schematron/zvon1_0.xml @@ -0,0 +1,3 @@ +<AAA> + <BBB/> +</AAA> diff --git a/test/schematron/zvon1_1.xml b/test/schematron/zvon1_1.xml new file mode 100644 index 0000000..861c90a --- /dev/null +++ b/test/schematron/zvon1_1.xml @@ -0,0 +1,3 @@ +<AAA> + <CCC/> +</AAA> diff --git a/test/schematron/zvon2.sct b/test/schematron/zvon2.sct new file mode 100644 index 0000000..56974a0 --- /dev/null +++ b/test/schematron/zvon2.sct @@ -0,0 +1,9 @@ +<schema xmlns="http://www.ascc.net/xml/schematron" > + <pattern name="Character @ forbidden"> + <rule context="*"> + <report test="contains(.,'@')">Text in element + <name/> must not contain character @ + </report> + </rule> + </pattern> +</schema> diff --git a/test/schematron/zvon2_0.xml b/test/schematron/zvon2_0.xml new file mode 100644 index 0000000..832c507 --- /dev/null +++ b/test/schematron/zvon2_0.xml @@ -0,0 +1,4 @@ +<AAA> + <BBB>bbbb</BBB> + <CCC>cccc</CCC> +</AAA> diff --git a/test/schematron/zvon2_1.xml b/test/schematron/zvon2_1.xml new file mode 100644 index 0000000..6ade195 --- /dev/null +++ b/test/schematron/zvon2_1.xml @@ -0,0 +1,4 @@ +<AAA> + <BBB>bbbb@bbb.com</BBB> + <CCC>ccc@ccc.com</CCC> +</AAA> diff --git a/test/schematron/zvon2_2.xml b/test/schematron/zvon2_2.xml new file mode 100644 index 0000000..812d44a --- /dev/null +++ b/test/schematron/zvon2_2.xml @@ -0,0 +1,5 @@ +<AAA> + <BBB>bbbb</BBB> + <CCC>cccc</CCC> + aaa@aaa.net +</AAA> diff --git a/test/schematron/zvon3.sct b/test/schematron/zvon3.sct new file mode 100644 index 0000000..f75b67b --- /dev/null +++ b/test/schematron/zvon3.sct @@ -0,0 +1,8 @@ +<schema xmlns="http://www.ascc.net/xml/schematron" > + <pattern name="Attribute test"> + <rule context="CCC"> + <assert test="@name">attribute name is not present</assert> + <report test="@name">attribute name is present</report> + </rule> + </pattern> +</schema> diff --git a/test/schematron/zvon3_0.xml b/test/schematron/zvon3_0.xml new file mode 100644 index 0000000..ec8dc43 --- /dev/null +++ b/test/schematron/zvon3_0.xml @@ -0,0 +1,8 @@ +<AAA> + <BBB> + <CCC/> + <CCC/> + </BBB> + <CCC name="c1"/> + <CCC name="c2"/> +</AAA> diff --git a/test/schematron/zvon4.sct b/test/schematron/zvon4.sct new file mode 100644 index 0000000..0b8a4e1 --- /dev/null +++ b/test/schematron/zvon4.sct @@ -0,0 +1,10 @@ +<schema xmlns="http://www.ascc.net/xml/schematron" > + <pattern name="Root test"> + <rule context="/*"> + <assert test="name()='AAA'">Root element is + <name/>, not AAA + </assert> + <report test="name()='AAA'">Root element is AAA</report> + </rule> + </pattern> +</schema> diff --git a/test/schematron/zvon4_0.xml b/test/schematron/zvon4_0.xml new file mode 100644 index 0000000..4ba332e --- /dev/null +++ b/test/schematron/zvon4_0.xml @@ -0,0 +1,6 @@ +<AAA> + <BBB> + <CCC/> + <CCC/> + </BBB> +</AAA> diff --git a/test/schematron/zvon4_1.xml b/test/schematron/zvon4_1.xml new file mode 100644 index 0000000..5becbcf --- /dev/null +++ b/test/schematron/zvon4_1.xml @@ -0,0 +1,6 @@ +<XXX> + <BBB> + <CCC/> + <CCC/> + </BBB> +</XXX> diff --git a/test/schematron/zvon5.sct b/test/schematron/zvon5.sct new file mode 100644 index 0000000..36cb8bb --- /dev/null +++ b/test/schematron/zvon5.sct @@ -0,0 +1,12 @@ +<schema xmlns="http://www.ascc.net/xml/schematron" > + <pattern name="Select empty elements CCC"> + <rule context="CCC"> + <assert test="normalize-space(.) and *">Source contains an empty element CCC </assert> + <report test="normalize-space(.) = ''">[1]An element CCC does not contain any text</report> + <assert test="normalize-space(.)">[2]An element CCC does not contain any text</assert> + <report test="not(*)">[1]An element CCC does not contain any child element</report> + <assert test="*">[2]An element CCC does not contain any child element</assert> + </rule> + </pattern> +</schema> + diff --git a/test/schematron/zvon5_0.xml b/test/schematron/zvon5_0.xml new file mode 100644 index 0000000..dc7c36b --- /dev/null +++ b/test/schematron/zvon5_0.xml @@ -0,0 +1,5 @@ +<AAA> + <BBB> + <CCC/> + </BBB> +</AAA> diff --git a/test/schematron/zvon5_1.xml b/test/schematron/zvon5_1.xml new file mode 100644 index 0000000..6915fa6 --- /dev/null +++ b/test/schematron/zvon5_1.xml @@ -0,0 +1,5 @@ +<AAA> + <BBB> + <CCC>I am CCC element</CCC> + </BBB> +</AAA> diff --git a/test/schematron/zvon5_2.xml b/test/schematron/zvon5_2.xml new file mode 100644 index 0000000..2a11400 --- /dev/null +++ b/test/schematron/zvon5_2.xml @@ -0,0 +1,7 @@ +<AAA> + <BBB> + <CCC> + <DDD/> + </CCC> + </BBB> +</AAA> diff --git a/test/schematron/zvon6.sct b/test/schematron/zvon6.sct new file mode 100644 index 0000000..678ae58 --- /dev/null +++ b/test/schematron/zvon6.sct @@ -0,0 +1,8 @@ +<schema xmlns="http://www.ascc.net/xml/schematron" > + <pattern name="Predefined values"> + <rule context="AAA"> + <report test="normalize-space(.) = 'aaa' or normalize-space(.) = 'bbb'">O.K.</report> + <assert test="normalize-space(.) = 'aaa' or normalize-space(.) = 'bbb'">The AAA value is not permitted.</assert> + </rule> + </pattern> +</schema> diff --git a/test/schematron/zvon6_0.xml b/test/schematron/zvon6_0.xml new file mode 100644 index 0000000..a3efb70 --- /dev/null +++ b/test/schematron/zvon6_0.xml @@ -0,0 +1,3 @@ +<AAA> +aaa +</AAA> diff --git a/test/schematron/zvon6_1.xml b/test/schematron/zvon6_1.xml new file mode 100644 index 0000000..7d7daf8 --- /dev/null +++ b/test/schematron/zvon6_1.xml @@ -0,0 +1,3 @@ +<AAA> + bbb +</AAA> diff --git a/test/schematron/zvon6_2.xml b/test/schematron/zvon6_2.xml new file mode 100644 index 0000000..555f24d --- /dev/null +++ b/test/schematron/zvon6_2.xml @@ -0,0 +1,3 @@ +<AAA> + ccc +</AAA> diff --git a/test/schematron/zvon7.sct b/test/schematron/zvon7.sct new file mode 100644 index 0000000..a22a89e --- /dev/null +++ b/test/schematron/zvon7.sct @@ -0,0 +1,9 @@ +<schema xmlns="http://www.ascc.net/xml/schematron" > + <pattern name="Test integer"> + <rule context="AAA"> + <report test="floor(.) = number(.)">O.K.</report> + <assert test="floor(.) = number(.)">The AAA value is not an integer.</assert> + </rule> + </pattern> +</schema> + diff --git a/test/schematron/zvon7_0.xml b/test/schematron/zvon7_0.xml new file mode 100644 index 0000000..a3efb70 --- /dev/null +++ b/test/schematron/zvon7_0.xml @@ -0,0 +1,3 @@ +<AAA> +aaa +</AAA> diff --git a/test/schematron/zvon7_1.xml b/test/schematron/zvon7_1.xml new file mode 100644 index 0000000..8da0ae5 --- /dev/null +++ b/test/schematron/zvon7_1.xml @@ -0,0 +1,3 @@ +<AAA> + 12.234 +</AAA> diff --git a/test/schematron/zvon7_2.xml b/test/schematron/zvon7_2.xml new file mode 100644 index 0000000..e27cfe7 --- /dev/null +++ b/test/schematron/zvon7_2.xml @@ -0,0 +1,3 @@ +<AAA> +45 +</AAA> diff --git a/test/schematron/zvon7_3.xml b/test/schematron/zvon7_3.xml new file mode 100644 index 0000000..c17295a --- /dev/null +++ b/test/schematron/zvon7_3.xml @@ -0,0 +1,3 @@ +<AAA> +0 +</AAA> diff --git a/test/schematron/zvon7_4.xml b/test/schematron/zvon7_4.xml new file mode 100644 index 0000000..4f34fbe --- /dev/null +++ b/test/schematron/zvon7_4.xml @@ -0,0 +1,3 @@ +<AAA> +-45 +</AAA> diff --git a/test/schematron/zvon8.sct b/test/schematron/zvon8.sct new file mode 100644 index 0000000..5641ecd --- /dev/null +++ b/test/schematron/zvon8.sct @@ -0,0 +1,10 @@ +<schema xmlns="http://www.ascc.net/xml/schematron" > + <pattern name="Test count"> + <rule context="/*"> + <report test="count(//BBB) = count(//AAA)">O.K.</report> + <assert test="count(//BBB) <= count(//AAA)">Some AAA are missing</assert> + <report test="count(//BBB) < count(//AAA)">Some BBB are missing</report> + </rule> + </pattern> +</schema> + diff --git a/test/schematron/zvon8_0.xml b/test/schematron/zvon8_0.xml new file mode 100644 index 0000000..b6739bb --- /dev/null +++ b/test/schematron/zvon8_0.xml @@ -0,0 +1,8 @@ +<XXX> + <BBB/> + <BBB/> + <AAA/> + <BBB/> + <AAA/> + <AAA/> +</XXX> diff --git a/test/schematron/zvon8_1.xml b/test/schematron/zvon8_1.xml new file mode 100644 index 0000000..196dbe2 --- /dev/null +++ b/test/schematron/zvon8_1.xml @@ -0,0 +1,7 @@ +<XXX> + <BBB/> + <AAA/> + <BBB/> + <AAA/> + <AAA/> +</XXX> diff --git a/test/schematron/zvon8_2.xml b/test/schematron/zvon8_2.xml new file mode 100644 index 0000000..f85de82 --- /dev/null +++ b/test/schematron/zvon8_2.xml @@ -0,0 +1,7 @@ +<XXX> + <BBB/> + <BBB/> + <AAA/> + <BBB/> + <AAA/> +</XXX> diff --git a/test/schematron/zvon9.sct b/test/schematron/zvon9.sct new file mode 100644 index 0000000..6f67877 --- /dev/null +++ b/test/schematron/zvon9.sct @@ -0,0 +1,9 @@ +<schema xmlns="http://www.ascc.net/xml/schematron" > + <pattern name="Test attribute"> + <rule context="CCC"> + <report test="parent::BBB and not(@id)">Attribute id is missing</report> + <report test="not(parent::BBB) and @id">Attribute id is used in wrong context</report> + </rule> + </pattern> +</schema> + diff --git a/test/schematron/zvon9_0.xml b/test/schematron/zvon9_0.xml new file mode 100644 index 0000000..d871519 --- /dev/null +++ b/test/schematron/zvon9_0.xml @@ -0,0 +1,7 @@ +<AAA> + <CCC/> + <CCC/> + <BBB> + <CCC id="Q1"/> + </BBB> +</AAA> diff --git a/test/schematron/zvon9_1.xml b/test/schematron/zvon9_1.xml new file mode 100644 index 0000000..5c1c1bf --- /dev/null +++ b/test/schematron/zvon9_1.xml @@ -0,0 +1,7 @@ +<AAA> + <CCC id="Q2"/> + <CCC/> + <BBB> + <CCC id="Q1"/> + </BBB> +</AAA> diff --git a/test/schematron/zvon9_2.xml b/test/schematron/zvon9_2.xml new file mode 100644 index 0000000..7e09fab --- /dev/null +++ b/test/schematron/zvon9_2.xml @@ -0,0 +1,7 @@ +<AAA> + <CCC/> + <CCC/> + <BBB> + <CCC/> + </BBB> +</AAA> diff --git a/test/valid/dtds/objednavka.dtd b/test/valid/dtds/objednavka.dtd new file mode 100644 index 0000000..ac63df1 --- /dev/null +++ b/test/valid/dtds/objednavka.dtd @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<!ELEMENT objednavka (AdDoruÄŤeni, AdÚčtovacĂ, ZpĹŻsobDopravy, ZpĹŻsobPlatby, DatumPĹ™ijetĂ, DatumDoruÄŤenĂ, ObsahObjednávky, Komentář?)>
+<!ELEMENT AdDoručeni (Jméno, Ulice, Město, PSČ)>
+<!ELEMENT AdÚčtovacà (Jméno, Ulice, Město, PSČ)>
+<!ELEMENT Jméno (#PCDATA)>
+<!ELEMENT Ulice (#PCDATA)>
+<!ELEMENT Město (#PCDATA)>
+<!ELEMENT PSÄŚ (#PCDATA)>
+<!ELEMENT ZpĹŻsobDopravy (#PCDATA) >
+<!ELEMENT ZpĹŻsobPlatby (#PCDATA) >
+<!ELEMENT DatumPřijetà (#PCDATA)>
+<!ELEMENT DatumDoruÄŤenĂ (#PCDATA)>
+<!ELEMENT ObsahObjednávky (ZboĹľĂ+) >
+<!ELEMENT Zbožà (Kód, Název, Počet, Cena, Popis?) >
+<!ELEMENT KĂłd (#PCDATA)>
+<!ELEMENT Název (#PCDATA) >
+<!ELEMENT PoÄŤet (#PCDATA)>
+<!ELEMENT Cena (#PCDATA) >
+<!ELEMENT Popis (#PCDATA) >
+<!ELEMENT Komentář (Ĺádka*) >
+<!ELEMENT Ĺádka (#PCDATA)>
+<!ATTLIST PoÄŤet
+ jednotka (ks | kg | m2 | m) #IMPLIED>
diff --git a/test/valid/objednavka.xml b/test/valid/objednavka.xml new file mode 100644 index 0000000..c785b1a --- /dev/null +++ b/test/valid/objednavka.xml @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE objednavka SYSTEM "dtds/objednavka.dtd">
+<objednavka>
+ <AdDoruÄŤeni>
+ <Jméno>Jan Novák</Jméno>
+ <Ulice>Bělehradská 147</Ulice>
+ <Město>Praha 2</Město>
+ <PSÄŚ>12000</PSÄŚ>
+ </AdDoruÄŤeni>
+ <AdÚčtovacĂ>
+ <Jméno>Petra Nováková</Jméno>
+ <Ulice>Anglická 15</Ulice>
+ <Město>Praha 2</Město>
+ <PSÄŚ>12000</PSÄŚ>
+ </AdÚčtovacĂ>
+ <ZpĹŻsobDopravy>DPD</ZpĹŻsobDopravy>
+ <ZpĹŻsobPlatby>dobĂrka</ZpĹŻsobPlatby>
+ <DatumPĹ™ijetĂ>2004-11-14</DatumPĹ™ijetĂ>
+ <DatumDoruÄŤenĂ>2004-11-19</DatumDoruÄŤenĂ>
+ <ObsahObjednávky>
+ <ZboĹľĂ>
+ <KĂłd>2N7-516</KĂłd>
+ <Název>Sekačka na trávu</Název>
+ <PoÄŤet jednotka="ks">1</PoÄŤet>
+ <Cena>2999</Cena>
+ <Popis>http://example.org/sekacka.html</Popis>
+ </ZboĹľĂ>
+ <ZboĹľĂ>
+ <KĂłd>Q3Y-116</KĂłd>
+ <Název>Travnà semeno</Název>
+ <PoÄŤet jednotka="kg">2.5</PoÄŤet>
+ <Cena>127.50</Cena>
+ </ZboĹľĂ>
+ </ObsahObjednávky>
+ <Komentář>
+ <Ĺádka>O dodávku mám zájem pouze v pĹ™ĂpadÄ›, Ĺľe se jedná o trávu v odrĹŻdÄ› konopĂ.</Ĺádka>
+ <Ĺádka>Dále jsem se chtÄ›l zeptat, zda je doprava zdarma.</Ĺádka>
+ </Komentář>
+</objednavka>
@@ -63,7 +63,7 @@ test_c14n(const char* xml_filename, int with_comments, int exclusive, xmlLoadExtDtdDefaultValue = XML_DETECT_IDS | XML_COMPLETE_ATTRS; xmlSubstituteEntitiesDefault(1); - doc = xmlParseFile(xml_filename); + doc = xmlReadFile(xml_filename, NULL, XML_PARSE_DTDATTR | XML_PARSE_NOENT); if (doc == NULL) { fprintf(stderr, "Error: unable to parse file \"%s\"\n", xml_filename); return(-1); @@ -237,7 +237,7 @@ load_xpath_expr (xmlDocPtr parent_doc, const char* filename) { xmlLoadExtDtdDefaultValue = XML_DETECT_IDS | XML_COMPLETE_ATTRS; xmlSubstituteEntitiesDefault(1); - doc = xmlParseFile(filename); + doc = xmlReadFile(filename, NULL, XML_PARSE_DTDATTR | XML_PARSE_NOENT); if (doc == NULL) { fprintf(stderr, "Error: unable to parse file \"%s\"\n", filename); return(NULL); @@ -50,7 +50,7 @@ static int push = 0; static char *encoding = NULL; static int options = 0; -xmlSAXHandler emptySAXHandlerStruct = { +static xmlSAXHandler emptySAXHandlerStruct = { NULL, /* internalSubset */ NULL, /* isStandalone */ NULL, /* hasInternalSubset */ @@ -85,7 +85,7 @@ xmlSAXHandler emptySAXHandlerStruct = { NULL /* xmlStructuredErrorFunc */ }; -xmlSAXHandlerPtr emptySAXHandler = &emptySAXHandlerStruct; +static xmlSAXHandlerPtr emptySAXHandler = &emptySAXHandlerStruct; extern xmlSAXHandlerPtr debugSAXHandler; /************************************************************************ @@ -523,7 +523,7 @@ commentDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *value) * Display and format a warning messages, gives file, line, position and * extra parameters. */ -static void +static void XMLCDECL warningDebug(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) { va_list args; @@ -543,7 +543,7 @@ warningDebug(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) * Display and format a error messages, gives file, line, position and * extra parameters. */ -static void +static void XMLCDECL errorDebug(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) { va_list args; @@ -563,7 +563,7 @@ errorDebug(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) * Display and format a fatalError messages, gives file, line, position and * extra parameters. */ -static void +static void XMLCDECL fatalErrorDebug(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) { va_list args; @@ -574,7 +574,7 @@ fatalErrorDebug(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) va_end(args); } -xmlSAXHandler debugSAXHandlerStruct = { +static xmlSAXHandler debugSAXHandlerStruct = { internalSubsetDebug, isStandaloneDebug, hasInternalSubsetDebug, diff --git a/testReader.c b/testReader.c index 4d5711b..8f8e26d 100644 --- a/testReader.c +++ b/testReader.c @@ -34,12 +34,12 @@ #include <libxml/xmlreader.h> -int debug = 0; -int dump = 0; -int noent = 0; -int count = 0; -int valid = 0; -int consumed = 0; +static int debug = 0; +static int dump = 0; +static int noent = 0; +static int count = 0; +static int valid = 0; +static int consumed = 0; static void usage(const char *progname) { printf("Usage : %s [options] XMLfiles ...\n", progname); diff --git a/testRegexp.c b/testRegexp.c index 7f34414..ff9c0fc 100644 --- a/testRegexp.c +++ b/testRegexp.c @@ -12,8 +12,8 @@ #include <libxml/tree.h> #include <libxml/xmlregexp.h> -int repeat = 0; -int debug = 0; +static int repeat = 0; +static int debug = 0; static void testRegexp(xmlRegexpPtr comp, const char *value) { int ret; @@ -85,13 +85,194 @@ testRegexpFile(const char *filename) { xmlRegFreeRegexp(comp); } +#ifdef LIBXML_EXPR_ENABLED +static void +runFileTest(xmlExpCtxtPtr ctxt, const char *filename) { + xmlExpNodePtr expr = NULL, sub; + FILE *input; + char expression[5000]; + int len; + + input = fopen(filename, "r"); + if (input == NULL) { + xmlGenericError(xmlGenericErrorContext, + "Cannot open %s for reading\n", filename); + return; + } + while (fgets(expression, 4500, input) != NULL) { + len = strlen(expression); + len--; + while ((len >= 0) && + ((expression[len] == '\n') || (expression[len] == '\t') || + (expression[len] == '\r') || (expression[len] == ' '))) len--; + expression[len + 1] = 0; + if (len >= 0) { + if (expression[0] == '#') + continue; + if ((expression[0] == '=') && (expression[1] == '>')) { + char *str = &expression[2]; + + if (expr != NULL) { + xmlExpFree(ctxt, expr); + if (xmlExpCtxtNbNodes(ctxt) != 0) + printf(" Parse/free of Expression leaked %d\n", + xmlExpCtxtNbNodes(ctxt)); + expr = NULL; + } + printf("Expression: %s\n", str) ; + expr = xmlExpParse(ctxt, str); + if (expr == NULL) { + printf(" parsing Failed\n"); + break; + } + } else if (expr != NULL) { + int expect = -1; + int nodes1, nodes2; + + if (expression[0] == '0') + expect = 0; + if (expression[0] == '1') + expect = 1; + printf("Subexp: %s", expression + 2) ; + nodes1 = xmlExpCtxtNbNodes(ctxt); + sub = xmlExpParse(ctxt, expression + 2); + if (sub == NULL) { + printf(" parsing Failed\n"); + break; + } else { + int ret; + + nodes2 = xmlExpCtxtNbNodes(ctxt); + ret = xmlExpSubsume(ctxt, expr, sub); + + if ((expect == 1) && (ret == 1)) { + printf(" => accept, Ok\n"); + } else if ((expect == 0) && (ret == 0)) { + printf(" => reject, Ok\n"); + } else if ((expect == 1) && (ret == 0)) { + printf(" => reject, Failed\n"); + } else if ((expect == 0) && (ret == 1)) { + printf(" => accept, Failed\n"); + } else { + printf(" => fail internally\n"); + } + if (xmlExpCtxtNbNodes(ctxt) > nodes2) { + printf(" Subsume leaked %d\n", + xmlExpCtxtNbNodes(ctxt) - nodes2); + nodes1 += xmlExpCtxtNbNodes(ctxt) - nodes2; + } + xmlExpFree(ctxt, sub); + if (xmlExpCtxtNbNodes(ctxt) > nodes1) { + printf(" Parse/free leaked %d\n", + xmlExpCtxtNbNodes(ctxt) - nodes1); + } + } + + } + } + } + if (expr != NULL) { + xmlExpFree(ctxt, expr); + if (xmlExpCtxtNbNodes(ctxt) != 0) + printf(" Parse/free of Expression leaked %d\n", + xmlExpCtxtNbNodes(ctxt)); + } + fclose(input); +} + +static void +testReduce(xmlExpCtxtPtr ctxt, xmlExpNodePtr expr, const char *tst) { + xmlBufferPtr xmlExpBuf; + xmlExpNodePtr sub, deriv; + xmlExpBuf = xmlBufferCreate(); + + sub = xmlExpParse(ctxt, tst); + if (sub == NULL) { + printf("Subset %s failed to parse\n", tst); + return; + } + xmlExpDump(xmlExpBuf, sub); + printf("Subset parsed as: %s\n", + (const char *) xmlBufferContent(xmlExpBuf)); + deriv = xmlExpExpDerive(ctxt, expr, sub); + if (deriv == NULL) { + printf("Derivation led to an internal error, report this !\n"); + return; + } else { + xmlBufferEmpty(xmlExpBuf); + xmlExpDump(xmlExpBuf, deriv); + if (xmlExpIsNillable(deriv)) + printf("Resulting nillable derivation: %s\n", + (const char *) xmlBufferContent(xmlExpBuf)); + else + printf("Resulting derivation: %s\n", + (const char *) xmlBufferContent(xmlExpBuf)); + xmlExpFree(ctxt, deriv); + } + xmlExpFree(ctxt, sub); +} + +static void +exprDebug(xmlExpCtxtPtr ctxt, xmlExpNodePtr expr) { + xmlBufferPtr xmlExpBuf; + xmlExpNodePtr deriv; + const char *list[40]; + int ret; + + xmlExpBuf = xmlBufferCreate(); + + if (expr == NULL) { + printf("Failed to parse\n"); + return; + } + xmlExpDump(xmlExpBuf, expr); + printf("Parsed as: %s\n", (const char *) xmlBufferContent(xmlExpBuf)); + printf("Max token input = %d\n", xmlExpMaxToken(expr)); + if (xmlExpIsNillable(expr) == 1) + printf("Is nillable\n"); + ret = xmlExpGetLanguage(ctxt, expr, (const xmlChar **) &list[0], 40); + if (ret < 0) + printf("Failed to get list: %d\n", ret); + else { + int i; + + printf("Language has %d strings, testing string derivations\n", ret); + for (i = 0;i < ret;i++) { + deriv = xmlExpStringDerive(ctxt, expr, BAD_CAST list[i], -1); + if (deriv == NULL) { + printf(" %s -> derivation failed\n", list[i]); + } else { + xmlBufferEmpty(xmlExpBuf); + xmlExpDump(xmlExpBuf, deriv); + printf(" %s -> %s\n", list[i], + (const char *) xmlBufferContent(xmlExpBuf)); + } + xmlExpFree(ctxt, deriv); + } + } + xmlBufferFree(xmlExpBuf); +} +#endif static void usage(const char *name) { - fprintf(stderr, "Usage: %s\n", name); + fprintf(stderr, "Usage: %s [flags]\n", name); + fprintf(stderr, "Testing tool for libxml2 string and pattern regexps\n"); + fprintf(stderr, " --debug: switch on debugging\n"); + fprintf(stderr, " --repeat: loop on the operation\n"); +#ifdef LIBXML_EXPR_ENABLED + fprintf(stderr, " --expr: test xmlExp and not xmlRegexp\n"); +#endif + fprintf(stderr, " --input filename: use the given filename for regexp\n"); + fprintf(stderr, " --input filename: use the given filename for exp\n"); } int main(int argc, char **argv) { xmlRegexpPtr comp = NULL; +#ifdef LIBXML_EXPR_ENABLED + xmlExpNodePtr expr = NULL; + int use_exp = 0; + xmlExpCtxtPtr ctxt = NULL; +#endif const char *pattern = NULL; char *filename = NULL; int i; @@ -113,39 +294,88 @@ int main(int argc, char **argv) { } else if ((!strcmp(argv[i], "-repeat")) || (!strcmp(argv[i], "--repeat"))) { repeat++; - } else if ((!strcmp(argv[i], "-i")) || (!strcmp(argv[i], "--input"))) +#ifdef LIBXML_EXPR_ENABLED + } else if ((!strcmp(argv[i], "-expr")) || + (!strcmp(argv[i], "--expr"))) { + use_exp++; +#endif + } else if ((!strcmp(argv[i], "-i")) || (!strcmp(argv[i], "-f")) || + (!strcmp(argv[i], "--input"))) filename = argv[++i]; else { fprintf(stderr, "Unknown option %s\n", argv[i]); usage(argv[0]); } } + +#ifdef LIBXML_EXPR_ENABLED + if (use_exp) + ctxt = xmlExpNewCtxt(0, NULL); +#endif + if (filename != NULL) { - testRegexpFile(filename); +#ifdef LIBXML_EXPR_ENABLED + if (use_exp) + runFileTest(ctxt, filename); + else +#endif + testRegexpFile(filename); } else { - for (i = 1; i < argc ; i++) { - if ((argv[i][0] != '-') || (strcmp(argv[i], "-") == 0)) { - if (pattern == NULL) { - pattern = argv[i]; - printf("Testing %s:\n", pattern); - comp = xmlRegexpCompile((const xmlChar *) pattern); - if (comp == NULL) { - printf(" failed to compile\n"); - break; +#ifdef LIBXML_EXPR_ENABLED + if (use_exp) { + for (i = 1; i < argc ; i++) { + if ((argv[i][0] != '-') || (strcmp(argv[i], "-") == 0)) { + if (pattern == NULL) { + pattern = argv[i]; + printf("Testing expr %s:\n", pattern); + expr = xmlExpParse(ctxt, pattern); + if (expr == NULL) { + printf(" failed to compile\n"); + break; + } + if (debug) { + exprDebug(ctxt, expr); + } + } else { + testReduce(ctxt, expr, argv[i]); } - if (debug) - xmlRegexpPrint(stdout, comp); - } else { - testRegexp(comp, argv[i]); } } - } - xmlMemoryDump(); - if (comp != NULL) - xmlRegFreeRegexp(comp); + if (expr != NULL) + xmlExpFree(ctxt, expr); + } else +#endif + { + for (i = 1; i < argc ; i++) { + if ((argv[i][0] != '-') || (strcmp(argv[i], "-") == 0)) { + if (pattern == NULL) { + pattern = argv[i]; + printf("Testing %s:\n", pattern); + comp = xmlRegexpCompile((const xmlChar *) pattern); + if (comp == NULL) { + printf(" failed to compile\n"); + break; + } + if (debug) + xmlRegexpPrint(stdout, comp); + } else { + testRegexp(comp, argv[i]); + } + } + } + if (comp != NULL) + xmlRegFreeRegexp(comp); + } + } +#ifdef LIBXML_EXPR_ENABLED + if (ctxt != NULL) { + printf("Ops: %d nodes, %d cons\n", + xmlExpCtxtNbNodes(ctxt), xmlExpCtxtNbCons(ctxt)); + xmlExpFreeCtxt(ctxt); } +#endif xmlCleanupParser(); - /* xmlMemoryDump(); */ + xmlMemoryDump(); return(0); } @@ -113,7 +113,7 @@ startTimer(void) * message about the timing performed; format is a printf * type argument */ -static void +static void XMLCDECL endTimer(const char *fmt, ...) { long msec; @@ -149,7 +149,7 @@ startTimer(void) { begin = clock(); } -static void +static void XMLCDECL endTimer(const char *fmt, ...) { long msec; @@ -178,7 +178,7 @@ startTimer(void) * Do nothing */ } -static void +static void XMLCDECL endTimer(char *format, ...) { /* @@ -200,7 +200,7 @@ endTimer(char *format, ...) /* * empty SAX block */ -xmlSAXHandler emptySAXHandlerStruct = { +static xmlSAXHandler emptySAXHandlerStruct = { NULL, /* internalSubset */ NULL, /* isStandalone */ NULL, /* hasInternalSubset */ @@ -235,7 +235,7 @@ xmlSAXHandler emptySAXHandlerStruct = { NULL /* xmlStructuredErrorFunc */ }; -xmlSAXHandlerPtr emptySAXHandler = &emptySAXHandlerStruct; +static xmlSAXHandlerPtr emptySAXHandler = &emptySAXHandlerStruct; extern xmlSAXHandlerPtr debugSAXHandler; /************************************************************************ @@ -773,7 +773,7 @@ commentDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *value) * Display and format a warning messages, gives file, line, position and * extra parameters. */ -static void +static void XMLCDECL warningDebug(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) { va_list args; @@ -796,7 +796,7 @@ warningDebug(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) * Display and format a error messages, gives file, line, position and * extra parameters. */ -static void +static void XMLCDECL errorDebug(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) { va_list args; @@ -819,7 +819,7 @@ errorDebug(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) * Display and format a fatalError messages, gives file, line, position and * extra parameters. */ -static void +static void XMLCDECL fatalErrorDebug(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) { va_list args; @@ -833,7 +833,7 @@ fatalErrorDebug(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) va_end(args); } -xmlSAXHandler debugSAXHandlerStruct = { +static xmlSAXHandler debugSAXHandlerStruct = { internalSubsetDebug, isStandaloneDebug, hasInternalSubsetDebug, @@ -957,7 +957,7 @@ endElementNsDebug(void *ctx ATTRIBUTE_UNUSED, fprintf(stdout, ", '%s')\n", (char *) URI); } -xmlSAXHandler debugSAX2HandlerStruct = { +static xmlSAXHandler debugSAX2HandlerStruct = { internalSubsetDebug, isStandaloneDebug, hasInternalSubsetDebug, @@ -992,7 +992,7 @@ xmlSAXHandler debugSAX2HandlerStruct = { NULL }; -xmlSAXHandlerPtr debugSAX2Handler = &debugSAX2HandlerStruct; +static xmlSAXHandlerPtr debugSAX2Handler = &debugSAX2HandlerStruct; /************************************************************************ * * diff --git a/testThreads.c b/testThreads.c index 7147182..6405a77 100644 --- a/testThreads.c +++ b/testThreads.c @@ -36,8 +36,8 @@ static const char *testfiles[] = { "test/threads/invalid.xml", }; -const char *Okay = "OK"; -const char *Failed = "Failed"; +static const char *Okay = "OK"; +static const char *Failed = "Failed"; #ifndef xmlDoValidityCheckingDefaultValue #error xmlDoValidityCheckingDefaultValue is not a macro @@ -110,7 +110,7 @@ main(void) } for (i = 0; i < num_threads; i++) { - ret = pthread_create(&tid[i], 0, thread_specific_data, + ret = pthread_create(&tid[i], NULL, thread_specific_data, (void *) testfiles[i]); if (ret != 0) { perror("pthread_create"); diff --git a/testXPath.c b/testXPath.c index 8086a81..677419a 100644 --- a/testXPath.c +++ b/testXPath.c @@ -178,9 +178,9 @@ int main(int argc, char **argv) { } if (document == NULL) { if (filename == NULL) - document = xmlReadDoc(buffer,NULL,NULL,0); + document = xmlReadDoc(buffer,NULL,NULL,XML_PARSE_COMPACT); else - document = xmlReadFile(filename,NULL,0); + document = xmlReadFile(filename,NULL,XML_PARSE_COMPACT); } for (i = 1; i < argc ; i++) { if ((!strcmp(argv[i], "-i")) || (!strcmp(argv[i], "--input"))) { @@ -171,6 +171,7 @@ int main(int argc, char **argv) { #include <libxml/pattern.h> #include <libxml/relaxng.h> #include <libxml/schemasInternals.h> +#include <libxml/schematron.h> #include <libxml/tree.h> #include <libxml/uri.h> #include <libxml/valid.h> @@ -1051,23 +1052,20 @@ static xmlElementTypeVal gen_xmlElementTypeVal(int no, int nr ATTRIBUTE_UNUSED) static void des_xmlElementTypeVal(int no ATTRIBUTE_UNUSED, xmlElementTypeVal val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) { } -static void desret_xmlParserErrors(xmlParserErrors val ATTRIBUTE_UNUSED) { -} - -#ifdef LIBXML_PATTERN_ENABLED -#define gen_nb_xmlPatternFlags 4 -static xmlPatternFlags gen_xmlPatternFlags(int no, int nr ATTRIBUTE_UNUSED) { - if (no == 1) return(XML_PATTERN_DEFAULT); - if (no == 2) return(XML_PATTERN_XPATH); - if (no == 3) return(XML_PATTERN_XSFIELD); - if (no == 4) return(XML_PATTERN_XSSEL); +#define gen_nb_xmlFeature 4 +static xmlFeature gen_xmlFeature(int no, int nr ATTRIBUTE_UNUSED) { + if (no == 1) return(XML_FEATURE_AUTOMATA); + if (no == 2) return(XML_FEATURE_C14N); + if (no == 3) return(XML_FEATURE_CATALOG); + if (no == 4) return(XML_FEATURE_DEBUG); return(0); } -static void des_xmlPatternFlags(int no ATTRIBUTE_UNUSED, xmlPatternFlags val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) { +static void des_xmlFeature(int no ATTRIBUTE_UNUSED, xmlFeature val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) { } -#endif +static void desret_xmlParserErrors(xmlParserErrors val ATTRIBUTE_UNUSED) { +} #ifdef LIBXML_SCHEMAS_ENABLED #define gen_nb_xmlSchemaValType 4 @@ -1121,6 +1119,7 @@ static void des_xmlSchemaWhitespaceValueType(int no ATTRIBUTE_UNUSED, xmlSchemaW #include <libxml/pattern.h> #include <libxml/relaxng.h> #include <libxml/schemasInternals.h> +#include <libxml/schematron.h> #include <libxml/tree.h> #include <libxml/uri.h> #include <libxml/valid.h> @@ -1159,6 +1158,7 @@ static int test_parserInternals(void); static int test_pattern(void); static int test_relaxng(void); static int test_schemasInternals(void); +static int test_schematron(void); static int test_tree(void); static int test_uri(void); static int test_valid(void); @@ -1211,6 +1211,7 @@ testlibxml2(void) test_ret += test_pattern(); test_ret += test_relaxng(); test_ret += test_schemasInternals(); + test_ret += test_schematron(); test_ret += test_tree(); test_ret += test_uri(); test_ret += test_valid(); @@ -3924,7 +3925,7 @@ static int test_xmlSAX2EndElement(void) { int test_ret = 0; -#if defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) +#if defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED) #ifdef LIBXML_SAX1_ENABLED int mem_base; void * ctx; /* the user data (XML parser context) */ @@ -4889,7 +4890,7 @@ static int test_xmlSAX2StartElement(void) { int test_ret = 0; -#if defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) +#if defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED) #ifdef LIBXML_SAX1_ENABLED int mem_base; void * ctx; /* the user data (XML parser context) */ @@ -12985,6 +12986,38 @@ test_xmlGetFeaturesList(void) { static int +test_xmlHasFeature(void) { + int test_ret = 0; + + int mem_base; + int ret_val; + xmlFeature feature; /* the feature to be examined */ + int n_feature; + + for (n_feature = 0;n_feature < gen_nb_xmlFeature;n_feature++) { + mem_base = xmlMemBlocks(); + feature = gen_xmlFeature(n_feature, 0); + + ret_val = xmlHasFeature(feature); + desret_int(ret_val); + call_tests++; + des_xmlFeature(n_feature, feature, 0); + xmlResetLastError(); + if (mem_base != xmlMemBlocks()) { + printf("Leak of %d blocks found in xmlHasFeature", + xmlMemBlocks() - mem_base); + test_ret++; + printf(" %d", n_feature); + printf("\n"); + } + } + function_tests++; + + return(test_ret); +} + + +static int test_xmlIOParseDTD(void) { int test_ret = 0; @@ -15172,7 +15205,7 @@ static int test_parser(void) { int test_ret = 0; - if (quiet == 0) printf("Testing parser : 60 of 69 functions ...\n"); + if (quiet == 0) printf("Testing parser : 61 of 70 functions ...\n"); test_ret += test_xmlByteConsumed(); test_ret += test_xmlClearNodeInfoSeq(); test_ret += test_xmlClearParserCtxt(); @@ -15187,6 +15220,7 @@ test_parser(void) { test_ret += test_xmlGetExternalEntityLoader(); test_ret += test_xmlGetFeature(); test_ret += test_xmlGetFeaturesList(); + test_ret += test_xmlHasFeature(); test_ret += test_xmlIOParseDTD(); test_ret += test_xmlInitNodeInfoSeq(); test_ret += test_xmlInitParser(); @@ -16710,6 +16744,40 @@ test_xmlPatternMaxDepth(void) { static int +test_xmlPatternMinDepth(void) { + int test_ret = 0; + +#if defined(LIBXML_PATTERN_ENABLED) + int mem_base; + int ret_val; + xmlPatternPtr comp; /* the precompiled pattern */ + int n_comp; + + for (n_comp = 0;n_comp < gen_nb_xmlPatternPtr;n_comp++) { + mem_base = xmlMemBlocks(); + comp = gen_xmlPatternPtr(n_comp, 0); + + ret_val = xmlPatternMinDepth(comp); + desret_int(ret_val); + call_tests++; + des_xmlPatternPtr(n_comp, comp, 0); + xmlResetLastError(); + if (mem_base != xmlMemBlocks()) { + printf("Leak of %d blocks found in xmlPatternMinDepth", + xmlMemBlocks() - mem_base); + test_ret++; + printf(" %d", n_comp); + printf("\n"); + } + } + function_tests++; +#endif + + return(test_ret); +} + + +static int test_xmlPatternStreamable(void) { int test_ret = 0; @@ -16896,11 +16964,12 @@ static int test_pattern(void) { int test_ret = 0; - if (quiet == 0) printf("Testing pattern : 7 of 12 functions ...\n"); + if (quiet == 0) printf("Testing pattern : 8 of 13 functions ...\n"); test_ret += test_xmlPatternFromRoot(); test_ret += test_xmlPatternGetStreamCtxt(); test_ret += test_xmlPatternMatch(); test_ret += test_xmlPatternMaxDepth(); + test_ret += test_xmlPatternMinDepth(); test_ret += test_xmlPatternStreamable(); test_ret += test_xmlPatterncompile(); test_ret += test_xmlStreamPop(); @@ -17337,6 +17406,16 @@ test_xmlRelaxNGSetValidErrors(void) { static int +test_xmlRelaxNGSetValidStructuredErrors(void) { + int test_ret = 0; + + + /* missing type support */ + return(test_ret); +} + + +static int test_xmlRelaxNGValidateDoc(void) { int test_ret = 0; @@ -17613,7 +17692,7 @@ static int test_relaxng(void) { int test_ret = 0; - if (quiet == 0) printf("Testing relaxng : 14 of 22 functions ...\n"); + if (quiet == 0) printf("Testing relaxng : 14 of 23 functions ...\n"); test_ret += test_xmlRelaxNGDump(); test_ret += test_xmlRelaxNGDumpTree(); test_ret += test_xmlRelaxNGGetParserErrors(); @@ -17626,6 +17705,7 @@ test_relaxng(void) { test_ret += test_xmlRelaxNGParse(); test_ret += test_xmlRelaxNGSetParserErrors(); test_ret += test_xmlRelaxNGSetValidErrors(); + test_ret += test_xmlRelaxNGSetValidStructuredErrors(); test_ret += test_xmlRelaxNGValidateDoc(); test_ret += test_xmlRelaxNGValidateFullElement(); test_ret += test_xmlRelaxNGValidatePopElement(); @@ -17649,6 +17729,134 @@ test_schemasInternals(void) { } static int +test_xmlSchematronNewDocParserCtxt(void) { + int test_ret = 0; + + + /* missing type support */ + return(test_ret); +} + + +static int +test_xmlSchematronNewMemParserCtxt(void) { + int test_ret = 0; + + + /* missing type support */ + return(test_ret); +} + + +static int +test_xmlSchematronNewParserCtxt(void) { + int test_ret = 0; + + + /* missing type support */ + return(test_ret); +} + + +#define gen_nb_xmlSchematronPtr 1 +static xmlSchematronPtr gen_xmlSchematronPtr(int no ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) { + return(NULL); +} +static void des_xmlSchematronPtr(int no ATTRIBUTE_UNUSED, xmlSchematronPtr val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) { +} + +static int +test_xmlSchematronNewValidCtxt(void) { + int test_ret = 0; + + + /* missing type support */ + return(test_ret); +} + + +#define gen_nb_xmlSchematronParserCtxtPtr 1 +static xmlSchematronParserCtxtPtr gen_xmlSchematronParserCtxtPtr(int no ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) { + return(NULL); +} +static void des_xmlSchematronParserCtxtPtr(int no ATTRIBUTE_UNUSED, xmlSchematronParserCtxtPtr val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) { +} + +static int +test_xmlSchematronParse(void) { + int test_ret = 0; + + + /* missing type support */ + return(test_ret); +} + + +#define gen_nb_xmlSchematronValidCtxtPtr 1 +static xmlSchematronValidCtxtPtr gen_xmlSchematronValidCtxtPtr(int no ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) { + return(NULL); +} +static void des_xmlSchematronValidCtxtPtr(int no ATTRIBUTE_UNUSED, xmlSchematronValidCtxtPtr val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) { +} + +static int +test_xmlSchematronValidateDoc(void) { + int test_ret = 0; + +#if defined(LIBXML_SCHEMATRON_ENABLED) + int mem_base; + int ret_val; + xmlSchematronValidCtxtPtr ctxt; /* the schema validation context */ + int n_ctxt; + xmlDocPtr instance; /* the document instace tree */ + int n_instance; + + for (n_ctxt = 0;n_ctxt < gen_nb_xmlSchematronValidCtxtPtr;n_ctxt++) { + for (n_instance = 0;n_instance < gen_nb_xmlDocPtr;n_instance++) { + mem_base = xmlMemBlocks(); + ctxt = gen_xmlSchematronValidCtxtPtr(n_ctxt, 0); + instance = gen_xmlDocPtr(n_instance, 1); + + ret_val = xmlSchematronValidateDoc(ctxt, instance); + desret_int(ret_val); + call_tests++; + des_xmlSchematronValidCtxtPtr(n_ctxt, ctxt, 0); + des_xmlDocPtr(n_instance, instance, 1); + xmlResetLastError(); + if (mem_base != xmlMemBlocks()) { + printf("Leak of %d blocks found in xmlSchematronValidateDoc", + xmlMemBlocks() - mem_base); + test_ret++; + printf(" %d", n_ctxt); + printf(" %d", n_instance); + printf("\n"); + } + } + } + function_tests++; +#endif + + return(test_ret); +} + +static int +test_schematron(void) { + int test_ret = 0; + + if (quiet == 0) printf("Testing schematron : 1 of 9 functions ...\n"); + test_ret += test_xmlSchematronNewDocParserCtxt(); + test_ret += test_xmlSchematronNewMemParserCtxt(); + test_ret += test_xmlSchematronNewParserCtxt(); + test_ret += test_xmlSchematronNewValidCtxt(); + test_ret += test_xmlSchematronParse(); + test_ret += test_xmlSchematronValidateDoc(); + + if (test_ret != 0) + printf("Module schematron: %d errors\n", test_ret); + return(test_ret); +} + +static int test_xmlAddChild(void) { int test_ret = 0; @@ -23558,6 +23766,16 @@ test_xmlParseURI(void) { } +static int +test_xmlParseURIRaw(void) { + int test_ret = 0; + + + /* missing type support */ + return(test_ret); +} + + #define gen_nb_xmlURIPtr 1 static xmlURIPtr gen_xmlURIPtr(int no ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) { return(NULL); @@ -23757,13 +23975,14 @@ static int test_uri(void) { int test_ret = 0; - if (quiet == 0) printf("Testing uri : 9 of 13 functions ...\n"); + if (quiet == 0) printf("Testing uri : 9 of 14 functions ...\n"); test_ret += test_xmlBuildRelativeURI(); test_ret += test_xmlBuildURI(); test_ret += test_xmlCanonicPath(); test_ret += test_xmlCreateURI(); test_ret += test_xmlNormalizeURIPath(); test_ret += test_xmlParseURI(); + test_ret += test_xmlParseURIRaw(); test_ret += test_xmlParseURIReference(); test_ret += test_xmlPrintURI(); test_ret += test_xmlSaveUri(); @@ -28226,6 +28445,16 @@ test_xmlAutomataNewEpsilon(void) { static int +test_xmlAutomataNewNegTrans(void) { + int test_ret = 0; + + + /* missing type support */ + return(test_ret); +} + + +static int test_xmlAutomataNewOnceTrans(void) { int test_ret = 0; @@ -28329,7 +28558,7 @@ static int test_xmlautomata(void) { int test_ret = 0; - if (quiet == 0) printf("Testing xmlautomata : 3 of 18 functions ...\n"); + if (quiet == 0) printf("Testing xmlautomata : 3 of 19 functions ...\n"); test_ret += test_xmlAutomataCompile(); test_ret += test_xmlAutomataGetInitState(); test_ret += test_xmlAutomataIsDeterminist(); @@ -28340,6 +28569,7 @@ test_xmlautomata(void) { test_ret += test_xmlAutomataNewCounter(); test_ret += test_xmlAutomataNewCounterTrans(); test_ret += test_xmlAutomataNewEpsilon(); + test_ret += test_xmlAutomataNewNegTrans(); test_ret += test_xmlAutomataNewOnceTrans(); test_ret += test_xmlAutomataNewOnceTrans2(); test_ret += test_xmlAutomataNewState(); @@ -31707,6 +31937,471 @@ test_xmlreader(void) { } #ifdef LIBXML_REGEXP_ENABLED +#define gen_nb_xmlExpCtxtPtr 1 +static xmlExpCtxtPtr gen_xmlExpCtxtPtr(int no ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) { + return(NULL); +} +static void des_xmlExpCtxtPtr(int no ATTRIBUTE_UNUSED, xmlExpCtxtPtr val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) { +} +#endif + + +static int +test_xmlExpCtxtNbCons(void) { + int test_ret = 0; + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) + int mem_base; + int ret_val; + xmlExpCtxtPtr ctxt; /* an expression context */ + int n_ctxt; + + for (n_ctxt = 0;n_ctxt < gen_nb_xmlExpCtxtPtr;n_ctxt++) { + mem_base = xmlMemBlocks(); + ctxt = gen_xmlExpCtxtPtr(n_ctxt, 0); + + ret_val = xmlExpCtxtNbCons(ctxt); + desret_int(ret_val); + call_tests++; + des_xmlExpCtxtPtr(n_ctxt, ctxt, 0); + xmlResetLastError(); + if (mem_base != xmlMemBlocks()) { + printf("Leak of %d blocks found in xmlExpCtxtNbCons", + xmlMemBlocks() - mem_base); + test_ret++; + printf(" %d", n_ctxt); + printf("\n"); + } + } + function_tests++; +#endif + + return(test_ret); +} + + +static int +test_xmlExpCtxtNbNodes(void) { + int test_ret = 0; + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) + int mem_base; + int ret_val; + xmlExpCtxtPtr ctxt; /* an expression context */ + int n_ctxt; + + for (n_ctxt = 0;n_ctxt < gen_nb_xmlExpCtxtPtr;n_ctxt++) { + mem_base = xmlMemBlocks(); + ctxt = gen_xmlExpCtxtPtr(n_ctxt, 0); + + ret_val = xmlExpCtxtNbNodes(ctxt); + desret_int(ret_val); + call_tests++; + des_xmlExpCtxtPtr(n_ctxt, ctxt, 0); + xmlResetLastError(); + if (mem_base != xmlMemBlocks()) { + printf("Leak of %d blocks found in xmlExpCtxtNbNodes", + xmlMemBlocks() - mem_base); + test_ret++; + printf(" %d", n_ctxt); + printf("\n"); + } + } + function_tests++; +#endif + + return(test_ret); +} + +#ifdef LIBXML_REGEXP_ENABLED + +#define gen_nb_xmlExpNodePtr 1 +static xmlExpNodePtr gen_xmlExpNodePtr(int no ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) { + return(NULL); +} +static void des_xmlExpNodePtr(int no ATTRIBUTE_UNUSED, xmlExpNodePtr val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) { +} +#endif + + +static int +test_xmlExpDump(void) { + int test_ret = 0; + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) + int mem_base; + xmlBufferPtr buf; /* a buffer to receive the output */ + int n_buf; + xmlExpNodePtr expr; /* the compiled expression */ + int n_expr; + + for (n_buf = 0;n_buf < gen_nb_xmlBufferPtr;n_buf++) { + for (n_expr = 0;n_expr < gen_nb_xmlExpNodePtr;n_expr++) { + mem_base = xmlMemBlocks(); + buf = gen_xmlBufferPtr(n_buf, 0); + expr = gen_xmlExpNodePtr(n_expr, 1); + + xmlExpDump(buf, expr); + call_tests++; + des_xmlBufferPtr(n_buf, buf, 0); + des_xmlExpNodePtr(n_expr, expr, 1); + xmlResetLastError(); + if (mem_base != xmlMemBlocks()) { + printf("Leak of %d blocks found in xmlExpDump", + xmlMemBlocks() - mem_base); + test_ret++; + printf(" %d", n_buf); + printf(" %d", n_expr); + printf("\n"); + } + } + } + function_tests++; +#endif + + return(test_ret); +} + + +static int +test_xmlExpExpDerive(void) { + int test_ret = 0; + + + /* missing type support */ + return(test_ret); +} + + +static int +test_xmlExpGetLanguage(void) { + int test_ret = 0; + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) + int mem_base; + int ret_val; + xmlExpCtxtPtr ctxt; /* the expression context */ + int n_ctxt; + xmlExpNodePtr exp; /* the expression */ + int n_exp; + xmlChar ** list; /* where to store the tokens */ + int n_list; + int len; /* the allocated lenght of @list */ + int n_len; + + for (n_ctxt = 0;n_ctxt < gen_nb_xmlExpCtxtPtr;n_ctxt++) { + for (n_exp = 0;n_exp < gen_nb_xmlExpNodePtr;n_exp++) { + for (n_list = 0;n_list < gen_nb_const_xmlChar_ptr_ptr;n_list++) { + for (n_len = 0;n_len < gen_nb_int;n_len++) { + mem_base = xmlMemBlocks(); + ctxt = gen_xmlExpCtxtPtr(n_ctxt, 0); + exp = gen_xmlExpNodePtr(n_exp, 1); + list = gen_const_xmlChar_ptr_ptr(n_list, 2); + len = gen_int(n_len, 3); + + ret_val = xmlExpGetLanguage(ctxt, exp, (const xmlChar **)list, len); + desret_int(ret_val); + call_tests++; + des_xmlExpCtxtPtr(n_ctxt, ctxt, 0); + des_xmlExpNodePtr(n_exp, exp, 1); + des_const_xmlChar_ptr_ptr(n_list, (const xmlChar **)list, 2); + des_int(n_len, len, 3); + xmlResetLastError(); + if (mem_base != xmlMemBlocks()) { + printf("Leak of %d blocks found in xmlExpGetLanguage", + xmlMemBlocks() - mem_base); + test_ret++; + printf(" %d", n_ctxt); + printf(" %d", n_exp); + printf(" %d", n_list); + printf(" %d", n_len); + printf("\n"); + } + } + } + } + } + function_tests++; +#endif + + return(test_ret); +} + + +static int +test_xmlExpGetStart(void) { + int test_ret = 0; + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) + int mem_base; + int ret_val; + xmlExpCtxtPtr ctxt; /* the expression context */ + int n_ctxt; + xmlExpNodePtr exp; /* the expression */ + int n_exp; + xmlChar ** list; /* where to store the tokens */ + int n_list; + int len; /* the allocated lenght of @list */ + int n_len; + + for (n_ctxt = 0;n_ctxt < gen_nb_xmlExpCtxtPtr;n_ctxt++) { + for (n_exp = 0;n_exp < gen_nb_xmlExpNodePtr;n_exp++) { + for (n_list = 0;n_list < gen_nb_const_xmlChar_ptr_ptr;n_list++) { + for (n_len = 0;n_len < gen_nb_int;n_len++) { + mem_base = xmlMemBlocks(); + ctxt = gen_xmlExpCtxtPtr(n_ctxt, 0); + exp = gen_xmlExpNodePtr(n_exp, 1); + list = gen_const_xmlChar_ptr_ptr(n_list, 2); + len = gen_int(n_len, 3); + + ret_val = xmlExpGetStart(ctxt, exp, (const xmlChar **)list, len); + desret_int(ret_val); + call_tests++; + des_xmlExpCtxtPtr(n_ctxt, ctxt, 0); + des_xmlExpNodePtr(n_exp, exp, 1); + des_const_xmlChar_ptr_ptr(n_list, (const xmlChar **)list, 2); + des_int(n_len, len, 3); + xmlResetLastError(); + if (mem_base != xmlMemBlocks()) { + printf("Leak of %d blocks found in xmlExpGetStart", + xmlMemBlocks() - mem_base); + test_ret++; + printf(" %d", n_ctxt); + printf(" %d", n_exp); + printf(" %d", n_list); + printf(" %d", n_len); + printf("\n"); + } + } + } + } + } + function_tests++; +#endif + + return(test_ret); +} + + +static int +test_xmlExpIsNillable(void) { + int test_ret = 0; + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) + int mem_base; + int ret_val; + xmlExpNodePtr exp; /* the expression */ + int n_exp; + + for (n_exp = 0;n_exp < gen_nb_xmlExpNodePtr;n_exp++) { + mem_base = xmlMemBlocks(); + exp = gen_xmlExpNodePtr(n_exp, 0); + + ret_val = xmlExpIsNillable(exp); + desret_int(ret_val); + call_tests++; + des_xmlExpNodePtr(n_exp, exp, 0); + xmlResetLastError(); + if (mem_base != xmlMemBlocks()) { + printf("Leak of %d blocks found in xmlExpIsNillable", + xmlMemBlocks() - mem_base); + test_ret++; + printf(" %d", n_exp); + printf("\n"); + } + } + function_tests++; +#endif + + return(test_ret); +} + + +static int +test_xmlExpMaxToken(void) { + int test_ret = 0; + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) + int mem_base; + int ret_val; + xmlExpNodePtr expr; /* a compiled expression */ + int n_expr; + + for (n_expr = 0;n_expr < gen_nb_xmlExpNodePtr;n_expr++) { + mem_base = xmlMemBlocks(); + expr = gen_xmlExpNodePtr(n_expr, 0); + + ret_val = xmlExpMaxToken(expr); + desret_int(ret_val); + call_tests++; + des_xmlExpNodePtr(n_expr, expr, 0); + xmlResetLastError(); + if (mem_base != xmlMemBlocks()) { + printf("Leak of %d blocks found in xmlExpMaxToken", + xmlMemBlocks() - mem_base); + test_ret++; + printf(" %d", n_expr); + printf("\n"); + } + } + function_tests++; +#endif + + return(test_ret); +} + + +static int +test_xmlExpNewAtom(void) { + int test_ret = 0; + + + /* missing type support */ + return(test_ret); +} + + +static int +test_xmlExpNewCtxt(void) { + int test_ret = 0; + + + /* missing type support */ + return(test_ret); +} + + +static int +test_xmlExpNewOr(void) { + int test_ret = 0; + + + /* missing type support */ + return(test_ret); +} + + +static int +test_xmlExpNewRange(void) { + int test_ret = 0; + + + /* missing type support */ + return(test_ret); +} + + +static int +test_xmlExpNewSeq(void) { + int test_ret = 0; + + + /* missing type support */ + return(test_ret); +} + + +static int +test_xmlExpParse(void) { + int test_ret = 0; + + + /* missing type support */ + return(test_ret); +} + + +static int +test_xmlExpRef(void) { + int test_ret = 0; + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) + int mem_base; + xmlExpNodePtr exp; /* the expression */ + int n_exp; + + for (n_exp = 0;n_exp < gen_nb_xmlExpNodePtr;n_exp++) { + mem_base = xmlMemBlocks(); + exp = gen_xmlExpNodePtr(n_exp, 0); + + xmlExpRef(exp); + call_tests++; + des_xmlExpNodePtr(n_exp, exp, 0); + xmlResetLastError(); + if (mem_base != xmlMemBlocks()) { + printf("Leak of %d blocks found in xmlExpRef", + xmlMemBlocks() - mem_base); + test_ret++; + printf(" %d", n_exp); + printf("\n"); + } + } + function_tests++; +#endif + + return(test_ret); +} + + +static int +test_xmlExpStringDerive(void) { + int test_ret = 0; + + + /* missing type support */ + return(test_ret); +} + + +static int +test_xmlExpSubsume(void) { + int test_ret = 0; + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) + int mem_base; + int ret_val; + xmlExpCtxtPtr ctxt; /* the expressions context */ + int n_ctxt; + xmlExpNodePtr exp; /* the englobing expression */ + int n_exp; + xmlExpNodePtr sub; /* the subexpression */ + int n_sub; + + for (n_ctxt = 0;n_ctxt < gen_nb_xmlExpCtxtPtr;n_ctxt++) { + for (n_exp = 0;n_exp < gen_nb_xmlExpNodePtr;n_exp++) { + for (n_sub = 0;n_sub < gen_nb_xmlExpNodePtr;n_sub++) { + mem_base = xmlMemBlocks(); + ctxt = gen_xmlExpCtxtPtr(n_ctxt, 0); + exp = gen_xmlExpNodePtr(n_exp, 1); + sub = gen_xmlExpNodePtr(n_sub, 2); + + ret_val = xmlExpSubsume(ctxt, exp, sub); + desret_int(ret_val); + call_tests++; + des_xmlExpCtxtPtr(n_ctxt, ctxt, 0); + des_xmlExpNodePtr(n_exp, exp, 1); + des_xmlExpNodePtr(n_sub, sub, 2); + xmlResetLastError(); + if (mem_base != xmlMemBlocks()) { + printf("Leak of %d blocks found in xmlExpSubsume", + xmlMemBlocks() - mem_base); + test_ret++; + printf(" %d", n_ctxt); + printf(" %d", n_exp); + printf(" %d", n_sub); + printf("\n"); + } + } + } + } + function_tests++; +#endif + + return(test_ret); +} + +#ifdef LIBXML_REGEXP_ENABLED + #define gen_nb_xmlRegExecCtxtPtr 1 static xmlRegExecCtxtPtr gen_xmlRegExecCtxtPtr(int no ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) { return(NULL); @@ -32097,7 +32792,24 @@ static int test_xmlregexp(void) { int test_ret = 0; - if (quiet == 0) printf("Testing xmlregexp : 7 of 11 functions ...\n"); + if (quiet == 0) printf("Testing xmlregexp : 16 of 30 functions ...\n"); + test_ret += test_xmlExpCtxtNbCons(); + test_ret += test_xmlExpCtxtNbNodes(); + test_ret += test_xmlExpDump(); + test_ret += test_xmlExpExpDerive(); + test_ret += test_xmlExpGetLanguage(); + test_ret += test_xmlExpGetStart(); + test_ret += test_xmlExpIsNillable(); + test_ret += test_xmlExpMaxToken(); + test_ret += test_xmlExpNewAtom(); + test_ret += test_xmlExpNewCtxt(); + test_ret += test_xmlExpNewOr(); + test_ret += test_xmlExpNewRange(); + test_ret += test_xmlExpNewSeq(); + test_ret += test_xmlExpParse(); + test_ret += test_xmlExpRef(); + test_ret += test_xmlExpStringDerive(); + test_ret += test_xmlExpSubsume(); test_ret += test_xmlRegExecErrInfo(); test_ret += test_xmlRegExecNextValues(); test_ret += test_xmlRegExecPushString(); @@ -32809,6 +33521,16 @@ test_xmlSchemaSetValidOptions(void) { static int +test_xmlSchemaSetValidStructuredErrors(void) { + int test_ret = 0; + + + /* missing type support */ + return(test_ret); +} + + +static int test_xmlSchemaValidCtxtGetOptions(void) { int test_ret = 0; @@ -33037,7 +33759,7 @@ static int test_xmlschemas(void) { int test_ret = 0; - if (quiet == 0) printf("Testing xmlschemas : 14 of 22 functions ...\n"); + if (quiet == 0) printf("Testing xmlschemas : 14 of 23 functions ...\n"); test_ret += test_xmlSchemaDump(); test_ret += test_xmlSchemaGetParserErrors(); test_ret += test_xmlSchemaGetValidErrors(); @@ -33052,6 +33774,7 @@ test_xmlschemas(void) { test_ret += test_xmlSchemaSetParserErrors(); test_ret += test_xmlSchemaSetValidErrors(); test_ret += test_xmlSchemaSetValidOptions(); + test_ret += test_xmlSchemaSetValidStructuredErrors(); test_ret += test_xmlSchemaValidCtxtGetOptions(); test_ret += test_xmlSchemaValidateDoc(); test_ret += test_xmlSchemaValidateFile(); @@ -49988,6 +50711,7 @@ test_module(const char *module) { if (!strcmp(module, "pattern")) return(test_pattern()); if (!strcmp(module, "relaxng")) return(test_relaxng()); if (!strcmp(module, "schemasInternals")) return(test_schemasInternals()); + if (!strcmp(module, "schematron")) return(test_schematron()); if (!strcmp(module, "tree")) return(test_tree()); if (!strcmp(module, "uri")) return(test_uri()); if (!strcmp(module, "valid")) return(test_valid()); @@ -472,7 +472,7 @@ typedef struct _xmlGlobalStateCleanupHelperParams void *memory; } xmlGlobalStateCleanupHelperParams; -static void xmlGlobalStateCleanupHelper (void *p) +static void XMLCDECL xmlGlobalStateCleanupHelper (void *p) { xmlGlobalStateCleanupHelperParams *params = (xmlGlobalStateCleanupHelperParams *) p; WaitForSingleObject(params->thread, INFINITE); @@ -297,6 +297,7 @@ xmlSplitQName2(const xmlChar *name, xmlChar **prefix) { * * returns NULL if it is not a Qualified Name, otherwise, update len * with the lenght in byte of the prefix and return a pointer + * to the start of the name without the prefix */ const xmlChar * @@ -1133,8 +1134,10 @@ xmlFreeDoc(xmlDocPtr cur) { return; } #ifdef LIBXML_DEBUG_RUNTIME +#ifdef LIBXML_DEBUG_ENABLED xmlDebugCheckDocument(stderr, cur); #endif +#endif if (cur != NULL) dict = cur->dict; @@ -1721,80 +1724,87 @@ xmlNodeListGetRawString(xmlDocPtr doc, xmlNodePtr list, int inLine) } #endif /* LIBXML_TREE_ENABLED */ -static xmlAttrPtr xmlNewPropInternal(xmlNodePtr node, xmlNsPtr ns, - const xmlChar *name, const xmlChar *value, int eatname) { +static xmlAttrPtr +xmlNewPropInternal(xmlNodePtr node, xmlNsPtr ns, + const xmlChar * name, const xmlChar * value, + int eatname) +{ xmlAttrPtr cur; xmlDocPtr doc = NULL; if ((node != NULL) && (node->type != XML_ELEMENT_NODE)) { - if (eatname == 1) - xmlFree((xmlChar *) name); - return(NULL); - } + if (eatname == 1) + xmlFree((xmlChar *) name); + return (NULL); + } /* * Allocate a new property and fill the fields. */ cur = (xmlAttrPtr) xmlMalloc(sizeof(xmlAttr)); if (cur == NULL) { - if (eatname == 1) - xmlFree((xmlChar *) name); - xmlTreeErrMemory("building attribute"); - return(NULL); + if (eatname == 1) + xmlFree((xmlChar *) name); + xmlTreeErrMemory("building attribute"); + return (NULL); } memset(cur, 0, sizeof(xmlAttr)); cur->type = XML_ATTRIBUTE_NODE; - cur->parent = node; + cur->parent = node; if (node != NULL) { - doc = node->doc; - cur->doc = doc; + doc = node->doc; + cur->doc = doc; } - cur->ns = ns; + cur->ns = ns; - if (eatname == 0) { - if ((doc != NULL) && (doc->dict != NULL)) - cur->name = (xmlChar *) xmlDictLookup(doc->dict, name, -1); - else - cur->name = xmlStrdup(name); - } else - cur->name = name; + if (eatname == 0) { + if ((doc != NULL) && (doc->dict != NULL)) + cur->name = (xmlChar *) xmlDictLookup(doc->dict, name, -1); + else + cur->name = xmlStrdup(name); + } else + cur->name = name; if (value != NULL) { - xmlChar *buffer; - xmlNodePtr tmp; - - buffer = xmlEncodeEntitiesReentrant(doc, value); - cur->children = xmlStringGetNodeList(doc, buffer); - cur->last = NULL; - tmp = cur->children; - while (tmp != NULL) { - tmp->parent = (xmlNodePtr) cur; - if (tmp->next == NULL) - cur->last = tmp; - tmp = tmp->next; - } - xmlFree(buffer); - } + xmlChar *buffer; + xmlNodePtr tmp; + + buffer = xmlEncodeEntitiesReentrant(doc, value); + cur->children = xmlStringGetNodeList(doc, buffer); + cur->last = NULL; + tmp = cur->children; + while (tmp != NULL) { + tmp->parent = (xmlNodePtr) cur; + if (tmp->next == NULL) + cur->last = tmp; + tmp = tmp->next; + } + xmlFree(buffer); + } /* * Add it at the end to preserve parsing order ... */ if (node != NULL) { - if (node->properties == NULL) { - node->properties = cur; - } else { - xmlAttrPtr prev = node->properties; + if (node->properties == NULL) { + node->properties = cur; + } else { + xmlAttrPtr prev = node->properties; - while (prev->next != NULL) prev = prev->next; - prev->next = cur; - cur->prev = prev; - } + while (prev->next != NULL) + prev = prev->next; + prev->next = cur; + cur->prev = prev; + } } + if (xmlIsID((node == NULL) ? NULL : node->doc, node, cur) == 1) + xmlAddID(NULL, node->doc, value, cur); + if ((__xmlRegisterCallbacks) && (xmlRegisterNodeDefaultValue)) - xmlRegisterNodeDefaultValue((xmlNodePtr)cur); - return(cur); + xmlRegisterNodeDefaultValue((xmlNodePtr) cur); + return (cur); } #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || \ @@ -3285,7 +3295,8 @@ xmlFreeNodeList(xmlNodePtr cur) { if ((cur->type != XML_ELEMENT_NODE) && (cur->type != XML_XINCLUDE_START) && (cur->type != XML_XINCLUDE_END) && - (cur->type != XML_ENTITY_REF_NODE)) { + (cur->type != XML_ENTITY_REF_NODE) && + (cur->content != (xmlChar *) &(cur->properties))) { DICT_FREE(cur->content) } if (((cur->type == XML_ELEMENT_NODE) || @@ -3354,7 +3365,8 @@ xmlFreeNode(xmlNodePtr cur) { (cur->content != NULL) && (cur->type != XML_ENTITY_REF_NODE) && (cur->type != XML_XINCLUDE_END) && - (cur->type != XML_XINCLUDE_START)) { + (cur->type != XML_XINCLUDE_START) && + (cur->content != (xmlChar *) &(cur->properties))) { DICT_FREE(cur->content) } @@ -3809,7 +3821,7 @@ xmlStaticCopyNode(const xmlNodePtr node, xmlDocPtr doc, xmlNodePtr parent, if (!extended) goto out; - if (node->nsDef != NULL) + if ((node->type == XML_ELEMENT_NODE) && (node->nsDef != NULL)) ret->nsDef = xmlCopyNamespaceList(node->nsDef); if (node->ns != NULL) { @@ -3836,7 +3848,7 @@ xmlStaticCopyNode(const xmlNodePtr node, xmlDocPtr doc, xmlNodePtr parent, ret->ns = ns; } } - if (node->properties != NULL) + if ((node->type == XML_ELEMENT_NODE) && (node->properties != NULL)) ret->properties = xmlCopyPropList(ret, node->properties); if (node->type == XML_ENTITY_REF_NODE) { if ((doc == NULL) || (node->doc != doc)) { @@ -4136,15 +4148,19 @@ xmlGetLineNo(xmlNodePtr node) if (!node) return result; - if (node->type == XML_ELEMENT_NODE) + if ((node->type == XML_ELEMENT_NODE) || + (node->type == XML_TEXT_NODE) || + (node->type == XML_COMMENT_NODE) || + (node->type == XML_PI_NODE)) result = (long) node->line; else if ((node->prev != NULL) && ((node->prev->type == XML_ELEMENT_NODE) || - (node->prev->type == XML_TEXT_NODE))) + (node->prev->type == XML_TEXT_NODE) || + (node->prev->type == XML_COMMENT_NODE) || + (node->prev->type == XML_PI_NODE))) result = xmlGetLineNo(node->prev); else if ((node->parent != NULL) && - ((node->parent->type == XML_ELEMENT_NODE) || - (node->parent->type == XML_TEXT_NODE))) + (node->parent->type == XML_ELEMENT_NODE)) result = xmlGetLineNo(node->parent); return result; @@ -4332,6 +4348,16 @@ xmlGetNodePath(xmlNodePtr node) } else if (cur->type == XML_ATTRIBUTE_NODE) { sep = "/@"; name = (const char *) (((xmlAttrPtr) cur)->name); + if (cur->ns) { + if (cur->ns->prefix != NULL) + snprintf(nametemp, sizeof(nametemp) - 1, "%s:%s", + (char *)cur->ns->prefix, (char *)cur->name); + else + snprintf(nametemp, sizeof(nametemp) - 1, "%s", + (char *)cur->name); + nametemp[sizeof(nametemp) - 1] = 0; + name = nametemp; + } next = ((xmlAttrPtr) cur)->parent; } else { next = cur->parent; @@ -5090,7 +5116,8 @@ xmlNodeSetContent(xmlNodePtr cur, const xmlChar *content) { case XML_ENTITY_NODE: case XML_PI_NODE: case XML_COMMENT_NODE: - if (cur->content != NULL) { + if ((cur->content != NULL) && + (cur->content != (xmlChar *) &(cur->properties))) { if (!((cur->doc != NULL) && (cur->doc->dict != NULL) && (xmlDictOwns(cur->doc->dict, cur->content)))) xmlFree(cur->content); @@ -5101,6 +5128,8 @@ xmlNodeSetContent(xmlNodePtr cur, const xmlChar *content) { cur->content = xmlStrdup(content); } else cur->content = NULL; + cur->properties = NULL; + cur->nsDef = NULL; break; case XML_DOCUMENT_NODE: case XML_HTML_DOCUMENT_NODE: @@ -5162,8 +5191,11 @@ xmlNodeSetContentLen(xmlNodePtr cur, const xmlChar *content, int len) { case XML_PI_NODE: case XML_COMMENT_NODE: case XML_NOTATION_NODE: - if (cur->content != NULL) { - xmlFree(cur->content); + if ((cur->content != NULL) && + (cur->content != (xmlChar *) &(cur->properties))) { + if (!((cur->doc != NULL) && (cur->doc->dict != NULL) && + (xmlDictOwns(cur->doc->dict, cur->content)))) + xmlFree(cur->content); } if (cur->children != NULL) xmlFreeNodeList(cur->children); cur->children = cur->last = NULL; @@ -5171,6 +5203,8 @@ xmlNodeSetContentLen(xmlNodePtr cur, const xmlChar *content, int len) { cur->content = xmlStrndup(content, len); } else cur->content = NULL; + cur->properties = NULL; + cur->nsDef = NULL; break; case XML_DOCUMENT_NODE: case XML_DTD_NODE: @@ -5241,10 +5275,12 @@ xmlNodeAddContentLen(xmlNodePtr cur, const xmlChar *content, int len) { case XML_COMMENT_NODE: case XML_NOTATION_NODE: if (content != NULL) { - if ((cur->doc != NULL) && (cur->doc->dict != NULL) && - xmlDictOwns(cur->doc->dict, cur->content)) { - cur->content = - xmlStrncatNew(cur->content, content, len); + if ((cur->content == (xmlChar *) &(cur->properties)) || + ((cur->doc != NULL) && (cur->doc->dict != NULL) && + xmlDictOwns(cur->doc->dict, cur->content))) { + cur->content = xmlStrncatNew(cur->content, content, len); + cur->properties = NULL; + cur->nsDef = NULL; break; } cur->content = xmlStrncat(cur->content, content, len); @@ -5887,7 +5923,8 @@ xmlHasProp(xmlNodePtr node, const xmlChar *name) { xmlAttrPtr prop; xmlDocPtr doc; - if ((node == NULL) || (name == NULL)) return(NULL); + if ((node == NULL) || (node->type != XML_ELEMENT_NODE) || (name == NULL)) + return(NULL); /* * Check on the properties attached to the node */ @@ -5943,7 +5980,7 @@ xmlHasNsProp(xmlNodePtr node, const xmlChar *name, const xmlChar *nameSpace) { xmlDocPtr doc; #endif /* LIBXML_TREE_ENABLED */ - if (node == NULL) + if ((node == NULL) || (node->type != XML_ELEMENT_NODE) || (name == NULL)) return(NULL); prop = node->properties; @@ -6041,7 +6078,9 @@ xmlGetProp(xmlNodePtr node, const xmlChar *name) { xmlAttrPtr prop; xmlDocPtr doc; - if ((node == NULL) || (name == NULL)) return(NULL); + if ((node == NULL) || (node->type != XML_ELEMENT_NODE) || (name == NULL)) + return(NULL); + /* * Check on the properties attached to the node */ @@ -6098,7 +6137,8 @@ xmlGetNoNsProp(xmlNodePtr node, const xmlChar *name) { xmlAttrPtr prop; xmlDocPtr doc; - if ((node == NULL) || (name == NULL)) return(NULL); + if ((node == NULL) || (node->type != XML_ELEMENT_NODE) || (name == NULL)) + return(NULL); /* * Check on the properties attached to the node */ @@ -6156,7 +6196,7 @@ xmlGetNsProp(xmlNodePtr node, const xmlChar *name, const xmlChar *nameSpace) { xmlDocPtr doc; xmlNsPtr ns; - if (node == NULL) + if ((node == NULL) || (node->type != XML_ELEMENT_NODE)) return(NULL); prop = node->properties; @@ -6220,7 +6260,7 @@ int xmlUnsetProp(xmlNodePtr node, const xmlChar *name) { xmlAttrPtr prop, prev = NULL;; - if ((node == NULL) || (name == NULL)) + if ((node == NULL) || (node->type != XML_ELEMENT_NODE) || (name == NULL)) return(-1); prop = node->properties; while (prop != NULL) { @@ -6249,7 +6289,7 @@ int xmlUnsetNsProp(xmlNodePtr node, xmlNsPtr ns, const xmlChar *name) { xmlAttrPtr prop, prev = NULL;; - if ((node == NULL) || (name == NULL)) + if ((node == NULL) || (node->type != XML_ELEMENT_NODE) || (name == NULL)) return(-1); prop = node->properties; if (ns == NULL) @@ -6284,16 +6324,36 @@ xmlAttrPtr xmlSetProp(xmlNodePtr node, const xmlChar *name, const xmlChar *value) { xmlAttrPtr prop; xmlDocPtr doc; + int len; + const xmlChar *nqname; if ((node == NULL) || (name == NULL) || (node->type != XML_ELEMENT_NODE)) return(NULL); + + /* + * handle QNames + */ + nqname = xmlSplitQName3(name, &len); + if (nqname != NULL) { + xmlNsPtr ns; + xmlChar *prefix = xmlStrndup(name, len); + ns = xmlSearchNs(node->doc, node, prefix); + if (prefix != NULL) + xmlFree(prefix); + if (ns != NULL) + return(xmlSetNsProp(node, ns, nqname, value)); + } + doc = node->doc; prop = node->properties; while (prop != NULL) { if ((xmlStrEqual(prop->name, name)) && (prop->ns == NULL)){ xmlNodePtr oldprop = prop->children; + int id = xmlIsID(node->doc, node, prop); + if (id == 1) + xmlRemoveID(node->doc, prop); prop->children = NULL; prop->last = NULL; if (value != NULL) { @@ -6316,6 +6376,8 @@ xmlSetProp(xmlNodePtr node, const xmlChar *name, const xmlChar *value) { } if (oldprop != NULL) xmlFreeNodeList(oldprop); + if (id) + xmlAddID(NULL, node->doc, value, prop); return(prop); } prop = prop->next; @@ -6358,6 +6420,10 @@ xmlSetNsProp(xmlNodePtr node, xmlNsPtr ns, const xmlChar *name, */ if ((xmlStrEqual(prop->name, name)) && (prop->ns != NULL) && (xmlStrEqual(prop->ns->href, ns->href))) { + int id = xmlIsID(node->doc, node, prop); + + if (id == 1) + xmlRemoveID(node->doc, prop); if (prop->children != NULL) xmlFreeNodeList(prop->children); prop->children = NULL; @@ -6379,6 +6445,8 @@ xmlSetNsProp(xmlNodePtr node, xmlNsPtr ns, const xmlChar *name, } xmlFree(buffer); } + if (id) + xmlAddID(NULL, node->doc, value, prop); return(prop); } prop = prop->next; @@ -6455,12 +6523,14 @@ xmlTextConcat(xmlNodePtr node, const xmlChar *content, int len) { return(-1); } /* need to check if content is currently in the dictionary */ - if ((node->doc != NULL) && (node->doc->dict != NULL) && - xmlDictOwns(node->doc->dict, node->content)) { + if ((node->content == (xmlChar *) &(node->properties)) || + ((node->doc != NULL) && (node->doc->dict != NULL) && + xmlDictOwns(node->doc->dict, node->content))) { node->content = xmlStrncatNew(node->content, content, len); } else { node->content = xmlStrncat(node->content, content, len); } + node->properties = NULL; if (node->content == NULL) return(-1); return(0); @@ -185,6 +185,8 @@ * path = [ abs_path | opaque_part ] */ +#define STRNDUP(s, n) (char *) xmlStrndup((const xmlChar *)(s), (n)) + /************************************************************************ * * * Generic URI structure functions * @@ -1086,7 +1088,10 @@ xmlParseURIFragment(xmlURIPtr uri, const char **str) if (uri != NULL) { if (uri->fragment != NULL) xmlFree(uri->fragment); - uri->fragment = xmlURIUnescapeString(*str, cur - *str, NULL); + if (uri->cleanup & 2) + uri->fragment = STRNDUP(*str, cur - *str); + else + uri->fragment = xmlURIUnescapeString(*str, cur - *str, NULL); } *str = cur; return (0); @@ -1111,12 +1116,16 @@ xmlParseURIQuery(xmlURIPtr uri, const char **str) if (str == NULL) return (-1); - while (IS_URIC(cur) || ((uri != NULL) && (uri->cleanup) && (IS_UNWISE(cur)))) + while ((IS_URIC(cur)) || + ((uri != NULL) && (uri->cleanup & 1) && (IS_UNWISE(cur)))) NEXT(cur); if (uri != NULL) { if (uri->query != NULL) xmlFree(uri->query); - uri->query = xmlURIUnescapeString(*str, cur - *str, NULL); + if (uri->cleanup & 2) + uri->query = STRNDUP(*str, cur - *str); + else + uri->query = xmlURIUnescapeString(*str, cur - *str, NULL); } *str = cur; return (0); @@ -1147,8 +1156,7 @@ xmlParseURIScheme(xmlURIPtr uri, const char **str) { while (IS_SCHEME(*cur)) cur++; if (uri != NULL) { if (uri->scheme != NULL) xmlFree(uri->scheme); - /* !!! strndup */ - uri->scheme = xmlURIUnescapeString(*str, cur - *str, NULL); + uri->scheme = STRNDUP(*str, cur - *str); } *str = cur; return(0); @@ -1174,16 +1182,21 @@ xmlParseURIOpaquePart(xmlURIPtr uri, const char **str) return (-1); cur = *str; - if (!(IS_URIC_NO_SLASH(cur) || ((uri != NULL) && (uri->cleanup) && (IS_UNWISE(cur))))) { + if (!((IS_URIC_NO_SLASH(cur)) || + ((uri != NULL) && (uri->cleanup & 1) && (IS_UNWISE(cur))))) { return (3); } NEXT(cur); - while (IS_URIC(cur) || ((uri != NULL) && (uri->cleanup) && (IS_UNWISE(cur)))) + while ((IS_URIC(cur)) || + ((uri != NULL) && (uri->cleanup & 1) && (IS_UNWISE(cur)))) NEXT(cur); if (uri != NULL) { if (uri->opaque != NULL) xmlFree(uri->opaque); - uri->opaque = xmlURIUnescapeString(*str, cur - *str, NULL); + if (uri->cleanup & 2) + uri->opaque = STRNDUP(*str, cur - *str); + else + uri->opaque = xmlURIUnescapeString(*str, cur - *str, NULL); } *str = cur; return (0); @@ -1235,7 +1248,10 @@ xmlParseURIServer(xmlURIPtr uri, const char **str) { if (*cur == '@') { if (uri != NULL) { if (uri->user != NULL) xmlFree(uri->user); - uri->user = xmlURIUnescapeString(*str, cur - *str, NULL); + if (uri->cleanup & 2) + uri->path = STRNDUP(*str, cur - *str); + else + uri->user = xmlURIUnescapeString(*str, cur - *str, NULL); } cur++; } else { @@ -1349,7 +1365,10 @@ xmlParseURIServer(xmlURIPtr uri, const char **str) { uri->authority = NULL; if (host[0] != '[') { /* it's not an IPV6 addr */ if (uri->server != NULL) xmlFree(uri->server); - uri->server = xmlURIUnescapeString(host, cur - host, NULL); + if (uri->cleanup & 2) + uri->server = STRNDUP(host, cur - host); + else + uri->server = xmlURIUnescapeString(host, cur - host, NULL); } } /* @@ -1392,16 +1411,21 @@ xmlParseURIRelSegment(xmlURIPtr uri, const char **str) return (-1); cur = *str; - if (!(IS_SEGMENT(cur) || ((uri != NULL) && (uri->cleanup) && (IS_UNWISE(cur))))) { + if (!((IS_SEGMENT(cur)) || + ((uri != NULL) && (uri->cleanup & 1) && (IS_UNWISE(cur))))) { return (3); } NEXT(cur); - while (IS_SEGMENT(cur) || ((uri != NULL) && (uri->cleanup) && (IS_UNWISE(cur)))) + while ((IS_SEGMENT(cur)) || + ((uri != NULL) && (uri->cleanup & 1) && (IS_UNWISE(cur)))) NEXT(cur); if (uri != NULL) { if (uri->path != NULL) xmlFree(uri->path); - uri->path = xmlURIUnescapeString(*str, cur - *str, NULL); + if (uri->cleanup & 2) + uri->path = STRNDUP(*str, cur - *str); + else + uri->path = xmlURIUnescapeString(*str, cur - *str, NULL); } *str = cur; return (0); @@ -1432,11 +1456,13 @@ xmlParseURIPathSegments(xmlURIPtr uri, const char **str, int slash) cur = *str; do { - while (IS_PCHAR(cur) || ((uri != NULL) && (uri->cleanup) && (IS_UNWISE(cur)))) + while ((IS_PCHAR(cur)) || + ((uri != NULL) && (uri->cleanup & 1) && (IS_UNWISE(cur)))) NEXT(cur); while (*cur == ';') { cur++; - while (IS_PCHAR(cur) || ((uri != NULL) && (uri->cleanup) && (IS_UNWISE(cur)))) + while ((IS_PCHAR(cur)) || + ((uri != NULL) && (uri->cleanup & 1) && (IS_UNWISE(cur)))) NEXT(cur); } if (*cur != '/') @@ -1472,8 +1498,13 @@ xmlParseURIPathSegments(xmlURIPtr uri, const char **str, int slash) len2++; } path[len2] = 0; - if (cur - *str > 0) - xmlURIUnescapeString(*str, cur - *str, &path[len2]); + if (cur - *str > 0) { + if (uri->cleanup & 2) { + memcpy(&path[len2], *str, cur - *str); + path[len2 + (cur - *str)] = 0; + } else + xmlURIUnescapeString(*str, cur - *str, &path[len2]); + } if (uri->path != NULL) xmlFree(uri->path); uri->path = path; @@ -1538,7 +1569,10 @@ xmlParseURIAuthority(xmlURIPtr uri, const char **str) { if (uri->user != NULL) xmlFree(uri->user); uri->user = NULL; if (uri->authority != NULL) xmlFree(uri->authority); - uri->authority = xmlURIUnescapeString(*str, cur - *str, NULL); + if (uri->cleanup & 2) + uri->authority = STRNDUP(*str, cur - *str); + else + uri->authority = xmlURIUnescapeString(*str, cur - *str, NULL); } *str = cur; return(0); @@ -1761,6 +1795,38 @@ xmlParseURI(const char *str) { return(uri); } +/** + * xmlParseURIRaw: + * @str: the URI string to analyze + * @raw: if 1 unescaping of URI pieces are disabled + * + * Parse an URI but allows to keep intact the original fragments. + * + * URI-reference = [ absoluteURI | relativeURI ] [ "#" fragment ] + * + * Returns a newly built xmlURIPtr or NULL in case of error + */ +xmlURIPtr +xmlParseURIRaw(const char *str, int raw) { + xmlURIPtr uri; + int ret; + + if (str == NULL) + return(NULL); + uri = xmlCreateURI(); + if (uri != NULL) { + if (raw) { + uri->cleanup |= 2; + } + ret = xmlParseURIReference(uri, str); + if (ret) { + xmlFreeURI(uri); + return(NULL); + } + } + return(uri); +} + /************************************************************************ * * * Public functions * @@ -2070,14 +2136,6 @@ xmlBuildRelativeURI (const xmlChar * URI, const xmlChar * base) if ((URI == NULL) || (*URI == 0)) return NULL; - /* - * Special case - if URI starts with '.', we assume it's already - * in relative form, so nothing to do. - */ - if (*URI == '.') { - val = xmlStrdup (URI); - goto done; - } /* * First parse URI into a standard form @@ -2085,9 +2143,13 @@ xmlBuildRelativeURI (const xmlChar * URI, const xmlChar * base) ref = xmlCreateURI (); if (ref == NULL) return NULL; - ret = xmlParseURIReference (ref, (const char *) URI); - if (ret != 0) - goto done; /* Error in URI, return NULL */ + /* If URI not already in "relative" form */ + if (URI[0] != '.') { + ret = xmlParseURIReference (ref, (const char *) URI); + if (ret != 0) + goto done; /* Error in URI, return NULL */ + } else + ref->path = (char *)xmlStrdup(URI); /* * Next parse base into the same standard form @@ -2099,9 +2161,12 @@ xmlBuildRelativeURI (const xmlChar * URI, const xmlChar * base) bas = xmlCreateURI (); if (bas == NULL) goto done; - ret = xmlParseURIReference (bas, (const char *) base); - if (ret != 0) - goto done; /* Error in base, return NULL */ + if (base[0] != '.') { + ret = xmlParseURIReference (bas, (const char *) base); + if (ret != 0) + goto done; /* Error in base, return NULL */ + } else + bas->path = (char *)xmlStrdup(base); /* * If the scheme / server on the URI differs from the base, @@ -2230,8 +2295,9 @@ xmlCanonicPath(const xmlChar *path) int i = 0; xmlChar *p = NULL; #endif - xmlChar *ret; xmlURIPtr uri; + xmlChar *ret; + const xmlChar *absuri; if (path == NULL) return(NULL); @@ -2240,12 +2306,47 @@ xmlCanonicPath(const xmlChar *path) return xmlStrdup(path); } + absuri = xmlStrstr(path, BAD_CAST "://"); + if (absuri != NULL) { + int l, j; + unsigned char c; + xmlChar *escURI; + + /* + * this looks like an URI where some parts have not been + * escaped leading to a parsing problem check that the first + * part matches a protocol. + */ + l = absuri - path; + if ((l <= 0) || (l > 20)) + goto path_processing; + for (j = 0;j < l;j++) { + c = path[j]; + if (!(((c >= 'a') && (c <= 'z')) || ((c >= 'A') && (c <= 'Z')))) + goto path_processing; + } + + escURI = xmlURIEscapeStr(path, BAD_CAST ":/?_.#&;="); + if (escURI != NULL) { + uri = xmlParseURI((const char *) escURI); + if (uri != NULL) { + xmlFreeURI(uri); + return escURI; + } + xmlFreeURI(uri); + } + } + +path_processing: +#if defined(_WIN32) && !defined(__CYGWIN__) + /* + * This really need to be cleaned up by someone with a Windows box + */ uri = xmlCreateURI(); if (uri == NULL) { return(NULL); } -#if defined(_WIN32) && !defined(__CYGWIN__) len = xmlStrlen(path); if ((len > 2) && IS_WINDOWS_PATH(path)) { uri->scheme = xmlStrdup(BAD_CAST "file"); @@ -2262,15 +2363,15 @@ xmlCanonicPath(const xmlChar *path) *p = '/'; p++; } -#else - uri->path = (char *) xmlStrdup((const xmlChar *) path); -#endif if (uri->path == NULL) { xmlFreeURI(uri); return(NULL); } ret = xmlSaveUri(uri); xmlFreeURI(uri); +#else + ret = xmlStrdup((const xmlChar *) path); +#endif return(ret); } @@ -453,14 +453,14 @@ nodeVPop(xmlValidCtxtPtr ctxt) xmlNodePtr ret; if (ctxt->nodeNr <= 0) - return (0); + return (NULL); ctxt->nodeNr--; if (ctxt->nodeNr > 0) ctxt->node = ctxt->nodeTab[ctxt->nodeNr - 1]; else ctxt->node = NULL; ret = ctxt->nodeTab[ctxt->nodeNr]; - ctxt->nodeTab[ctxt->nodeNr] = 0; + ctxt->nodeTab[ctxt->nodeNr] = NULL; return (ret); } @@ -2703,8 +2703,12 @@ xmlFreeIDTable(xmlIDTablePtr table) { */ int xmlIsID(xmlDocPtr doc, xmlNodePtr elem, xmlAttrPtr attr) { + if ((attr == NULL) || (attr->name == NULL)) return(0); + if ((attr->ns != NULL) && (attr->ns->prefix != NULL) && + (!strcmp((char *) attr->name, "id")) && + (!strcmp((char *) attr->ns->prefix, "xml"))) + return(1); if (doc == NULL) return(0); - if (attr == NULL) return(0); if ((doc->intSubset == NULL) && (doc->extSubset == NULL)) { return(0); } else if (doc->type == XML_HTML_DOCUMENT_NODE) { @@ -2713,32 +2717,35 @@ xmlIsID(xmlDocPtr doc, xmlNodePtr elem, xmlAttrPtr attr) { ((elem != NULL) && (!xmlStrEqual(elem->name, BAD_CAST "input")))) return(1); return(0); + } else if (elem == NULL) { + return(0); } else { - xmlAttributePtr attrDecl; + xmlAttributePtr attrDecl = NULL; - if (elem == NULL) return(0); - if ((elem->ns != NULL) && (elem->ns->prefix != NULL)) { - xmlChar fn[50]; - xmlChar *fullname; - - fullname = xmlBuildQName(elem->name, elem->ns->prefix, fn, 50); - if (fullname == NULL) - return(0); - attrDecl = xmlGetDtdAttrDesc(doc->intSubset, fullname, - attr->name); - if ((attrDecl == NULL) && (doc->extSubset != NULL)) - attrDecl = xmlGetDtdAttrDesc(doc->extSubset, fullname, - attr->name); - if ((fullname != fn) && (fullname != elem->name)) - xmlFree(fullname); - } else { - attrDecl = xmlGetDtdAttrDesc(doc->intSubset, elem->name, - attr->name); + xmlChar felem[50], fattr[50]; + xmlChar *fullelemname, *fullattrname; + + fullelemname = (elem->ns != NULL && elem->ns->prefix != NULL) ? + xmlBuildQName(elem->name, elem->ns->prefix, felem, 50) : + (xmlChar *)elem->name; + + fullattrname = (attr->ns != NULL && attr->ns->prefix != NULL) ? + xmlBuildQName(attr->name, attr->ns->prefix, fattr, 50) : + (xmlChar *)attr->name; + + if (fullelemname != NULL && fullattrname != NULL) { + attrDecl = xmlGetDtdAttrDesc(doc->intSubset, fullelemname, + fullattrname); if ((attrDecl == NULL) && (doc->extSubset != NULL)) - attrDecl = xmlGetDtdAttrDesc(doc->extSubset, elem->name, - attr->name); + attrDecl = xmlGetDtdAttrDesc(doc->extSubset, fullelemname, + fullattrname); } + if ((fullattrname != fattr) && (fullattrname != attr->name)) + xmlFree(fullattrname); + if ((fullelemname != felem) && (fullelemname != elem->name)) + xmlFree(fullelemname); + if ((attrDecl != NULL) && (attrDecl->atype == XML_ATTRIBUTE_ID)) return(1); } @@ -3866,7 +3873,7 @@ xmlValidCtxtNormalizeAttributeValue(xmlValidCtxtPtr ctxt, xmlDocPtr doc, fullname = xmlBuildQName(elem->name, elem->ns->prefix, fn, 50); if (fullname == NULL) - return(0); + return(NULL); attrDecl = xmlGetDtdAttrDesc(doc->intSubset, fullname, name); if ((attrDecl == NULL) && (doc->extSubset != NULL)) { attrDecl = xmlGetDtdAttrDesc(doc->extSubset, fullname, name); @@ -3951,7 +3958,7 @@ xmlValidNormalizeAttributeValue(xmlDocPtr doc, xmlNodePtr elem, fullname = xmlBuildQName(elem->name, elem->ns->prefix, fn, 50); if (fullname == NULL) - return(0); + return(NULL); attrDecl = xmlGetDtdAttrDesc(doc->intSubset, fullname, name); if ((attrDecl == NULL) && (doc->extSubset != NULL)) attrDecl = xmlGetDtdAttrDesc(doc->extSubset, fullname, name); @@ -5857,24 +5864,12 @@ xmlValidateOneElement(xmlValidCtxtPtr ctxt, xmlDocPtr doc, NULL,NULL,NULL); return(0); } - if (elem->properties != NULL) { - xmlErrValidNode(ctxt, elem, XML_ERR_INTERNAL_ERROR, - "Text element has attribute !\n", - NULL,NULL,NULL); - return(0); - } if (elem->ns != NULL) { xmlErrValidNode(ctxt, elem, XML_ERR_INTERNAL_ERROR, "Text element has namespace !\n", NULL,NULL,NULL); return(0); } - if (elem->nsDef != NULL) { - xmlErrValidNode(ctxt, elem, XML_ERR_INTERNAL_ERROR, - "Text element has namespace !\n", - NULL,NULL,NULL); - return(0); - } if (elem->content == NULL) { xmlErrValidNode(ctxt, elem, XML_ERR_INTERNAL_ERROR, "Text element has no content !\n", @@ -6299,23 +6294,25 @@ xmlValidateElement(xmlValidCtxtPtr ctxt, xmlDocPtr doc, xmlNodePtr elem) { } ret &= xmlValidateOneElement(ctxt, doc, elem); - attr = elem->properties; - while (attr != NULL) { - value = xmlNodeListGetString(doc, attr->children, 0); - ret &= xmlValidateOneAttribute(ctxt, doc, elem, attr, value); - if (value != NULL) - xmlFree((char *)value); - attr= attr->next; - } - ns = elem->nsDef; - while (ns != NULL) { - if (elem->ns == NULL) - ret &= xmlValidateOneNamespace(ctxt, doc, elem, NULL, - ns, ns->href); - else - ret &= xmlValidateOneNamespace(ctxt, doc, elem, elem->ns->prefix, - ns, ns->href); - ns = ns->next; + if (elem->type == XML_ELEMENT_NODE) { + attr = elem->properties; + while (attr != NULL) { + value = xmlNodeListGetString(doc, attr->children, 0); + ret &= xmlValidateOneAttribute(ctxt, doc, elem, attr, value); + if (value != NULL) + xmlFree((char *)value); + attr= attr->next; + } + ns = elem->nsDef; + while (ns != NULL) { + if (elem->ns == NULL) + ret &= xmlValidateOneNamespace(ctxt, doc, elem, NULL, + ns, ns->href); + else + ret &= xmlValidateOneNamespace(ctxt, doc, elem, + elem->ns->prefix, ns, ns->href); + ns = ns->next; + } } child = elem->children; while (child != NULL) { @@ -6808,7 +6805,7 @@ xmlValidGetPotentialChildren(xmlElementContent *ctree, const xmlChar **list, /* * Dummy function to suppress messages while we try out valid elements */ -static void xmlNoValidityErr(void *ctx ATTRIBUTE_UNUSED, +static void XMLCDECL xmlNoValidityErr(void *ctx ATTRIBUTE_UNUSED, const char *msg ATTRIBUTE_UNUSED, ...) { return; } diff --git a/win32/Makefile.msvc b/win32/Makefile.msvc index 3d11576..0c0a41b 100644 --- a/win32/Makefile.msvc +++ b/win32/Makefile.msvc @@ -115,6 +115,7 @@ XML_OBJS = $(XML_INTDIR)\c14n.obj\ $(XML_INTDIR)\relaxng.obj\ $(XML_INTDIR)\SAX2.obj\ $(XML_INTDIR)\SAX.obj\ + $(XML_INTDIR)\schematron.obj\ $(XML_INTDIR)\threads.obj\ $(XML_INTDIR)\tree.obj\ $(XML_INTDIR)\uri.obj\ @@ -159,6 +160,7 @@ XML_OBJS_A = $(XML_INTDIR_A)\c14n.obj\ $(XML_INTDIR_A)\relaxng.obj\ $(XML_INTDIR_A)\SAX2.obj\ $(XML_INTDIR_A)\SAX.obj\ + $(XML_INTDIR_A)\schematron.obj\ $(XML_INTDIR_A)\threads.obj\ $(XML_INTDIR_A)\tree.obj\ $(XML_INTDIR_A)\uri.obj\ diff --git a/win32/configure.js b/win32/configure.js index d857146..6c9909b 100644 --- a/win32/configure.js +++ b/win32/configure.js @@ -45,6 +45,7 @@ var withZlib = false; var withDebug = true; var withMemDebug = false; var withSchemas = true; +var withSchematron = true; var withRegExps = true; var withModules = true; var withTree = true; @@ -138,6 +139,7 @@ function usage() txt += " legacy: Enable Deprecated api's (" + (withLegacy? "yes" : "no") + ")\n"; txt += " output: Enable serialization support (" + (withOutput? "yes" : "no") + ")\n"; txt += " schemas: Enable XML Schema support (" + (withSchemas? "yes" : "no") + ")\n"; + txt += " schematron: Enable Schematron support (" + (withSchematron? "yes" : "no") + ")\n"; txt += " python: Build Python bindings (" + (withPython? "yes" : "no") + ")\n"; txt += "\nWin32 build options, default value given in parentheses:\n\n"; txt += " compiler: Compiler to be used [msvc|mingw|bcb] (" + compiler + ")\n"; @@ -232,6 +234,7 @@ function discoverVersion() vf.WriteLine("WITH_DEBUG=" + (withDebug? "1" : "0")); vf.WriteLine("WITH_MEM_DEBUG=" + (withMemDebug? "1" : "0")); vf.WriteLine("WITH_SCHEMAS=" + (withSchemas? "1" : "0")); + vf.WriteLine("WITH_SCHEMATRON=" + (withSchematron? "1" : "0")); vf.WriteLine("WITH_REGEXPS=" + (withRegExps? "1" : "0")); vf.WriteLine("WITH_MODULES=" + (withModules? "1" : "0")); vf.WriteLine("WITH_TREE=" + (withTree? "1" : "0")); @@ -320,6 +323,8 @@ function configureLibxml() of.WriteLine(s.replace(/\@WITH_MEM_DEBUG\@/, withMemDebug? "1" : "0")); } else if (s.search(/\@WITH_SCHEMAS\@/) != -1) { of.WriteLine(s.replace(/\@WITH_SCHEMAS\@/, withSchemas? "1" : "0")); + } else if (s.search(/\@WITH_SCHEMATRON\@/) != -1) { + of.WriteLine(s.replace(/\@WITH_SCHEMATRON\@/, withSchematron? "1" : "0")); } else if (s.search(/\@WITH_REGEXPS\@/) != -1) { of.WriteLine(s.replace(/\@WITH_REGEXPS\@/, withRegExps? "1" : "0")); } else if (s.search(/\@WITH_MODULES\@/) != -1) { @@ -459,8 +464,12 @@ for (i = 0; (i < WScript.Arguments.length) && (error == 0); i++) { withMemDebug = strToBool(arg.substring(opt.length + 1, arg.length)); else if (opt == "schemas") withSchemas = strToBool(arg.substring(opt.length + 1, arg.length)); + else if (opt == "schematron") + withSchematron = strToBool(arg.substring(opt.length + 1, arg.length)); else if (opt == "regexps") withRegExps = strToBool(arg.substring(opt.length + 1, arg.length)); + else if (opt == "modules") + withModules = strToBool(arg.substring(opt.length + 1, arg.length)); else if (opt == "tree") withTree = strToBool(arg.substring(opt.length + 1, arg.length)); else if (opt == "reader") @@ -638,6 +647,7 @@ txtOut += " SAX1 support: " + boolToStr(withSax1) + "\n"; txtOut += " Legacy support: " + boolToStr(withLegacy) + "\n"; txtOut += " Output support: " + boolToStr(withOutput) + "\n"; txtOut += "XML Schema support: " + boolToStr(withSchemas) + "\n"; +txtOut += "Schematron support: " + boolToStr(withSchematron) + "\n"; txtOut += " Python bindings: " + boolToStr(withPython) + "\n"; txtOut += "\n"; txtOut += "Win32 build configuration\n"; diff --git a/win32/libxml2.def.src b/win32/libxml2.def.src index a0eb545..f7ab402 100644 --- a/win32/libxml2.def.src +++ b/win32/libxml2.def.src @@ -11,6 +11,12 @@ __docbDefaultSAXHandler docbDefaultSAXHandler DATA #endif #endif +#ifdef LIBXML_REGEXP_ENABLED +emptyExp DATA +#endif +#ifdef LIBXML_REGEXP_ENABLED +forbiddenExp DATA +#endif #ifdef LIBXML_THREAD_ENABLED #ifdef LIBXML_HTML_ENABLED __htmlDefaultSAXHandler @@ -517,6 +523,9 @@ xmlAutomataNewCounterTrans xmlAutomataNewEpsilon #endif #ifdef LIBXML_AUTOMATA_ENABLED +xmlAutomataNewNegTrans +#endif +#ifdef LIBXML_AUTOMATA_ENABLED xmlAutomataNewOnceTrans #endif #ifdef LIBXML_AUTOMATA_ENABLED @@ -775,6 +784,63 @@ xmlEncodeEntities xmlEncodeEntitiesReentrant xmlEncodeSpecialChars xmlErrMemory +#ifdef LIBXML_REGEXP_ENABLED +xmlExpCtxtNbCons +#endif +#ifdef LIBXML_REGEXP_ENABLED +xmlExpCtxtNbNodes +#endif +#ifdef LIBXML_REGEXP_ENABLED +xmlExpDump +#endif +#ifdef LIBXML_REGEXP_ENABLED +xmlExpExpDerive +#endif +#ifdef LIBXML_REGEXP_ENABLED +xmlExpFree +#endif +#ifdef LIBXML_REGEXP_ENABLED +xmlExpFreeCtxt +#endif +#ifdef LIBXML_REGEXP_ENABLED +xmlExpGetLanguage +#endif +#ifdef LIBXML_REGEXP_ENABLED +xmlExpGetStart +#endif +#ifdef LIBXML_REGEXP_ENABLED +xmlExpIsNillable +#endif +#ifdef LIBXML_REGEXP_ENABLED +xmlExpMaxToken +#endif +#ifdef LIBXML_REGEXP_ENABLED +xmlExpNewAtom +#endif +#ifdef LIBXML_REGEXP_ENABLED +xmlExpNewCtxt +#endif +#ifdef LIBXML_REGEXP_ENABLED +xmlExpNewOr +#endif +#ifdef LIBXML_REGEXP_ENABLED +xmlExpNewRange +#endif +#ifdef LIBXML_REGEXP_ENABLED +xmlExpNewSeq +#endif +#ifdef LIBXML_REGEXP_ENABLED +xmlExpParse +#endif +#ifdef LIBXML_REGEXP_ENABLED +xmlExpRef +#endif +#ifdef LIBXML_REGEXP_ENABLED +xmlExpStringDerive +#endif +#ifdef LIBXML_REGEXP_ENABLED +xmlExpSubsume +#endif xmlFileClose xmlFileMatch xmlFileOpen @@ -850,6 +916,7 @@ xmlGetRefs xmlGetThreadId xmlGetUTF8Char xmlHandleEntity +xmlHasFeature xmlHasNsProp xmlHasProp xmlHashAddEntry @@ -1273,6 +1340,7 @@ xmlParseStartTag xmlParseSystemLiteral xmlParseTextDecl xmlParseURI +xmlParseURIRaw xmlParseURIReference xmlParseVersionInfo xmlParseVersionNum @@ -1306,6 +1374,7 @@ xmlPatternFromRoot xmlPatternGetStreamCtxt xmlPatternMatch xmlPatternMaxDepth +xmlPatternMinDepth xmlPatternStreamable xmlPatterncompile xmlPedanticParserDefault @@ -1430,6 +1499,9 @@ xmlRelaxNGSetParserErrors xmlRelaxNGSetValidErrors #endif #ifdef LIBXML_SCHEMAS_ENABLED +xmlRelaxNGSetValidStructuredErrors +#endif +#ifdef LIBXML_SCHEMAS_ENABLED xmlRelaxNGValidateDoc #endif #ifdef LIBXML_SCHEMAS_ENABLED @@ -1586,6 +1658,9 @@ xmlSchemaInitTypes xmlSchemaIsBuiltInTypeFacet #endif #ifdef LIBXML_SCHEMAS_ENABLED +xmlSchemaIsValid +#endif +#ifdef LIBXML_SCHEMAS_ENABLED xmlSchemaNewDocParserCtxt #endif #ifdef LIBXML_SCHEMAS_ENABLED @@ -1613,6 +1688,12 @@ xmlSchemaNewValidCtxt xmlSchemaParse #endif #ifdef LIBXML_SCHEMAS_ENABLED +xmlSchemaSAXPlug +#endif +#ifdef LIBXML_SCHEMAS_ENABLED +xmlSchemaSAXUnplug +#endif +#ifdef LIBXML_SCHEMAS_ENABLED xmlSchemaSetParserErrors #endif #ifdef LIBXML_SCHEMAS_ENABLED @@ -1622,6 +1703,9 @@ xmlSchemaSetValidErrors xmlSchemaSetValidOptions #endif #ifdef LIBXML_SCHEMAS_ENABLED +xmlSchemaSetValidStructuredErrors +#endif +#ifdef LIBXML_SCHEMAS_ENABLED xmlSchemaValPredefTypeNode #endif #ifdef LIBXML_SCHEMAS_ENABLED @@ -1675,6 +1759,15 @@ xmlSchemaValueGetNext #ifdef LIBXML_SCHEMAS_ENABLED xmlSchemaWhiteSpaceReplace #endif +xmlSchematronFree +xmlSchematronFreeParserCtxt +xmlSchematronFreeValidCtxt +xmlSchematronNewDocParserCtxt +xmlSchematronNewMemParserCtxt +xmlSchematronNewParserCtxt +xmlSchematronNewValidCtxt +xmlSchematronParse +xmlSchematronValidateDoc xmlSearchNs xmlSearchNsByHref xmlSetBufferAllocationScheme @@ -1836,8 +1929,10 @@ xmlTextReaderRelaxNGSetSchema #ifdef LIBXML_SCHEMAS_ENABLED xmlTextReaderRelaxNGValidate #endif +xmlTextReaderSchemaValidate xmlTextReaderSetErrorHandler xmlTextReaderSetParserProp +xmlTextReaderSetSchema xmlTextReaderSetStructuredErrorHandler xmlTextReaderStandalone xmlTextReaderValue @@ -237,7 +237,7 @@ xmlXIncludeNewRef(xmlXIncludeCtxtPtr ctxt, const xmlChar *URI, ret->URI = xmlStrdup(URI); ret->fragment = NULL; ret->ref = ref; - ret->doc = 0; + ret->doc = NULL; ret->count = 0; ret->xml = 0; ret->inc = NULL; @@ -360,7 +360,7 @@ xmlXIncludeURLPop(xmlXIncludeCtxtPtr ctxt) else ctxt->url = NULL; ret = ctxt->urlTab[ctxt->urlNr]; - ctxt->urlTab[ctxt->urlNr] = 0; + ctxt->urlTab[ctxt->urlNr] = NULL; if (ret != NULL) xmlFree(ret); } @@ -1952,7 +1952,7 @@ xmlXIncludeLoadFallback(xmlXIncludeCtxtPtr ctxt, xmlNodePtr fallback, int nr) { static xmlNodePtr xmlXIncludePreProcessNode(xmlXIncludeCtxtPtr ctxt, xmlNodePtr node) { xmlXIncludeAddNode(ctxt, node); - return(0); + return(NULL); } /** @@ -2303,7 +2303,7 @@ static int xmlXIncludeDoProcess(xmlXIncludeCtxtPtr ctxt, xmlDocPtr doc, xmlNodePtr tree) { xmlNodePtr cur; int ret = 0; - int i; + int i, start; if ((doc == NULL) || (tree == NULL)) return(-1); @@ -2315,6 +2315,10 @@ xmlXIncludeDoProcess(xmlXIncludeCtxtPtr ctxt, xmlDocPtr doc, xmlNodePtr tree) { if (ret < 0) return(-1); } + if (tree) + start = ctxt->incNr; + else + start = ctxt->incBase; /* * First phase: lookup the elements in the document @@ -2355,7 +2359,7 @@ xmlXIncludeDoProcess(xmlXIncludeCtxtPtr ctxt, xmlDocPtr doc, xmlNodePtr tree) { /* * Second Phase : collect the infosets fragments */ - for (i = ctxt->incBase;i < ctxt->incNr; i++) { + for (i = start;i < ctxt->incNr; i++) { xmlXIncludeLoadNode(ctxt, i); ret++; } diff --git a/xml2-config.in b/xml2-config.in index 304df6c..f679d81 100644 --- a/xml2-config.in +++ b/xml2-config.in @@ -15,7 +15,6 @@ Known values for OPTION are: --prefix=DIR change libxml prefix [default $prefix] --exec-prefix=DIR change libxml exec prefix [default $exec_prefix] --libs print library linking information - --libtool-libs print linking information for use with libtool --cflags print pre-processor and compiler flags --modules module support enabled --help display this help and exit @@ -1206,7 +1206,7 @@ xmlCreateZMemBuff( int compression ) { } /* Set the header data. The CRC will be needed for the trailer */ - buff->crc = crc32( 0L, Z_NULL, 0 ); + buff->crc = crc32( 0L, NULL, 0 ); hdr_lgth = snprintf( (char *)buff->zbuff, buff->size, "%c%c%c%c%c%c%c%c%c%c", GZ_MAGIC1, GZ_MAGIC2, Z_DEFLATED, @@ -3533,7 +3533,6 @@ xmlGetExternalEntityLoader(void) { * * Load an external entity, note that the use of this function for * unparsed entities may generate problems - * TODO: a more generic External entity API must be designed * * Returns the xmlParserInputPtr or NULL */ @@ -85,6 +85,9 @@ #endif #include <libxml/globals.h> #include <libxml/xmlreader.h> +#ifdef LIBXML_SCHEMATRON_ENABLED +#include <libxml/schematron.h> +#endif #ifdef LIBXML_SCHEMAS_ENABLED #include <libxml/relaxng.h> #include <libxml/xmlschemas.h> @@ -143,6 +146,10 @@ static xmlRelaxNGPtr relaxngschemas = NULL; static char * schema = NULL; static xmlSchemaPtr wxschemas = NULL; #endif +#ifdef LIBXML_SCHEMAS_ENABLED +static char * schematron = NULL; +static xmlSchematronPtr wxschematron = NULL; +#endif static int repeat = 0; static int insert = 0; #if defined(LIBXML_HTML_ENABLED) || defined(LIBXML_VALID_ENABLED) @@ -189,7 +196,7 @@ static const char *pattern = NULL; static xmlPatternPtr patternc = NULL; static xmlStreamCtxtPtr patstream = NULL; #endif -static int options = 0; +static int options = XML_PARSE_COMPACT; static int sax = 0; /************************************************************************ @@ -228,7 +235,7 @@ void parsePath(const xmlChar *path) { } } -xmlExternalEntityLoader defaultEntityLoader = NULL; +static xmlExternalEntityLoader defaultEntityLoader = NULL; static xmlParserInputPtr xmllintExternalEntityLoader(const char *URL, const char *ID, @@ -413,7 +420,7 @@ startTimer(void) * message about the timing performed; format is a printf * type argument */ -static void +static void XMLCDECL endTimer(const char *fmt, ...) { long msec; @@ -449,7 +456,7 @@ startTimer(void) { begin = clock(); } -static void +static void XMLCDECL endTimer(const char *fmt, ...) { long msec; @@ -478,7 +485,7 @@ startTimer(void) * Do nothing */ } -static void +static void XMLCDECL endTimer(char *format, ...) { /* @@ -501,7 +508,7 @@ endTimer(char *format, ...) * HTML ouput * * * ************************************************************************/ -char buffer[50000]; +static char buffer[50000]; static void xmlHTMLEncodeSend(void) { @@ -597,7 +604,7 @@ xmlHTMLPrintFileContext(xmlParserInputPtr input) { * Display and format an error messages, gives file, line, position and * extra parameters. */ -static void +static void XMLCDECL xmlHTMLError(void *ctx, const char *msg, ...) { xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; @@ -634,7 +641,7 @@ xmlHTMLError(void *ctx, const char *msg, ...) * Display and format a warning messages, gives file, line, position and * extra parameters. */ -static void +static void XMLCDECL xmlHTMLWarning(void *ctx, const char *msg, ...) { xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; @@ -672,7 +679,7 @@ xmlHTMLWarning(void *ctx, const char *msg, ...) * Display and format an validity error messages, gives file, * line, position and extra parameters. */ -static void +static void XMLCDECL xmlHTMLValidityError(void *ctx, const char *msg, ...) { xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; @@ -709,7 +716,7 @@ xmlHTMLValidityError(void *ctx, const char *msg, ...) * Display and format a validity warning messages, gives file, line, * position and extra parameters. */ -static void +static void XMLCDECL xmlHTMLValidityWarning(void *ctx, const char *msg, ...) { xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; @@ -810,7 +817,7 @@ static void myClose(FILE *f) { /* * empty SAX block */ -xmlSAXHandler emptySAXHandlerStruct = { +static xmlSAXHandler emptySAXHandlerStruct = { NULL, /* internalSubset */ NULL, /* isStandalone */ NULL, /* hasInternalSubset */ @@ -845,7 +852,7 @@ xmlSAXHandler emptySAXHandlerStruct = { NULL /* xmlStructuredErrorFunc */ }; -xmlSAXHandlerPtr emptySAXHandler = &emptySAXHandlerStruct; +static xmlSAXHandlerPtr emptySAXHandler = &emptySAXHandlerStruct; extern xmlSAXHandlerPtr debugSAXHandler; static int callbacks; @@ -1373,7 +1380,7 @@ commentDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *value) * Display and format a warning messages, gives file, line, position and * extra parameters. */ -static void +static void XMLCDECL warningDebug(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) { va_list args; @@ -1396,7 +1403,7 @@ warningDebug(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) * Display and format a error messages, gives file, line, position and * extra parameters. */ -static void +static void XMLCDECL errorDebug(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) { va_list args; @@ -1419,7 +1426,7 @@ errorDebug(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) * Display and format a fatalError messages, gives file, line, position and * extra parameters. */ -static void +static void XMLCDECL fatalErrorDebug(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) { va_list args; @@ -1433,7 +1440,7 @@ fatalErrorDebug(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) va_end(args); } -xmlSAXHandler debugSAXHandlerStruct = { +static xmlSAXHandler debugSAXHandlerStruct = { internalSubsetDebug, isStandaloneDebug, hasInternalSubsetDebug, @@ -1557,7 +1564,7 @@ endElementNsDebug(void *ctx ATTRIBUTE_UNUSED, fprintf(stdout, ", '%s')\n", (char *) URI); } -xmlSAXHandler debugSAX2HandlerStruct = { +static xmlSAXHandler debugSAX2HandlerStruct = { internalSubsetDebug, isStandaloneDebug, hasInternalSubsetDebug, @@ -1592,7 +1599,7 @@ xmlSAXHandler debugSAX2HandlerStruct = { NULL }; -xmlSAXHandlerPtr debugSAX2Handler = &debugSAX2HandlerStruct; +static xmlSAXHandlerPtr debugSAX2Handler = &debugSAX2HandlerStruct; static void testSAX(const char *filename) { @@ -2580,6 +2587,46 @@ static void parseAndPrintFile(char *filename, xmlParserCtxtPtr rectxt) { xmlFreeValidCtxt(cvp); } #endif /* LIBXML_VALID_ENABLED */ +#ifdef LIBXML_SCHEMATRON_ENABLED + if (wxschematron != NULL) { + xmlSchematronValidCtxtPtr ctxt; + int ret; + int flag; + + if ((timing) && (!repeat)) { + startTimer(); + } + + if (debug) + flag = XML_SCHEMATRON_OUT_XML; + else + flag = XML_SCHEMATRON_OUT_TEXT; + if (noout) + flag |= XML_SCHEMATRON_OUT_QUIET; + ctxt = xmlSchematronNewValidCtxt(wxschematron, flag); +#if 0 + xmlSchematronSetValidErrors(ctxt, + (xmlSchematronValidityErrorFunc) fprintf, + (xmlSchematronValidityWarningFunc) fprintf, + stderr); +#endif + ret = xmlSchematronValidateDoc(ctxt, doc); + if (ret == 0) { + fprintf(stderr, "%s validates\n", filename); + } else if (ret > 0) { + fprintf(stderr, "%s fails to validate\n", filename); + progresult = XMLLINT_ERR_VALID; + } else { + fprintf(stderr, "%s validation generated an internal error\n", + filename); + progresult = XMLLINT_ERR_VALID; + } + xmlSchematronFreeValidCtxt(ctxt); + if ((timing) && (!repeat)) { + endTimer("Validating"); + } + } +#endif #ifdef LIBXML_SCHEMAS_ENABLED if (relaxngschemas != NULL) { xmlRelaxNGValidCtxtPtr ctxt; @@ -2666,54 +2713,36 @@ static void parseAndPrintFile(char *filename, xmlParserCtxtPtr rectxt) { static void showVersion(const char *name) { fprintf(stderr, "%s: using libxml version %s\n", name, xmlParserVersion); fprintf(stderr, " compiled with: "); -#ifdef LIBXML_VALID_ENABLED - fprintf(stderr, "DTDValid "); -#endif -#ifdef LIBXML_FTP_ENABLED - fprintf(stderr, "FTP "); -#endif -#ifdef LIBXML_HTTP_ENABLED - fprintf(stderr, "HTTP "); -#endif -#ifdef LIBXML_HTML_ENABLED - fprintf(stderr, "HTML "); -#endif -#ifdef LIBXML_C14N_ENABLED - fprintf(stderr, "C14N "); -#endif -#ifdef LIBXML_CATALOG_ENABLED - fprintf(stderr, "Catalog "); -#endif -#ifdef LIBXML_XPATH_ENABLED - fprintf(stderr, "XPath "); -#endif -#ifdef LIBXML_XPTR_ENABLED - fprintf(stderr, "XPointer "); -#endif -#ifdef LIBXML_XINCLUDE_ENABLED - fprintf(stderr, "XInclude "); -#endif -#ifdef LIBXML_ICONV_ENABLED - fprintf(stderr, "Iconv "); -#endif -#ifdef DEBUG_MEMORY_LOCATION - fprintf(stderr, "MemDebug "); -#endif -#ifdef LIBXML_UNICODE_ENABLED - fprintf(stderr, "Unicode "); -#endif -#ifdef LIBXML_REGEXP_ENABLED - fprintf(stderr, "Regexps "); -#endif -#ifdef LIBXML_AUTOMATA_ENABLED - fprintf(stderr, "Automata "); -#endif -#ifdef LIBXML_SCHEMAS_ENABLED - fprintf(stderr, "Schemas "); -#endif -#ifdef LIBXML_MODULES_ENABLED - fprintf(stderr, "Modules "); -#endif + if (xmlHasFeature(XML_FEATURE_THREAD)) fprintf(stderr, "Threads "); + if (xmlHasFeature(XML_FEATURE_TREE)) fprintf(stderr, "Tree "); + if (xmlHasFeature(XML_FEATURE_OUTPUT)) fprintf(stderr, "Output "); + if (xmlHasFeature(XML_FEATURE_PUSH)) fprintf(stderr, "Push "); + if (xmlHasFeature(XML_FEATURE_READER)) fprintf(stderr, "Reader "); + if (xmlHasFeature(XML_FEATURE_PATTERN)) fprintf(stderr, "Patterns "); + if (xmlHasFeature(XML_FEATURE_WRITER)) fprintf(stderr, "Writer "); + if (xmlHasFeature(XML_FEATURE_SAX1)) fprintf(stderr, "SAXv1 "); + if (xmlHasFeature(XML_FEATURE_FTP)) fprintf(stderr, "FTP "); + if (xmlHasFeature(XML_FEATURE_HTTP)) fprintf(stderr, "HTTP "); + if (xmlHasFeature(XML_FEATURE_VALID)) fprintf(stderr, "DTDValid "); + if (xmlHasFeature(XML_FEATURE_HTML)) fprintf(stderr, "HTML "); + if (xmlHasFeature(XML_FEATURE_LEGACY)) fprintf(stderr, "Legacy "); + if (xmlHasFeature(XML_FEATURE_C14N)) fprintf(stderr, "C14N "); + if (xmlHasFeature(XML_FEATURE_CATALOG)) fprintf(stderr, "Catalog "); + if (xmlHasFeature(XML_FEATURE_XPATH)) fprintf(stderr, "XPath "); + if (xmlHasFeature(XML_FEATURE_XPTR)) fprintf(stderr, "XPointer "); + if (xmlHasFeature(XML_FEATURE_XINCLUDE)) fprintf(stderr, "XInclude "); + if (xmlHasFeature(XML_FEATURE_ICONV)) fprintf(stderr, "Iconv "); + if (xmlHasFeature(XML_FEATURE_ISO8859X)) fprintf(stderr, "ISO8859X "); + if (xmlHasFeature(XML_FEATURE_UNICODE)) fprintf(stderr, "Unicode "); + if (xmlHasFeature(XML_FEATURE_REGEXP)) fprintf(stderr, "Regexps "); + if (xmlHasFeature(XML_FEATURE_AUTOMATA)) fprintf(stderr, "Automata "); + if (xmlHasFeature(XML_FEATURE_EXPR)) fprintf(stderr, "Expr "); + if (xmlHasFeature(XML_FEATURE_SCHEMAS)) fprintf(stderr, "Schemas "); + if (xmlHasFeature(XML_FEATURE_SCHEMATRON)) fprintf(stderr, "Schematron "); + if (xmlHasFeature(XML_FEATURE_MODULES)) fprintf(stderr, "Modules "); + if (xmlHasFeature(XML_FEATURE_DEBUG)) fprintf(stderr, "Debug "); + if (xmlHasFeature(XML_FEATURE_DEBUG_MEM)) fprintf(stderr, "MemDebug "); + if (xmlHasFeature(XML_FEATURE_DEBUG_RUN)) fprintf(stderr, "RunDebug "); fprintf(stderr, "\n"); } @@ -2743,6 +2772,7 @@ static void usage(const char *name) { printf("\t--path 'paths': provide a set of paths for resources\n"); printf("\t--load-trace : print trace of all external entites loaded\n"); printf("\t--nonet : refuse to fetch DTDs or entities over network\n"); + printf("\t--nocompact : do not generate compact text nodes\n"); printf("\t--htmlout : output results as HTML\n"); printf("\t--nowrap : do not put HTML doc wrapper\n"); #ifdef LIBXML_VALID_ENABLED @@ -2810,6 +2840,9 @@ static void usage(const char *name) { printf("\t--relaxng schema : do RelaxNG validation against the schema\n"); printf("\t--schema schema : do validation against the WXS schema\n"); #endif +#ifdef LIBXML_SCHEMATRON_ENABLED + printf("\t--schematron schema : do validation against a schematron\n"); +#endif #ifdef LIBXML_SAX1_ENABLED printf("\t--sax1: use the old SAX1 interfaces for processing\n"); #endif @@ -3112,9 +3145,19 @@ main(int argc, char **argv) { schema = argv[i]; noent++; #endif +#ifdef LIBXML_SCHEMATRON_ENABLED + } else if ((!strcmp(argv[i], "-schematron")) || + (!strcmp(argv[i], "--schematron"))) { + i++; + schematron = argv[i]; + noent++; +#endif } else if ((!strcmp(argv[i], "-nonet")) || (!strcmp(argv[i], "--nonet"))) { options |= XML_PARSE_NONET; + } else if ((!strcmp(argv[i], "-nocompact")) || + (!strcmp(argv[i], "--nocompact"))) { + options &= ~XML_PARSE_COMPACT; } else if ((!strcmp(argv[i], "-load-trace")) || (!strcmp(argv[i], "--load-trace"))) { load_trace++; @@ -3193,6 +3236,40 @@ main(int argc, char **argv) { argv[0]); } +#ifdef LIBXML_SCHEMATRON_ENABLED + if ((schematron != NULL) && (sax == 0) +#ifdef LIBXML_READER_ENABLED + && (stream == 0) +#endif /* LIBXML_READER_ENABLED */ + ) { + xmlSchematronParserCtxtPtr ctxt; + + /* forces loading the DTDs */ + xmlLoadExtDtdDefaultValue |= 1; + options |= XML_PARSE_DTDLOAD; + if (timing) { + startTimer(); + } + ctxt = xmlSchematronNewParserCtxt(schematron); +#if 0 + xmlSchematronSetParserErrors(ctxt, + (xmlSchematronValidityErrorFunc) fprintf, + (xmlSchematronValidityWarningFunc) fprintf, + stderr); +#endif + wxschematron = xmlSchematronParse(ctxt); + if (wxschematron == NULL) { + xmlGenericError(xmlGenericErrorContext, + "Schematron schema %s failed to compile\n", schematron); + progresult = XMLLINT_ERR_SCHEMACOMP; + schematron = NULL; + } + xmlSchematronFreeParserCtxt(ctxt); + if (timing) { + endTimer("Compiling the schemas"); + } + } +#endif #ifdef LIBXML_SCHEMAS_ENABLED if ((relaxng != NULL) && (sax == 0) #ifdef LIBXML_READER_ENABLED @@ -3309,6 +3386,11 @@ main(int argc, char **argv) { i++; continue; } + if ((!strcmp(argv[i], "-schematron")) || + (!strcmp(argv[i], "--schematron"))) { + i++; + continue; + } #ifdef LIBXML_PATTERN_ENABLED if ((!strcmp(argv[i], "-pattern")) || (!strcmp(argv[i], "--pattern"))) { @@ -3375,6 +3457,10 @@ main(int argc, char **argv) { if ((files == 0) && (!generate) && (version == 0)) { usage(argv[0]); } +#ifdef LIBXML_SCHEMATRON_ENABLED + if (wxschematron != NULL) + xmlSchematronFree(wxschematron); +#endif #ifdef LIBXML_SCHEMAS_ENABLED if (relaxngschemas != NULL) xmlRelaxNGFree(relaxngschemas); diff --git a/xmlmodule.c b/xmlmodule.c index 8b0fab9..6cc86ee 100644 --- a/xmlmodule.c +++ b/xmlmodule.c @@ -85,7 +85,7 @@ xmlModuleOpen(const char *name, int options ATTRIBUTE_UNUSED) __xmlRaiseError(NULL, NULL, NULL, NULL, NULL, XML_FROM_MODULE, XML_MODULE_OPEN, XML_ERR_FATAL, NULL, 0, 0, name, NULL, 0, 0, "failed to open %s\n", name); - return 0; + return(NULL); } module->name = xmlStrdup((const xmlChar *) name); @@ -179,7 +179,7 @@ xmlModuleFree(xmlModulePtr module) { if (NULL == module) { __xmlRaiseError(NULL, NULL, NULL, NULL, NULL, XML_FROM_MODULE, - XML_MODULE_CLOSE, XML_ERR_FATAL, NULL, 0, 0, + XML_MODULE_CLOSE, XML_ERR_FATAL, NULL, 0, NULL, NULL, NULL, 0, 0, "null module pointer\n"); return -1; } diff --git a/xmlreader.c b/xmlreader.c index 14843eb..7efa273 100644 --- a/xmlreader.c +++ b/xmlreader.c @@ -348,7 +348,8 @@ xmlTextReaderFreeNodeList(xmlTextReaderPtr reader, xmlNodePtr cur) { (cur->type == XML_XINCLUDE_END)) && (cur->properties != NULL)) xmlTextReaderFreePropList(reader, cur->properties); - if ((cur->type != XML_ELEMENT_NODE) && + if ((cur->content != (xmlChar *) &(cur->properties)) && + (cur->type != XML_ELEMENT_NODE) && (cur->type != XML_XINCLUDE_START) && (cur->type != XML_XINCLUDE_END) && (cur->type != XML_ENTITY_REF_NODE)) { @@ -422,7 +423,8 @@ xmlTextReaderFreeNode(xmlTextReaderPtr reader, xmlNodePtr cur) { (cur->type == XML_XINCLUDE_END)) && (cur->properties != NULL)) xmlTextReaderFreePropList(reader, cur->properties); - if ((cur->type != XML_ELEMENT_NODE) && + if ((cur->content != (xmlChar *) &(cur->properties)) && + (cur->type != XML_ELEMENT_NODE) && (cur->type != XML_XINCLUDE_START) && (cur->type != XML_XINCLUDE_END) && (cur->type != XML_ENTITY_REF_NODE)) { @@ -598,14 +600,14 @@ xmlTextReaderEntPop(xmlTextReaderPtr reader) xmlNodePtr ret; if (reader->entNr <= 0) - return (0); + return (NULL); reader->entNr--; if (reader->entNr > 0) reader->ent = reader->entTab[reader->entNr - 1]; else reader->ent = NULL; ret = reader->entTab[reader->entNr]; - reader->entTab[reader->entNr] = 0; + reader->entTab[reader->entNr] = NULL; return (ret); } @@ -2172,7 +2174,7 @@ xmlFreeTextReader(xmlTextReaderPtr reader) { if ((reader->ctxt->vctxt.vstateTab != NULL) && (reader->ctxt->vctxt.vstateMax > 0)){ xmlFree(reader->ctxt->vctxt.vstateTab); - reader->ctxt->vctxt.vstateTab = 0; + reader->ctxt->vctxt.vstateTab = NULL; reader->ctxt->vctxt.vstateMax = 0; } if (reader->allocs & XML_TEXTREADER_CTXT) @@ -2309,15 +2311,42 @@ xmlTextReaderGetAttribute(xmlTextReaderPtr reader, const xmlChar *name) { return(NULL); localname = xmlSplitQName2(name, &prefix); - if (localname == NULL) - return(xmlGetProp(reader->node, name)); - - ns = xmlSearchNs(reader->node->doc, reader->node, prefix); - if (ns != NULL) - ret = xmlGetNsProp(reader->node, localname, ns->href); + if (localname == NULL) { + /* + * Namespace default decl + */ + if (xmlStrEqual(name, BAD_CAST "xmlns")) { + ns = reader->node->nsDef; + while (ns != NULL) { + if (ns->prefix == NULL) { + return(xmlStrdup(ns->href)); + } + ns = ns->next; + } + return NULL; + } + return(xmlGetNoNsProp(reader->node, name)); + } - if (localname != NULL) - xmlFree(localname); + /* + * Namespace default decl + */ + if (xmlStrEqual(prefix, BAD_CAST "xmlns")) { + ns = reader->node->nsDef; + while (ns != NULL) { + if ((ns->prefix != NULL) && (xmlStrEqual(ns->prefix, localname))) { + ret = xmlStrdup(ns->href); + break; + } + ns = ns->next; + } + } else { + ns = xmlSearchNs(reader->node->doc, reader->node, prefix); + if (ns != NULL) + ret = xmlGetNsProp(reader->node, localname, ns->href); + } + + xmlFree(localname); if (prefix != NULL) xmlFree(prefix); return(ret); @@ -2338,6 +2367,9 @@ xmlTextReaderGetAttribute(xmlTextReaderPtr reader, const xmlChar *name) { xmlChar * xmlTextReaderGetAttributeNs(xmlTextReaderPtr reader, const xmlChar *localName, const xmlChar *namespaceURI) { + xmlChar *prefix = NULL; + xmlNsPtr ns; + if ((reader == NULL) || (localName == NULL)) return(NULL); if (reader->node == NULL) @@ -2349,6 +2381,21 @@ xmlTextReaderGetAttributeNs(xmlTextReaderPtr reader, const xmlChar *localName, if (reader->node->type != XML_ELEMENT_NODE) return(NULL); + if (xmlStrEqual(namespaceURI, BAD_CAST "http://www.w3.org/2000/xmlns/")) { + if (! xmlStrEqual(localName, BAD_CAST "xmlns")) { + prefix = BAD_CAST localName; + } + ns = reader->node->nsDef; + while (ns != NULL) { + if ((prefix == NULL && ns->prefix == NULL) || + ((ns->prefix != NULL) && (xmlStrEqual(ns->prefix, localName)))) { + return xmlStrdup(ns->href); + } + ns = ns->next; + } + return NULL; + } + return(xmlGetNsProp(reader->node, localName, namespaceURI)); } @@ -2599,6 +2646,8 @@ xmlTextReaderMoveToAttributeNs(xmlTextReaderPtr reader, const xmlChar *localName, const xmlChar *namespaceURI) { xmlAttrPtr prop; xmlNodePtr node; + xmlNsPtr ns; + xmlChar *prefix = NULL; if ((reader == NULL) || (localName == NULL) || (namespaceURI == NULL)) return(-1); @@ -2608,10 +2657,22 @@ xmlTextReaderMoveToAttributeNs(xmlTextReaderPtr reader, return(0); node = reader->node; - /* - * A priori reading http://www.w3.org/TR/REC-xml-names/ there is no - * namespace name associated to "xmlns" - */ + if (xmlStrEqual(namespaceURI, BAD_CAST "http://www.w3.org/2000/xmlns/")) { + if (! xmlStrEqual(localName, BAD_CAST "xmlns")) { + prefix = BAD_CAST localName; + } + ns = reader->node->nsDef; + while (ns != NULL) { + if ((prefix == NULL && ns->prefix == NULL) || + ((ns->prefix != NULL) && (xmlStrEqual(ns->prefix, localName)))) { + reader->curnode = (xmlNodePtr) ns; + return(1); + } + ns = ns->next; + } + return(0); + } + prop = node->properties; while (prop != NULL) { /* @@ -2751,7 +2812,9 @@ xmlTextReaderReadAttributeValue(xmlTextReaderPtr reader) { reader->faketext = xmlNewDocText(reader->node->doc, ns->href); } else { - if (reader->faketext->content != NULL) + if ((reader->faketext->content != NULL) && + (reader->faketext->content != + (xmlChar *) &(reader->faketext->properties))) xmlFree(reader->faketext->content); reader->faketext->content = xmlStrdup(ns->href); } @@ -3880,6 +3943,66 @@ xmlTextReaderCurrentDoc(xmlTextReaderPtr reader) { } #ifdef LIBXML_SCHEMAS_ENABLED + +static char * +xmlTextReaderBuildMessage(const char *msg, va_list ap); + +static void XMLCDECL +xmlTextReaderValidityError(void *ctxt, const char *msg, ...); + +static void XMLCDECL +xmlTextReaderValidityWarning(void *ctxt, const char *msg, ...); + +static void XMLCDECL xmlTextReaderValidityErrorRelay(void *ctx, const char *msg, ...) +{ + xmlTextReaderPtr reader = (xmlTextReaderPtr) ctx; + char * str; + va_list ap; + + va_start(ap,msg); + str = xmlTextReaderBuildMessage(msg,ap); + if (!reader->errorFunc) { + xmlTextReaderValidityError(ctx, "%s", str); + } else { + reader->errorFunc(reader->errorFuncArg, str, XML_PARSER_SEVERITY_VALIDITY_ERROR, NULL /* locator */); + } + if (str != NULL) + xmlFree(str); + va_end(ap); +} + +static void XMLCDECL xmlTextReaderValidityWarningRelay(void *ctx, const char *msg, ...) +{ + xmlTextReaderPtr reader = (xmlTextReaderPtr) ctx; + char * str; + va_list ap; + + va_start(ap,msg); + str = xmlTextReaderBuildMessage(msg,ap); + if (!reader->errorFunc) { + xmlTextReaderValidityWarning(ctx, "%s", str); + } else { + reader->errorFunc(reader->errorFuncArg, str, XML_PARSER_SEVERITY_VALIDITY_WARNING, NULL /* locator */); + } + if (str != NULL) + xmlFree(str); + va_end(ap); +} + +static void +xmlTextReaderStructuredError(void *ctxt, xmlErrorPtr error); + +static void xmlTextReaderValidityStructuredRelay(void * userData, xmlErrorPtr error) +{ + xmlTextReaderPtr reader = (xmlTextReaderPtr) userData; + + if (reader->sErrorFunc) { + reader->sErrorFunc(reader->errorFuncArg, error); + } else { + xmlTextReaderStructuredError(reader, error); + } +} + /** * xmlTextReaderRelaxNGSetSchema: * @reader: the xmlTextReaderPtr used @@ -3924,9 +4047,14 @@ xmlTextReaderRelaxNGSetSchema(xmlTextReaderPtr reader, xmlRelaxNGPtr schema) { return(-1); if (reader->errorFunc != NULL) { xmlRelaxNGSetValidErrors(reader->rngValidCtxt, - (xmlRelaxNGValidityErrorFunc)reader->errorFunc, - (xmlRelaxNGValidityWarningFunc) reader->errorFunc, - reader->errorFuncArg); + xmlTextReaderValidityErrorRelay, + xmlTextReaderValidityWarningRelay, + reader); + } + if (reader->sErrorFunc != NULL) { + xmlRelaxNGSetValidStructuredErrors(reader->rngValidCtxt, + xmlTextReaderValidityStructuredRelay, + reader); } reader->rngValidErrors = 0; reader->rngFullNode = NULL; @@ -3999,9 +4127,14 @@ xmlTextReaderSetSchema(xmlTextReaderPtr reader, xmlSchemaPtr schema) { } if (reader->errorFunc != NULL) { xmlSchemaSetValidErrors(reader->xsdValidCtxt, - (xmlSchemaValidityErrorFunc)reader->errorFunc, - (xmlSchemaValidityWarningFunc) reader->errorFunc, - reader->errorFuncArg); + xmlTextReaderValidityErrorRelay, + xmlTextReaderValidityWarningRelay, + reader); + } + if (reader->sErrorFunc != NULL) { + xmlSchemaSetValidStructuredErrors(reader->xsdValidCtxt, + xmlTextReaderValidityStructuredRelay, + reader); } reader->xsdValidErrors = 0; reader->validate = XML_TEXTREADER_VALIDATE_XSD; @@ -4051,9 +4184,14 @@ xmlTextReaderRelaxNGValidate(xmlTextReaderPtr reader, const char *rng) { ctxt = xmlRelaxNGNewParserCtxt(rng); if (reader->errorFunc != NULL) { xmlRelaxNGSetParserErrors(ctxt, - (xmlRelaxNGValidityErrorFunc) reader->errorFunc, - (xmlRelaxNGValidityWarningFunc) reader->errorFunc, - reader->errorFuncArg); + xmlTextReaderValidityErrorRelay, + xmlTextReaderValidityWarningRelay, + reader); + } + if (reader->sErrorFunc != NULL) { + xmlRelaxNGSetValidStructuredErrors(reader->rngValidCtxt, + xmlTextReaderValidityStructuredRelay, + reader); } reader->rngSchemas = xmlRelaxNGParse(ctxt); xmlRelaxNGFreeParserCtxt(ctxt); @@ -4067,9 +4205,14 @@ xmlTextReaderRelaxNGValidate(xmlTextReaderPtr reader, const char *rng) { } if (reader->errorFunc != NULL) { xmlRelaxNGSetValidErrors(reader->rngValidCtxt, - (xmlRelaxNGValidityErrorFunc)reader->errorFunc, - (xmlRelaxNGValidityWarningFunc) reader->errorFunc, - reader->errorFuncArg); + xmlTextReaderValidityErrorRelay, + xmlTextReaderValidityWarningRelay, + reader); + } + if (reader->sErrorFunc != NULL) { + xmlRelaxNGSetValidStructuredErrors(reader->rngValidCtxt, + xmlTextReaderValidityStructuredRelay, + reader); } reader->rngValidErrors = 0; reader->rngFullNode = NULL; @@ -4129,9 +4272,9 @@ xmlTextReaderSchemaValidate(xmlTextReaderPtr reader, const char *xsd) { ctxt = xmlSchemaNewParserCtxt(xsd); if (reader->errorFunc != NULL) { xmlSchemaSetParserErrors(ctxt, - (xmlSchemaValidityErrorFunc) reader->errorFunc, - (xmlSchemaValidityWarningFunc) reader->errorFunc, - reader->errorFuncArg); + xmlTextReaderValidityErrorRelay, + xmlTextReaderValidityWarningRelay, + reader); } reader->xsdSchemas = xmlSchemaParse(ctxt); xmlSchemaFreeParserCtxt(ctxt); @@ -4155,9 +4298,14 @@ xmlTextReaderSchemaValidate(xmlTextReaderPtr reader, const char *xsd) { } if (reader->errorFunc != NULL) { xmlSchemaSetValidErrors(reader->xsdValidCtxt, - (xmlSchemaValidityErrorFunc)reader->errorFunc, - (xmlSchemaValidityWarningFunc) reader->errorFunc, - reader->errorFuncArg); + xmlTextReaderValidityErrorRelay, + xmlTextReaderValidityWarningRelay, + reader); + } + if (reader->sErrorFunc != NULL) { + xmlSchemaSetValidStructuredErrors(reader->xsdValidCtxt, + xmlTextReaderValidityStructuredRelay, + reader); } reader->xsdValidErrors = 0; reader->validate = XML_TEXTREADER_VALIDATE_XSD; @@ -4385,7 +4533,7 @@ xmlTextReaderStructuredError(void *ctxt, xmlErrorPtr error) { } } -static void +static void XMLCDECL xmlTextReaderError(void *ctxt, const char *msg, ...) { va_list ap; @@ -4397,7 +4545,7 @@ xmlTextReaderError(void *ctxt, const char *msg, ...) { } -static void +static void XMLCDECL xmlTextReaderWarning(void *ctxt, const char *msg, ...) { va_list ap; @@ -4408,7 +4556,7 @@ xmlTextReaderWarning(void *ctxt, const char *msg, ...) { va_end(ap); } -static void +static void XMLCDECL xmlTextReaderValidityError(void *ctxt, const char *msg, ...) { va_list ap; int len = xmlStrlen((const xmlChar *) msg); @@ -4426,7 +4574,7 @@ xmlTextReaderValidityError(void *ctxt, const char *msg, ...) { } } -static void +static void XMLCDECL xmlTextReaderValidityWarning(void *ctxt, const char *msg, ...) { va_list ap; int len = xmlStrlen((const xmlChar *) msg); @@ -4467,6 +4615,22 @@ xmlTextReaderSetErrorHandler(xmlTextReaderPtr reader, reader->errorFunc = f; reader->sErrorFunc = NULL; reader->errorFuncArg = arg; +#ifdef LIBXML_SCHEMAS_ENABLED + if (reader->rngValidCtxt) { + xmlRelaxNGSetValidErrors(reader->rngValidCtxt, + xmlTextReaderValidityErrorRelay, + xmlTextReaderValidityWarningRelay, + reader); + xmlRelaxNGSetValidStructuredErrors(reader->rngValidCtxt, NULL, reader); + } + if (reader->xsdValidCtxt) { + xmlSchemaSetValidErrors(reader->xsdValidCtxt, + xmlTextReaderValidityErrorRelay, + xmlTextReaderValidityWarningRelay, + reader); + xmlSchemaSetValidStructuredErrors(reader->xsdValidCtxt, NULL, reader); + } +#endif } else { /* restore defaults */ @@ -4477,6 +4641,16 @@ xmlTextReaderSetErrorHandler(xmlTextReaderPtr reader, reader->errorFunc = NULL; reader->sErrorFunc = NULL; reader->errorFuncArg = NULL; +#ifdef LIBXML_SCHEMAS_ENABLED + if (reader->rngValidCtxt) { + xmlRelaxNGSetValidErrors(reader->rngValidCtxt, NULL, NULL, reader); + xmlRelaxNGSetValidStructuredErrors(reader->rngValidCtxt, NULL, reader); + } + if (reader->xsdValidCtxt) { + xmlSchemaSetValidErrors(reader->xsdValidCtxt, NULL, NULL, reader); + xmlSchemaSetValidStructuredErrors(reader->xsdValidCtxt, NULL, reader); + } +#endif } } @@ -4503,6 +4677,20 @@ xmlTextReaderSetStructuredErrorHandler(xmlTextReaderPtr reader, reader->sErrorFunc = f; reader->errorFunc = NULL; reader->errorFuncArg = arg; +#ifdef LIBXML_SCHEMAS_ENABLED + if (reader->rngValidCtxt) { + xmlRelaxNGSetValidErrors(reader->rngValidCtxt, NULL, NULL, reader); + xmlRelaxNGSetValidStructuredErrors(reader->rngValidCtxt, + xmlTextReaderValidityStructuredRelay, + reader); + } + if (reader->xsdValidCtxt) { + xmlSchemaSetValidErrors(reader->xsdValidCtxt, NULL, NULL, reader); + xmlSchemaSetValidStructuredErrors(reader->xsdValidCtxt, + xmlTextReaderValidityStructuredRelay, + reader); + } +#endif } else { /* restore defaults */ @@ -4514,6 +4702,16 @@ xmlTextReaderSetStructuredErrorHandler(xmlTextReaderPtr reader, reader->errorFunc = NULL; reader->sErrorFunc = NULL; reader->errorFuncArg = NULL; +#ifdef LIBXML_SCHEMAS_ENABLED + if (reader->rngValidCtxt) { + xmlRelaxNGSetValidErrors(reader->rngValidCtxt, NULL, NULL, reader); + xmlRelaxNGSetValidStructuredErrors(reader->rngValidCtxt, NULL, reader); + } + if (reader->xsdValidCtxt) { + xmlSchemaSetValidErrors(reader->xsdValidCtxt, NULL, NULL, reader); + xmlSchemaSetValidStructuredErrors(reader->xsdValidCtxt, NULL, reader); + } +#endif } } @@ -4582,6 +4780,12 @@ xmlTextReaderSetup(xmlTextReaderPtr reader, if (reader == NULL) return (-1); + /* + * we force the generation of compact text nodes on the reader + * since usr applications should never modify the tree + */ + options |= XML_PARSE_COMPACT; + reader->doc = NULL; reader->entNr = 0; reader->parserFlags = options; diff --git a/xmlregexp.c b/xmlregexp.c index ee635f1..45b917b 100644 --- a/xmlregexp.c +++ b/xmlregexp.c @@ -38,7 +38,7 @@ #endif /* #define DEBUG_REGEXP_GRAPH */ -/* #define DEBUG_REGEXP_EXEC */ +/* #define DEBUG_REGEXP_EXEC */ /* #define DEBUG_PUSH */ /* #define DEBUG_COMPACTION */ @@ -211,6 +211,10 @@ struct _xmlAutomataState { int maxTrans; int nbTrans; xmlRegTrans *trans; + /* knowing states ponting to us can speed things up */ + int maxTransTo; + int nbTransTo; + int *transTo; }; typedef struct _xmlAutomata xmlRegParserCtxt; @@ -242,6 +246,7 @@ struct _xmlAutomata { xmlRegCounter *counters; int determinist; + int negs; }; struct _xmlRegexp { @@ -329,6 +334,7 @@ struct _xmlRegExecCtxt { static void xmlFAParseRegExp(xmlRegParserCtxtPtr ctxt, int top); static void xmlRegFreeState(xmlRegStatePtr state); static void xmlRegFreeAtom(xmlRegAtomPtr atom); +static int xmlRegStrEqualWildcard(const xmlChar *expStr, const xmlChar *valStr); /************************************************************************ * * @@ -414,6 +420,7 @@ xmlRegEpxFromParse(xmlRegParserCtxtPtr ctxt) { if ((ret->determinist != 0) && (ret->nbCounters == 0) && + (ctxt->negs == 0) && (ret->atoms != NULL) && (ret->atoms[0] != NULL) && (ret->atoms[0]->type == XML_REGEXP_STRING)) { @@ -656,6 +663,7 @@ xmlRegNewParserCtxt(const xmlChar *string) { ret->string = xmlStrdup(string); ret->cur = ret->string; ret->neg = 0; + ret->negs = 0; ret->error = 0; ret->determinist = -1; return(ret); @@ -751,6 +759,8 @@ xmlRegFreeAtom(xmlRegAtomPtr atom) { xmlFree(atom->ranges); if ((atom->type == XML_REGEXP_STRING) && (atom->valuep != NULL)) xmlFree(atom->valuep); + if ((atom->type == XML_REGEXP_STRING) && (atom->valuep2 != NULL)) + xmlFree(atom->valuep2); if ((atom->type == XML_REGEXP_BLOCK_NAME) && (atom->valuep != NULL)) xmlFree(atom->valuep); xmlFree(atom); @@ -784,6 +794,8 @@ xmlRegFreeState(xmlRegStatePtr state) { if (state->trans != NULL) xmlFree(state->trans); + if (state->transTo != NULL) + xmlFree(state->transTo); xmlFree(state); } @@ -971,6 +983,8 @@ xmlRegPrintAtom(FILE *output, xmlRegAtomPtr atom) { fprintf(output, "NULL\n"); return; } + if (atom->neg) + fprintf(output, "not "); xmlRegPrintAtomType(output, atom->type); xmlRegPrintQuantType(output, atom->quant); if (atom->quant == XML_REGEXP_QUANT_RANGE) @@ -1191,9 +1205,37 @@ xmlRegAtomPush(xmlRegParserCtxtPtr ctxt, xmlRegAtomPtr atom) { } static void +xmlRegStateAddTransTo(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr target, + int from) { + if (target->maxTransTo == 0) { + target->maxTransTo = 8; + target->transTo = (int *) xmlMalloc(target->maxTransTo * + sizeof(int)); + if (target->transTo == NULL) { + xmlRegexpErrMemory(ctxt, "adding transition"); + target->maxTransTo = 0; + return; + } + } else if (target->nbTransTo >= target->maxTransTo) { + int *tmp; + target->maxTransTo *= 2; + tmp = (int *) xmlRealloc(target->transTo, target->maxTransTo * + sizeof(int)); + if (tmp == NULL) { + xmlRegexpErrMemory(ctxt, "adding transition"); + target->maxTransTo /= 2; + return; + } + target->transTo = tmp; + } + target->transTo[target->nbTransTo] = from; + target->nbTransTo++; +} + +static void xmlRegStateAddTrans(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr state, xmlRegAtomPtr atom, xmlRegStatePtr target, - int counter, int count) { + int counter, int count, int nchk) { int nrtrans; @@ -1211,21 +1253,24 @@ xmlRegStateAddTrans(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr state, * so, silently ignore this request. */ - for (nrtrans=0; nrtrans<state->nbTrans; nrtrans++) { - if ((state->trans[nrtrans].atom == atom) && - (state->trans[nrtrans].to == target->no) && - (state->trans[nrtrans].counter == counter) && - (state->trans[nrtrans].count == count)) { + if (nchk == 0) { + for (nrtrans = state->nbTrans - 1; nrtrans >= 0; nrtrans--) { + xmlRegTransPtr trans = &(state->trans[nrtrans]); + if ((trans->atom == atom) && + (trans->to == target->no) && + (trans->counter == counter) && + (trans->count == count)) { #ifdef DEBUG_REGEXP_GRAPH - printf("Ignoring duplicate transition from %d to %d\n", - state->no, target->no); + printf("Ignoring duplicate transition from %d to %d\n", + state->no, target->no); #endif - return; - } + return; + } + } } if (state->maxTrans == 0) { - state->maxTrans = 4; + state->maxTrans = 8; state->trans = (xmlRegTrans *) xmlMalloc(state->maxTrans * sizeof(xmlRegTrans)); if (state->trans == NULL) { @@ -1264,6 +1309,7 @@ xmlRegStateAddTrans(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr state, state->trans[state->nbTrans].counter = counter; state->trans[state->nbTrans].count = count; state->nbTrans++; + xmlRegStateAddTransTo(ctxt, target, state->no); } static int @@ -1313,9 +1359,9 @@ xmlFAGenerateAllTransition(xmlRegParserCtxtPtr ctxt, ctxt->state = to; } if (lax) - xmlRegStateAddTrans(ctxt, from, NULL, to, -1, REGEXP_ALL_LAX_COUNTER); + xmlRegStateAddTrans(ctxt, from, NULL, to, -1, REGEXP_ALL_LAX_COUNTER, 0); else - xmlRegStateAddTrans(ctxt, from, NULL, to, -1, REGEXP_ALL_COUNTER); + xmlRegStateAddTrans(ctxt, from, NULL, to, -1, REGEXP_ALL_COUNTER, 0); } /** @@ -1333,7 +1379,7 @@ xmlFAGenerateEpsilonTransition(xmlRegParserCtxtPtr ctxt, xmlRegStatePush(ctxt, to); ctxt->state = to; } - xmlRegStateAddTrans(ctxt, from, NULL, to, -1, -1); + xmlRegStateAddTrans(ctxt, from, NULL, to, -1, -1, 0); } /** @@ -1352,7 +1398,7 @@ xmlFAGenerateCountedEpsilonTransition(xmlRegParserCtxtPtr ctxt, xmlRegStatePush(ctxt, to); ctxt->state = to; } - xmlRegStateAddTrans(ctxt, from, NULL, to, counter, -1); + xmlRegStateAddTrans(ctxt, from, NULL, to, counter, -1, 0); } /** @@ -1371,7 +1417,7 @@ xmlFAGenerateCountedTransition(xmlRegParserCtxtPtr ctxt, xmlRegStatePush(ctxt, to); ctxt->state = to; } - xmlRegStateAddTrans(ctxt, from, NULL, to, -1, counter); + xmlRegStateAddTrans(ctxt, from, NULL, to, -1, counter, 0); } /** @@ -1467,6 +1513,23 @@ xmlFAGenerateTransitions(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr from, break; } return(0); + } else if ((atom->min == 0) && (atom->max == 0) && + (atom->quant == XML_REGEXP_QUANT_RANGE)) { + /* + * we can discard the atom and generate an epsilon transition instead + */ + if (to == NULL) { + to = xmlRegNewState(ctxt); + if (to != NULL) + xmlRegStatePush(ctxt, to); + else { + return(-1); + } + } + xmlFAGenerateEpsilonTransition(ctxt, from, to); + ctxt->state = to; + xmlRegFreeAtom(atom); + return(0); } else { if (to == NULL) { to = xmlRegNewState(ctxt); @@ -1479,7 +1542,7 @@ xmlFAGenerateTransitions(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr from, if (xmlRegAtomPush(ctxt, atom) < 0) { return(-1); } - xmlRegStateAddTrans(ctxt, from, atom, to, -1, -1); + xmlRegStateAddTrans(ctxt, from, atom, to, -1, -1, 0); ctxt->state = to; } switch (atom->quant) { @@ -1490,11 +1553,11 @@ xmlFAGenerateTransitions(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr from, case XML_REGEXP_QUANT_MULT: atom->quant = XML_REGEXP_QUANT_ONCE; xmlFAGenerateEpsilonTransition(ctxt, from, to); - xmlRegStateAddTrans(ctxt, to, atom, to, -1, -1); + xmlRegStateAddTrans(ctxt, to, atom, to, -1, -1, 0); break; case XML_REGEXP_QUANT_PLUS: atom->quant = XML_REGEXP_QUANT_ONCE; - xmlRegStateAddTrans(ctxt, to, atom, to, -1, -1); + xmlRegStateAddTrans(ctxt, to, atom, to, -1, -1, 0); break; default: break; @@ -1538,6 +1601,8 @@ xmlFAReduceEpsilonTransitions(xmlRegParserCtxtPtr ctxt, int fromnr, from->type = XML_REGEXP_FINAL_STATE; } for (transnr = 0;transnr < to->nbTrans;transnr++) { + if (to->trans[transnr].to < 0) + continue; if (to->trans[transnr].atom == NULL) { /* * Don't remove counted transitions @@ -1549,7 +1614,7 @@ xmlFAReduceEpsilonTransitions(xmlRegParserCtxtPtr ctxt, int fromnr, xmlRegStateAddTrans(ctxt, from, NULL, ctxt->states[newto], - -1, to->trans[transnr].count); + -1, to->trans[transnr].count, 0); } else { #ifdef DEBUG_REGEXP_GRAPH printf("Found epsilon trans %d from %d to %d\n", @@ -1572,10 +1637,10 @@ xmlFAReduceEpsilonTransitions(xmlRegParserCtxtPtr ctxt, int fromnr, if (to->trans[transnr].counter >= 0) { xmlRegStateAddTrans(ctxt, from, to->trans[transnr].atom, ctxt->states[newto], - to->trans[transnr].counter, -1); + to->trans[transnr].counter, -1, 1); } else { xmlRegStateAddTrans(ctxt, from, to->trans[transnr].atom, - ctxt->states[newto], counter, -1); + ctxt->states[newto], counter, -1, 1); } } } @@ -1583,6 +1648,89 @@ xmlFAReduceEpsilonTransitions(xmlRegParserCtxtPtr ctxt, int fromnr, } /** + * xmlFAEliminateSimpleEpsilonTransitions: + * @ctxt: a regexp parser context + * + * Eliminating general epsilon transitions can get costly in the general + * algorithm due to the large amount of generated new transitions and + * associated comparisons. However for simple epsilon transition used just + * to separate building blocks when generating the automata this can be + * reduced to state elimination: + * - if there exists an epsilon from X to Y + * - if there is no other transition from X + * then X and Y are semantically equivalent and X can be eliminated + * If X is the start state then make Y the start state, else replace the + * target of all transitions to X by transitions to Y. + */ +static void +xmlFAEliminateSimpleEpsilonTransitions(xmlRegParserCtxtPtr ctxt) { + int statenr, i, j, newto; + xmlRegStatePtr state, tmp; + + for (statenr = 0;statenr < ctxt->nbStates;statenr++) { + state = ctxt->states[statenr]; + if (state == NULL) + continue; + if (state->nbTrans != 1) + continue; + /* is the only transition out a basic transition */ + if ((state->trans[0].atom == NULL) && + (state->trans[0].to >= 0) && + (state->trans[0].to != statenr) && + (state->trans[0].counter < 0) && + (state->trans[0].count < 0)) { + newto = state->trans[0].to; + + if (state->type == XML_REGEXP_START_STATE) { +#ifdef DEBUG_REGEXP_GRAPH + printf("Found simple epsilon trans from start %d to %d\n", + statenr, newto); +#endif + } else { +#ifdef DEBUG_REGEXP_GRAPH + printf("Found simple epsilon trans from %d to %d\n", + statenr, newto); +#endif + for (i = 0;i < state->nbTransTo;i++) { + tmp = ctxt->states[state->transTo[i]]; + for (j = 0;j < tmp->nbTrans;j++) { + if (tmp->trans[j].to == statenr) { + tmp->trans[j].to = newto; +#ifdef DEBUG_REGEXP_GRAPH + printf("Changed transition %d on %d to go to %d\n", + j, tmp->no, newto); +#endif + xmlRegStateAddTransTo(ctxt, ctxt->states[newto], + tmp->no); + } + } + } +#if 0 + for (i = 0;i < ctxt->nbStates;i++) { + tmp = ctxt->states[i]; + for (j = 0;j < tmp->nbTrans;j++) { + if (tmp->trans[j].to == statenr) { + tmp->trans[j].to = newto; +#ifdef DEBUG_REGEXP_GRAPH + printf("Changed transition %d on %d to go to %d\n", + j, tmp->no, newto); +#endif + } + } + } +#endif + if (state->type == XML_REGEXP_FINAL_STATE) + ctxt->states[newto]->type = XML_REGEXP_FINAL_STATE; + /* eliminate the transition completely */ + state->nbTrans = 0; + + + } + + } + } +} +/** * xmlFAEliminateEpsilonTransitions: * @ctxt: a regexp parser context * @@ -1591,9 +1739,13 @@ static void xmlFAEliminateEpsilonTransitions(xmlRegParserCtxtPtr ctxt) { int statenr, transnr; xmlRegStatePtr state; + int has_epsilon; if (ctxt->states == NULL) return; + xmlFAEliminateSimpleEpsilonTransitions(ctxt); + + has_epsilon = 0; /* * build the completed transitions bypassing the epsilons @@ -1625,6 +1777,7 @@ xmlFAEliminateEpsilonTransitions(xmlRegParserCtxtPtr ctxt) { transnr, statenr, newto); #endif state->mark = XML_REGEXP_MARK_START; + has_epsilon = 1; xmlFAReduceEpsilonTransitions(ctxt, statenr, newto, state->trans[transnr].counter); state->mark = XML_REGEXP_MARK_NORMAL; @@ -1640,15 +1793,18 @@ xmlFAEliminateEpsilonTransitions(xmlRegParserCtxtPtr ctxt) { /* * Eliminate the epsilon transitions */ - for (statenr = 0;statenr < ctxt->nbStates;statenr++) { - state = ctxt->states[statenr]; - if (state == NULL) - continue; - for (transnr = 0;transnr < state->nbTrans;transnr++) { - if ((state->trans[transnr].atom == NULL) && - (state->trans[transnr].count < 0) && - (state->trans[transnr].to >= 0)) { - state->trans[transnr].to = -1; + if (has_epsilon) { + for (statenr = 0;statenr < ctxt->nbStates;statenr++) { + state = ctxt->states[statenr]; + if (state == NULL) + continue; + for (transnr = 0;transnr < state->nbTrans;transnr++) { + xmlRegTransPtr trans = &(state->trans[transnr]); + if ((trans->atom == NULL) && + (trans->count < 0) && + (trans->to >= 0)) { + trans->to = -1; + } } } } @@ -1724,6 +1880,8 @@ xmlFAEliminateEpsilonTransitions(xmlRegParserCtxtPtr ctxt) { */ static int xmlFACompareAtoms(xmlRegAtomPtr atom1, xmlRegAtomPtr atom2) { + int ret; + if (atom1 == atom2) return(1); if ((atom1 == NULL) || (atom2 == NULL)) @@ -1733,19 +1891,24 @@ xmlFACompareAtoms(xmlRegAtomPtr atom1, xmlRegAtomPtr atom2) { return(0); switch (atom1->type) { case XML_REGEXP_STRING: - return(xmlStrEqual((xmlChar *)atom1->valuep, - (xmlChar *)atom2->valuep)); + ret = xmlRegStrEqualWildcard((xmlChar *)atom1->valuep, + (xmlChar *)atom2->valuep); + break; case XML_REGEXP_EPSILON: return(1); case XML_REGEXP_CHARVAL: - return(atom1->codepoint == atom2->codepoint); + ret = atom1->codepoint == atom2->codepoint; + break; case XML_REGEXP_RANGES: TODO; return(0); default: - break; + return(1); } - return(1); + if (atom1->neg != atom2->neg) { + ret = !ret; + } + return(ret); } /** @@ -1818,6 +1981,8 @@ xmlFAComputesDeterminism(xmlRegParserCtxtPtr ctxt) { state = ctxt->states[statenr]; if (state == NULL) continue; + if (state->nbTrans < 2) + continue; for (transnr = 0;transnr < state->nbTrans;transnr++) { t1 = &(state->trans[transnr]); /* @@ -2420,6 +2585,14 @@ xmlFARegExec(xmlRegexpPtr comp, const xmlChar *content) { #endif exec->counts[trans->counter]++; } + if ((trans->count >= 0) && + (trans->count < REGEXP_ALL_COUNTER)) { +#ifdef DEBUG_REGEXP_EXEC + printf("resetting count %d on transition\n", + trans->count); +#endif + exec->counts[trans->count] = 0; + } #ifdef DEBUG_REGEXP_EXEC printf("entering state %d\n", trans->to); #endif @@ -2633,6 +2806,14 @@ xmlRegStrEqualWildcard(const xmlChar *expStr, const xmlChar *valStr) { * Eval if we have a wildcard for the current item. */ if (*expStr != *valStr) { + /* if one of them starts with a wildcard make valStr be it */ + if (*valStr == '*') { + const xmlChar *tmp; + + tmp = valStr; + valStr = expStr; + expStr = tmp; + } if ((*valStr != 0) && (*expStr != 0) && (*expStr++ == '*')) { do { if (*valStr == XML_REG_STRING_SEPARATOR) @@ -2736,19 +2917,20 @@ error: } /** - * xmlRegExecPushString: + * xmlRegExecPushStringInternal: * @exec: a regexp execution context or NULL to indicate the end * @value: a string token input * @data: data associated to the token to reuse in callbacks + * @compound: value was assembled from 2 strings * * Push one input token in the execution context * * Returns: 1 if the regexp reached a final state, 0 if non-final, and * a negative value in case of error. */ -int -xmlRegExecPushString(xmlRegExecCtxtPtr exec, const xmlChar *value, - void *data) { +static int +xmlRegExecPushStringInternal(xmlRegExecCtxtPtr exec, const xmlChar *value, + void *data, int compound) { xmlRegTransPtr trans; xmlRegAtomPtr atom; int ret; @@ -2890,6 +3072,11 @@ xmlRegExecPushString(xmlRegExecCtxtPtr exec, const xmlChar *value, break; } else if (value != NULL) { ret = xmlRegStrEqualWildcard(atom->valuep, value); + if (atom->neg) { + ret = !ret; + if (!compound) + ret = 0; + } if ((ret == 1) && (trans->counter >= 0)) { xmlRegCounterPtr counter; int count; @@ -2985,6 +3172,14 @@ xmlRegExecPushString(xmlRegExecCtxtPtr exec, const xmlChar *value, #endif exec->counts[trans->counter]++; } + if ((trans->count >= 0) && + (trans->count < REGEXP_ALL_COUNTER)) { +#ifdef DEBUG_REGEXP_EXEC + printf("resetting count %d on transition\n", + trans->count); +#endif + exec->counts[trans->count] = 0; + } #ifdef DEBUG_PUSH printf("entering state %d\n", trans->to); #endif @@ -3081,6 +3276,23 @@ progress: } /** + * xmlRegExecPushString: + * @exec: a regexp execution context or NULL to indicate the end + * @value: a string token input + * @data: data associated to the token to reuse in callbacks + * + * Push one input token in the execution context + * + * Returns: 1 if the regexp reached a final state, 0 if non-final, and + * a negative value in case of error. + */ +int +xmlRegExecPushString(xmlRegExecCtxtPtr exec, const xmlChar *value, + void *data) { + return(xmlRegExecPushStringInternal(exec, value, data, 0)); +} + +/** * xmlRegExecPushString2: * @exec: a regexp execution context or NULL to indicate the end * @value: the first string token input @@ -3129,7 +3341,7 @@ xmlRegExecPushString2(xmlRegExecCtxtPtr exec, const xmlChar *value, if (exec->comp->compact != NULL) ret = xmlRegCompactPushString(exec, exec->comp, str, data); else - ret = xmlRegExecPushString(exec, str, data); + ret = xmlRegExecPushStringInternal(exec, str, data, 1); if (str != buf) xmlFree(buf); @@ -3137,7 +3349,7 @@ xmlRegExecPushString2(xmlRegExecCtxtPtr exec, const xmlChar *value, } /** - * xmlRegExecGetalues: + * xmlRegExecGetValues: * @exec: a regexp execution context * @err: error extraction or normal one * @nbval: pointer to the number of accepted values IN/OUT @@ -3246,14 +3458,20 @@ xmlRegExecGetValues(xmlRegExecCtxtPtr exec, int err, count = exec->counts[trans->counter]; counter = &exec->comp->counters[trans->counter]; if (count < counter->max) { - values[nb++] = (xmlChar *) atom->valuep; + if (atom->neg) + values[nb++] = (xmlChar *) atom->valuep2; + else + values[nb++] = (xmlChar *) atom->valuep; (*nbval)++; } } else { if ((exec->comp->states[trans->to] != NULL) && (exec->comp->states[trans->to]->type != XML_REGEXP_SINK_STATE)) { - values[nb++] = (xmlChar *) atom->valuep; + if (atom->neg) + values[nb++] = (xmlChar *) atom->valuep2; + else + values[nb++] = (xmlChar *) atom->valuep; (*nbval)++; } } @@ -3277,7 +3495,10 @@ xmlRegExecGetValues(xmlRegExecCtxtPtr exec, int err, if ((exec->comp->states[trans->to] != NULL) && (exec->comp->states[trans->to]->type == XML_REGEXP_SINK_STATE)) { - values[nb++] = (xmlChar *) atom->valuep; + if (atom->neg) + values[nb++] = (xmlChar *) atom->valuep2; + else + values[nb++] = (xmlChar *) atom->valuep; (*nbneg)++; } } @@ -3815,8 +4036,21 @@ xmlFAParseCharClassEsc(xmlRegParserCtxtPtr ctxt) { (cur == 0x5E)) { if (ctxt->atom == NULL) { ctxt->atom = xmlRegNewAtom(ctxt, XML_REGEXP_CHARVAL); - if (ctxt->atom != NULL) - ctxt->atom->codepoint = cur; + if (ctxt->atom != NULL) { + switch (cur) { + case 'n': + ctxt->atom->codepoint = '\n'; + break; + case 'r': + ctxt->atom->codepoint = '\r'; + break; + case 't': + ctxt->atom->codepoint = '\t'; + break; + default: + ctxt->atom->codepoint = cur; + } + } } else if (ctxt->atom->type == XML_REGEXP_RANGES) { xmlRegAtomAddRange(ctxt, ctxt->atom, ctxt->neg, XML_REGEXP_CHARVAL, cur, cur, NULL); @@ -4550,6 +4784,7 @@ xmlNewAutomata(void) { /* initialize the parser */ ctxt->end = NULL; ctxt->start = ctxt->state = xmlRegNewState(ctxt); + ctxt->start->type = XML_REGEXP_START_STATE; if (ctxt->start == NULL) { xmlFreeAutomata(ctxt); return(NULL); @@ -4706,6 +4941,72 @@ xmlAutomataNewTransition2(xmlAutomataPtr am, xmlAutomataStatePtr from, } /** + * xmlAutomataNewNegTrans: + * @am: an automata + * @from: the starting point of the transition + * @to: the target point of the transition or NULL + * @token: the first input string associated to that transition + * @token2: the second input string associated to that transition + * @data: data passed to the callback function if the transition is activated + * + * If @to is NULL, this creates first a new target state in the automata + * and then adds a transition from the @from state to the target state + * activated by any value except (@token,@token2) + * Note that if @token2 is not NULL, then (X, NULL) won't match to follow + # the semantic of XSD ##other + * + * Returns the target state or NULL in case of error + */ +xmlAutomataStatePtr +xmlAutomataNewNegTrans(xmlAutomataPtr am, xmlAutomataStatePtr from, + xmlAutomataStatePtr to, const xmlChar *token, + const xmlChar *token2, void *data) { + xmlRegAtomPtr atom; + xmlChar err_msg[200]; + + if ((am == NULL) || (from == NULL) || (token == NULL)) + return(NULL); + atom = xmlRegNewAtom(am, XML_REGEXP_STRING); + if (atom == NULL) + return(NULL); + atom->data = data; + atom->neg = 1; + if ((token2 == NULL) || (*token2 == 0)) { + atom->valuep = xmlStrdup(token); + } else { + int lenn, lenp; + xmlChar *str; + + lenn = strlen((char *) token2); + lenp = strlen((char *) token); + + str = (xmlChar *) xmlMallocAtomic(lenn + lenp + 2); + if (str == NULL) { + xmlRegFreeAtom(atom); + return(NULL); + } + memcpy(&str[0], token, lenp); + str[lenp] = '|'; + memcpy(&str[lenp + 1], token2, lenn); + str[lenn + lenp + 1] = 0; + + atom->valuep = str; + } + snprintf((char *) err_msg, 199, "not %s", (const char *) atom->valuep); + err_msg[199] = 0; + atom->valuep2 = xmlStrdup(err_msg); + + if (xmlFAGenerateTransitions(am, from, to, atom) < 0) { + xmlRegFreeAtom(atom); + return(NULL); + } + am->negs++; + if (to == NULL) + return(am->state); + return(to); +} + +/** * xmlAutomataNewCountTrans2: * @am: an automata * @from: the starting point of the transition @@ -4780,7 +5081,7 @@ xmlAutomataNewCountTrans2(xmlAutomataPtr am, xmlAutomataStatePtr from, to = xmlRegNewState(am); xmlRegStatePush(am, to); } - xmlRegStateAddTrans(am, from, atom, to, counter, -1); + xmlRegStateAddTrans(am, from, atom, to, counter, -1, 0); xmlRegAtomPush(am, atom); am->state = to; @@ -4846,7 +5147,7 @@ xmlAutomataNewCountTrans(xmlAutomataPtr am, xmlAutomataStatePtr from, to = xmlRegNewState(am); xmlRegStatePush(am, to); } - xmlRegStateAddTrans(am, from, atom, to, counter, -1); + xmlRegStateAddTrans(am, from, atom, to, counter, -1, 0); xmlRegAtomPush(am, atom); am->state = to; @@ -4935,7 +5236,7 @@ xmlAutomataNewOnceTrans2(xmlAutomataPtr am, xmlAutomataStatePtr from, to = xmlRegNewState(am); xmlRegStatePush(am, to); } - xmlRegStateAddTrans(am, from, atom, to, counter, -1); + xmlRegStateAddTrans(am, from, atom, to, counter, -1, 0); xmlRegAtomPush(am, atom); am->state = to; return(to); @@ -4997,7 +5298,7 @@ xmlAutomataNewOnceTrans(xmlAutomataPtr am, xmlAutomataStatePtr from, to = xmlRegNewState(am); xmlRegStatePush(am, to); } - xmlRegStateAddTrans(am, from, atom, to, counter, -1); + xmlRegStateAddTrans(am, from, atom, to, counter, -1, 0); xmlRegAtomPush(am, atom); am->state = to; return(to); @@ -5183,6 +5484,1844 @@ xmlAutomataIsDeterminist(xmlAutomataPtr am) { return(ret); } #endif /* LIBXML_AUTOMATA_ENABLED */ + +#ifdef LIBXML_EXPR_ENABLED +/************************************************************************ + * * + * Formal Expression handling code * + * * + ************************************************************************/ +/************************************************************************ + * * + * Expression handling context * + * * + ************************************************************************/ + +struct _xmlExpCtxt { + xmlDictPtr dict; + xmlExpNodePtr *table; + int size; + int nbElems; + int nb_nodes; + const char *expr; + const char *cur; + int nb_cons; + int tabSize; +}; + +/** + * xmlExpNewCtxt: + * @maxNodes: the maximum number of nodes + * @dict: optional dictionnary to use internally + * + * Creates a new context for manipulating expressions + * + * Returns the context or NULL in case of error + */ +xmlExpCtxtPtr +xmlExpNewCtxt(int maxNodes, xmlDictPtr dict) { + xmlExpCtxtPtr ret; + int size = 256; + + if (maxNodes <= 4096) + maxNodes = 4096; + + ret = (xmlExpCtxtPtr) xmlMalloc(sizeof(xmlExpCtxt)); + if (ret == NULL) + return(NULL); + memset(ret, 0, sizeof(xmlExpCtxt)); + ret->size = size; + ret->nbElems = 0; + ret->table = xmlMalloc(size * sizeof(xmlExpNodePtr)); + if (ret->table == NULL) { + xmlFree(ret); + return(NULL); + } + memset(ret->table, 0, size * sizeof(xmlExpNodePtr)); + if (dict == NULL) { + ret->dict = xmlDictCreate(); + if (ret->dict == NULL) { + xmlFree(ret->table); + xmlFree(ret); + return(NULL); + } + } else { + ret->dict = dict; + xmlDictReference(ret->dict); + } + return(ret); +} + +/** + * xmlExpFreeCtxt: + * @ctxt: an expression context + * + * Free an expression context + */ +void +xmlExpFreeCtxt(xmlExpCtxtPtr ctxt) { + if (ctxt == NULL) + return; + xmlDictFree(ctxt->dict); + if (ctxt->table != NULL) + xmlFree(ctxt->table); + xmlFree(ctxt); +} + +/************************************************************************ + * * + * Structure associated to an expression node * + * * + ************************************************************************/ +#define MAX_NODES 10000 + +/* #define DEBUG_DERIV */ + +/* + * TODO: + * - Wildcards + * - public API for creation + * + * Started + * - regression testing + * + * Done + * - split into module and test tool + * - memleaks + */ + +typedef enum { + XML_EXP_NILABLE = (1 << 0) +} xmlExpNodeInfo; + +#define IS_NILLABLE(node) ((node)->info & XML_EXP_NILABLE) + +struct _xmlExpNode { + unsigned char type;/* xmlExpNodeType */ + unsigned char info;/* OR of xmlExpNodeInfo */ + unsigned short key; /* the hash key */ + unsigned int ref; /* The number of references */ + int c_max; /* the maximum length it can consume */ + xmlExpNodePtr exp_left; + xmlExpNodePtr next;/* the next node in the hash table or free list */ + union { + struct { + int f_min; + int f_max; + } count; + struct { + xmlExpNodePtr f_right; + } children; + const xmlChar *f_str; + } field; +}; + +#define exp_min field.count.f_min +#define exp_max field.count.f_max +/* #define exp_left field.children.f_left */ +#define exp_right field.children.f_right +#define exp_str field.f_str + +static xmlExpNodePtr xmlExpNewNode(xmlExpCtxtPtr ctxt, xmlExpNodeType type); +static xmlExpNode forbiddenExpNode = { + XML_EXP_FORBID, 0, 0, 0, 0, NULL, NULL, {{ 0, 0}} +}; +xmlExpNodePtr forbiddenExp = &forbiddenExpNode; +static xmlExpNode emptyExpNode = { + XML_EXP_EMPTY, 1, 0, 0, 0, NULL, NULL, {{ 0, 0}} +}; +xmlExpNodePtr emptyExp = &emptyExpNode; + +/************************************************************************ + * * + * The custom hash table for unicity and canonicalization * + * of sub-expressions pointers * + * * + ************************************************************************/ +/* + * xmlExpHashNameComputeKey: + * Calculate the hash key for a token + */ +static unsigned short +xmlExpHashNameComputeKey(const xmlChar *name) { + unsigned short value = 0L; + char ch; + + if (name != NULL) { + value += 30 * (*name); + while ((ch = *name++) != 0) { + value = value ^ ((value << 5) + (value >> 3) + (unsigned long)ch); + } + } + return (value); +} + +/* + * xmlExpHashComputeKey: + * Calculate the hash key for a compound expression + */ +static unsigned short +xmlExpHashComputeKey(xmlExpNodeType type, xmlExpNodePtr left, + xmlExpNodePtr right) { + unsigned long value; + unsigned short ret; + + switch (type) { + case XML_EXP_SEQ: + value = left->key; + value += right->key; + value *= 3; + ret = (unsigned short) value; + break; + case XML_EXP_OR: + value = left->key; + value += right->key; + value *= 7; + ret = (unsigned short) value; + break; + case XML_EXP_COUNT: + value = left->key; + value += right->key; + ret = (unsigned short) value; + break; + default: + ret = 0; + } + return(ret); +} + + +static xmlExpNodePtr +xmlExpNewNode(xmlExpCtxtPtr ctxt, xmlExpNodeType type) { + xmlExpNodePtr ret; + + if (ctxt->nb_nodes >= MAX_NODES) + return(NULL); + ret = (xmlExpNodePtr) xmlMalloc(sizeof(xmlExpNode)); + if (ret == NULL) + return(NULL); + memset(ret, 0, sizeof(xmlExpNode)); + ret->type = type; + ret->next = NULL; + ctxt->nb_nodes++; + ctxt->nb_cons++; + return(ret); +} + +/** + * xmlExpHashGetEntry: + * @table: the hash table + * + * Get the unique entry from the hash table. The entry is created if + * needed. @left and @right are consumed, i.e. their ref count will + * be decremented by the operation. + * + * Returns the pointer or NULL in case of error + */ +static xmlExpNodePtr +xmlExpHashGetEntry(xmlExpCtxtPtr ctxt, xmlExpNodeType type, + xmlExpNodePtr left, xmlExpNodePtr right, + const xmlChar *name, int min, int max) { + unsigned short kbase, key; + xmlExpNodePtr entry; + xmlExpNodePtr insert; + + if (ctxt == NULL) + return(NULL); + + /* + * Check for duplicate and insertion location. + */ + if (type == XML_EXP_ATOM) { + kbase = xmlExpHashNameComputeKey(name); + } else if (type == XML_EXP_COUNT) { + /* COUNT reduction rule 1 */ + /* a{1} -> a */ + if (min == max) { + if (min == 1) { + return(left); + } + if (min == 0) { + xmlExpFree(ctxt, left); + return(emptyExp); + } + } + if (min < 0) { + xmlExpFree(ctxt, left); + return(forbiddenExp); + } + if (max == -1) + kbase = min + 79; + else + kbase = max - min; + kbase += left->key; + } else if (type == XML_EXP_OR) { + /* Forbid reduction rules */ + if (left->type == XML_EXP_FORBID) { + xmlExpFree(ctxt, left); + return(right); + } + if (right->type == XML_EXP_FORBID) { + xmlExpFree(ctxt, right); + return(left); + } + + /* OR reduction rule 1 */ + /* a | a reduced to a */ + if (left == right) { + left->ref--; + return(left); + } + /* OR canonicalization rule 1 */ + /* linearize (a | b) | c into a | (b | c) */ + if ((left->type == XML_EXP_OR) && (right->type != XML_EXP_OR)) { + xmlExpNodePtr tmp = left; + left = right; + right = tmp; + } + /* OR reduction rule 2 */ + /* a | (a | b) and b | (a | b) are reduced to a | b */ + if (right->type == XML_EXP_OR) { + if ((left == right->exp_left) || + (left == right->exp_right)) { + xmlExpFree(ctxt, left); + return(right); + } + } + /* OR canonicalization rule 2 */ + /* linearize (a | b) | c into a | (b | c) */ + if (left->type == XML_EXP_OR) { + xmlExpNodePtr tmp; + + /* OR canonicalization rule 2 */ + if ((left->exp_right->type != XML_EXP_OR) && + (left->exp_right->key < left->exp_left->key)) { + tmp = left->exp_right; + left->exp_right = left->exp_left; + left->exp_left = tmp; + } + left->exp_right->ref++; + tmp = xmlExpHashGetEntry(ctxt, XML_EXP_OR, left->exp_right, right, + NULL, 0, 0); + left->exp_left->ref++; + tmp = xmlExpHashGetEntry(ctxt, XML_EXP_OR, left->exp_left, tmp, + NULL, 0, 0); + + xmlExpFree(ctxt, left); + return(tmp); + } + if (right->type == XML_EXP_OR) { + /* Ordering in the tree */ + /* C | (A | B) -> A | (B | C) */ + if (left->key > right->exp_right->key) { + xmlExpNodePtr tmp; + right->exp_right->ref++; + tmp = xmlExpHashGetEntry(ctxt, XML_EXP_OR, right->exp_right, + left, NULL, 0, 0); + right->exp_left->ref++; + tmp = xmlExpHashGetEntry(ctxt, XML_EXP_OR, right->exp_left, + tmp, NULL, 0, 0); + xmlExpFree(ctxt, right); + return(tmp); + } + /* Ordering in the tree */ + /* B | (A | C) -> A | (B | C) */ + if (left->key > right->exp_left->key) { + xmlExpNodePtr tmp; + right->exp_right->ref++; + tmp = xmlExpHashGetEntry(ctxt, XML_EXP_OR, left, + right->exp_right, NULL, 0, 0); + right->exp_left->ref++; + tmp = xmlExpHashGetEntry(ctxt, XML_EXP_OR, right->exp_left, + tmp, NULL, 0, 0); + xmlExpFree(ctxt, right); + return(tmp); + } + } + /* we know both types are != XML_EXP_OR here */ + else if (left->key > right->key) { + xmlExpNodePtr tmp = left; + left = right; + right = tmp; + } + kbase = xmlExpHashComputeKey(type, left, right); + } else if (type == XML_EXP_SEQ) { + /* Forbid reduction rules */ + if (left->type == XML_EXP_FORBID) { + xmlExpFree(ctxt, right); + return(left); + } + if (right->type == XML_EXP_FORBID) { + xmlExpFree(ctxt, left); + return(right); + } + /* Empty reduction rules */ + if (right->type == XML_EXP_EMPTY) { + return(left); + } + if (left->type == XML_EXP_EMPTY) { + return(right); + } + kbase = xmlExpHashComputeKey(type, left, right); + } else + return(NULL); + + key = kbase % ctxt->size; + if (ctxt->table[key] != NULL) { + for (insert = ctxt->table[key]; insert != NULL; + insert = insert->next) { + if ((insert->key == kbase) && + (insert->type == type)) { + if (type == XML_EXP_ATOM) { + if (name == insert->exp_str) { + insert->ref++; + return(insert); + } + } else if (type == XML_EXP_COUNT) { + if ((insert->exp_min == min) && (insert->exp_max == max) && + (insert->exp_left == left)) { + insert->ref++; + left->ref--; + return(insert); + } + } else if ((insert->exp_left == left) && + (insert->exp_right == right)) { + insert->ref++; + left->ref--; + right->ref--; + return(insert); + } + } + } + } + + entry = xmlExpNewNode(ctxt, type); + if (entry == NULL) + return(NULL); + entry->key = kbase; + if (type == XML_EXP_ATOM) { + entry->exp_str = name; + entry->c_max = 1; + } else if (type == XML_EXP_COUNT) { + entry->exp_min = min; + entry->exp_max = max; + entry->exp_left = left; + if ((min == 0) || (IS_NILLABLE(left))) + entry->info |= XML_EXP_NILABLE; + if (max < 0) + entry->c_max = -1; + else + entry->c_max = max * entry->exp_left->c_max; + } else { + entry->exp_left = left; + entry->exp_right = right; + if (type == XML_EXP_OR) { + if ((IS_NILLABLE(left)) || (IS_NILLABLE(right))) + entry->info |= XML_EXP_NILABLE; + if ((entry->exp_left->c_max == -1) || + (entry->exp_right->c_max == -1)) + entry->c_max = -1; + else if (entry->exp_left->c_max > entry->exp_right->c_max) + entry->c_max = entry->exp_left->c_max; + else + entry->c_max = entry->exp_right->c_max; + } else { + if ((IS_NILLABLE(left)) && (IS_NILLABLE(right))) + entry->info |= XML_EXP_NILABLE; + if ((entry->exp_left->c_max == -1) || + (entry->exp_right->c_max == -1)) + entry->c_max = -1; + else + entry->c_max = entry->exp_left->c_max + entry->exp_right->c_max; + } + } + entry->ref = 1; + if (ctxt->table[key] != NULL) + entry->next = ctxt->table[key]; + + ctxt->table[key] = entry; + ctxt->nbElems++; + + return(entry); +} + +/** + * xmlExpFree: + * @ctxt: the expression context + * @exp: the expression + * + * Dereference the expression + */ +void +xmlExpFree(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp) { + if ((exp == NULL) || (exp == forbiddenExp) || (exp == emptyExp)) + return; + exp->ref--; + if (exp->ref == 0) { + unsigned short key; + + /* Unlink it first from the hash table */ + key = exp->key % ctxt->size; + if (ctxt->table[key] == exp) { + ctxt->table[key] = exp->next; + } else { + xmlExpNodePtr tmp; + + tmp = ctxt->table[key]; + while (tmp != NULL) { + if (tmp->next == exp) { + tmp->next = exp->next; + break; + } + tmp = tmp->next; + } + } + + if ((exp->type == XML_EXP_SEQ) || (exp->type == XML_EXP_OR)) { + xmlExpFree(ctxt, exp->exp_left); + xmlExpFree(ctxt, exp->exp_right); + } else if (exp->type == XML_EXP_COUNT) { + xmlExpFree(ctxt, exp->exp_left); + } + xmlFree(exp); + ctxt->nb_nodes--; + } +} + +/** + * xmlExpRef: + * @exp: the expression + * + * Increase the reference count of the expression + */ +void +xmlExpRef(xmlExpNodePtr exp) { + if (exp != NULL) + exp->ref++; +} + +/** + * xmlExpNewAtom: + * @ctxt: the expression context + * @name: the atom name + * @len: the atom name lenght in byte (or -1); + * + * Get the atom associated to this name from that context + * + * Returns the node or NULL in case of error + */ +xmlExpNodePtr +xmlExpNewAtom(xmlExpCtxtPtr ctxt, const xmlChar *name, int len) { + if ((ctxt == NULL) || (name == NULL)) + return(NULL); + name = xmlDictLookup(ctxt->dict, name, len); + if (name == NULL) + return(NULL); + return(xmlExpHashGetEntry(ctxt, XML_EXP_ATOM, NULL, NULL, name, 0, 0)); +} + +/** + * xmlExpNewOr: + * @ctxt: the expression context + * @left: left expression + * @right: right expression + * + * Get the atom associated to the choice @left | @right + * Note that @left and @right are consumed in the operation, to keep + * an handle on them use xmlExpRef() and use xmlExpFree() to release them, + * this is true even in case of failure (unless ctxt == NULL). + * + * Returns the node or NULL in case of error + */ +xmlExpNodePtr +xmlExpNewOr(xmlExpCtxtPtr ctxt, xmlExpNodePtr left, xmlExpNodePtr right) { + if ((ctxt == NULL) || (left == NULL) || (right == NULL)) { + xmlExpFree(ctxt, left); + xmlExpFree(ctxt, right); + return(NULL); + } + return(xmlExpHashGetEntry(ctxt, XML_EXP_OR, left, right, NULL, 0, 0)); +} + +/** + * xmlExpNewSeq: + * @ctxt: the expression context + * @left: left expression + * @right: right expression + * + * Get the atom associated to the sequence @left , @right + * Note that @left and @right are consumed in the operation, to keep + * an handle on them use xmlExpRef() and use xmlExpFree() to release them, + * this is true even in case of failure (unless ctxt == NULL). + * + * Returns the node or NULL in case of error + */ +xmlExpNodePtr +xmlExpNewSeq(xmlExpCtxtPtr ctxt, xmlExpNodePtr left, xmlExpNodePtr right) { + if ((ctxt == NULL) || (left == NULL) || (right == NULL)) { + xmlExpFree(ctxt, left); + xmlExpFree(ctxt, right); + return(NULL); + } + return(xmlExpHashGetEntry(ctxt, XML_EXP_SEQ, left, right, NULL, 0, 0)); +} + +/** + * xmlExpNewRange: + * @ctxt: the expression context + * @subset: the expression to be repeated + * @min: the lower bound for the repetition + * @max: the upper bound for the repetition, -1 means infinite + * + * Get the atom associated to the range (@subset){@min, @max} + * Note that @subset is consumed in the operation, to keep + * an handle on it use xmlExpRef() and use xmlExpFree() to release it, + * this is true even in case of failure (unless ctxt == NULL). + * + * Returns the node or NULL in case of error + */ +xmlExpNodePtr +xmlExpNewRange(xmlExpCtxtPtr ctxt, xmlExpNodePtr subset, int min, int max) { + if ((ctxt == NULL) || (subset == NULL) || (min < 0) || (max < -1) || + ((max >= 0) && (min > max))) { + xmlExpFree(ctxt, subset); + return(NULL); + } + return(xmlExpHashGetEntry(ctxt, XML_EXP_COUNT, subset, + NULL, NULL, min, max)); +} + +/************************************************************************ + * * + * Public API for operations on expressions * + * * + ************************************************************************/ + +static int +xmlExpGetLanguageInt(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp, + const xmlChar**list, int len, int nb) { + int tmp, tmp2; +tail: + switch (exp->type) { + case XML_EXP_EMPTY: + return(0); + case XML_EXP_ATOM: + for (tmp = 0;tmp < nb;tmp++) + if (list[tmp] == exp->exp_str) + return(0); + if (nb >= len) + return(-2); + list[nb++] = exp->exp_str; + return(1); + case XML_EXP_COUNT: + exp = exp->exp_left; + goto tail; + case XML_EXP_SEQ: + case XML_EXP_OR: + tmp = xmlExpGetLanguageInt(ctxt, exp->exp_left, list, len, nb); + if (tmp < 0) + return(tmp); + tmp2 = xmlExpGetLanguageInt(ctxt, exp->exp_right, list, len, + nb + tmp); + if (tmp2 < 0) + return(tmp2); + return(tmp + tmp2); + } + return(-1); +} + +/** + * xmlExpGetLanguage: + * @ctxt: the expression context + * @exp: the expression + * @list: where to store the tokens + * @len: the allocated lenght of @list + * + * Find all the strings used in @exp and store them in @list + * + * Returns the number of unique strings found, -1 in case of errors and + * -2 if there is more than @len strings + */ +int +xmlExpGetLanguage(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp, + const xmlChar**list, int len) { + if ((ctxt == NULL) || (exp == NULL) || (list == NULL) || (len <= 0)) + return(-1); + return(xmlExpGetLanguageInt(ctxt, exp, list, len, 0)); +} + +static int +xmlExpGetStartInt(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp, + const xmlChar**list, int len, int nb) { + int tmp, tmp2; +tail: + switch (exp->type) { + case XML_EXP_FORBID: + return(0); + case XML_EXP_EMPTY: + return(0); + case XML_EXP_ATOM: + for (tmp = 0;tmp < nb;tmp++) + if (list[tmp] == exp->exp_str) + return(0); + if (nb >= len) + return(-2); + list[nb++] = exp->exp_str; + return(1); + case XML_EXP_COUNT: + exp = exp->exp_left; + goto tail; + case XML_EXP_SEQ: + tmp = xmlExpGetStartInt(ctxt, exp->exp_left, list, len, nb); + if (tmp < 0) + return(tmp); + if (IS_NILLABLE(exp->exp_left)) { + tmp2 = xmlExpGetStartInt(ctxt, exp->exp_right, list, len, + nb + tmp); + if (tmp2 < 0) + return(tmp2); + tmp += tmp2; + } + return(tmp); + case XML_EXP_OR: + tmp = xmlExpGetStartInt(ctxt, exp->exp_left, list, len, nb); + if (tmp < 0) + return(tmp); + tmp2 = xmlExpGetStartInt(ctxt, exp->exp_right, list, len, + nb + tmp); + if (tmp2 < 0) + return(tmp2); + return(tmp + tmp2); + } + return(-1); +} + +/** + * xmlExpGetStart: + * @ctxt: the expression context + * @exp: the expression + * @list: where to store the tokens + * @len: the allocated lenght of @list + * + * Find all the strings that appears at the start of the languages + * accepted by @exp and store them in @list. E.g. for (a, b) | c + * it will return the list [a, c] + * + * Returns the number of unique strings found, -1 in case of errors and + * -2 if there is more than @len strings + */ +int +xmlExpGetStart(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp, + const xmlChar**list, int len) { + if ((ctxt == NULL) || (exp == NULL) || (list == NULL) || (len <= 0)) + return(-1); + return(xmlExpGetStartInt(ctxt, exp, list, len, 0)); +} + +/** + * xmlExpIsNillable: + * @exp: the expression + * + * Finds if the expression is nillable, i.e. if it accepts the empty sequqnce + * + * Returns 1 if nillable, 0 if not and -1 in case of error + */ +int +xmlExpIsNillable(xmlExpNodePtr exp) { + if (exp == NULL) + return(-1); + return(IS_NILLABLE(exp) != 0); +} + +static xmlExpNodePtr +xmlExpStringDeriveInt(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp, const xmlChar *str) +{ + xmlExpNodePtr ret; + + switch (exp->type) { + case XML_EXP_EMPTY: + return(forbiddenExp); + case XML_EXP_FORBID: + return(forbiddenExp); + case XML_EXP_ATOM: + if (exp->exp_str == str) { +#ifdef DEBUG_DERIV + printf("deriv atom: equal => Empty\n"); +#endif + ret = emptyExp; + } else { +#ifdef DEBUG_DERIV + printf("deriv atom: mismatch => forbid\n"); +#endif + /* TODO wildcards here */ + ret = forbiddenExp; + } + return(ret); + case XML_EXP_OR: { + xmlExpNodePtr tmp; + +#ifdef DEBUG_DERIV + printf("deriv or: => or(derivs)\n"); +#endif + tmp = xmlExpStringDeriveInt(ctxt, exp->exp_left, str); + if (tmp == NULL) { + return(NULL); + } + ret = xmlExpStringDeriveInt(ctxt, exp->exp_right, str); + if (ret == NULL) { + xmlExpFree(ctxt, tmp); + return(NULL); + } + ret = xmlExpHashGetEntry(ctxt, XML_EXP_OR, tmp, ret, + NULL, 0, 0); + return(ret); + } + case XML_EXP_SEQ: +#ifdef DEBUG_DERIV + printf("deriv seq: starting with left\n"); +#endif + ret = xmlExpStringDeriveInt(ctxt, exp->exp_left, str); + if (ret == NULL) { + return(NULL); + } else if (ret == forbiddenExp) { + if (IS_NILLABLE(exp->exp_left)) { +#ifdef DEBUG_DERIV + printf("deriv seq: left failed but nillable\n"); +#endif + ret = xmlExpStringDeriveInt(ctxt, exp->exp_right, str); + } + } else { +#ifdef DEBUG_DERIV + printf("deriv seq: left match => sequence\n"); +#endif + exp->exp_right->ref++; + ret = xmlExpHashGetEntry(ctxt, XML_EXP_SEQ, ret, exp->exp_right, + NULL, 0, 0); + } + return(ret); + case XML_EXP_COUNT: { + int min, max; + xmlExpNodePtr tmp; + + if (exp->exp_max == 0) + return(forbiddenExp); + ret = xmlExpStringDeriveInt(ctxt, exp->exp_left, str); + if (ret == NULL) + return(NULL); + if (ret == forbiddenExp) { +#ifdef DEBUG_DERIV + printf("deriv count: pattern mismatch => forbid\n"); +#endif + return(ret); + } + if (exp->exp_max == 1) + return(ret); + if (exp->exp_max < 0) /* unbounded */ + max = -1; + else + max = exp->exp_max - 1; + if (exp->exp_min > 0) + min = exp->exp_min - 1; + else + min = 0; + exp->exp_left->ref++; + tmp = xmlExpHashGetEntry(ctxt, XML_EXP_COUNT, exp->exp_left, NULL, + NULL, min, max); + if (ret == emptyExp) { +#ifdef DEBUG_DERIV + printf("deriv count: match to empty => new count\n"); +#endif + return(tmp); + } +#ifdef DEBUG_DERIV + printf("deriv count: match => sequence with new count\n"); +#endif + return(xmlExpHashGetEntry(ctxt, XML_EXP_SEQ, ret, tmp, + NULL, 0, 0)); + } + } + return(NULL); +} + +/** + * xmlExpStringDerive: + * @ctxt: the expression context + * @exp: the expression + * @str: the string + * @len: the string len in bytes if available + * + * Do one step of Brzozowski derivation of the expression @exp with + * respect to the input string + * + * Returns the resulting expression or NULL in case of internal error + */ +xmlExpNodePtr +xmlExpStringDerive(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp, + const xmlChar *str, int len) { + const xmlChar *input; + + if ((exp == NULL) || (ctxt == NULL) || (str == NULL)) { + return(NULL); + } + /* + * check the string is in the dictionnary, if yes use an interned + * copy, otherwise we know it's not an acceptable input + */ + input = xmlDictExists(ctxt->dict, str, len); + if (input == NULL) { + return(forbiddenExp); + } + return(xmlExpStringDeriveInt(ctxt, exp, input)); +} + +static int +xmlExpCheckCard(xmlExpNodePtr exp, xmlExpNodePtr sub) { + int ret = 1; + + if (sub->c_max == -1) { + if (exp->c_max != -1) + ret = 0; + } else if ((exp->c_max >= 0) && (exp->c_max < sub->c_max)) { + ret = 0; + } +#if 0 + if ((IS_NILLABLE(sub)) && (!IS_NILLABLE(exp))) + ret = 0; +#endif + return(ret); +} + +static xmlExpNodePtr xmlExpExpDeriveInt(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp, + xmlExpNodePtr sub); +/** + * xmlExpDivide: + * @ctxt: the expressions context + * @exp: the englobing expression + * @sub: the subexpression + * @mult: the multiple expression + * @remain: the remain from the derivation of the multiple + * + * Check if exp is a multiple of sub, i.e. if there is a finite number n + * so that sub{n} subsume exp + * + * Returns the multiple value if successful, 0 if it is not a multiple + * and -1 in case of internel error. + */ + +static int +xmlExpDivide(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp, xmlExpNodePtr sub, + xmlExpNodePtr *mult, xmlExpNodePtr *remain) { + int i; + xmlExpNodePtr tmp, tmp2; + + if (mult != NULL) *mult = NULL; + if (remain != NULL) *remain = NULL; + if (exp->c_max == -1) return(0); + if (IS_NILLABLE(exp) && (!IS_NILLABLE(sub))) return(0); + + for (i = 1;i <= exp->c_max;i++) { + sub->ref++; + tmp = xmlExpHashGetEntry(ctxt, XML_EXP_COUNT, + sub, NULL, NULL, i, i); + if (tmp == NULL) { + return(-1); + } + if (!xmlExpCheckCard(tmp, exp)) { + xmlExpFree(ctxt, tmp); + continue; + } + tmp2 = xmlExpExpDeriveInt(ctxt, tmp, exp); + if (tmp2 == NULL) { + xmlExpFree(ctxt, tmp); + return(-1); + } + if ((tmp2 != forbiddenExp) && (IS_NILLABLE(tmp2))) { + if (remain != NULL) + *remain = tmp2; + else + xmlExpFree(ctxt, tmp2); + if (mult != NULL) + *mult = tmp; + else + xmlExpFree(ctxt, tmp); +#ifdef DEBUG_DERIV + printf("Divide succeeded %d\n", i); +#endif + return(i); + } + xmlExpFree(ctxt, tmp); + xmlExpFree(ctxt, tmp2); + } +#ifdef DEBUG_DERIV + printf("Divide failed\n"); +#endif + return(0); +} + +/** + * xmlExpExpDeriveInt: + * @ctxt: the expressions context + * @exp: the englobing expression + * @sub: the subexpression + * + * Try to do a step of Brzozowski derivation but at a higher level + * the input being a subexpression. + * + * Returns the resulting expression or NULL in case of internal error + */ +static xmlExpNodePtr +xmlExpExpDeriveInt(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp, xmlExpNodePtr sub) { + xmlExpNodePtr ret, tmp, tmp2, tmp3; + const xmlChar **tab; + int len, i; + + /* + * In case of equality and if the expression can only consume a finite + * amount, then the derivation is empty + */ + if ((exp == sub) && (exp->c_max >= 0)) { +#ifdef DEBUG_DERIV + printf("Equal(exp, sub) and finite -> Empty\n"); +#endif + return(emptyExp); + } + /* + * decompose sub sequence first + */ + if (sub->type == XML_EXP_EMPTY) { +#ifdef DEBUG_DERIV + printf("Empty(sub) -> Empty\n"); +#endif + exp->ref++; + return(exp); + } + if (sub->type == XML_EXP_SEQ) { +#ifdef DEBUG_DERIV + printf("Seq(sub) -> decompose\n"); +#endif + tmp = xmlExpExpDeriveInt(ctxt, exp, sub->exp_left); + if (tmp == NULL) + return(NULL); + if (tmp == forbiddenExp) + return(tmp); + ret = xmlExpExpDeriveInt(ctxt, tmp, sub->exp_right); + xmlExpFree(ctxt, tmp); + return(ret); + } + if (sub->type == XML_EXP_OR) { +#ifdef DEBUG_DERIV + printf("Or(sub) -> decompose\n"); +#endif + tmp = xmlExpExpDeriveInt(ctxt, exp, sub->exp_left); + if (tmp == forbiddenExp) + return(tmp); + if (tmp == NULL) + return(NULL); + ret = xmlExpExpDeriveInt(ctxt, exp, sub->exp_right); + if ((ret == NULL) || (ret == forbiddenExp)) { + xmlExpFree(ctxt, tmp); + return(ret); + } + return(xmlExpHashGetEntry(ctxt, XML_EXP_OR, tmp, ret, NULL, 0, 0)); + } + if (!xmlExpCheckCard(exp, sub)) { +#ifdef DEBUG_DERIV + printf("CheckCard(exp, sub) failed -> Forbid\n"); +#endif + return(forbiddenExp); + } + switch (exp->type) { + case XML_EXP_EMPTY: + if (sub == emptyExp) + return(emptyExp); +#ifdef DEBUG_DERIV + printf("Empty(exp) -> Forbid\n"); +#endif + return(forbiddenExp); + case XML_EXP_FORBID: +#ifdef DEBUG_DERIV + printf("Forbid(exp) -> Forbid\n"); +#endif + return(forbiddenExp); + case XML_EXP_ATOM: + if (sub->type == XML_EXP_ATOM) { + /* TODO: handle wildcards */ + if (exp->exp_str == sub->exp_str) { +#ifdef DEBUG_DERIV + printf("Atom match -> Empty\n"); +#endif + return(emptyExp); + } +#ifdef DEBUG_DERIV + printf("Atom mismatch -> Forbid\n"); +#endif + return(forbiddenExp); + } + if ((sub->type == XML_EXP_COUNT) && + (sub->exp_max == 1) && + (sub->exp_left->type == XML_EXP_ATOM)) { + /* TODO: handle wildcards */ + if (exp->exp_str == sub->exp_left->exp_str) { +#ifdef DEBUG_DERIV + printf("Atom match -> Empty\n"); +#endif + return(emptyExp); + } +#ifdef DEBUG_DERIV + printf("Atom mismatch -> Forbid\n"); +#endif + return(forbiddenExp); + } +#ifdef DEBUG_DERIV + printf("Compex exp vs Atom -> Forbid\n"); +#endif + return(forbiddenExp); + case XML_EXP_SEQ: + /* try to get the sequence consumed only if possible */ + if (xmlExpCheckCard(exp->exp_left, sub)) { + /* See if the sequence can be consumed directly */ +#ifdef DEBUG_DERIV + printf("Seq trying left only\n"); +#endif + ret = xmlExpExpDeriveInt(ctxt, exp->exp_left, sub); + if ((ret != forbiddenExp) && (ret != NULL)) { +#ifdef DEBUG_DERIV + printf("Seq trying left only worked\n"); +#endif + /* + * TODO: assumption here that we are determinist + * i.e. we won't get to a nillable exp left + * subset which could be matched by the right + * part too. + * e.g.: (a | b)+,(a | c) and 'a+,a' + */ + exp->exp_right->ref++; + return(xmlExpHashGetEntry(ctxt, XML_EXP_SEQ, ret, + exp->exp_right, NULL, 0, 0)); + } +#ifdef DEBUG_DERIV + } else { + printf("Seq: left too short\n"); +#endif + } + /* Try instead to decompose */ + if (sub->type == XML_EXP_COUNT) { + int min, max; + +#ifdef DEBUG_DERIV + printf("Seq: sub is a count\n"); +#endif + ret = xmlExpExpDeriveInt(ctxt, exp->exp_left, sub->exp_left); + if (ret == NULL) + return(NULL); + if (ret != forbiddenExp) { +#ifdef DEBUG_DERIV + printf("Seq , Count match on left\n"); +#endif + if (sub->exp_max < 0) + max = -1; + else + max = sub->exp_max -1; + if (sub->exp_min > 0) + min = sub->exp_min -1; + else + min = 0; + exp->exp_right->ref++; + tmp = xmlExpHashGetEntry(ctxt, XML_EXP_SEQ, ret, + exp->exp_right, NULL, 0, 0); + if (tmp == NULL) + return(NULL); + + sub->exp_left->ref++; + tmp2 = xmlExpHashGetEntry(ctxt, XML_EXP_COUNT, + sub->exp_left, NULL, NULL, min, max); + if (tmp2 == NULL) { + xmlExpFree(ctxt, tmp); + return(NULL); + } + ret = xmlExpExpDeriveInt(ctxt, tmp, tmp2); + xmlExpFree(ctxt, tmp); + xmlExpFree(ctxt, tmp2); + return(ret); + } + } + /* we made no progress on structured operations */ + break; + case XML_EXP_OR: +#ifdef DEBUG_DERIV + printf("Or , trying both side\n"); +#endif + ret = xmlExpExpDeriveInt(ctxt, exp->exp_left, sub); + if (ret == NULL) + return(NULL); + tmp = xmlExpExpDeriveInt(ctxt, exp->exp_right, sub); + if (tmp == NULL) { + xmlExpFree(ctxt, ret); + return(NULL); + } + return(xmlExpHashGetEntry(ctxt, XML_EXP_OR, ret, tmp, NULL, 0, 0)); + case XML_EXP_COUNT: { + int min, max; + + if (sub->type == XML_EXP_COUNT) { + /* + * Try to see if the loop is completely subsumed + */ + tmp = xmlExpExpDeriveInt(ctxt, exp->exp_left, sub->exp_left); + if (tmp == NULL) + return(NULL); + if (tmp == forbiddenExp) { + int mult; + +#ifdef DEBUG_DERIV + printf("Count, Count inner don't subsume\n"); +#endif + mult = xmlExpDivide(ctxt, sub->exp_left, exp->exp_left, + NULL, &tmp); + if (mult <= 0) { +#ifdef DEBUG_DERIV + printf("Count, Count not multiple => forbidden\n"); +#endif + return(forbiddenExp); + } + if (sub->exp_max == -1) { + max = -1; + if (exp->exp_max == -1) { + if (exp->exp_min <= sub->exp_min * mult) + min = 0; + else + min = exp->exp_min - sub->exp_min * mult; + } else { +#ifdef DEBUG_DERIV + printf("Count, Count finite can't subsume infinite\n"); +#endif + xmlExpFree(ctxt, tmp); + return(forbiddenExp); + } + } else { + if (exp->exp_max == -1) { +#ifdef DEBUG_DERIV + printf("Infinite loop consume mult finite loop\n"); +#endif + if (exp->exp_min > sub->exp_min * mult) { + max = -1; + min = exp->exp_min - sub->exp_min * mult; + } else { + max = -1; + min = 0; + } + } else { + if (exp->exp_max < sub->exp_max * mult) { +#ifdef DEBUG_DERIV + printf("loops max mult mismatch => forbidden\n"); +#endif + xmlExpFree(ctxt, tmp); + return(forbiddenExp); + } + if (sub->exp_max * mult > exp->exp_min) + min = 0; + else + min = exp->exp_min - sub->exp_max * mult; + max = exp->exp_max - sub->exp_max * mult; + } + } + } else if (!IS_NILLABLE(tmp)) { + /* + * TODO: loop here to try to grow if working on finite + * blocks. + */ +#ifdef DEBUG_DERIV + printf("Count, Count remain not nillable => forbidden\n"); +#endif + xmlExpFree(ctxt, tmp); + return(forbiddenExp); + } else if (sub->exp_max == -1) { + if (exp->exp_max == -1) { + if (exp->exp_min <= sub->exp_min) { +#ifdef DEBUG_DERIV + printf("Infinite loops Okay => COUNT(0,Inf)\n"); +#endif + max = -1; + min = 0; + } else { +#ifdef DEBUG_DERIV + printf("Infinite loops min => Count(X,Inf)\n"); +#endif + max = -1; + min = exp->exp_min - sub->exp_min; + } + } else if (exp->exp_min > sub->exp_min) { +#ifdef DEBUG_DERIV + printf("loops min mismatch 1 => forbidden ???\n"); +#endif + xmlExpFree(ctxt, tmp); + return(forbiddenExp); + } else { + max = -1; + min = 0; + } + } else { + if (exp->exp_max == -1) { +#ifdef DEBUG_DERIV + printf("Infinite loop consume finite loop\n"); +#endif + if (exp->exp_min > sub->exp_min) { + max = -1; + min = exp->exp_min - sub->exp_min; + } else { + max = -1; + min = 0; + } + } else { + if (exp->exp_max < sub->exp_max) { +#ifdef DEBUG_DERIV + printf("loops max mismatch => forbidden\n"); +#endif + xmlExpFree(ctxt, tmp); + return(forbiddenExp); + } + if (sub->exp_max > exp->exp_min) + min = 0; + else + min = exp->exp_min - sub->exp_max; + max = exp->exp_max - sub->exp_max; + } + } +#ifdef DEBUG_DERIV + printf("loops match => SEQ(COUNT())\n"); +#endif + exp->exp_left->ref++; + tmp2 = xmlExpHashGetEntry(ctxt, XML_EXP_COUNT, exp->exp_left, + NULL, NULL, min, max); + if (tmp2 == NULL) { + return(NULL); + } + ret = xmlExpHashGetEntry(ctxt, XML_EXP_SEQ, tmp, tmp2, + NULL, 0, 0); + return(ret); + } + tmp = xmlExpExpDeriveInt(ctxt, exp->exp_left, sub); + if (tmp == NULL) + return(NULL); + if (tmp == forbiddenExp) { +#ifdef DEBUG_DERIV + printf("loop mismatch => forbidden\n"); +#endif + return(forbiddenExp); + } + if (exp->exp_min > 0) + min = exp->exp_min - 1; + else + min = 0; + if (exp->exp_max < 0) + max = -1; + else + max = exp->exp_max - 1; + +#ifdef DEBUG_DERIV + printf("loop match => SEQ(COUNT())\n"); +#endif + exp->exp_left->ref++; + tmp2 = xmlExpHashGetEntry(ctxt, XML_EXP_COUNT, exp->exp_left, + NULL, NULL, min, max); + if (tmp2 == NULL) + return(NULL); + ret = xmlExpHashGetEntry(ctxt, XML_EXP_SEQ, tmp, tmp2, + NULL, 0, 0); + return(ret); + } + } + +#ifdef DEBUG_DERIV + printf("Fallback to derivative\n"); +#endif + if (IS_NILLABLE(sub)) { + if (!(IS_NILLABLE(exp))) + return(forbiddenExp); + else + ret = emptyExp; + } else + ret = NULL; + /* + * here the structured derivation made no progress so + * we use the default token based derivation to force one more step + */ + if (ctxt->tabSize == 0) + ctxt->tabSize = 40; + + tab = (const xmlChar **) xmlMalloc(ctxt->tabSize * + sizeof(const xmlChar *)); + if (tab == NULL) { + return(NULL); + } + + /* + * collect all the strings accepted by the subexpression on input + */ + len = xmlExpGetStartInt(ctxt, sub, tab, ctxt->tabSize, 0); + while (len < 0) { + const xmlChar **temp; + temp = (const xmlChar **) xmlRealloc(tab, ctxt->tabSize * 2 * + sizeof(const xmlChar *)); + if (temp == NULL) { + xmlFree(tab); + return(NULL); + } + tab = temp; + ctxt->tabSize *= 2; + len = xmlExpGetStartInt(ctxt, sub, tab, ctxt->tabSize, 0); + } + for (i = 0;i < len;i++) { + tmp = xmlExpStringDeriveInt(ctxt, exp, tab[i]); + if ((tmp == NULL) || (tmp == forbiddenExp)) { + xmlExpFree(ctxt, ret); + xmlFree(tab); + return(tmp); + } + tmp2 = xmlExpStringDeriveInt(ctxt, sub, tab[i]); + if ((tmp2 == NULL) || (tmp2 == forbiddenExp)) { + xmlExpFree(ctxt, tmp); + xmlExpFree(ctxt, ret); + xmlFree(tab); + return(tmp); + } + tmp3 = xmlExpExpDeriveInt(ctxt, tmp, tmp2); + xmlExpFree(ctxt, tmp); + xmlExpFree(ctxt, tmp2); + + if ((tmp3 == NULL) || (tmp3 == forbiddenExp)) { + xmlExpFree(ctxt, ret); + xmlFree(tab); + return(tmp3); + } + + if (ret == NULL) + ret = tmp3; + else { + ret = xmlExpHashGetEntry(ctxt, XML_EXP_OR, ret, tmp3, NULL, 0, 0); + if (ret == NULL) { + xmlFree(tab); + return(NULL); + } + } + } + xmlFree(tab); + return(ret); +} + +/** + * xmlExpExpDerive: + * @ctxt: the expressions context + * @exp: the englobing expression + * @sub: the subexpression + * + * Evaluates the expression resulting from @exp consuming a sub expression @sub + * Based on algebraic derivation and sometimes direct Brzozowski derivation + * it usually tatkes less than linear time and can handle expressions generating + * infinite languages. + * + * Returns the resulting expression or NULL in case of internal error, the + * result must be freed + */ +xmlExpNodePtr +xmlExpExpDerive(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp, xmlExpNodePtr sub) { + if ((exp == NULL) || (ctxt == NULL) || (sub == NULL)) + return(NULL); + + /* + * O(1) speedups + */ + if (IS_NILLABLE(sub) && (!IS_NILLABLE(exp))) { +#ifdef DEBUG_DERIV + printf("Sub nillable and not exp : can't subsume\n"); +#endif + return(forbiddenExp); + } + if (xmlExpCheckCard(exp, sub) == 0) { +#ifdef DEBUG_DERIV + printf("sub generate longuer sequances than exp : can't subsume\n"); +#endif + return(forbiddenExp); + } + return(xmlExpExpDeriveInt(ctxt, exp, sub)); +} + +/** + * xmlExpSubsume: + * @ctxt: the expressions context + * @exp: the englobing expression + * @sub: the subexpression + * + * Check whether @exp accepts all the languages accexpted by @sub + * the input being a subexpression. + * + * Returns 1 if true 0 if false and -1 in case of failure. + */ +int +xmlExpSubsume(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp, xmlExpNodePtr sub) { + xmlExpNodePtr tmp; + + if ((exp == NULL) || (ctxt == NULL) || (sub == NULL)) + return(-1); + + /* + * TODO: speedup by checking the language of sub is a subset of the + * language of exp + */ + /* + * O(1) speedups + */ + if (IS_NILLABLE(sub) && (!IS_NILLABLE(exp))) { +#ifdef DEBUG_DERIV + printf("Sub nillable and not exp : can't subsume\n"); +#endif + return(0); + } + if (xmlExpCheckCard(exp, sub) == 0) { +#ifdef DEBUG_DERIV + printf("sub generate longuer sequances than exp : can't subsume\n"); +#endif + return(0); + } + tmp = xmlExpExpDeriveInt(ctxt, exp, sub); +#ifdef DEBUG_DERIV + printf("Result derivation :\n"); + PRINT_EXP(tmp); +#endif + if (tmp == NULL) + return(-1); + if (tmp == forbiddenExp) + return(0); + if (tmp == emptyExp) + return(1); + if ((tmp != NULL) && (IS_NILLABLE(tmp))) { + xmlExpFree(ctxt, tmp); + return(1); + } + xmlExpFree(ctxt, tmp); + return(0); +} + +/************************************************************************ + * * + * Parsing expression * + * * + ************************************************************************/ + +static xmlExpNodePtr xmlExpParseExpr(xmlExpCtxtPtr ctxt); + +#undef CUR +#define CUR (*ctxt->cur) +#undef NEXT +#define NEXT ctxt->cur++; +#undef IS_BLANK +#define IS_BLANK(c) ((c == ' ') || (c == '\n') || (c == '\r') || (c == '\t')) +#define SKIP_BLANKS while (IS_BLANK(*ctxt->cur)) ctxt->cur++; + +static int +xmlExpParseNumber(xmlExpCtxtPtr ctxt) { + int ret = 0; + + SKIP_BLANKS + if (CUR == '*') { + NEXT + return(-1); + } + if ((CUR < '0') || (CUR > '9')) + return(-1); + while ((CUR >= '0') && (CUR <= '9')) { + ret = ret * 10 + (CUR - '0'); + NEXT + } + return(ret); +} + +static xmlExpNodePtr +xmlExpParseOr(xmlExpCtxtPtr ctxt) { + const char *base; + xmlExpNodePtr ret; + const xmlChar *val; + + SKIP_BLANKS + base = ctxt->cur; + if (*ctxt->cur == '(') { + NEXT + ret = xmlExpParseExpr(ctxt); + SKIP_BLANKS + if (*ctxt->cur != ')') { + fprintf(stderr, "unbalanced '(' : %s\n", base); + xmlExpFree(ctxt, ret); + return(NULL); + } + NEXT; + SKIP_BLANKS + goto parse_quantifier; + } + while ((CUR != 0) && (!(IS_BLANK(CUR))) && (CUR != '(') && + (CUR != ')') && (CUR != '|') && (CUR != ',') && (CUR != '{') && + (CUR != '*') && (CUR != '+') && (CUR != '?') && (CUR != '}')) + NEXT; + val = xmlDictLookup(ctxt->dict, BAD_CAST base, ctxt->cur - base); + if (val == NULL) + return(NULL); + ret = xmlExpHashGetEntry(ctxt, XML_EXP_ATOM, NULL, NULL, val, 0, 0); + if (ret == NULL) + return(NULL); + SKIP_BLANKS +parse_quantifier: + if (CUR == '{') { + int min, max; + + NEXT + min = xmlExpParseNumber(ctxt); + if (min < 0) { + xmlExpFree(ctxt, ret); + return(NULL); + } + SKIP_BLANKS + if (CUR == ',') { + NEXT + max = xmlExpParseNumber(ctxt); + SKIP_BLANKS + } else + max = min; + if (CUR != '}') { + xmlExpFree(ctxt, ret); + return(NULL); + } + NEXT + ret = xmlExpHashGetEntry(ctxt, XML_EXP_COUNT, ret, NULL, NULL, + min, max); + SKIP_BLANKS + } else if (CUR == '?') { + NEXT + ret = xmlExpHashGetEntry(ctxt, XML_EXP_COUNT, ret, NULL, NULL, + 0, 1); + SKIP_BLANKS + } else if (CUR == '+') { + NEXT + ret = xmlExpHashGetEntry(ctxt, XML_EXP_COUNT, ret, NULL, NULL, + 1, -1); + SKIP_BLANKS + } else if (CUR == '*') { + NEXT + ret = xmlExpHashGetEntry(ctxt, XML_EXP_COUNT, ret, NULL, NULL, + 0, -1); + SKIP_BLANKS + } + return(ret); +} + + +static xmlExpNodePtr +xmlExpParseSeq(xmlExpCtxtPtr ctxt) { + xmlExpNodePtr ret, right; + + ret = xmlExpParseOr(ctxt); + SKIP_BLANKS + while (CUR == '|') { + NEXT + right = xmlExpParseOr(ctxt); + if (right == NULL) { + xmlExpFree(ctxt, ret); + return(NULL); + } + ret = xmlExpHashGetEntry(ctxt, XML_EXP_OR, ret, right, NULL, 0, 0); + if (ret == NULL) + return(NULL); + } + return(ret); +} + +static xmlExpNodePtr +xmlExpParseExpr(xmlExpCtxtPtr ctxt) { + xmlExpNodePtr ret, right; + + ret = xmlExpParseSeq(ctxt); + SKIP_BLANKS + while (CUR == ',') { + NEXT + right = xmlExpParseSeq(ctxt); + if (right == NULL) { + xmlExpFree(ctxt, ret); + return(NULL); + } + ret = xmlExpHashGetEntry(ctxt, XML_EXP_SEQ, ret, right, NULL, 0, 0); + if (ret == NULL) + return(NULL); + } + return(ret); +} + +/** + * xmlExpParse: + * @ctxt: the expressions context + * @expr: the 0 terminated string + * + * Minimal parser for regexps, it understand the following constructs + * - string terminals + * - choice operator | + * - sequence operator , + * - subexpressions (...) + * - usual cardinality operators + * and ? + * - finite sequences { min, max } + * - infinite sequences { min, * } + * There is minimal checkings made especially no checking on strings values + * + * Returns a new expression or NULL in case of failure + */ +xmlExpNodePtr +xmlExpParse(xmlExpCtxtPtr ctxt, const char *expr) { + xmlExpNodePtr ret; + + ctxt->expr = expr; + ctxt->cur = expr; + + ret = xmlExpParseExpr(ctxt); + SKIP_BLANKS + if (*ctxt->cur != 0) { + xmlExpFree(ctxt, ret); + return(NULL); + } + return(ret); +} + +static void +xmlExpDumpInt(xmlBufferPtr buf, xmlExpNodePtr expr, int glob) { + xmlExpNodePtr c; + + if (expr == NULL) return; + if (glob) xmlBufferWriteChar(buf, "("); + switch (expr->type) { + case XML_EXP_EMPTY: + xmlBufferWriteChar(buf, "empty"); + break; + case XML_EXP_FORBID: + xmlBufferWriteChar(buf, "forbidden"); + break; + case XML_EXP_ATOM: + xmlBufferWriteCHAR(buf, expr->exp_str); + break; + case XML_EXP_SEQ: + c = expr->exp_left; + if ((c->type == XML_EXP_SEQ) || (c->type == XML_EXP_OR)) + xmlExpDumpInt(buf, c, 1); + else + xmlExpDumpInt(buf, c, 0); + xmlBufferWriteChar(buf, " , "); + c = expr->exp_right; + if ((c->type == XML_EXP_SEQ) || (c->type == XML_EXP_OR)) + xmlExpDumpInt(buf, c, 1); + else + xmlExpDumpInt(buf, c, 0); + break; + case XML_EXP_OR: + c = expr->exp_left; + if ((c->type == XML_EXP_SEQ) || (c->type == XML_EXP_OR)) + xmlExpDumpInt(buf, c, 1); + else + xmlExpDumpInt(buf, c, 0); + xmlBufferWriteChar(buf, " | "); + c = expr->exp_right; + if ((c->type == XML_EXP_SEQ) || (c->type == XML_EXP_OR)) + xmlExpDumpInt(buf, c, 1); + else + xmlExpDumpInt(buf, c, 0); + break; + case XML_EXP_COUNT: { + char rep[40]; + + c = expr->exp_left; + if ((c->type == XML_EXP_SEQ) || (c->type == XML_EXP_OR)) + xmlExpDumpInt(buf, c, 1); + else + xmlExpDumpInt(buf, c, 0); + if ((expr->exp_min == 0) && (expr->exp_max == 1)) { + rep[0] = '?'; + rep[1] = 0; + } else if ((expr->exp_min == 0) && (expr->exp_max == -1)) { + rep[0] = '*'; + rep[1] = 0; + } else if ((expr->exp_min == 1) && (expr->exp_max == -1)) { + rep[0] = '+'; + rep[1] = 0; + } else if (expr->exp_max == expr->exp_min) { + snprintf(rep, 39, "{%d}", expr->exp_min); + } else if (expr->exp_max < 0) { + snprintf(rep, 39, "{%d,inf}", expr->exp_min); + } else { + snprintf(rep, 39, "{%d,%d}", expr->exp_min, expr->exp_max); + } + rep[39] = 0; + xmlBufferWriteChar(buf, rep); + break; + } + default: + fprintf(stderr, "Error in tree\n"); + } + if (glob) + xmlBufferWriteChar(buf, ")"); +} +/** + * xmlExpDump: + * @buf: a buffer to receive the output + * @expr: the compiled expression + * + * Serialize the expression as compiled to the buffer + */ +void +xmlExpDump(xmlBufferPtr buf, xmlExpNodePtr expr) { + if ((buf == NULL) || (expr == NULL)) + return; + xmlExpDumpInt(buf, expr, 0); +} + +/** + * xmlExpMaxToken: + * @expr: a compiled expression + * + * Indicate the maximum number of input a expression can accept + * + * Returns the maximum length or -1 in case of error + */ +int +xmlExpMaxToken(xmlExpNodePtr expr) { + if (expr == NULL) + return(-1); + return(expr->c_max); +} + +/** + * xmlExpCtxtNbNodes: + * @ctxt: an expression context + * + * Debugging facility provides the number of allocated nodes at a that point + * + * Returns the number of nodes in use or -1 in case of error + */ +int +xmlExpCtxtNbNodes(xmlExpCtxtPtr ctxt) { + if (ctxt == NULL) + return(-1); + return(ctxt->nb_nodes); +} + +/** + * xmlExpCtxtNbCons: + * @ctxt: an expression context + * + * Debugging facility provides the number of allocated nodes over lifetime + * + * Returns the number of nodes ever allocated or -1 in case of error + */ +int +xmlExpCtxtNbCons(xmlExpCtxtPtr ctxt) { + if (ctxt == NULL) + return(-1); + return(ctxt->nb_cons); +} + +#endif /* LIBXML_EXPR_ENABLED */ #define bottom_xmlregexp #include "elfgcchack.h" #endif /* LIBXML_REGEXP_ENABLED */ @@ -826,31 +826,33 @@ xmlDocContentDumpOutput(xmlSaveCtxtPtr ctxt, xmlDocPtr cur) { cur->encoding = BAD_CAST ctxt->encoding; buf = ctxt->buf; - xmlOutputBufferWrite(buf, 14, "<?xml version="); - if (cur->version != NULL) - xmlBufferWriteQuotedString(buf->buffer, cur->version); - else - xmlOutputBufferWrite(buf, 5, "\"1.0\""); - if (ctxt->encoding == NULL) { - if (cur->encoding != NULL) - encoding = cur->encoding; - else if (cur->charset != XML_CHAR_ENCODING_UTF8) - encoding = (const xmlChar *) - xmlGetCharEncodingName((xmlCharEncoding) cur->charset); - } - if (encoding != NULL) { - xmlOutputBufferWrite(buf, 10, " encoding="); - xmlBufferWriteQuotedString(buf->buffer, (xmlChar *) encoding); - } - switch (cur->standalone) { - case 0: - xmlOutputBufferWrite(buf, 16, " standalone=\"no\""); - break; - case 1: - xmlOutputBufferWrite(buf, 17, " standalone=\"yes\""); - break; + if ((ctxt->options & XML_SAVE_NO_DECL) == 0) { + xmlOutputBufferWrite(buf, 14, "<?xml version="); + if (cur->version != NULL) + xmlBufferWriteQuotedString(buf->buffer, cur->version); + else + xmlOutputBufferWrite(buf, 5, "\"1.0\""); + if (ctxt->encoding == NULL) { + if (cur->encoding != NULL) + encoding = cur->encoding; + else if (cur->charset != XML_CHAR_ENCODING_UTF8) + encoding = (const xmlChar *) + xmlGetCharEncodingName((xmlCharEncoding) cur->charset); + } + if (encoding != NULL) { + xmlOutputBufferWrite(buf, 10, " encoding="); + xmlBufferWriteQuotedString(buf->buffer, (xmlChar *) encoding); + } + switch (cur->standalone) { + case 0: + xmlOutputBufferWrite(buf, 16, " standalone=\"no\""); + break; + case 1: + xmlOutputBufferWrite(buf, 17, " standalone=\"yes\""); + break; + } + xmlOutputBufferWrite(buf, 3, "?>\n"); } - xmlOutputBufferWrite(buf, 3, "?>\n"); #ifdef LIBXML_HTML_ENABLED dtd = xmlGetIntSubset(cur); @@ -858,12 +860,6 @@ xmlDocContentDumpOutput(xmlSaveCtxtPtr ctxt, xmlDocPtr cur) { is_xhtml = xmlIsXHTML(dtd->SystemID, dtd->ExternalID); if (is_xhtml < 0) is_xhtml = 0; } - if (is_xhtml) { - if (encoding != NULL) - htmlSetMetaEncoding(cur, (const xmlChar *) ctxt->encoding); - else - htmlSetMetaEncoding(cur, BAD_CAST "UTF-8"); - } #endif if (cur->children != NULL) { xmlNodePtr child = cur->children; @@ -1084,7 +1080,7 @@ xhtmlNodeListDumpOutput(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) { */ static void xhtmlNodeDumpOutput(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) { - int format; + int format, addmeta = 0; xmlNodePtr tmp; xmlChar *start, *end; xmlOutputBufferPtr buf; @@ -1208,14 +1204,51 @@ xhtmlNodeDumpOutput(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) { if (cur->properties != NULL) xhtmlAttrListDumpOutput(ctxt, cur->properties); + if ((cur->type == XML_ELEMENT_NODE) && + (cur->parent != NULL) && + (cur->parent->parent == (xmlNodePtr) cur->doc) && + xmlStrEqual(cur->name, BAD_CAST"head") && + xmlStrEqual(cur->parent->name, BAD_CAST"html")) { + + tmp = cur->children; + while (tmp != NULL) { + if (xmlStrEqual(tmp->name, BAD_CAST"meta")) { + xmlChar *httpequiv; + + httpequiv = xmlGetProp(tmp, BAD_CAST"http-equiv"); + if (httpequiv != NULL) { + if (xmlStrcasecmp(httpequiv, BAD_CAST"Content-Type") == 0) { + xmlFree(httpequiv); + break; + } + xmlFree(httpequiv); + } + } + tmp = tmp->next; + } + if (tmp == NULL) + addmeta = 1; + } + if ((cur->type == XML_ELEMENT_NODE) && (cur->children == NULL)) { if (((cur->ns == NULL) || (cur->ns->prefix == NULL)) && - (xhtmlIsEmpty(cur) == 1)) { + ((xhtmlIsEmpty(cur) == 1) && (addmeta == 0))) { /* * C.2. Empty Elements */ xmlOutputBufferWrite(buf, 3, " />"); } else { + if (addmeta == 1) { + xmlOutputBufferWrite(buf, 1, ">"); + xmlOutputBufferWriteString(buf, + "<meta http-equiv=\"Content-Type\" content=\"text/html; charset="); + if (ctxt->encoding) { + xmlOutputBufferWriteString(buf, (const char *)ctxt->encoding); + } else { + xmlOutputBufferWrite(buf, 5, "UTF-8"); + } + xmlOutputBufferWrite(buf, 3, "\" /"); + } /* * C.3. Element Minimization and Empty Element Content */ @@ -1230,6 +1263,16 @@ xhtmlNodeDumpOutput(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) { return; } xmlOutputBufferWrite(buf, 1, ">"); + if (addmeta == 1) { + xmlOutputBufferWriteString(buf, + "<meta http-equiv=\"Content-Type\" content=\"text/html; charset="); + if (ctxt->encoding) { + xmlOutputBufferWriteString(buf, (const char *)ctxt->encoding); + } else { + xmlOutputBufferWrite(buf, 5, "UTF-8"); + } + xmlOutputBufferWrite(buf, 4, "\" />"); + } if ((cur->type != XML_ELEMENT_NODE) && (cur->content != NULL)) { xmlOutputBufferWriteEscape(buf, cur->content, ctxt->escape); } @@ -1830,15 +1873,6 @@ xmlNodeDumpOutput(xmlOutputBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur, is_xhtml = xmlIsXHTML(dtd->SystemID, dtd->ExternalID); if (is_xhtml < 0) is_xhtml = 0; - if ((is_xhtml) && (cur->parent == (xmlNodePtr) doc) && - (cur->type == XML_ELEMENT_NODE) && - (xmlStrEqual(cur->name, BAD_CAST "html"))) { - if (encoding != NULL) - htmlSetMetaEncoding((htmlDocPtr) doc, - (const xmlChar *) encoding); - else - htmlSetMetaEncoding((htmlDocPtr) doc, BAD_CAST "UTF-8"); - } } if (is_xhtml) diff --git a/xmlschemas.c b/xmlschemas.c index afa7010..76bf3fd 100644 --- a/xmlschemas.c +++ b/xmlschemas.c @@ -66,9 +66,9 @@ /* #define ENABLE_PARTICLE_RESTRICTION 1 */ -#define DUMP_CONTENT_MODEL +/* #define ENABLE_REDEFINE */ -#define XML_SCHEMA_SAX_ENABLED +#define DUMP_CONTENT_MODEL #ifdef LIBXML_READER_ENABLED /* #define XML_SCHEMA_READER_ENABLED */ @@ -100,8 +100,6 @@ static const xmlChar *xmlSchemaElemDesAttrDecl = (const xmlChar *) "attribute decl."; static const xmlChar *xmlSchemaElemDesAttrRef = (const xmlChar *) "attribute use"; -static const xmlChar *xmlSchemaElemDesCT = (const xmlChar *) - "complex type"; static const xmlChar *xmlSchemaElemModelGrDef = (const xmlChar *) "model group"; #if 0 @@ -199,19 +197,52 @@ typedef xmlSchemaAssemble *xmlSchemaAssemblePtr; typedef struct _xmlSchemaItemList xmlSchemaItemList; typedef xmlSchemaItemList *xmlSchemaItemListPtr; - struct _xmlSchemaItemList { void **items; /* used for dynamic addition of schemata */ int nbItems; /* used for dynamic addition of schemata */ int sizeItems; /* used for dynamic addition of schemata */ }; +/* +typedef struct _xmlSchemaItemListChain xmlSchemaItemListChain; +typedef xmlSchemaItemListChain xmlSchemaItemListChainPtr; +struct _xmlSchemaItemListChain { + xmlSchemaItemListChainPtr next; + xmlSchemaItemListPtr list; +} +*/ + +/* +typedef struct _xmlSchemaItemListChain xmlSchemaItemListChain; +typedef xmlSchemaItemListChain xmlSchemaItemListChainPtr; +struct _xmlSchemaItemListChain { + xmlSchemaItemListChainPtr next; + xmlSchemaItemListPtr list; +} +*/ + typedef struct _xmlSchemaAbstractCtxt xmlSchemaAbstractCtxt; typedef xmlSchemaAbstractCtxt *xmlSchemaAbstractCtxtPtr; struct _xmlSchemaAbstractCtxt { int type; }; +/** + * xmlSchemaContainer: + */ +typedef struct _xmlSchemaContainer xmlSchemaContainer; +typedef xmlSchemaContainer *xmlSchemaContainerPtr; +struct _xmlSchemaContainer { + xmlSchemaItemListPtr typeDefs; + xmlSchemaItemListPtr attrDecls; + xmlSchemaItemListPtr elemDecls; + xmlSchemaItemListPtr attrGroupDefs; + xmlSchemaItemListPtr modelGroupDefs; + xmlSchemaItemListPtr notationDecls; + xmlSchemaItemListPtr annotations; + xmlSchemaItemListPtr locals; +}; + #define XML_SCHEMA_CTXT_PARSER 1 #define XML_SCHEMA_CTXT_VALIDATOR 2 @@ -224,8 +255,8 @@ struct _xmlSchemaParserCtxt { int nberrors; xmlStructuredErrorFunc serror; - xmlSchemaPtr topschema; /* The main schema */ - xmlHashTablePtr namespaces; /* Hash table of namespaces to schemas */ + /* xmlSchemaPtr topschema; The main schema */ + /* xmlHashTablePtr namespaces; Hash table of namespaces to schemas */ xmlSchemaPtr schema; /* The schema in use */ const xmlChar *container; /* the current element, group, ... */ @@ -258,6 +289,8 @@ struct _xmlSchemaParserCtxt { int nbLocalImports; xmlHashTablePtr substGroups; int isS4S; + int isRedefine; + xmlSchemaContainerPtr compContainer; }; #define XML_SCHEMAS_ATTR_UNKNOWN 1 @@ -289,6 +322,26 @@ struct _xmlSchemaBasicItem { xmlSchemaTypeType type; }; +#define XML_SCHEMA_SCHEMA_REF_IMPORT 1 +#define XML_SCHEMA_SCHEMA_REF_INCLUDE 2 +#define XML_SCHEMA_SCHEMA_REF_REDEFINE 3 + +#define XML_SCHEMA_SCHEMA_REF_REL_CHILD 1 +#define XML_SCHEMA_SCHEMA_REF_REL_PARENT 2 +/** + * xmlSchemaSchemaRef: + * + * Used to create a graph of schema relationships. + */ +typedef struct _xmlSchemaSchemaRef xmlSchemaSchemaRef; +typedef xmlSchemaSchemaRef *xmlSchemaSchemaRefPtr; +struct _xmlSchemaSchemaRef { + xmlSchemaSchemaRefPtr next; + int type; /* E.g. XML_SCHEMA_SCHEMA_REF_IMPORT */ + int relation; + xmlSchemaPtr schema; +}; + /** * xmlSchemaAnnotItem: * @@ -462,6 +515,9 @@ typedef xmlSchemaPSVIIDCNode *xmlSchemaPSVIIDCNodePtr; struct _xmlSchemaPSVIIDCNode { xmlNodePtr node; xmlSchemaPSVIIDCKeyPtr *keys; + int nodeLine; + int nodeQNameID; + }; /** @@ -552,14 +608,17 @@ struct _xmlSchemaIDCMatcher { * Holds information of an element node. */ struct _xmlSchemaNodeInfo { - xmlNodePtr node; int nodeType; + xmlNodePtr node; + int nodeLine; const xmlChar *localName; const xmlChar *nsName; const xmlChar *value; xmlSchemaValPtr val; /* the pre-computed value if any */ xmlSchemaTypePtr typeDef; /* the complex/simple type definition if any */ + int flags; /* combination of node info flags */ + int valNeeded; int normVal; @@ -588,8 +647,9 @@ struct _xmlSchemaNodeInfo { typedef struct _xmlSchemaAttrInfo xmlSchemaAttrInfo; typedef xmlSchemaAttrInfo *xmlSchemaAttrInfoPtr; struct _xmlSchemaAttrInfo { - xmlNodePtr node; int nodeType; + xmlNodePtr node; + int nodeLine; const xmlChar *localName; const xmlChar *nsName; const xmlChar *value; @@ -674,6 +734,7 @@ struct _xmlSchemaValidCtxt { int sizeAttrInfos; int skipDepth; + xmlSchemaItemListPtr nodeQNames; }; /* @@ -722,6 +783,11 @@ struct _xmlSchemaSubstGroup { static int xmlSchemaParseInclude(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema, xmlNodePtr node); +#ifdef ENABLE_REDEFINE +static int xmlSchemaParseRedefine(xmlSchemaParserCtxtPtr ctxt, + xmlSchemaPtr schema, + xmlNodePtr node); +#endif static void xmlSchemaTypeFixup(xmlSchemaTypePtr typeDecl, xmlSchemaParserCtxtPtr ctxt, const xmlChar * name); @@ -796,6 +862,16 @@ xmlSchemaCompTypeToString(xmlSchemaTypeType type) return(BAD_CAST "model group (all)"); case XML_SCHEMA_TYPE_PARTICLE: return(BAD_CAST "particle"); + case XML_SCHEMA_TYPE_IDC_UNIQUE: + return(BAD_CAST "IDC (unique)"); + case XML_SCHEMA_TYPE_IDC_KEY: + return(BAD_CAST "IDC (key)"); + case XML_SCHEMA_TYPE_IDC_KEYREF: + return(BAD_CAST "IDC (keyref)"); + case XML_SCHEMA_TYPE_ANY: + return(BAD_CAST "wildcard (any)"); + case XML_SCHEMA_EXTRA_QNAMEREF: + return(BAD_CAST "[helper component] QName reference"); default: return(BAD_CAST "Not a schema component"); } @@ -1560,9 +1636,10 @@ xmlSchemaVErrMemory(xmlSchemaValidCtxtPtr ctxt, * Handle a validation error */ static void -xmlSchemaErr3(xmlSchemaAbstractCtxtPtr ctxt, - int error, xmlNodePtr node, const char *msg, - const xmlChar *str1, const xmlChar *str2, const xmlChar *str3) +xmlSchemaErr3Line(xmlSchemaAbstractCtxtPtr ctxt, + int error, xmlNodePtr node, int line, const char *msg, + const xmlChar *str1, const xmlChar *str2, + const xmlChar *str3) { xmlStructuredErrorFunc schannel = NULL; xmlGenericErrorFunc channel = NULL; @@ -1571,7 +1648,6 @@ xmlSchemaErr3(xmlSchemaAbstractCtxtPtr ctxt, if (ctxt != NULL) { if (ctxt->type == XML_SCHEMA_CTXT_VALIDATOR) { xmlSchemaValidCtxtPtr vctxt = (xmlSchemaValidCtxtPtr) ctxt; - int line = 0; const char *file = NULL; vctxt->nberrors++; @@ -1579,15 +1655,41 @@ xmlSchemaErr3(xmlSchemaAbstractCtxtPtr ctxt, channel = vctxt->error; schannel = vctxt->serror; data = vctxt->userData; - if ((node == NULL) && (vctxt->depth >= 0) && - (vctxt->inode != NULL)) { - node = vctxt->inode->node; - } - if ((node == NULL) && (vctxt->parserCtxt != NULL) && - (vctxt->parserCtxt->input != NULL)) { - file = vctxt->parserCtxt->input->filename; - line = vctxt->parserCtxt->input->line; - } + + /* + * Error node. If we specify a line number, then + * do not channel any node to the error function. + */ + if (line == 0) { + if ((node == NULL) && + (vctxt->depth >= 0) && + (vctxt->inode != NULL)) { + node = vctxt->inode->node; + } + /* + * Get filename and line if no node-tree. + */ + if ((node == NULL) && + (vctxt->parserCtxt != NULL) && + (vctxt->parserCtxt->input != NULL)) { + file = vctxt->parserCtxt->input->filename; + line = vctxt->parserCtxt->input->line; + } + } else { + /* + * Override the given node's (if any) position + * and channel only the given line number. + */ + node = NULL; + /* + * Get filename. + */ + if (vctxt->doc != NULL) + file = (const char *) vctxt->doc->URL; + else if ((vctxt->parserCtxt != NULL) && + (vctxt->parserCtxt->input != NULL)) + file = vctxt->parserCtxt->input->filename; + } __xmlRaiseError(schannel, channel, data, ctxt, node, XML_FROM_SCHEMASV, error, XML_ERR_ERROR, file, line, @@ -1613,6 +1715,26 @@ xmlSchemaErr3(xmlSchemaAbstractCtxtPtr ctxt, } } +/** + * xmlSchemaErr3: + * @ctxt: the validation context + * @node: the context node + * @error: the error code + * @msg: the error message + * @str1: extra data + * @str2: extra data + * @str3: extra data + * + * Handle a validation error + */ +static void +xmlSchemaErr3(xmlSchemaAbstractCtxtPtr actxt, + int error, xmlNodePtr node, const char *msg, + const xmlChar *str1, const xmlChar *str2, const xmlChar *str3) +{ + xmlSchemaErr3Line(actxt, error, node, 0, msg, str1, str2, str3); +} + static void xmlSchemaErr(xmlSchemaAbstractCtxtPtr actxt, int error, xmlNodePtr node, const char *msg, @@ -1699,9 +1821,11 @@ xmlSchemaFormatNodeForError(xmlChar ** msg, } static void -xmlSchemaInternalErr(xmlSchemaAbstractCtxtPtr actxt, +xmlSchemaInternalErr2(xmlSchemaAbstractCtxtPtr actxt, const char *funcName, - const char *message) + const char *message, + const xmlChar *str1, + const xmlChar *str2) { xmlChar *msg = NULL; @@ -1713,16 +1837,35 @@ xmlSchemaInternalErr(xmlSchemaAbstractCtxtPtr actxt, if (actxt->type == XML_SCHEMA_CTXT_VALIDATOR) xmlSchemaErr(actxt, XML_SCHEMAV_INTERNAL, NULL, - (const char *) msg, NULL, NULL); + (const char *) msg, str1, str2); - else if (actxt->type == XML_SCHEMA_CTXT_PARSER) + else if (actxt->type == XML_SCHEMA_CTXT_PARSER) xmlSchemaErr(actxt, XML_SCHEMAP_INTERNAL, NULL, - (const char *) msg, NULL, NULL); + (const char *) msg, str1, str2); FREE_AND_NULL(msg) } static void +xmlSchemaInternalErr(xmlSchemaAbstractCtxtPtr actxt, + const char *funcName, + const char *message) +{ + xmlSchemaInternalErr2(actxt, funcName, message, NULL, NULL); +} + +static void +xmlSchemaPInternalErr(xmlSchemaParserCtxtPtr pctxt, + const char *funcName, + const char *message, + const xmlChar *str1, + const xmlChar *str2) +{ + xmlSchemaInternalErr2((xmlSchemaAbstractCtxtPtr) pctxt, funcName, message, + str1, str2); +} + +static void xmlSchemaCustomErr(xmlSchemaAbstractCtxtPtr actxt, xmlParserErrors error, xmlNodePtr node, @@ -1741,6 +1884,30 @@ xmlSchemaCustomErr(xmlSchemaAbstractCtxtPtr actxt, FREE_AND_NULL(msg) } +static void +xmlSchemaKeyrefErr(xmlSchemaValidCtxtPtr vctxt, + xmlParserErrors error, + xmlSchemaPSVIIDCNodePtr idcNode, + xmlSchemaTypePtr type ATTRIBUTE_UNUSED, + const char *message, + const xmlChar *str1, + const xmlChar *str2) +{ + xmlChar *msg = NULL, *qname = NULL; + + msg = xmlStrdup(BAD_CAST "Element '%s': "); + msg = xmlStrcat(msg, (const xmlChar *) message); + msg = xmlStrcat(msg, BAD_CAST ".\n"); + xmlSchemaErr3Line((xmlSchemaAbstractCtxtPtr) vctxt, + error, NULL, idcNode->nodeLine, (const char *) msg, + xmlSchemaFormatQName(&qname, + vctxt->nodeQNames->items[idcNode->nodeQNameID +1], + vctxt->nodeQNames->items[idcNode->nodeQNameID]), + str1, str2); + FREE_AND_NULL(qname); + FREE_AND_NULL(msg); +} + static int xmlSchemaEvalErrorNodeType(xmlSchemaAbstractCtxtPtr actxt, xmlNodePtr node) @@ -1879,7 +2046,7 @@ xmlSchemaComplexTypeErr(xmlSchemaAbstractCtxtPtr actxt, xmlChar *str = NULL, *msg = NULL; xmlChar *localName, *nsName; const xmlChar *cur, *end; - int i; + int i, is_not; xmlSchemaFormatNodeForError(&msg, actxt, node); msg = xmlStrcat(msg, (const xmlChar *) message); @@ -1898,6 +2065,16 @@ xmlSchemaComplexTypeErr(xmlSchemaAbstractCtxtPtr actxt, for (i = 0; i < nbval + nbneg; i++) { cur = values[i]; + if (cur == NULL) + continue; + if ((cur[0] == 'n') && (cur[1] == 'o') && (cur[2] == 't') && + (cur[3] == ' ')) { + is_not = 1; + cur += 4; + str = xmlStrcat(str, BAD_CAST "##other"); + } else { + is_not = 0; + } /* * Get the local name. */ @@ -2088,6 +2265,7 @@ xmlSchemaFacetErr(xmlSchemaAbstractCtxtPtr actxt, #define VERROR_INT(func, msg) xmlSchemaInternalErr((xmlSchemaAbstractCtxtPtr) vctxt, func, msg); #define PERROR_INT(func, msg) xmlSchemaInternalErr((xmlSchemaAbstractCtxtPtr) pctxt, func, msg); +#define PERROR_INT2(func, msg) xmlSchemaInternalErr((xmlSchemaAbstractCtxtPtr) ctxt, func, msg); #define AERROR_INT(func, msg) xmlSchemaInternalErr(actxt, func, msg); @@ -2537,8 +2715,10 @@ xmlSchemaPSimpleTypeErr(xmlSchemaParserCtxtPtr ctxt, else xmlSchemaPErr(ctxt, node, error, (const char *) msg, NULL, NULL); } else { + msg = xmlStrcat(msg, BAD_CAST message); + msg = xmlStrcat(msg, BAD_CAST ".\n"); xmlSchemaPErrExt(ctxt, node, error, NULL, NULL, NULL, - "%s%s.\n", msg, BAD_CAST message, str1, str2, NULL); + (const char*) msg, str1, str2, NULL, NULL, NULL); } /* Cleanup. */ FREE_AND_NULL(msg) @@ -2711,7 +2891,7 @@ xmlSchemaNewAnnot(xmlSchemaParserCtxtPtr ctxt, xmlNodePtr node) } static xmlSchemaItemListPtr -xmlSchemaNewItemList(void) +xmlSchemaItemListCreate(void) { xmlSchemaItemListPtr ret; @@ -2725,6 +2905,98 @@ xmlSchemaNewItemList(void) return (ret); } +static void +xmlSchemaItemListClear(xmlSchemaItemListPtr list) +{ + if (list->items != NULL) { + xmlFree(list->items); + list->items = NULL; + } + list->nbItems = 0; + list->sizeItems = 0; +} + +static int +xmlSchemaItemListAdd(xmlSchemaItemListPtr list, void *item) +{ + if (list->items == NULL) { + list->items = (void **) xmlMalloc( + 20 * sizeof(void *)); + if (list->items == NULL) { + xmlSchemaPErrMemory(NULL, "allocating new item list", NULL); + return(-1); + } + list->sizeItems = 20; + } else if (list->sizeItems <= list->nbItems) { + list->sizeItems *= 2; + list->items = (void **) xmlRealloc(list->items, + list->sizeItems * sizeof(void *)); + if (list->items == NULL) { + xmlSchemaPErrMemory(NULL, "growing item list", NULL); + list->sizeItems = 0; + return(-1); + } + } + /* ((xmlSchemaBasicItemPtr *) list->items)[list->nbItems++] = (void *) item; */ + list->items[list->nbItems++] = item; + return(0); +} + +/** + * xmlSchemaItemListFree: + * @annot: a schema type structure + * + * Deallocate a annotation structure + */ +static void +xmlSchemaItemListFree(xmlSchemaItemListPtr list) +{ + if (list == NULL) + return; + if (list->items != NULL) + xmlFree(list->items); + xmlFree(list); +} + +static xmlSchemaContainerPtr +xmlSchemaContainerCreate(void) +{ + xmlSchemaContainerPtr ret; + + ret = (xmlSchemaContainerPtr) xmlMalloc(sizeof(xmlSchemaContainer)); + if (ret == NULL) { + xmlSchemaPErrMemory(NULL, "allocating component container", + NULL); + return(NULL); + } + memset(ret, 0, sizeof(xmlSchemaContainer)); + return(ret); +} + +static void +xmlSchemaContainerFree(xmlSchemaContainerPtr cont) +{ + if (cont == NULL) + return; + if (cont->typeDefs != NULL) + xmlSchemaItemListFree(cont->typeDefs); + if (cont->attrDecls != NULL) + xmlSchemaItemListFree(cont->attrDecls); + if (cont->elemDecls != NULL) + xmlSchemaItemListFree(cont->elemDecls); + if (cont->attrGroupDefs != NULL) + xmlSchemaItemListFree(cont->attrGroupDefs); + if (cont->modelGroupDefs != NULL) + xmlSchemaItemListFree(cont->modelGroupDefs); + if (cont->notationDecls != NULL) + xmlSchemaItemListFree(cont->notationDecls); + if (cont->annotations != NULL) + xmlSchemaItemListFree(cont->annotations); + if (cont->locals != NULL) + xmlSchemaItemListFree(cont->locals); + xmlFree(cont); +} + /** * xmlSchemaAddElementSubstitutionMember: * @pctxt: a schema parser context @@ -2763,7 +3035,7 @@ xmlSchemaAddElementSubstitutionMember(xmlSchemaParserCtxtPtr pctxt, NULL); return (-1); } - substGroup->members = xmlSchemaNewItemList(); + substGroup->members = xmlSchemaItemListCreate(); if (substGroup->members == NULL) { xmlFree(substGroup); return (-1); @@ -2835,22 +3107,6 @@ xmlSchemaGetElementSubstitutionGroup(xmlSchemaParserCtxtPtr pctxt, } /** - * xmlSchemaFreeItemList: - * @annot: a schema type structure - * - * Deallocate a annotation structure - */ -static void -xmlSchemaFreeItemList(xmlSchemaItemListPtr list) -{ - if (list == NULL) - return; - if (list->items != NULL) - xmlFree(list->items); - xmlFree(list); -} - -/** * xmlSchemaFreeAnnot: * @annot: a schema type structure * @@ -2861,7 +3117,17 @@ xmlSchemaFreeAnnot(xmlSchemaAnnotPtr annot) { if (annot == NULL) return; - xmlFree(annot); + if (annot->next == NULL) { + xmlFree(annot); + } else { + xmlSchemaAnnotPtr prev; + + do { + prev = annot; + annot = annot->next; + xmlFree(prev); + } while (annot != NULL); + } } /** @@ -3043,7 +3309,7 @@ xmlSchemaFreeSubstGroup(xmlSchemaSubstGroupPtr item) if (item == NULL) return; if (item->members != NULL) - xmlSchemaFreeItemList(item->members); + xmlSchemaItemListFree(item->members); xmlFree(item); } @@ -3051,39 +3317,15 @@ static int xmlSchemaAddVolatile(xmlSchemaPtr schema, xmlSchemaBasicItemPtr item) { - xmlSchemaItemListPtr list; - if (schema->volatiles == NULL) { - schema->volatiles = (void *) xmlSchemaNewItemList(); + schema->volatiles = (void *) xmlSchemaItemListCreate(); if (schema->volatiles == NULL) { xmlSchemaPErrMemory(NULL, "allocating list of volatiles", NULL); return (-1); } } - list = (xmlSchemaItemListPtr) schema->volatiles; - if (list->items == NULL) { - list->items = (void **) xmlMalloc( - 20 * sizeof(xmlSchemaBasicItemPtr)); - if (list->items == NULL) { - xmlSchemaPErrMemory(NULL, - "allocating new volatile item buffer", NULL); - return (-1); - } - list->sizeItems = 20; - } else if (list->sizeItems <= list->nbItems) { - list->sizeItems *= 2; - list->items = (void **) xmlRealloc(list->items, - list->sizeItems * sizeof(xmlSchemaTypePtr)); - if (list->items == NULL) { - xmlSchemaPErrMemory(NULL, - "growing volatile item buffer", NULL); - list->sizeItems = 0; - return (-1); - } - } - ((xmlSchemaBasicItemPtr *) list->items)[list->nbItems++] = (void *) item; - return (0); + return(xmlSchemaItemListAdd((xmlSchemaItemListPtr) schema->volatiles, item)); } /** @@ -3218,6 +3460,9 @@ xmlSchemaFreeType(xmlSchemaTypePtr type) } } if (type->type != XML_SCHEMA_TYPE_BASIC) { + /* + * TODO: Why is this restricted to non built-in types? + */ if (type->attributeUses != NULL) xmlSchemaFreeAttributeUseList(type->attributeUses); } @@ -3333,7 +3578,7 @@ xmlSchemaFreeVolatiles(xmlSchemaPtr schema) } } } - xmlSchemaFreeItemList(list); + xmlSchemaItemListFree(list); } } /** @@ -3894,35 +4139,19 @@ xmlSchemaGetProp(xmlSchemaParserCtxtPtr ctxt, xmlNodePtr node, */ static xmlSchemaElementPtr xmlSchemaGetElem(xmlSchemaPtr schema, const xmlChar * name, - const xmlChar * namespace) + const xmlChar * nsName) { xmlSchemaElementPtr ret; if ((name == NULL) || (schema == NULL)) return (NULL); - ret = xmlHashLookup2(schema->elemDecl, name, namespace); + ret = xmlHashLookup2(schema->elemDecl, name, nsName); if ((ret != NULL) && (ret->flags & XML_SCHEMAS_ELEM_GLOBAL)) { return (ret); } else ret = NULL; - /* - * This one was removed, since top level element declarations have - * the target namespace specified in targetNamespace of the <schema> - * information element, even if elementFormDefault is "unqualified". - */ - - /* else if ((schema->flags & XML_SCHEMAS_QUALIF_ELEM) == 0) { - if (xmlStrEqual(namespace, schema->targetNamespace)) - ret = xmlHashLookup2(schema->elemDecl, name, NULL); - else - ret = xmlHashLookup2(schema->elemDecl, name, namespace); - if ((ret != NULL) && - ((level == 0) || (ret->flags & XML_SCHEMAS_ELEM_TOPLEVEL))) { - return (ret); - } - */ /* * Removed since imported components will be hold by the main schema only. @@ -3963,18 +4192,25 @@ xmlSchemaGetElem(xmlSchemaPtr schema, const xmlChar * name, */ static xmlSchemaTypePtr xmlSchemaGetType(xmlSchemaPtr schema, const xmlChar * name, - const xmlChar * namespace) + const xmlChar * nsName) { xmlSchemaTypePtr ret; if (name == NULL) return (NULL); if (schema != NULL) { - ret = xmlHashLookup2(schema->typeDecl, name, namespace); - if ((ret != NULL) && (ret->flags & XML_SCHEMAS_TYPE_GLOBAL)) + ret = xmlHashLookup2(schema->typeDecl, name, nsName); + if ((ret != NULL) && (ret->flags & XML_SCHEMAS_TYPE_GLOBAL)) { + if (ret->redef != NULL) { + /* + * Return the last redefinition. + */ + return(ret->redef); + } return (ret); + } } - ret = xmlSchemaGetPredefinedType(name, namespace); + ret = xmlSchemaGetPredefinedType(name, nsName); if (ret != NULL) return (ret); /* @@ -3994,14 +4230,14 @@ xmlSchemaGetType(xmlSchemaPtr schema, const xmlChar * name, */ #ifdef DEBUG if (ret == NULL) { - if (namespace == NULL) + if (nsName == NULL) fprintf(stderr, "Unable to lookup type %s", name); else fprintf(stderr, "Unable to lookup type %s:%s", name, - namespace); + nsName); } #endif - return (ret); + return (NULL); } /** @@ -4548,8 +4784,8 @@ xmlSchemaAddElement(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema, */ static xmlSchemaTypePtr xmlSchemaAddType(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema, - const xmlChar * name, const xmlChar * namespace, - xmlNodePtr node) + const xmlChar * name, const xmlChar * nsName, + xmlNodePtr node, int topLevel) { xmlSchemaTypePtr ret = NULL; int val; @@ -4557,12 +4793,6 @@ xmlSchemaAddType(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema, if ((ctxt == NULL) || (schema == NULL) || (name == NULL)) return (NULL); -#ifdef DEBUG - fprintf(stderr, "Adding type %s\n", name); - if (namespace != NULL) - fprintf(stderr, " target namespace %s\n", namespace); -#endif - if (schema->typeDecl == NULL) schema->typeDecl = xmlHashCreateDict(10, ctxt->dict); if (schema->typeDecl == NULL) @@ -4576,25 +4806,37 @@ xmlSchemaAddType(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema, memset(ret, 0, sizeof(xmlSchemaType)); ret->name = xmlDictLookup(ctxt->dict, name, -1); ret->redef = NULL; - val = xmlHashAddEntry2(schema->typeDecl, name, namespace, ret); + val = xmlHashAddEntry2(schema->typeDecl, name, nsName, ret); if (val != 0) { - if (ctxt->includes == 0) { - xmlSchemaPCustomErr(ctxt, - XML_SCHEMAP_REDEFINED_TYPE, - NULL, NULL, node, - "A global type definition with the name '%s' does already exist", name); + if (! ctxt->isRedefine) { + xmlChar *str = NULL; + if (topLevel) { + xmlSchemaPCustomErr(ctxt, + XML_SCHEMAP_REDEFINED_TYPE, + NULL, NULL, node, + "A global type definition with the name '%s' does " + "already exist", + xmlSchemaFormatQName(&str, nsName, name)); + } else { + xmlSchemaPCustomErr(ctxt, XML_SCHEMAP_INTERNAL, + NULL, NULL, node, "Internal error: xmlSchemaAddType, " + "local type '%s' has a duplicate", + xmlSchemaFormatQName(&str, nsName, name)); + } xmlFree(ret); + FREE_AND_NULL(str); return (NULL); } else { xmlSchemaTypePtr prev; - prev = xmlHashLookup2(schema->typeDecl, name, namespace); + /* + * REDEFINE: Add a redefinition. + */ + TODO + prev = xmlHashLookup2(schema->typeDecl, name, nsName); if (prev == NULL) { - xmlSchemaPErr(ctxt, (xmlNodePtr) ctxt->doc, - XML_ERR_INTERNAL_ERROR, - "Internal error: xmlSchemaAddType, on type " - "'%s'.\n", - name, NULL); + PERROR_INT2("xmlSchemaAddType", "hash list didn't return " + "a type component, but should"); xmlFree(ret); return (NULL); } @@ -4977,7 +5219,7 @@ xmlSchemaPValAttrNodeQNameValue(xmlSchemaParserCtxtPtr ctxt, return (-1); if (!strchr((char *) value, ':')) { - ns = xmlSearchNs(attr->doc, attr->parent, 0); + ns = xmlSearchNs(attr->doc, attr->parent, NULL); if (ns) *uri = xmlDictLookup(ctxt->dict, ns->href, -1); else if (schema->flags & XML_SCHEMAS_INCLUDING_CONVERT_NS) { @@ -8048,6 +8290,7 @@ xmlSchemaParseSimpleType(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema, xmlNodePtr child = NULL; const xmlChar *attrValue = NULL; xmlAttrPtr attr; + int hasRestriction = 0; if ((ctxt == NULL) || (schema == NULL) || (node == NULL)) return (NULL); @@ -8071,6 +8314,18 @@ xmlSchemaParseSimpleType(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema, if (ctxt->isS4S) { xmlSchemaTypePtr biType; + if (ctxt->isRedefine) { + /* + * REDEFINE: Disallow redefinition of built-in-types. + * TODO: It seems that the spec does not say anything + * about this case. + */ + xmlSchemaPCustomErr(ctxt, XML_SCHEMAP_SRC_REDEFINE, + NULL, NULL, node, + "Redefinition of built-in simple types is not " + "supported", NULL); + return(NULL); + } biType = xmlSchemaGetPredefinedType(attrValue, xmlSchemaNs); if (biType != NULL) return (biType); @@ -8085,7 +8340,8 @@ xmlSchemaParseSimpleType(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema, * Parse as local simple type definition. */ snprintf(buf, 39, "#ST%d", ctxt->counter++ + 1); - type = xmlSchemaAddType(ctxt, schema, (const xmlChar *)buf, NULL, node); + type = xmlSchemaAddType(ctxt, schema, (const xmlChar *)buf, NULL, + node, 0); if (type == NULL) return (NULL); type->node = node; @@ -8115,7 +8371,8 @@ xmlSchemaParseSimpleType(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema, * * Note that attrValue is the value of the attribute "name" here. */ - type = xmlSchemaAddType(ctxt, schema, attrValue, schema->targetNamespace, node); + type = xmlSchemaAddType(ctxt, schema, attrValue, + schema->targetNamespace, node, 1); if (type == NULL) return (NULL); type->node = node; @@ -8186,9 +8443,10 @@ xmlSchemaParseSimpleType(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema, xmlSchemaPContentErr(ctxt, XML_SCHEMAP_S4S_ELEM_MISSING, NULL, type, node, child, NULL, "(annotation?, (restriction | list | union))"); - } else if (IS_SCHEMA(child, "restriction")) { + } else if (IS_SCHEMA(child, "restriction")) { xmlSchemaParseRestriction(ctxt, schema, child, - XML_SCHEMA_TYPE_SIMPLE); + XML_SCHEMA_TYPE_SIMPLE); + hasRestriction = 1; child = child->next; } else if (IS_SCHEMA(child, "list")) { xmlSchemaParseList(ctxt, schema, child); @@ -8202,9 +8460,21 @@ xmlSchemaParseSimpleType(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema, NULL, type, node, child, NULL, "(annotation?, (restriction | list | union))"); } + /* + * REDEFINE: SPEC src-redefine (5) + * "Within the [children], each <simpleType> must have a + * <restriction> among its [children] ... the ·actual value· of whose + * base [attribute] must be the same as the ·actual value· of its own + * name attribute plus target namespace;" + */ + if (topLevel && ctxt->isRedefine && (! hasRestriction)) { + xmlSchemaPCustomErr(ctxt, XML_SCHEMAP_SRC_REDEFINE, + NULL, NULL, node, "This is a redefinition, thus the " + "<simpleType> must have a <restriction> child", NULL); + } + ctxt->parentItem = oldParentItem; ctxt->ctxtType = oldCtxtType; - return (type); } @@ -8476,73 +8746,6 @@ xmlSchemaCleanupDoc(xmlSchemaParserCtxtPtr ctxt, xmlNodePtr root) } -/** - * xmlSchemaImportSchema - * - * @ctxt: a schema validation context - * @schemaLocation: an URI defining where to find the imported schema - * - * import a XML schema - * *WARNING* this interface is highly subject to change - * - * Returns -1 in case of error and 1 in case of success. - */ -#if 0 -static xmlSchemaImportPtr -xmlSchemaImportSchema(xmlSchemaParserCtxtPtr ctxt, - const xmlChar *schemaLocation) -{ - xmlSchemaImportPtr import; - xmlSchemaParserCtxtPtr newctxt; - - newctxt = (xmlSchemaParserCtxtPtr) xmlMalloc(sizeof(xmlSchemaParserCtxt)); - if (newctxt == NULL) { - xmlSchemaPErrMemory(ctxt, "allocating schema parser context", - NULL); - return (NULL); - } - memset(newctxt, 0, sizeof(xmlSchemaParserCtxt)); - /* Keep the same dictionnary for parsing, really */ - xmlDictReference(ctxt->dict); - newctxt->dict = ctxt->dict; - newctxt->includes = 0; - newctxt->URL = xmlDictLookup(newctxt->dict, schemaLocation, -1); - - xmlSchemaSetParserErrors(newctxt, ctxt->error, ctxt->warning, - ctxt->userData); - - import = (xmlSchemaImport*) xmlMalloc(sizeof(xmlSchemaImport)); - if (import == NULL) { - xmlSchemaPErrMemory(NULL, "allocating imported schema", - NULL); - xmlSchemaFreeParserCtxt(newctxt); - return (NULL); - } - - memset(import, 0, sizeof(xmlSchemaImport)); - import->schemaLocation = xmlDictLookup(ctxt->dict, schemaLocation, -1); - import->schema = xmlSchemaParse(newctxt); - - if (import->schema == NULL) { - /* FIXME use another error enum here ? */ - xmlSchemaPErr(ctxt, NULL, XML_SCHEMAP_INTERNAL, - "Failed to import schema from location \"%s\".\n", - schemaLocation, NULL); - - xmlSchemaFreeParserCtxt(newctxt); - /* The schemaLocation is held by the dictionary. - if (import->schemaLocation != NULL) - xmlFree((xmlChar *)import->schemaLocation); - */ - xmlFree(import); - return NULL; - } - - xmlSchemaFreeParserCtxt(newctxt); - return import; -} -#endif - static void xmlSchemaClearSchemaDefaults(xmlSchemaPtr schema) { @@ -8679,7 +8882,11 @@ xmlSchemaParseSchemaTopLevel(xmlSchemaParserCtxtPtr ctxt, xmlSchemaParseInclude(ctxt, schema, child); ctxt->includes--; } else if (IS_SCHEMA(child, "redefine")) { +#ifdef ENABLE_REDEFINE + xmlSchemaParseRedefine(ctxt, schema, child); +#else TODO +#endif } child = child->next; } @@ -8756,6 +8963,49 @@ xmlSchemaAddImport(xmlSchemaParserCtxtPtr ctxt, return (ret); } +#ifdef ENABLE_REDEFINE +static xmlSchemaSchemaRefPtr +xmlSchemaSchemaRefCreate(void) +{ + xmlSchemaSchemaRefPtr ret; + + ret = (xmlSchemaSchemaRefPtr) xmlMalloc(sizeof(xmlSchemaSchemaRef)); + if (ret == NULL) { + xmlSchemaPErrMemory(NULL, "allocating schema reference", NULL); + return(NULL); + } + memset(ret, 0, sizeof(xmlSchemaSchemaRef)); + return(ret); +} + +static void +xmlSchemaSchemaRefFree(xmlSchemaSchemaRefPtr ref) +{ + xmlFree(ref); +} +#endif + +static xmlSchemaParserCtxtPtr +xmlSchemaParserCtxtCreate(void) +{ + xmlSchemaParserCtxtPtr ret; + + ret = (xmlSchemaParserCtxtPtr) xmlMalloc(sizeof(xmlSchemaParserCtxt)); + if (ret == NULL) { + xmlSchemaPErrMemory(NULL, "allocating schema parser context", + NULL); + return (NULL); + } + memset(ret, 0, sizeof(xmlSchemaParserCtxt)); + ret->type = XML_SCHEMA_CTXT_PARSER; + ret->compContainer = xmlSchemaContainerCreate(); + if (ret->compContainer == NULL) { + xmlSchemaFreeParserCtxt(ret); + return(NULL); + } + return(ret); +} + /** * xmlSchemaNewParserCtxtUseDict: * @URL: the location of the schema @@ -8770,18 +9020,10 @@ static xmlSchemaParserCtxtPtr xmlSchemaNewParserCtxtUseDict(const char *URL, xmlDictPtr dict) { xmlSchemaParserCtxtPtr ret; - /* - if (URL == NULL) - return (NULL); - */ - ret = (xmlSchemaParserCtxtPtr) xmlMalloc(sizeof(xmlSchemaParserCtxt)); - if (ret == NULL) { - xmlSchemaPErrMemory(NULL, "allocating schema parser context", - NULL); + ret = xmlSchemaParserCtxtCreate(); + if (ret == NULL) return (NULL); - } - memset(ret, 0, sizeof(xmlSchemaParserCtxt)); ret->dict = dict; xmlDictReference(dict); if (URL != NULL) @@ -9053,14 +9295,17 @@ xmlSchemaParseForImpInc(xmlSchemaParserCtxtPtr pctxt, oldURL = pctxt->URL; /* TODO: Is using the doc->URL here correct? */ pctxt->URL = node->doc->URL; + oldLocImps = pctxt->localImports; pctxt->localImports = NULL; oldNumLocImps = pctxt->nbLocalImports; pctxt->nbLocalImports = 0; oldSizeLocImps = pctxt->sizeLocalImports; pctxt->sizeLocalImports = 0; + oldFlags = schema->flags; oldIsS4S = pctxt->isS4S; + xmlSchemaClearSchemaDefaults(schema); oldTNS = schema->targetNamespace; schema->targetNamespace = targetNamespace; @@ -9103,7 +9348,7 @@ xmlSchemaParseForImpInc(xmlSchemaParserCtxtPtr pctxt, * not valid and -1 in case of an internal error. */ static int -xmlSchemaParseImport(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema, +xmlSchemaParseImport(xmlSchemaParserCtxtPtr pctxt, xmlSchemaPtr schema, xmlNodePtr node) { xmlNodePtr child; @@ -9114,7 +9359,7 @@ xmlSchemaParseImport(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema, xmlDocPtr doc; int ret = 0; - if ((ctxt == NULL) || (schema == NULL) || (node == NULL)) + if ((pctxt == NULL) || (schema == NULL) || (node == NULL)) return (-1); /* @@ -9126,12 +9371,12 @@ xmlSchemaParseImport(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema, if ((!xmlStrEqual(attr->name, BAD_CAST "id")) && (!xmlStrEqual(attr->name, BAD_CAST "namespace")) && (!xmlStrEqual(attr->name, BAD_CAST "schemaLocation"))) { - xmlSchemaPIllegalAttrErr(ctxt, + xmlSchemaPIllegalAttrErr(pctxt, XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, NULL, NULL, attr); } } else if (xmlStrEqual(attr->ns->href, xmlSchemaNs)) { - xmlSchemaPIllegalAttrErr(ctxt, + xmlSchemaPIllegalAttrErr(pctxt, XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, NULL, NULL, attr); } @@ -9140,26 +9385,26 @@ xmlSchemaParseImport(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema, /* * Extract and validate attributes. */ - if (xmlSchemaPValAttr(ctxt, NULL, NULL, node, + if (xmlSchemaPValAttr(pctxt, NULL, NULL, node, "namespace", xmlSchemaGetBuiltInType(XML_SCHEMAS_ANYURI), &namespaceName) != 0) { - xmlSchemaPSimpleTypeErr(ctxt, - XML_SCHEMAP_IMPORT_NAMESPACE_NOT_URI, + xmlSchemaPSimpleTypeErr(pctxt, + XML_SCHEMAP_S4S_ATTR_INVALID_VALUE, NULL, node, xmlSchemaGetBuiltInType(XML_SCHEMAS_ANYURI), NULL, namespaceName, NULL, NULL, NULL); - return (XML_SCHEMAP_IMPORT_NAMESPACE_NOT_URI); + return (pctxt->err); } - if (xmlSchemaPValAttr(ctxt, NULL, NULL, node, + if (xmlSchemaPValAttr(pctxt, NULL, NULL, node, "schemaLocation", xmlSchemaGetBuiltInType(XML_SCHEMAS_ANYURI), &schemaLocation) != 0) { - xmlSchemaPSimpleTypeErr(ctxt, - XML_SCHEMAP_IMPORT_SCHEMA_NOT_URI, + xmlSchemaPSimpleTypeErr(pctxt, + XML_SCHEMAP_S4S_ATTR_INVALID_VALUE, NULL, node, xmlSchemaGetBuiltInType(XML_SCHEMAS_ANYURI), NULL, namespaceName, NULL, NULL, NULL); - return (XML_SCHEMAP_IMPORT_SCHEMA_NOT_URI); + return (pctxt->err); } /* * And now for the children... @@ -9173,8 +9418,8 @@ xmlSchemaParseImport(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema, child = child->next; } if (child != NULL) { - xmlSchemaPContentErr(ctxt, - XML_SCHEMAP_UNKNOWN_IMPORT_CHILD, + xmlSchemaPContentErr(pctxt, + XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED, NULL, NULL, node, child, NULL, "(annotation?)"); } @@ -9188,13 +9433,13 @@ xmlSchemaParseImport(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema, * targetNamespace [attribute]. */ if (xmlStrEqual(schema->targetNamespace, namespaceName)) { - xmlSchemaPCustomErr(ctxt, + xmlSchemaPCustomErr(pctxt, XML_SCHEMAP_SRC_IMPORT_1_1, NULL, NULL, node, "The value of the attribute 'namespace' must not match " "the target namespace '%s' of the importing schema", schema->targetNamespace); - return (XML_SCHEMAP_SRC_IMPORT_1_1); + return (pctxt->err); } } else { /* @@ -9202,34 +9447,36 @@ xmlSchemaParseImport(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema, * <schema> must have a targetNamespace [attribute]. */ if (schema->targetNamespace == NULL) { - xmlSchemaPCustomErr(ctxt, + xmlSchemaPCustomErr(pctxt, XML_SCHEMAP_SRC_IMPORT_1_2, NULL, NULL, node, "The attribute 'namespace' must be existent if " "the importing schema has no target namespace", NULL); - return (XML_SCHEMAP_SRC_IMPORT_1_2); + return (pctxt->err); } } /* * Add the namespace to the list of locally imported namespace. + * TODO: This could be removed if the schema-graph is ready. I.e. + * use the graph for this info instead. */ - if (ctxt->localImports == NULL) { - ctxt->localImports = (const xmlChar **) xmlMalloc(10 * + if (pctxt->localImports == NULL) { + pctxt->localImports = (const xmlChar **) xmlMalloc(10 * sizeof(const xmlChar*)); - ctxt->sizeLocalImports = 10; - ctxt->nbLocalImports = 0; - } else if (ctxt->sizeLocalImports <= ctxt->nbLocalImports) { - ctxt->sizeLocalImports *= 2; - ctxt->localImports = (const xmlChar **) xmlRealloc( - (xmlChar **) ctxt->localImports, - ctxt->sizeLocalImports * sizeof(const xmlChar*)); + pctxt->sizeLocalImports = 10; + pctxt->nbLocalImports = 0; + } else if (pctxt->sizeLocalImports <= pctxt->nbLocalImports) { + pctxt->sizeLocalImports *= 2; + pctxt->localImports = (const xmlChar **) xmlRealloc( + (xmlChar **) pctxt->localImports, + pctxt->sizeLocalImports * sizeof(const xmlChar*)); } - ctxt->localImports[ctxt->nbLocalImports++] = namespaceName; + pctxt->localImports[pctxt->nbLocalImports++] = namespaceName; /* * Locate and aquire the schema document. */ - ret = xmlSchemaAcquireSchemaDoc((xmlSchemaAbstractCtxtPtr) ctxt, + ret = xmlSchemaAcquireSchemaDoc((xmlSchemaAbstractCtxtPtr) pctxt, schema, node, namespaceName, schemaLocation, &doc, &targetNamespace, 0); if (ret != 0) { @@ -9237,7 +9484,7 @@ xmlSchemaParseImport(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema, xmlFreeDoc(doc); return (ret); } else if (doc != NULL) { - xmlSchemaParseForImpInc(ctxt, schema, targetNamespace, + xmlSchemaParseForImpInc(pctxt, schema, targetNamespace, xmlDocGetRootElement(doc)); } @@ -9245,120 +9492,31 @@ xmlSchemaParseImport(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema, } /** - * xmlSchemaParseInclude: - * @ctxt: a schema validation context + * xmlSchemaParseIncludedDoc: + * @pctxt: a schema validation context * @schema: the schema being built * @node: a subtree containing XML Schema informations * - * parse a XML schema Include definition + * Parse an included (and to-be-redefined) XML schema document. * - * Returns -1 in case of error, 0 if the declaration is improper and - * 1 in case of success. + * Returns 0 on success, a positive error code on errors and + * -1 in case of an internal or API error. */ static int -xmlSchemaParseInclude(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema, - xmlNodePtr node) +xmlSchemaParseIncludedDoc(xmlSchemaParserCtxtPtr pctxt, xmlSchemaPtr schema, + xmlNodePtr node, const xmlChar *schemaLocation, + int *located) { - xmlNodePtr child = NULL; - const xmlChar *schemaLocation, *targetNamespace; + const xmlChar *targetNamespace; xmlDocPtr doc = NULL; xmlNodePtr root = NULL; xmlSchemaIncludePtr include = NULL; int wasConvertingNs = 0; - xmlAttrPtr attr; xmlParserCtxtPtr parserCtxt; - - if ((ctxt == NULL) || (schema == NULL) || (node == NULL)) - return (-1); - - /* - * Check for illegal attributes. - */ - attr = node->properties; - while (attr != NULL) { - if (attr->ns == NULL) { - if ((!xmlStrEqual(attr->name, BAD_CAST "id")) && - (!xmlStrEqual(attr->name, BAD_CAST "schemaLocation"))) { - xmlSchemaPIllegalAttrErr(ctxt, - XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, - NULL, NULL, attr); - } - } else if (xmlStrEqual(attr->ns->href, xmlSchemaNs)) { - xmlSchemaPIllegalAttrErr(ctxt, - XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, - NULL, NULL, attr); - } - attr = attr->next; - } - /* - * Extract and validate attributes. - */ - xmlSchemaPValAttrID(ctxt, NULL, NULL, node, BAD_CAST "id"); - /* - * Preliminary step, extract the URI-Reference for the include and - * make an URI from the base. - */ - attr = xmlSchemaGetPropNode(node, "schemaLocation"); - if (attr != NULL) { - xmlChar *base = NULL; - xmlChar *uri = NULL; - - if (xmlSchemaPValAttrNode(ctxt, NULL, NULL, attr, - xmlSchemaGetBuiltInType(XML_SCHEMAS_ANYURI), &schemaLocation) != 0) - goto exit_invalid; - base = xmlNodeGetBase(node->doc, node); - if (base == NULL) { - uri = xmlBuildURI(schemaLocation, node->doc->URL); - } else { - uri = xmlBuildURI(schemaLocation, base); - xmlFree(base); - } - if (uri == NULL) { - xmlSchemaPErr(ctxt, - node, - XML_SCHEMAP_INTERNAL, - "Internal error: xmlSchemaParseInclude, " - "could not build an URI from the schemaLocation.\n", - NULL, NULL); - goto exit_failure; - } - schemaLocation = xmlDictLookup(ctxt->dict, uri, -1); - xmlFree(uri); - } else { - xmlSchemaPMissingAttrErr(ctxt, - XML_SCHEMAP_INCLUDE_SCHEMA_NO_URI, - NULL, node, "schemaLocation", NULL); - goto exit_invalid; - } - /* - * And now for the children... - */ - child = node->children; - while (IS_SCHEMA(child, "annotation")) { - /* - * the annotations here are simply discarded ... - * TODO: really? - */ - child = child->next; - } - if (child != NULL) { - xmlSchemaPContentErr(ctxt, - XML_SCHEMAP_UNKNOWN_INCLUDE_CHILD, - NULL, NULL, node, child, NULL, - "(annotation?)"); - } - /* - * Report self-inclusion. - */ - if (xmlStrEqual(schemaLocation, ctxt->URL)) { - xmlSchemaPCustomErr(ctxt, - XML_SCHEMAP_SRC_INCLUDE, - NULL, NULL, node, - "The schema document '%s' cannot include itself.", - schemaLocation); - return (XML_SCHEMAP_SRC_INCLUDE); - } + if (located == NULL) + return(-1); + (*located) = 0; /* * Check if this one was already processed to avoid incorrect * duplicate component errors and infinite circular inclusion. @@ -9366,6 +9524,7 @@ xmlSchemaParseInclude(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema, include = schema->includes; while (include != NULL) { if (xmlStrEqual(include->schemaLocation, schemaLocation)) { + (*located) = 1; targetNamespace = include->origTargetNamespace; if (targetNamespace == NULL) { /* @@ -9376,7 +9535,7 @@ xmlSchemaParseInclude(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema, include->targetNamespace)) { goto check_targetNamespace; } - } else { + } else { goto check_targetNamespace; } } @@ -9393,60 +9552,50 @@ xmlSchemaParseInclude(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema, goto exit_failure; } - if ((ctxt->dict != NULL) && (parserCtxt->dict != NULL)) { + if ((pctxt->dict != NULL) && (parserCtxt->dict != NULL)) { xmlDictFree(parserCtxt->dict); - parserCtxt->dict = ctxt->dict; + parserCtxt->dict = pctxt->dict; xmlDictReference(parserCtxt->dict); } doc = xmlCtxtReadFile(parserCtxt, (const char *) schemaLocation, NULL, SCHEMAS_PARSE_OPTIONS); xmlFreeParserCtxt(parserCtxt); - if (doc == NULL) { - /* - * TODO: It is not an error for the ·actual value· of the - * schemaLocation [attribute] to fail to resolve it all, in which - * case no corresponding inclusion is performed. - * So do we need a warning report here? - */ - xmlSchemaPCustomErr(ctxt, - XML_SCHEMAP_FAILED_LOAD, - NULL, NULL, node, - "Failed to load the document '%s' for inclusion", schemaLocation); - goto exit_invalid; + if (doc == NULL) { + goto exit_not_located; } - + (*located) = 1; /* * Then extract the root of the schema */ root = xmlDocGetRootElement(doc); if (root == NULL) { - xmlSchemaPCustomErr(ctxt, + xmlSchemaPCustomErr(pctxt, XML_SCHEMAP_NOROOT, NULL, NULL, node, "The included document '%s' has no document " "element", schemaLocation); - goto exit_invalid; + goto exit_error; } /* * Remove all the blank text nodes */ - xmlSchemaCleanupDoc(ctxt, root); + xmlSchemaCleanupDoc(pctxt, root); /* * Check the schemas top level element */ if (!IS_SCHEMA(root, "schema")) { - xmlSchemaPCustomErr(ctxt, + xmlSchemaPCustomErr(pctxt, XML_SCHEMAP_NOT_SCHEMA, NULL, NULL, node, "The document '%s' to be included is not a schema document", schemaLocation); - goto exit_invalid; + goto exit_error; } - targetNamespace = xmlSchemaGetProp(ctxt, root, "targetNamespace"); + targetNamespace = xmlSchemaGetProp(pctxt, root, "targetNamespace"); /* * 2.1 SII has a targetNamespace [attribute], and its ·actual * value· is identical to the ·actual value· of the targetNamespace @@ -9455,22 +9604,22 @@ xmlSchemaParseInclude(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema, check_targetNamespace: if (targetNamespace != NULL) { if (schema->targetNamespace == NULL) { - xmlSchemaPCustomErr(ctxt, + xmlSchemaPCustomErr(pctxt, XML_SCHEMAP_SRC_INCLUDE, NULL, NULL, node, "The target namespace of the included schema " "'%s' has to be absent, since the including schema " "has no target namespace", schemaLocation); - goto exit_invalid; + goto exit_error; } else if (!xmlStrEqual(targetNamespace, schema->targetNamespace)) { - xmlSchemaPCustomErrExt(ctxt, + xmlSchemaPCustomErrExt(pctxt, XML_SCHEMAP_SRC_INCLUDE, NULL, NULL, node, "The target namespace '%s' of the included schema '%s' " "differs from '%s' of the including schema", targetNamespace, schemaLocation, schema->targetNamespace); - goto exit_invalid; + goto exit_error; } } else if (schema->targetNamespace != NULL) { if ((schema->flags & XML_SCHEMAS_INCLUDING_CONVERT_NS) == 0) { @@ -9491,13 +9640,14 @@ check_targetNamespace: * the moment. * TODO: Check when the namespace in wildcards for chameleons needs * to be converted: before we built wildcard intersections or after. + * Answer: after! */ /* * Register the include. */ include = (xmlSchemaIncludePtr) xmlMalloc(sizeof(xmlSchemaInclude)); if (include == NULL) { - xmlSchemaPErrMemory(ctxt, "allocating include entry", NULL); + xmlSchemaPErrMemory(pctxt, "allocating include entry", NULL); goto exit_failure; } memset(include, 0, sizeof(xmlSchemaInclude)); @@ -9529,7 +9679,7 @@ check_targetNamespace: /* * Compile the included schema. */ - xmlSchemaParseForImpInc(ctxt, schema, schema->targetNamespace, root); + xmlSchemaParseForImpInc(pctxt, schema, schema->targetNamespace, root); exit: /* @@ -9538,15 +9688,18 @@ exit: if ((wasConvertingNs == 0) && (schema->flags & XML_SCHEMAS_INCLUDING_CONVERT_NS)) schema->flags ^= XML_SCHEMAS_INCLUDING_CONVERT_NS; - return (1); + return (0); -exit_invalid: +exit_error: if (doc != NULL) { if (include != NULL) include->doc = NULL; xmlFreeDoc(doc); } - return (ctxt->err); + return (pctxt->err); + +exit_not_located: + return(0); exit_failure: if (doc != NULL) { @@ -9557,6 +9710,259 @@ exit_failure: return (-1); } + +static int +xmlSchemaParseIncludeOrRedefineAttrs(xmlSchemaParserCtxtPtr pctxt, + xmlSchemaPtr schema, + xmlNodePtr node, + xmlChar **schemaLocation, + int isRedefine) +{ + xmlAttrPtr attr; + + if ((pctxt == NULL) || (schema == NULL) || (node == NULL) || + (schemaLocation == NULL)) + return (-1); + + *schemaLocation = NULL; + /* + * Check for illegal attributes. + * Applies for both <include> and <redefine>. + */ + attr = node->properties; + while (attr != NULL) { + if (attr->ns == NULL) { + if ((!xmlStrEqual(attr->name, BAD_CAST "id")) && + (!xmlStrEqual(attr->name, BAD_CAST "schemaLocation"))) { + xmlSchemaPIllegalAttrErr(pctxt, + XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, + NULL, NULL, attr); + } + } else if (xmlStrEqual(attr->ns->href, xmlSchemaNs)) { + xmlSchemaPIllegalAttrErr(pctxt, + XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, + NULL, NULL, attr); + } + attr = attr->next; + } + xmlSchemaPValAttrID(pctxt, NULL, NULL, node, BAD_CAST "id"); + /* + * Preliminary step, extract the URI-Reference and make an URI + * from the base. + */ + /* + * Attribute "schemaLocation" is mandatory. + */ + attr = xmlSchemaGetPropNode(node, "schemaLocation"); + if (attr != NULL) { + xmlChar *base = NULL; + xmlChar *uri = NULL; + + if (xmlSchemaPValAttrNode(pctxt, NULL, NULL, attr, + xmlSchemaGetBuiltInType(XML_SCHEMAS_ANYURI), + (const xmlChar **) schemaLocation) != 0) + goto exit_error; + base = xmlNodeGetBase(node->doc, node); + if (base == NULL) { + uri = xmlBuildURI(*schemaLocation, node->doc->URL); + } else { + uri = xmlBuildURI(*schemaLocation, base); + xmlFree(base); + } + if (uri == NULL) { + PERROR_INT("xmlSchemaParseIncludeOrRedefine", + "could not build an URI from the schemaLocation") + goto exit_failure; + } + (*schemaLocation) = (xmlChar *) xmlDictLookup(pctxt->dict, uri, -1); + xmlFree(uri); + } else { + xmlSchemaPMissingAttrErr(pctxt, + XML_SCHEMAP_S4S_ATTR_MISSING, + NULL, node, "schemaLocation", NULL); + goto exit_error; + } + /* + * Report self-inclusion and self-redefinition. + */ + if (xmlStrEqual(*schemaLocation, pctxt->URL)) { + if (isRedefine) { + xmlSchemaPCustomErr(pctxt, + XML_SCHEMAP_SRC_REDEFINE, + NULL, NULL, node, + "The schema document '%s' cannot redefine itself.", + *schemaLocation); + } else { + xmlSchemaPCustomErr(pctxt, + XML_SCHEMAP_SRC_INCLUDE, + NULL, NULL, node, + "The schema document '%s' cannot include itself.", + *schemaLocation); + } + goto exit_error; + } + + return(0); +exit_error: + return(pctxt->err); +exit_failure: + return(-1); +} + +static int +xmlSchemaParseIncludeOrRedefine(xmlSchemaParserCtxtPtr pctxt, + xmlSchemaPtr schema, + xmlNodePtr node, + int isRedefine) +{ + xmlNodePtr child = NULL; + const xmlChar *schemaLocation = NULL; + int res = 0, located = 0, hasRedefinitions = 0; + + if ((pctxt == NULL) || (schema == NULL) || (node == NULL)) + return (-1); + + /* + * Parse attributes. Note that the returned schemaLocation will + * be already converted to an absolute URI. + */ + res = xmlSchemaParseIncludeOrRedefineAttrs(pctxt, schema, + node, (xmlChar **) (&schemaLocation), isRedefine); + if (res != 0) + return(res); + + /* + * Include the schema. + */ + res = xmlSchemaParseIncludedDoc(pctxt, schema, node, + schemaLocation, &located); + if (res != 0) + return(res); + + /* + * And now for the children... + */ + child = node->children; + + if (isRedefine) { + /* + * Parse (simpleType | complexType | group | attributeGroup))* + */ + pctxt->isRedefine = 1; + while (IS_SCHEMA(child, "annotation") || + IS_SCHEMA(child, "simpleType") || + IS_SCHEMA(child, "complexType") || + IS_SCHEMA(child, "group") || + IS_SCHEMA(child, "attributeGroup")) { + if (IS_SCHEMA(child, "annotation")) { + /* + * TODO: discard or not? + */ + } else if (IS_SCHEMA(child, "simpleType")) { + xmlSchemaParseSimpleType(pctxt, schema, child, 1); + } else if (IS_SCHEMA(child, "complexType")) { + xmlSchemaParseComplexType(pctxt, schema, child, 1); + hasRedefinitions = 1; + } else if (IS_SCHEMA(child, "group")) { + TODO + hasRedefinitions = 1; + /* xmlSchemaParseModelGroupDefinition(pctxt, schema, child); */ + } else if (IS_SCHEMA(child, "attributeGroup")) { + TODO + hasRedefinitions = 1; + /* xmlSchemaParseAttributeGroup(pctxt, schema, child, 1); */ + } + child = child->next; + } + pctxt->isRedefine = 0; + } else { + if (IS_SCHEMA(child, "annotation")) { + /* + * TODO: discard or not? + */ + child = child->next; + } + } + if (child != NULL) { + res = XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED; + if (isRedefine) { + xmlSchemaPContentErr(pctxt, + res, + NULL, NULL, node, child, NULL, + "(annotation | (simpleType | complexType | group | attributeGroup))*"); + } else { + xmlSchemaPContentErr(pctxt, + res, + NULL, NULL, node, child, NULL, + "(annotation?)"); + } + } + if (!located) { + /* + * TODO: This is all *not* yet OK, since we get a !located if the + * document was not an XML document as well :-( + */ + if (!isRedefine) { + /* + * WARNING for <include>: + * We will raise an error if the schema cannot be located + * for inclusions, since the that was the feedback from the + * schema people. I.e. the following spec piece will *not* be + * satisfied: + * SPEC src-include: "It is not an error for the ·actual value· of the + * schemaLocation [attribute] to fail to resolve it all, in which + * case no corresponding inclusion is performed. + * So do we need a warning report here?" + */ + res = XML_SCHEMAP_SRC_INCLUDE; + xmlSchemaPCustomErr(pctxt, res, + NULL, NULL, node, + "Failed to load the document '%s' for inclusion", + schemaLocation); + } else if (hasRedefinitions) { + /* + * SPEC src-redefine (1) + * "If there are any element information items among the [children] + * other than <annotation> then the ·actual value· of the + * schemaLocation [attribute] must successfully resolve." + * TODO: Ask the WG if a the location has to resolve here as well! + */ + res = XML_SCHEMAP_SRC_REDEFINE; + xmlSchemaPCustomErr(pctxt, res, + NULL, NULL, node, + "Failed to load the document '%s' for redefinition", + schemaLocation); + } + } + return(res); +} + +#ifdef ENABLE_REDEFINE +static int +xmlSchemaParseRedefine(xmlSchemaParserCtxtPtr pctxt, xmlSchemaPtr schema, + xmlNodePtr node) +{ + int res; + + res = xmlSchemaParseIncludeOrRedefine(pctxt, schema, node, 1); + if (res != 0) + return(res); + return(0); +} +#endif + +static int +xmlSchemaParseInclude(xmlSchemaParserCtxtPtr pctxt, xmlSchemaPtr schema, + xmlNodePtr node) +{ + int res; + + res = xmlSchemaParseIncludeOrRedefine(pctxt, schema, node, 0); + if (res != 0) + return(res); + return(0); +} + /** * xmlSchemaParseModelGroup: * @ctxt: a schema validation context @@ -9805,22 +10211,54 @@ xmlSchemaParseRestriction(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema, */ xmlSchemaPValAttrID(ctxt, NULL, NULL, node, BAD_CAST "id"); /* - * Attribute "base" - mandatory if inside a complex type. + * Attribute */ /* - * SPEC (1.2) "otherwise (<restriction> has no <simpleType> " + * Extract the base type. The "base" attribute is mandatory if inside + * a complex type or if redefining. + * + * SPEC (1.2) "...otherwise (<restriction> has no <simpleType> " * among its [children]), the simple type definition which is * the {content type} of the type definition ·resolved· to by * the ·actual value· of the base [attribute]" */ - if ((xmlSchemaPValAttrQName(ctxt, schema, + if (xmlSchemaPValAttrQName(ctxt, schema, NULL, NULL, node, "base", - &(type->baseNs), &(type->base)) == 0) && - (type->base == NULL) && - (type->type == XML_SCHEMA_TYPE_COMPLEX)) { - xmlSchemaPMissingAttrErr(ctxt, - XML_SCHEMAP_S4S_ATTR_MISSING, - type, node, "base", NULL); + &(type->baseNs), &(type->base)) == 0) + { + if ((type->base == NULL) && (type->type == XML_SCHEMA_TYPE_COMPLEX)) { + xmlSchemaPMissingAttrErr(ctxt, + XML_SCHEMAP_S4S_ATTR_MISSING, + type, node, "base", NULL); + } else if ((ctxt->isRedefine) && + (type->flags & XML_SCHEMAS_TYPE_GLOBAL)) + { + if (type->base == NULL) { + xmlSchemaPMissingAttrErr(ctxt, + XML_SCHEMAP_S4S_ATTR_MISSING, + type, node, "base", NULL); + } else if ((! xmlStrEqual(type->base, type->name)) || + (! xmlStrEqual(type->baseNs, type->targetNamespace))) + { + xmlChar *str1 = NULL, *str2 = NULL; + /* + * REDEFINE: SPEC src-redefine (5) + * "Within the [children], each <simpleType> must have a + * <restriction> among its [children] ... the ·actual value· of + * whose base [attribute] must be the same as the ·actual value· + * of its own name attribute plus target namespace;" + */ + xmlSchemaPCustomErrExt(ctxt, XML_SCHEMAP_SRC_REDEFINE, + NULL, NULL, node, "This is a redefinition, but the QName " + "value '%s' of the 'base' attribute does not match the " + "type's designation '%s'", + xmlSchemaFormatQName(&str1, type->baseNs, type->base), + xmlSchemaFormatQName(&str1, type->targetNamespace, + type->name), NULL); + FREE_AND_NULL(str1); + FREE_AND_NULL(str2); + } + } } /* * And now for the children... @@ -10174,14 +10612,17 @@ xmlSchemaParseExtension(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema, */ static int xmlSchemaParseSimpleContent(xmlSchemaParserCtxtPtr ctxt, - xmlSchemaPtr schema, xmlNodePtr node) + xmlSchemaPtr schema, xmlNodePtr node, + int *hasRestrictionOrExtension) { xmlSchemaTypePtr type; xmlNodePtr child = NULL; xmlAttrPtr attr; - if ((ctxt == NULL) || (schema == NULL) || (node == NULL)) + if ((ctxt == NULL) || (schema == NULL) || (node == NULL) || + (hasRestrictionOrExtension == NULL)) return (-1); + *hasRestrictionOrExtension = 0; /* Not a component, don't create it. */ type = ctxt->ctxtType; type->contentType = XML_SCHEMA_CONTENT_SIMPLE; @@ -10218,13 +10659,27 @@ xmlSchemaParseSimpleContent(xmlSchemaParserCtxtPtr ctxt, xmlSchemaParseAnnotation(ctxt, schema, child)); child = child->next; } + if (child == NULL) { + xmlSchemaPContentErr(ctxt, + XML_SCHEMAP_S4S_ELEM_MISSING, + NULL, NULL, node, NULL, NULL, + "(annotation?, (restriction | extension))"); + } + if (child == NULL) { + xmlSchemaPContentErr(ctxt, + XML_SCHEMAP_S4S_ELEM_MISSING, + NULL, NULL, node, NULL, NULL, + "(annotation?, (restriction | extension))"); + } if (IS_SCHEMA(child, "restriction")) { xmlSchemaParseRestriction(ctxt, schema, child, XML_SCHEMA_TYPE_SIMPLE_CONTENT); + (*hasRestrictionOrExtension) = 1; child = child->next; } else if (IS_SCHEMA(child, "extension")) { xmlSchemaParseExtension(ctxt, schema, child, XML_SCHEMA_TYPE_SIMPLE_CONTENT); + (*hasRestrictionOrExtension) = 1; child = child->next; } if (child != NULL) { @@ -10249,14 +10704,17 @@ xmlSchemaParseSimpleContent(xmlSchemaParserCtxtPtr ctxt, */ static int xmlSchemaParseComplexContent(xmlSchemaParserCtxtPtr ctxt, - xmlSchemaPtr schema, xmlNodePtr node) + xmlSchemaPtr schema, xmlNodePtr node, + int *hasRestrictionOrExtension) { xmlSchemaTypePtr type; xmlNodePtr child = NULL; xmlAttrPtr attr; - if ((ctxt == NULL) || (schema == NULL) || (node == NULL)) + if ((ctxt == NULL) || (schema == NULL) || (node == NULL) || + (hasRestrictionOrExtension == NULL)) return (-1); + *hasRestrictionOrExtension = 0; /* Not a component, don't create it. */ type = ctxt->ctxtType; /* @@ -10298,13 +10756,27 @@ xmlSchemaParseComplexContent(xmlSchemaParserCtxtPtr ctxt, xmlSchemaParseAnnotation(ctxt, schema, child)); child = child->next; } + if (child == NULL) { + xmlSchemaPContentErr(ctxt, + XML_SCHEMAP_S4S_ELEM_MISSING, + NULL, NULL, node, NULL, + NULL, "(annotation?, (restriction | extension))"); + } + if (child == NULL) { + xmlSchemaPContentErr(ctxt, + XML_SCHEMAP_S4S_ELEM_MISSING, + NULL, NULL, node, NULL, + NULL, "(annotation?, (restriction | extension))"); + } if (IS_SCHEMA(child, "restriction")) { xmlSchemaParseRestriction(ctxt, schema, child, XML_SCHEMA_TYPE_COMPLEX_CONTENT); + (*hasRestrictionOrExtension) = 1; child = child->next; } else if (IS_SCHEMA(child, "extension")) { xmlSchemaParseExtension(ctxt, schema, child, XML_SCHEMA_TYPE_COMPLEX_CONTENT); + (*hasRestrictionOrExtension) = 1; child = child->next; } if (child != NULL) { @@ -10336,9 +10808,8 @@ xmlSchemaParseComplexType(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema, const xmlChar *oldcontainer, *name = NULL; xmlAttrPtr attr; const xmlChar *attrValue; - xmlChar *des = NULL; /* The reported designation. */ char buf[40]; - int final = 0, block = 0; + int final = 0, block = 0, hasRestrictionOrExtension = 0; if ((ctxt == NULL) || (schema == NULL) || (node == NULL)) @@ -10353,10 +10824,10 @@ xmlSchemaParseComplexType(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema, XML_SCHEMAP_S4S_ATTR_MISSING, NULL, node, "name", NULL); return (NULL); } else if (xmlSchemaPValAttrNode(ctxt, - (xmlChar **) &xmlSchemaElemDesCT, NULL, attr, + NULL, NULL, attr, xmlSchemaGetBuiltInType(XML_SCHEMAS_NCNAME), &name) != 0) { return (NULL); - } + } } if (topLevel == 0) { @@ -10364,7 +10835,8 @@ xmlSchemaParseComplexType(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema, * Parse as local complex type definition. */ snprintf(buf, 39, "#CT%d", ctxt->counter++ + 1); - type = xmlSchemaAddType(ctxt, schema, (const xmlChar *)buf, NULL, node); + type = xmlSchemaAddType(ctxt, schema, (const xmlChar *)buf, NULL, + node, 0); if (type == NULL) return (NULL); name = type->name; @@ -10377,7 +10849,8 @@ xmlSchemaParseComplexType(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema, /* * Parse as global complex type definition. */ - type = xmlSchemaAddType(ctxt, schema, name, schema->targetNamespace, node); + type = xmlSchemaAddType(ctxt, schema, name, schema->targetNamespace, + node, 1); if (type == NULL) return (NULL); type->node = node; @@ -10401,7 +10874,7 @@ xmlSchemaParseComplexType(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema, /* * Attribute "mixed". */ - if (xmlSchemaPGetBoolNodeValue(ctxt, &des, type, + if (xmlSchemaPGetBoolNodeValue(ctxt, NULL, type, (xmlNodePtr) attr)) type->flags |= XML_SCHEMAS_TYPE_MIXED; } else if (topLevel) { @@ -10414,7 +10887,7 @@ xmlSchemaParseComplexType(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema, /* * Attribute "abstract". */ - if (xmlSchemaPGetBoolNodeValue(ctxt, &des, type, + if (xmlSchemaPGetBoolNodeValue(ctxt, NULL, type, (xmlNodePtr) attr)) type->flags |= XML_SCHEMAS_TYPE_ABSTRACT; } else if (xmlStrEqual(attr->name, BAD_CAST "final")) { @@ -10458,17 +10931,17 @@ xmlSchemaParseComplexType(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema, } else { xmlSchemaPIllegalAttrErr(ctxt, XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, - &des, type, attr); + NULL, type, attr); } } else { xmlSchemaPIllegalAttrErr(ctxt, XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, - &des, type, attr); + NULL, type, attr); } } else if (xmlStrEqual(attr->ns->href, xmlSchemaNs)) { xmlSchemaPIllegalAttrErr(ctxt, XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, - &des, type, attr); + NULL, type, attr); } attr = attr->next; } @@ -10503,20 +10976,28 @@ xmlSchemaParseComplexType(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema, ctxt->ctxtType = type; if (IS_SCHEMA(child, "simpleContent")) { /* + * <complexType><simpleContent>... * 3.4.3 : 2.2 * Specifying mixed='true' when the <simpleContent> * alternative is chosen has no effect */ if (type->flags & XML_SCHEMAS_TYPE_MIXED) type->flags ^= XML_SCHEMAS_TYPE_MIXED; - xmlSchemaParseSimpleContent(ctxt, schema, child); + xmlSchemaParseSimpleContent(ctxt, schema, child, + &hasRestrictionOrExtension); child = child->next; } else if (IS_SCHEMA(child, "complexContent")) { + /* + * <complexType><complexContent>... + */ type->contentType = XML_SCHEMA_CONTENT_EMPTY; - xmlSchemaParseComplexContent(ctxt, schema, child); + xmlSchemaParseComplexContent(ctxt, schema, child, + &hasRestrictionOrExtension); child = child->next; } else { /* + * E.g <complexType><sequence>... or <complexType><attribute>... etc. + * * SPEC * "...the third alternative (neither <simpleContent> nor * <complexContent>) is chosen. This case is understood as shorthand @@ -10563,12 +11044,20 @@ xmlSchemaParseComplexType(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema, if (child != NULL) { xmlSchemaPContentErr(ctxt, XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED, - &des, type, node, child, + NULL, type, node, child, NULL, "(annotation?, (simpleContent | complexContent | " "((group | all | choice | sequence)?, ((attribute | " "attributeGroup)*, anyAttribute?))))"); } - FREE_AND_NULL(des); + /* + * REDEFINE: SPEC src-redefine (5) + */ + if (topLevel && ctxt->isRedefine && (! hasRestrictionOrExtension)) { + xmlSchemaPCustomErr(ctxt, XML_SCHEMAP_SRC_REDEFINE, + NULL, NULL, node, "This is a redefinition, thus the " + "<complexType> must have a <restriction> or <extension> " + "grand-child", NULL); + } ctxt->container = oldcontainer; ctxt->ctxtType = ctxtType; return (type); @@ -10605,6 +11094,9 @@ xmlSchemaParseSchema(xmlSchemaParserCtxtPtr ctxt, xmlNodePtr node) ctxt->isS4S = 0; if (IS_SCHEMA(node, "schema")) { xmlSchemaImportPtr import; +#ifdef ENABLE_REDEFINE + xmlSchemaSchemaRefPtr ref; +#endif schema = xmlSchemaNewSchema(ctxt); if (schema == NULL) @@ -10632,14 +11124,23 @@ xmlSchemaParseSchema(xmlSchemaParserCtxtPtr ctxt, xmlNodePtr node) * if all schemata are constructed dynamically fired by the * instance or if the schema to be used was specified via * the API. + * TODO */ +#ifdef ENABLE_REDEFINE + ref = xmlSchemaSchemaRefCreate(); + if (ref == NULL) { + xmlSchemaFree(schema); + schema = NULL; + return NULL; + } + ref->schema = schema; +#endif + import = xmlSchemaAddImport(ctxt, &(schema->schemasImports), schema->targetNamespace); if (import == NULL) { - xmlSchemaPCustomErr(ctxt, XML_SCHEMAP_FAILED_BUILD_IMPORT, - NULL, NULL, (xmlNodePtr) ctxt->doc, - "Internal error: xmlSchemaParseSchema, " - "failed to add an import entry", NULL); + xmlSchemaPInternalErr(ctxt, "xmlSchemaParseSchema", + "failed to add an import entry", NULL, NULL); xmlSchemaFree(schema); schema = NULL; return (NULL); @@ -10764,14 +11265,9 @@ xmlSchemaNewParserCtxt(const char *URL) if (URL == NULL) return (NULL); - ret = (xmlSchemaParserCtxtPtr) xmlMalloc(sizeof(xmlSchemaParserCtxt)); - if (ret == NULL) { - xmlSchemaPErrMemory(NULL, "allocating schema parser context", - NULL); - return (NULL); - } - memset(ret, 0, sizeof(xmlSchemaParserCtxt)); - ret->type = XML_SCHEMA_CTXT_PARSER; + ret = xmlSchemaParserCtxtCreate(); + if (ret == NULL) + return(NULL); ret->dict = xmlDictCreate(); ret->URL = xmlDictLookup(ret->dict, (const xmlChar *) URL, -1); ret->includes = 0; @@ -10795,17 +11291,12 @@ xmlSchemaNewMemParserCtxt(const char *buffer, int size) if ((buffer == NULL) || (size <= 0)) return (NULL); - - ret = (xmlSchemaParserCtxtPtr) xmlMalloc(sizeof(xmlSchemaParserCtxt)); - if (ret == NULL) { - xmlSchemaPErrMemory(NULL, "allocating schema parser context", - NULL); - return (NULL); - } - memset(ret, 0, sizeof(xmlSchemaParserCtxt)); + ret = xmlSchemaParserCtxtCreate(); + if (ret == NULL) + return(NULL); ret->buffer = buffer; ret->size = size; - ret->dict = xmlDictCreate(); + ret->dict = xmlDictCreate(); return (ret); } @@ -10825,14 +11316,9 @@ xmlSchemaNewDocParserCtxt(xmlDocPtr doc) if (doc == NULL) return (NULL); - - ret = (xmlSchemaParserCtxtPtr) xmlMalloc(sizeof(xmlSchemaParserCtxt)); - if (ret == NULL) { - xmlSchemaPErrMemory(NULL, "allocating schema parser context", - NULL); - return (NULL); - } - memset(ret, 0, sizeof(xmlSchemaParserCtxt)); + ret = xmlSchemaParserCtxtCreate(); + if (ret == NULL) + return(NULL); ret->doc = doc; ret->dict = xmlDictCreate(); /* The application has responsibility for the document */ @@ -10866,6 +11352,7 @@ xmlSchemaFreeParserCtxt(xmlSchemaParserCtxtPtr ctxt) if (ctxt->substGroups != NULL) xmlHashFree(ctxt->substGroups, (xmlHashDeallocator) xmlSchemaFreeSubstGroup); + xmlSchemaContainerFree(ctxt->compContainer); xmlDictFree(ctxt->dict); xmlFree(ctxt); } @@ -10878,11 +11365,10 @@ xmlSchemaFreeParserCtxt(xmlSchemaParserCtxtPtr ctxt) static void xmlSchemaBuildContentModelForSubstGroup(xmlSchemaParserCtxtPtr pctxt, - xmlSchemaParticlePtr particle) + xmlSchemaParticlePtr particle, int counter, xmlAutomataStatePtr end) { - xmlAutomataStatePtr start; + xmlAutomataStatePtr start, tmp; xmlSchemaElementPtr elemDecl, member; - xmlAutomataStatePtr end; xmlSchemaSubstGroupPtr substGroup; int i; @@ -10891,7 +11377,8 @@ xmlSchemaBuildContentModelForSubstGroup(xmlSchemaParserCtxtPtr pctxt, * Wrap the substitution group with a CHOICE. */ start = pctxt->state; - end = xmlAutomataNewState(pctxt->am); + if (end == NULL) + end = xmlAutomataNewState(pctxt->am); substGroup = xmlSchemaGetElementSubstitutionGroup(pctxt, elemDecl); if (substGroup == NULL) { xmlSchemaPErr(pctxt, GET_NODE(particle), @@ -10901,7 +11388,22 @@ xmlSchemaBuildContentModelForSubstGroup(xmlSchemaParserCtxtPtr pctxt, "available.\n", elemDecl->name, NULL); return; } - if (particle->maxOccurs == 1) { + if (counter >= 0) { + /* + * NOTE that we put the declaration in, even if it's abstract, + */ + tmp = xmlAutomataNewCountedTrans(pctxt->am, start, NULL, counter); + xmlAutomataNewTransition2(pctxt->am, tmp, end, + elemDecl->name, elemDecl->targetNamespace, elemDecl); + /* + * Add subst. group members. + */ + for (i = 0; i < substGroup->members->nbItems; i++) { + member = (xmlSchemaElementPtr) substGroup->members->items[i]; + xmlAutomataNewTransition2(pctxt->am, tmp, end, + member->name, member->targetNamespace, member); + } + } else if (particle->maxOccurs == 1) { /* * NOTE that we put the declaration in, even if it's abstract, */ @@ -10914,14 +11416,12 @@ xmlSchemaBuildContentModelForSubstGroup(xmlSchemaParserCtxtPtr pctxt, */ for (i = 0; i < substGroup->members->nbItems; i++) { member = (xmlSchemaElementPtr) substGroup->members->items[i]; - xmlAutomataNewEpsilon(pctxt->am, - xmlAutomataNewTransition2(pctxt->am, - start, NULL, - member->name, member->targetNamespace, member), - end); + tmp = xmlAutomataNewOnceTrans2(pctxt->am, start, NULL, + member->name, member->targetNamespace, + 1, 1, member); + xmlAutomataNewEpsilon(pctxt->am, tmp, end); } } else { - int counter; xmlAutomataStatePtr hop; int maxOccurs = particle->maxOccurs == UNBOUNDED ? UNBOUNDED : particle->maxOccurs - 1; @@ -10938,8 +11438,8 @@ xmlSchemaBuildContentModelForSubstGroup(xmlSchemaParserCtxtPtr pctxt, elemDecl->name, elemDecl->targetNamespace, elemDecl), hop); /* - * Add subst. group members. - */ + * Add subst. group members. + */ for (i = 0; i < substGroup->members->nbItems; i++) { member = (xmlSchemaElementPtr) substGroup->members->items[i]; xmlAutomataNewEpsilon(pctxt->am, @@ -10965,7 +11465,7 @@ xmlSchemaBuildContentModelForElement(xmlSchemaParserCtxtPtr ctxt, /* * Substitution groups. */ - xmlSchemaBuildContentModelForSubstGroup(ctxt, particle); + xmlSchemaBuildContentModelForSubstGroup(ctxt, particle, -1, NULL); } else { xmlSchemaElementPtr elemDecl; xmlAutomataStatePtr start; @@ -10977,8 +11477,9 @@ xmlSchemaBuildContentModelForElement(xmlSchemaParserCtxtPtr ctxt, if (particle->maxOccurs == 1) { start = ctxt->state; ctxt->state = xmlAutomataNewTransition2(ctxt->am, start, NULL, - elemDecl->name, elemDecl->targetNamespace, elemDecl); - } else if ((particle->maxOccurs >= UNBOUNDED) && (particle->minOccurs < 2)) { + elemDecl->name, elemDecl->targetNamespace, elemDecl); + } else if ((particle->maxOccurs >= UNBOUNDED) && + (particle->minOccurs < 2)) { /* Special case. */ start = ctxt->state; ctxt->state = xmlAutomataNewTransition2(ctxt->am, start, NULL, @@ -11013,22 +11514,16 @@ xmlSchemaBuildContentModelForElement(xmlSchemaParserCtxtPtr ctxt, * Generate the automata sequence needed for that type */ static void -xmlSchemaBuildAContentModel(xmlSchemaParserCtxtPtr ctxt, +xmlSchemaBuildAContentModel(xmlSchemaParserCtxtPtr pctxt, xmlSchemaParticlePtr particle, const xmlChar * name) { if (particle == NULL) { - xmlSchemaPErr(ctxt, NULL, - XML_SCHEMAP_INTERNAL, - "Internal error: xmlSchemaBuildAContentModel, " - "particle is NULL.\n", NULL, NULL); + PERROR_INT("xmlSchemaBuildAContentModel", "particle is NULL"); return; } if (particle->children == NULL) { - xmlSchemaPErr(ctxt, GET_NODE(particle), - XML_SCHEMAP_INTERNAL, - "Internal error: xmlSchemaBuildAContentModel, " - "no term on particle.\n", NULL, NULL); + PERROR_INT("xmlSchemaBuildAContentModel", "no term on particle"); return; } @@ -11040,8 +11535,8 @@ xmlSchemaBuildAContentModel(xmlSchemaParserCtxtPtr ctxt, wild = (xmlSchemaWildcardPtr) particle->children; - start = ctxt->state; - end = xmlAutomataNewState(ctxt->am); + start = pctxt->state; + end = xmlAutomataNewState(pctxt->am); if (particle->maxOccurs == 1) { if (wild->any == 1) { @@ -11050,43 +11545,32 @@ xmlSchemaBuildAContentModel(xmlSchemaParserCtxtPtr ctxt, * * 1. the {"*", "*"} for elements in a namespace. */ - ctxt->state = - xmlAutomataNewTransition2(ctxt->am, + pctxt->state = + xmlAutomataNewTransition2(pctxt->am, start, NULL, BAD_CAST "*", BAD_CAST "*", wild); - xmlAutomataNewEpsilon(ctxt->am, ctxt->state, end); + xmlAutomataNewEpsilon(pctxt->am, pctxt->state, end); /* * 2. the {"*"} for elements in no namespace. */ - ctxt->state = - xmlAutomataNewTransition2(ctxt->am, + pctxt->state = + xmlAutomataNewTransition2(pctxt->am, start, NULL, BAD_CAST "*", NULL, wild); - xmlAutomataNewEpsilon(ctxt->am, ctxt->state, end); + xmlAutomataNewEpsilon(pctxt->am, pctxt->state, end); } else if (wild->nsSet != NULL) { ns = wild->nsSet; do { - ctxt->state = start; - ctxt->state = xmlAutomataNewTransition2(ctxt->am, - ctxt->state, NULL, BAD_CAST "*", ns->value, wild); - xmlAutomataNewEpsilon(ctxt->am, ctxt->state, end); + pctxt->state = start; + pctxt->state = xmlAutomataNewTransition2(pctxt->am, + pctxt->state, NULL, BAD_CAST "*", ns->value, wild); + xmlAutomataNewEpsilon(pctxt->am, pctxt->state, end); ns = ns->next; } while (ns != NULL); } else if (wild->negNsSet != NULL) { - - /* - * Lead nodes with the negated namespace to the sink-state - * {"*", "##other"}. - */ - ctxt->state = xmlAutomataNewTransition2(ctxt->am, start, NULL, - BAD_CAST "*", wild->negNsSet->value, wild); - /* - * Open a door for nodes with any other namespace - * {"*", "*"} - */ - ctxt->state = xmlAutomataNewTransition2(ctxt->am, - start, NULL, BAD_CAST "*", BAD_CAST "*", wild); - xmlAutomataNewEpsilon(ctxt->am, ctxt->state, end); + pctxt->state = xmlAutomataNewNegTrans(pctxt->am, + start, end, BAD_CAST "*", wild->negNsSet->value, + wild); } } else { int counter; @@ -11096,48 +11580,43 @@ xmlSchemaBuildAContentModel(xmlSchemaParserCtxtPtr ctxt, int minOccurs = particle->minOccurs < 1 ? 0 : particle->minOccurs - 1; - counter = xmlAutomataNewCounter(ctxt->am, minOccurs, maxOccurs); - hop = xmlAutomataNewState(ctxt->am); + counter = xmlAutomataNewCounter(pctxt->am, minOccurs, maxOccurs); + hop = xmlAutomataNewState(pctxt->am); if (wild->any == 1) { - ctxt->state = - xmlAutomataNewTransition2(ctxt->am, + pctxt->state = + xmlAutomataNewTransition2(pctxt->am, start, NULL, BAD_CAST "*", BAD_CAST "*", wild); - xmlAutomataNewEpsilon(ctxt->am, ctxt->state, hop); - ctxt->state = - xmlAutomataNewTransition2(ctxt->am, + xmlAutomataNewEpsilon(pctxt->am, pctxt->state, hop); + pctxt->state = + xmlAutomataNewTransition2(pctxt->am, start, NULL, BAD_CAST "*", NULL, wild); - xmlAutomataNewEpsilon(ctxt->am, ctxt->state, hop); + xmlAutomataNewEpsilon(pctxt->am, pctxt->state, hop); } else if (wild->nsSet != NULL) { ns = wild->nsSet; do { - ctxt->state = - xmlAutomataNewTransition2(ctxt->am, + pctxt->state = + xmlAutomataNewTransition2(pctxt->am, start, NULL, BAD_CAST "*", ns->value, wild); - xmlAutomataNewEpsilon(ctxt->am, ctxt->state, hop); + xmlAutomataNewEpsilon(pctxt->am, pctxt->state, hop); ns = ns->next; } while (ns != NULL); } else if (wild->negNsSet != NULL) { - xmlAutomataStatePtr deadEnd; - - deadEnd = xmlAutomataNewState(ctxt->am); - ctxt->state = xmlAutomataNewTransition2(ctxt->am, - start, deadEnd, BAD_CAST "*", wild->negNsSet->value, wild); - ctxt->state = xmlAutomataNewTransition2(ctxt->am, - start, NULL, BAD_CAST "*", BAD_CAST "*", wild); - xmlAutomataNewEpsilon(ctxt->am, ctxt->state, hop); + pctxt->state = xmlAutomataNewNegTrans(pctxt->am, + start, hop, BAD_CAST "*", wild->negNsSet->value, + wild); } - xmlAutomataNewCountedTrans(ctxt->am, hop, start, counter); - xmlAutomataNewCounterTrans(ctxt->am, hop, end, counter); + xmlAutomataNewCountedTrans(pctxt->am, hop, start, counter); + xmlAutomataNewCounterTrans(pctxt->am, hop, end, counter); } if (particle->minOccurs == 0) { - xmlAutomataNewEpsilon(ctxt->am, start, end); + xmlAutomataNewEpsilon(pctxt->am, start, end); } - ctxt->state = end; + pctxt->state = end; break; } case XML_SCHEMA_TYPE_ELEMENT: - xmlSchemaBuildContentModelForElement(ctxt, particle); + xmlSchemaBuildContentModelForElement(pctxt, particle); break; case XML_SCHEMA_TYPE_SEQUENCE:{ xmlSchemaTreeItemPtr sub; @@ -11149,50 +11628,61 @@ xmlSchemaBuildAContentModel(xmlSchemaParserCtxtPtr ctxt, if ((particle->minOccurs == 1) && (particle->maxOccurs == 1)) { sub = particle->children->children; while (sub != NULL) { - xmlSchemaBuildAContentModel(ctxt, + xmlSchemaBuildAContentModel(pctxt, (xmlSchemaParticlePtr) sub, name); sub = sub->next; } } else { - xmlAutomataStatePtr oldstate = ctxt->state; + xmlAutomataStatePtr oldstate = pctxt->state; if (particle->maxOccurs >= UNBOUNDED) { if (particle->minOccurs > 1) { xmlAutomataStatePtr tmp; int counter; - ctxt->state = xmlAutomataNewEpsilon(ctxt->am, + pctxt->state = xmlAutomataNewEpsilon(pctxt->am, oldstate, NULL); - oldstate = ctxt->state; + oldstate = pctxt->state; - counter = xmlAutomataNewCounter(ctxt->am, + counter = xmlAutomataNewCounter(pctxt->am, particle->minOccurs - 1, UNBOUNDED); sub = particle->children->children; while (sub != NULL) { - xmlSchemaBuildAContentModel(ctxt, + xmlSchemaBuildAContentModel(pctxt, (xmlSchemaParticlePtr) sub, name); sub = sub->next; } - tmp = ctxt->state; - xmlAutomataNewCountedTrans(ctxt->am, tmp, + tmp = pctxt->state; + xmlAutomataNewCountedTrans(pctxt->am, tmp, oldstate, counter); - ctxt->state = - xmlAutomataNewCounterTrans(ctxt->am, tmp, + pctxt->state = + xmlAutomataNewCounterTrans(pctxt->am, tmp, NULL, counter); } else { + pctxt->state = xmlAutomataNewEpsilon(pctxt->am, + oldstate, NULL); + oldstate = pctxt->state; + sub = particle->children->children; while (sub != NULL) { - xmlSchemaBuildAContentModel(ctxt, + xmlSchemaBuildAContentModel(pctxt, (xmlSchemaParticlePtr) sub, name); sub = sub->next; } - xmlAutomataNewEpsilon(ctxt->am, ctxt->state, + xmlAutomataNewEpsilon(pctxt->am, pctxt->state, oldstate); + /* + * epsilon needed to block previous trans from + * being allowed to enter back from another + * construct + */ + pctxt->state = xmlAutomataNewEpsilon(pctxt->am, + pctxt->state, NULL); if (particle->minOccurs == 0) { - xmlAutomataNewEpsilon(ctxt->am, - oldstate, ctxt->state); + xmlAutomataNewEpsilon(pctxt->am, + oldstate, pctxt->state); } } } else if ((particle->maxOccurs > 1) @@ -11200,40 +11690,40 @@ xmlSchemaBuildAContentModel(xmlSchemaParserCtxtPtr ctxt, xmlAutomataStatePtr tmp; int counter; - ctxt->state = xmlAutomataNewEpsilon(ctxt->am, + pctxt->state = xmlAutomataNewEpsilon(pctxt->am, oldstate, NULL); - oldstate = ctxt->state; + oldstate = pctxt->state; - counter = xmlAutomataNewCounter(ctxt->am, + counter = xmlAutomataNewCounter(pctxt->am, particle->minOccurs - 1, particle->maxOccurs - 1); sub = particle->children->children; while (sub != NULL) { - xmlSchemaBuildAContentModel(ctxt, + xmlSchemaBuildAContentModel(pctxt, (xmlSchemaParticlePtr) sub, name); sub = sub->next; } - tmp = ctxt->state; - xmlAutomataNewCountedTrans(ctxt->am, + tmp = pctxt->state; + xmlAutomataNewCountedTrans(pctxt->am, tmp, oldstate, counter); - ctxt->state = - xmlAutomataNewCounterTrans(ctxt->am, tmp, NULL, + pctxt->state = + xmlAutomataNewCounterTrans(pctxt->am, tmp, NULL, counter); if (particle->minOccurs == 0) { - xmlAutomataNewEpsilon(ctxt->am, - oldstate, ctxt->state); + xmlAutomataNewEpsilon(pctxt->am, + oldstate, pctxt->state); } } else { sub = particle->children->children; while (sub != NULL) { - xmlSchemaBuildAContentModel(ctxt, + xmlSchemaBuildAContentModel(pctxt, (xmlSchemaParticlePtr) sub, name); sub = sub->next; } if (particle->minOccurs == 0) { - xmlAutomataNewEpsilon(ctxt->am, oldstate, - ctxt->state); + xmlAutomataNewEpsilon(pctxt->am, oldstate, + pctxt->state); } } } @@ -11243,8 +11733,8 @@ xmlSchemaBuildAContentModel(xmlSchemaParserCtxtPtr ctxt, xmlSchemaTreeItemPtr sub; xmlAutomataStatePtr start, end; - start = ctxt->state; - end = xmlAutomataNewState(ctxt->am); + start = pctxt->state; + end = xmlAutomataNewState(pctxt->am); /* * iterate over the subtypes and remerge the end with an @@ -11253,15 +11743,15 @@ xmlSchemaBuildAContentModel(xmlSchemaParserCtxtPtr ctxt, if (particle->maxOccurs == 1) { sub = particle->children->children; while (sub != NULL) { - ctxt->state = start; - xmlSchemaBuildAContentModel(ctxt, + pctxt->state = start; + xmlSchemaBuildAContentModel(pctxt, (xmlSchemaParticlePtr) sub, name); - xmlAutomataNewEpsilon(ctxt->am, ctxt->state, end); + xmlAutomataNewEpsilon(pctxt->am, pctxt->state, end); sub = sub->next; } } else { int counter; - xmlAutomataStatePtr hop; + xmlAutomataStatePtr hop, base; int maxOccurs = particle->maxOccurs == UNBOUNDED ? UNBOUNDED : particle->maxOccurs - 1; int minOccurs = @@ -11272,27 +11762,26 @@ xmlSchemaBuildAContentModel(xmlSchemaParserCtxtPtr ctxt, * which went through the choice. */ counter = - xmlAutomataNewCounter(ctxt->am, minOccurs, - maxOccurs); - hop = xmlAutomataNewState(ctxt->am); + xmlAutomataNewCounter(pctxt->am, minOccurs, maxOccurs); + hop = xmlAutomataNewState(pctxt->am); + base = xmlAutomataNewState(pctxt->am); sub = particle->children->children; while (sub != NULL) { - ctxt->state = start; - xmlSchemaBuildAContentModel(ctxt, + pctxt->state = base; + xmlSchemaBuildAContentModel(pctxt, (xmlSchemaParticlePtr) sub, name); - xmlAutomataNewEpsilon(ctxt->am, ctxt->state, hop); + xmlAutomataNewEpsilon(pctxt->am, pctxt->state, hop); sub = sub->next; } - xmlAutomataNewCountedTrans(ctxt->am, hop, start, - counter); - xmlAutomataNewCounterTrans(ctxt->am, hop, end, - counter); + xmlAutomataNewEpsilon(pctxt->am, start, base); + xmlAutomataNewCountedTrans(pctxt->am, hop, base, counter); + xmlAutomataNewCounterTrans(pctxt->am, hop, end, counter); } if (particle->minOccurs == 0) { - xmlAutomataNewEpsilon(ctxt->am, start, end); + xmlAutomataNewEpsilon(pctxt->am, start, end); } - ctxt->state = end; + pctxt->state = end; break; } case XML_SCHEMA_TYPE_ALL:{ @@ -11304,16 +11793,14 @@ xmlSchemaBuildAContentModel(xmlSchemaParserCtxtPtr ctxt, sub = (xmlSchemaParticlePtr) particle->children->children; if (sub == NULL) break; - start = ctxt->state; + start = pctxt->state; while (sub != NULL) { - ctxt->state = start; + pctxt->state = start; elemDecl = (xmlSchemaElementPtr) sub->children; if (elemDecl == NULL) { - xmlSchemaPErr(ctxt, NULL, - XML_SCHEMAP_INTERNAL, - "Internal error: xmlSchemaBuildAContentModel, " - "<element> particle a NULL term.\n", NULL, NULL); + PERROR_INT("xmlSchemaBuildAContentModel", + "<element> particle has no term"); return; }; /* @@ -11322,37 +11809,59 @@ xmlSchemaBuildAContentModel(xmlSchemaParserCtxtPtr ctxt, * already ensured during the parse of the content of * <all>. */ - if ((sub->minOccurs == 1) && - (sub->maxOccurs == 1)) { - xmlAutomataNewOnceTrans2(ctxt->am, ctxt->state, - ctxt->state, - elemDecl->name, - elemDecl->targetNamespace, - 1, 1, elemDecl); - } else if ((sub->minOccurs == 0) && - (sub->maxOccurs == 1)) { - - xmlAutomataNewCountTrans2(ctxt->am, ctxt->state, - ctxt->state, - elemDecl->name, - elemDecl->targetNamespace, - 0, - 1, - elemDecl); - } + if (elemDecl->flags & XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD) { + int counter; + + /* + * This is an abstract group, we need to share + * the same counter for all the element transitions + * derived from the group + */ + counter = xmlAutomataNewCounter(pctxt->am, + sub->minOccurs, sub->maxOccurs); + xmlSchemaBuildContentModelForSubstGroup(pctxt, + sub, counter, pctxt->state); + } else { + if ((sub->minOccurs == 1) && + (sub->maxOccurs == 1)) { + xmlAutomataNewOnceTrans2(pctxt->am, pctxt->state, + pctxt->state, + elemDecl->name, + elemDecl->targetNamespace, + 1, 1, elemDecl); + } else if ((sub->minOccurs == 0) && + (sub->maxOccurs == 1)) { + + xmlAutomataNewCountTrans2(pctxt->am, pctxt->state, + pctxt->state, + elemDecl->name, + elemDecl->targetNamespace, + 0, + 1, + elemDecl); + } + } sub = (xmlSchemaParticlePtr) sub->next; } lax = particle->minOccurs == 0; - ctxt->state = - xmlAutomataNewAllTrans(ctxt->am, ctxt->state, NULL, lax); + pctxt->state = + xmlAutomataNewAllTrans(pctxt->am, pctxt->state, NULL, lax); break; } + case XML_SCHEMA_TYPE_GROUP: + /* + * If we hit a model group definition, then this means that + * it was empty, thus was not substituted for the containing + * model group. Just do nothing in this case. + */ + break; default: - xmlGenericError(xmlGenericErrorContext, - "Internal error: xmlSchemaBuildAContentModel, found " - "unexpected term of type %d in content model of complex " - "type '%s'.\n", - particle->children->type, name); + xmlSchemaPInternalErr(pctxt, "xmlSchemaBuildAContentModel", + "found unexpected term of type '%s' in content model of complex " + "type '%s'", + xmlSchemaCompTypeToString(particle->children->type), name); + xmlGenericError(xmlGenericErrorContext, + "Unexpected type: %d\n", particle->children->type); return; } } @@ -12748,7 +13257,7 @@ xmlSchemaBuildAttributeValidation(xmlSchemaParserCtxtPtr pctxt, * declaration}'s {value constraint} . */ xmlSchemaGetEffectiveValueConstraint(base->attr, - &effFixed, &bEffValue, 0); + &effFixed, &bEffValue, NULL); /* * 2.1.3 ... one of the following must be true * @@ -12760,7 +13269,7 @@ xmlSchemaBuildAttributeValidation(xmlSchemaParserCtxtPtr pctxt, const xmlChar *rEffValue = NULL; xmlSchemaGetEffectiveValueConstraint(base->attr, - &effFixed, &rEffValue, 0); + &effFixed, &rEffValue, NULL); /* * 2.1.3.2 R's ·effective value constraint· is * fixed with the same string as B's. @@ -13258,8 +13767,14 @@ xmlSchemaCheckTypeDefCircular(xmlSchemaTypePtr item, ((item->type != XML_SCHEMA_TYPE_COMPLEX) && (item->type != XML_SCHEMA_TYPE_SIMPLE))) return; - xmlSchemaCheckTypeDefCircularInternal(ctxt, item, item->baseType); - + if (item->redef != NULL) { + xmlSchemaTypePtr cur = item; + do { + xmlSchemaCheckTypeDefCircularInternal(ctxt, cur, cur->baseType); + cur = cur->redef; + } while (cur != NULL); + } else + xmlSchemaCheckTypeDefCircularInternal(ctxt, item, item->baseType); } /** @@ -14298,7 +14813,7 @@ xmlSchemaCheckCOSCTExtends(xmlSchemaParserCtxtPtr ctxt, * SPEC (1) "If the {base type definition} is a complex type definition, * then all of the following must be true:" */ - if (base->type == XML_SCHEMA_TYPE_COMPLEX) { + if (IS_COMPLEX_TYPE(base)) { /* * SPEC (1.1) "The {final} of the {base type definition} must not * contain extension." @@ -15619,7 +16134,7 @@ xmlSchemaDeriveAndValidateFacets(xmlSchemaParserCtxtPtr pctxt, res = xmlSchemaCompareValues(fmininc->val, bfmaxinc->val); if (res == -2) goto internal_error; - if (res == -1) { + if (res == 1) { xmlSchemaDeriveFacetErr(pctxt, fmininc, bfmaxinc, -1, 1, 1); } } @@ -16036,7 +16551,7 @@ xmlSchemaTypeFixup(xmlSchemaTypePtr type, snprintf(buf, 29, "#scST%d", ++(pctxt->counter)); tmpname = xmlDictLookup(pctxt->dict, BAD_CAST buf, -1); content = xmlSchemaAddType(pctxt, - pctxt->schema, tmpname, tmpname, type->node); + pctxt->schema, tmpname, tmpname, type->node, 0); if (content == NULL) return; /* @@ -18355,8 +18870,6 @@ xmlSchemaAssembleByXSI(xmlSchemaValidCtxtPtr vctxt) return (ret); } -#define VAL_CREATE_DICT if (vctxt->dict == NULL) vctxt->dict = xmlDictCreate(); - static const xmlChar * xmlSchemaLookupNamespace(xmlSchemaValidCtxtPtr vctxt, const xmlChar *prefix) @@ -18392,7 +18905,6 @@ xmlSchemaLookupNamespace(xmlSchemaValidCtxtPtr vctxt, if (nsName != NULL) { const xmlChar *ret; - VAL_CREATE_DICT; ret = xmlDictLookup(vctxt->dict, nsName, -1); xmlFree(nsName); return (ret); @@ -18488,6 +19000,34 @@ xmlSchemaValidateNotation(xmlSchemaValidCtxtPtr vctxt, return (ret); } +static int +xmlSchemaVAddNodeQName(xmlSchemaValidCtxtPtr vctxt, + const xmlChar* lname, + const xmlChar* nsname) +{ + int i; + + lname = xmlDictLookup(vctxt->dict, lname, -1); + if (lname == NULL) + return(-1); + if (nsname != NULL) { + nsname = xmlDictLookup(vctxt->dict, nsname, -1); + if (nsname == NULL) + return(-1); + } + for (i = 0; i < vctxt->nodeQNames->nbItems; i += 2) { + if ((vctxt->nodeQNames->items [i] == lname) && + (vctxt->nodeQNames->items[i +1] == nsname)) + /* Already there */ + return(i); + } + /* Add new entry. */ + i = vctxt->nodeQNames->nbItems; + xmlSchemaItemListAdd(vctxt->nodeQNames, (void *) lname); + xmlSchemaItemListAdd(vctxt->nodeQNames, (void *) nsname); + return(i); +} + /************************************************************************ * * * Validation of identity-constraints (IDC) * @@ -19056,6 +19596,32 @@ xmlSchemaFormatIDCKeySequence(xmlSchemaValidCtxtPtr vctxt, } /** + * xmlSchemaXPathPop: + * @vctxt: the WXS validation context + * + * Pops all XPath states. + * + * Returns 0 on success and -1 on internal errors. + */ +static int +xmlSchemaXPathPop(xmlSchemaValidCtxtPtr vctxt) +{ + xmlSchemaIDCStateObjPtr sto; + int res; + + if (vctxt->xpathStates == NULL) + return(0); + sto = vctxt->xpathStates; + do { + res = xmlStreamPop((xmlStreamCtxtPtr) sto->xpathCtxt); + if (res == -1) + return (-1); + sto = sto->next; + } while (sto != NULL); + return(0); +} + +/** * xmlSchemaXPathProcessHistory: * @vctxt: the WXS validation context * @type: the simple/complex type of the current node if any at all @@ -19399,7 +19965,7 @@ create_key: *keySeq = NULL; return(-1); } - memset(ntItem, 0, sizeof(xmlSchemaPSVIIDCNode)); + memset(ntItem, 0, sizeof(xmlSchemaPSVIIDCNode)); /* * Store the node-table item on global list. @@ -19411,11 +19977,27 @@ create_key: *keySeq = NULL; return (-1); } + ntItem->nodeQNameID = -1; + } else { + /* + * Save a cached QName for this node on the IDC node, to be + * able to report it, even if the node is not saved. + */ + ntItem->nodeQNameID = xmlSchemaVAddNodeQName(vctxt, + vctxt->inode->localName, vctxt->inode->nsName); + if (ntItem->nodeQNameID == -1) { + xmlFree(ntItem); + xmlFree(*keySeq); + *keySeq = NULL; + return (-1); + } } /* - * Init the node-table item. Consume the key-sequence. + * Init the node-table item: Save the node, position and + * consume the key-sequence. */ ntItem->node = vctxt->node; + ntItem->nodeLine = vctxt->inode->nodeLine; ntItem->keys = *keySeq; *keySeq = NULL; if (xmlSchemaIDCAppendNodeTableItem(bind, ntItem) == -1) { @@ -19886,6 +20468,7 @@ xmlSchemaCheckCVCIDCKeyRef(xmlSchemaValidCtxtPtr vctxt) int i, j, k, res; xmlSchemaPSVIIDCKeyPtr *refKeys, *keys; xmlSchemaPSVIIDCKeyPtr refKey, key; + xmlSchemaPSVIIDCNodePtr refNode = NULL; /* * Find the referred key/unique. @@ -19903,8 +20486,9 @@ xmlSchemaCheckCVCIDCKeyRef(xmlSchemaValidCtxtPtr vctxt) */ for (i = 0; i < refbind->nbNodes; i++) { res = 0; - if (bind != NULL) { - refKeys = refbind->nodeTable[i]->keys; + refNode = refbind->nodeTable[i]; + if (bind != NULL) { + refKeys = refNode->keys; for (j = 0; j < bind->nbNodes; j++) { keys = bind->nodeTable[j]->keys; for (k = 0; k < bind->definition->nbFields; k++) { @@ -19928,9 +20512,8 @@ xmlSchemaCheckCVCIDCKeyRef(xmlSchemaValidCtxtPtr vctxt) } if (res == 0) { xmlChar *str = NULL, *strB = NULL; - /* TODO: Report the key-sequence. */ - xmlSchemaCustomErr((xmlSchemaAbstractCtxtPtr) vctxt, - XML_SCHEMAV_CVC_IDC, NULL, + xmlSchemaKeyrefErr(vctxt, + XML_SCHEMAV_CVC_IDC, refNode, (xmlSchemaTypePtr) refbind->definition, "No match found for key-sequence %s of key " "reference '%s'", @@ -20011,8 +20594,9 @@ xmlSchemaGetFreshAttrInfo(xmlSchemaValidCtxtPtr vctxt) static int xmlSchemaValidatorPushAttribute(xmlSchemaValidCtxtPtr vctxt, xmlNodePtr attrNode, + int nodeLine, const xmlChar *localName, - const xmlChar *nsName, + const xmlChar *nsName, int ownedNames, xmlChar *value, int ownedValue) @@ -20026,6 +20610,7 @@ xmlSchemaValidatorPushAttribute(xmlSchemaValidCtxtPtr vctxt, return (-1); } attr->node = attrNode; + attr->nodeLine = nodeLine; attr->state = XML_SCHEMAS_ATTR_UNKNOWN; attr->localName = localName; attr->nsName = nsName; @@ -20859,7 +21444,6 @@ xmlSchemaVExpandQName(xmlSchemaValidCtxtPtr vctxt, * string. */ local = xmlSplitQName2(value, &prefix); - VAL_CREATE_DICT; if (local == NULL) *localName = xmlDictLookup(vctxt->dict, value, -1); else { @@ -21715,7 +22299,8 @@ eval_idcs: "calling xmlSchemaXPathEvaluate()"); goto internal_error; } - } + } else if (vctxt->xpathStates != NULL) + xmlSchemaXPathPop(vctxt); } /* @@ -21802,41 +22387,6 @@ xmlSchemaValidateElemWildcard(xmlSchemaValidCtxtPtr vctxt, return (-1); } *skip = 0; - if (wild->negNsSet != NULL) { - /* - * URGENT VAL TODO: Fix the content model to reject - * "##other" wildcards. - */ - if (xmlSchemaCheckCVCWildcardNamespace(wild, - vctxt->inode->nsName) != 0) { - if ((wild->minOccurs == 1) && (wild->maxOccurs == 1)) { - xmlSchemaNodeInfoPtr pinode = vctxt->elemInfos[vctxt->depth -1]; - /* - * VAL TODO: Workaround possible *only* if minOccurs and - * maxOccurs are 1. - */ - xmlSchemaComplexTypeErr((xmlSchemaAbstractCtxtPtr) vctxt, - /* VAL TODO: error code? */ - XML_SCHEMAV_ELEMENT_CONTENT, NULL, - (xmlSchemaTypePtr) wild, - "This element is not accepted by the wildcard", - 0, 0, NULL); - vctxt->skipDepth = vctxt->depth; - if ((pinode->flags & - XML_SCHEMA_ELEM_INFO_ERR_BAD_CONTENT) == 0) - pinode->flags |= XML_SCHEMA_ELEM_INFO_ERR_BAD_CONTENT; - vctxt->inode->flags |= XML_SCHEMA_NODE_INFO_ERR_NOT_EXPECTED; - return (XML_SCHEMAV_ELEMENT_CONTENT); - } - if (wild->processContents == XML_SCHEMAS_ANY_SKIP) { - *skip = 1; - return (0); - } - vctxt->inode->typeDef = - xmlSchemaGetBuiltInType(XML_SCHEMAS_ANYTYPE); - return (0); - } - } if (wild->processContents == XML_SCHEMAS_ANY_SKIP) { /* * URGENT VAL TODO: Either we need to position the stream to the @@ -23179,7 +23729,6 @@ internal_error: * * ************************************************************************/ -#ifdef XML_SCHEMA_SAX_ENABLED /* * Process text content. */ @@ -23278,6 +23827,10 @@ xmlSchemaSAXHandleStartElementNs(void *ctx, goto internal_error; } ielem = vctxt->inode; + /* + * TODO: Is this OK? + */ + ielem->nodeLine = xmlSAX2GetLineNumber(vctxt->parserCtxt); ielem->localName = localname; ielem->nsName = URI; ielem->flags |= XML_SCHEMA_ELEM_INFO_EMPTY; @@ -23345,8 +23898,11 @@ xmlSchemaSAXHandleStartElementNs(void *ctx, */ value = xmlStrndup(attributes[j+3], attributes[j+4] - attributes[j+3]); + /* + * TODO: Set the node line. + */ ret = xmlSchemaValidatorPushAttribute(vctxt, - NULL, attributes[j], attributes[j+2], 0, + NULL, ielem->nodeLine, attributes[j], attributes[j+2], 0, value, 1); if (ret == -1) { VERROR_INT("xmlSchemaSAXHandleStartElementNs", @@ -23419,7 +23975,6 @@ internal_error: xmlStopParser(vctxt->parserCtxt); return; } -#endif /************************************************************************ * * @@ -23447,6 +24002,8 @@ xmlSchemaNewValidCtxt(xmlSchemaPtr schema) } memset(ret, 0, sizeof(xmlSchemaValidCtxt)); ret->type = XML_SCHEMA_CTXT_VALIDATOR; + ret->dict = xmlDictCreate(); + ret->nodeQNames = xmlSchemaItemListCreate(); ret->schema = schema; return (ret); } @@ -23524,7 +24081,11 @@ xmlSchemaClearValidCtxt(xmlSchemaValidCtxtPtr vctxt) break; xmlSchemaClearElemInfo(ei); } - } + } + xmlSchemaItemListClear(vctxt->nodeQNames); + /* Recreate the dict. */ + xmlDictFree(vctxt->dict); + vctxt->dict = xmlDictCreate(); } /** @@ -23602,6 +24163,8 @@ xmlSchemaFreeValidCtxt(xmlSchemaValidCtxtPtr ctxt) } xmlFree(ctxt->elemInfos); } + if (ctxt->nodeQNames != NULL) + xmlSchemaItemListFree(ctxt->nodeQNames); if (ctxt->dict != NULL) xmlDictFree(ctxt->dict); xmlFree(ctxt); @@ -23648,6 +24211,26 @@ xmlSchemaSetValidErrors(xmlSchemaValidCtxtPtr ctxt, } /** + * xmlSchemaSetValidStructuredErrors: + * @ctxt: a schema validation context + * @serror: the structured error function + * @ctx: the functions context + * + * Set the structured error callback + */ +void +xmlSchemaSetValidStructuredErrors(xmlSchemaValidCtxtPtr ctxt, + xmlStructuredErrorFunc serror, void *ctx) +{ + if (ctxt == NULL) + return; + ctxt->serror = serror; + ctxt->error = NULL; + ctxt->warning = NULL; + ctxt->userData = ctx; +} + +/** * xmlSchemaGetValidErrors: * @ctxt: a XML-Schema validation context * @err: the error function result @@ -23758,6 +24341,7 @@ xmlSchemaVDocWalk(xmlSchemaValidCtxtPtr vctxt) goto internal_error; ielem = vctxt->inode; ielem->node = node; + ielem->nodeLine = node->line; ielem->localName = node->name; if (node->ns != NULL) ielem->nsName = node->ns->href; @@ -23777,6 +24361,11 @@ xmlSchemaVDocWalk(xmlSchemaValidCtxtPtr vctxt) nsName = NULL; ret = xmlSchemaValidatorPushAttribute(vctxt, (xmlNodePtr) attr, + /* + * Note that we give it the line number of the + * parent element. + */ + ielem->nodeLine, attr->name, nsName, 0, xmlNodeListGetString(attr->doc, attr->children, 1), 1); if (ret == -1) { @@ -24246,24 +24835,24 @@ commentSplit(void *ctx, const xmlChar *value) * Varargs error callbacks to the user application, harder ... */ -static void -warningSplit(void *ctx, const char *msg, ...) { +static void XMLCDECL +warningSplit(void *ctx, const char *msg ATTRIBUTE_UNUSED, ...) { xmlSchemaSAXPlugPtr ctxt = (xmlSchemaSAXPlugPtr) ctx; if ((ctxt != NULL) && (ctxt->user_sax != NULL) && (ctxt->user_sax->warning != NULL)) { TODO } } -static void -errorSplit(void *ctx, const char *msg, ...) { +static void XMLCDECL +errorSplit(void *ctx, const char *msg ATTRIBUTE_UNUSED, ...) { xmlSchemaSAXPlugPtr ctxt = (xmlSchemaSAXPlugPtr) ctx; if ((ctxt != NULL) && (ctxt->user_sax != NULL) && (ctxt->user_sax->error != NULL)) { TODO } } -static void -fatalErrorSplit(void *ctx, const char *msg, ...) { +static void XMLCDECL +fatalErrorSplit(void *ctx, const char *msg ATTRIBUTE_UNUSED, ...) { xmlSchemaSAXPlugPtr ctxt = (xmlSchemaSAXPlugPtr) ctx; if ((ctxt != NULL) && (ctxt->user_sax != NULL) && (ctxt->user_sax->fatalError != NULL)) { @@ -24643,7 +25232,6 @@ xmlSchemaValidateFile(xmlSchemaValidCtxtPtr ctxt, const char * filename, int options ATTRIBUTE_UNUSED) { -#ifdef XML_SCHEMA_SAX_ENABLED int ret; xmlParserInputBufferPtr input; @@ -24657,9 +25245,6 @@ xmlSchemaValidateFile(xmlSchemaValidCtxtPtr ctxt, ret = xmlSchemaValidateStream(ctxt, input, XML_CHAR_ENCODING_NONE, NULL, NULL); return (ret); -#else - return (-1); -#endif /* XML_SCHEMA_SAX_ENABLED */ } #define bottom_xmlschemas diff --git a/xmlschemastypes.c b/xmlschemastypes.c index 27f7b53..9d99bbb 100644 --- a/xmlschemastypes.c +++ b/xmlschemastypes.c @@ -319,6 +319,63 @@ xmlSchemaInitBasicType(const char *name, xmlSchemaValType type, } /* +* WARNING: Those type reside normally in xmlschemas.c but are +* redefined here locally in oder of being able to use them for xs:anyType- +* TODO: Remove those definition if we move the types to a header file. +* TODO: Always keep those structs up-to-date with the originals. +*/ +#define UNBOUNDED (1 << 30) + +typedef struct _xmlSchemaTreeItem xmlSchemaTreeItem; +typedef xmlSchemaTreeItem *xmlSchemaTreeItemPtr; +struct _xmlSchemaTreeItem { + xmlSchemaTypeType type; + xmlSchemaAnnotPtr annot; + xmlSchemaTreeItemPtr next; + xmlSchemaTreeItemPtr children; +}; + +typedef struct _xmlSchemaParticle xmlSchemaParticle; +typedef xmlSchemaParticle *xmlSchemaParticlePtr; +struct _xmlSchemaParticle { + xmlSchemaTypeType type; + xmlSchemaAnnotPtr annot; + xmlSchemaTreeItemPtr next; + xmlSchemaTreeItemPtr children; + int minOccurs; + int maxOccurs; + xmlNodePtr node; +}; + +typedef struct _xmlSchemaModelGroup xmlSchemaModelGroup; +typedef xmlSchemaModelGroup *xmlSchemaModelGroupPtr; +struct _xmlSchemaModelGroup { + xmlSchemaTypeType type; + xmlSchemaAnnotPtr annot; + xmlSchemaTreeItemPtr next; + xmlSchemaTreeItemPtr children; + xmlNodePtr node; +}; + +static xmlSchemaParticlePtr +xmlSchemaAddParticle(void) +{ + xmlSchemaParticlePtr ret = NULL; + + ret = (xmlSchemaParticlePtr) + xmlMalloc(sizeof(xmlSchemaParticle)); + if (ret == NULL) { + xmlSchemaTypeErrMemory(NULL, "allocating particle component"); + return (NULL); + } + memset(ret, 0, sizeof(xmlSchemaParticle)); + ret->type = XML_SCHEMA_TYPE_PARTICLE; + ret->minOccurs = 1; + ret->maxOccurs = 1; + return (ret); +} + +/* * xmlSchemaInitTypes: * * Initialize the default XML Schemas type library @@ -339,12 +396,56 @@ xmlSchemaInitTypes(void) NULL); xmlSchemaTypeAnyTypeDef->baseType = xmlSchemaTypeAnyTypeDef; xmlSchemaTypeAnyTypeDef->contentType = XML_SCHEMA_CONTENT_MIXED; + /* + * Init the content type. + */ + xmlSchemaTypeAnyTypeDef->contentType = XML_SCHEMA_CONTENT_MIXED; { + xmlSchemaParticlePtr particle; + xmlSchemaModelGroupPtr sequence; xmlSchemaWildcardPtr wild; - + /* First particle. */ + particle = xmlSchemaAddParticle(); + if (particle == NULL) + return; + xmlSchemaTypeAnyTypeDef->subtypes = (xmlSchemaTypePtr) particle; + /* Sequence model group. */ + sequence = (xmlSchemaModelGroupPtr) + xmlMalloc(sizeof(xmlSchemaModelGroup)); + if (sequence == NULL) { + xmlSchemaTypeErrMemory(NULL, "allocating model group component"); + return; + } + memset(sequence, 0, sizeof(xmlSchemaModelGroup)); + sequence->type = XML_SCHEMA_TYPE_SEQUENCE; + particle->children = (xmlSchemaTreeItemPtr) sequence; + /* Second particle. */ + particle = xmlSchemaAddParticle(); + if (particle == NULL) + return; + particle->minOccurs = 0; + particle->maxOccurs = UNBOUNDED; + sequence->children = (xmlSchemaTreeItemPtr) particle; + /* The wildcard */ + wild = (xmlSchemaWildcardPtr) xmlMalloc(sizeof(xmlSchemaWildcard)); + if (wild == NULL) { + xmlSchemaTypeErrMemory(NULL, "allocating wildcard component"); + return; + } + memset(wild, 0, sizeof(xmlSchemaWildcard)); + wild->type = XML_SCHEMA_TYPE_ANY; + wild->any = 1; + wild->minOccurs = 1; + wild->maxOccurs = 1; + wild->processContents = XML_SCHEMAS_ANY_LAX; + particle->children = (xmlSchemaTreeItemPtr) wild; + /* + * Create the attribute wildcard. + */ wild = (xmlSchemaWildcardPtr) xmlMalloc(sizeof(xmlSchemaWildcard)); if (wild == NULL) { - xmlSchemaTypeErrMemory(NULL, "could not create an attribute wildcard on anyType"); + xmlSchemaTypeErrMemory(NULL, "could not create an attribute " + "wildcard on anyType"); return; } memset(wild, 0, sizeof(xmlSchemaWildcard)); @@ -519,7 +620,24 @@ void xmlSchemaCleanupTypes(void) { if (xmlSchemaTypesInitialized == 0) return; - xmlSchemaFreeWildcard(xmlSchemaTypeAnyTypeDef->attributeWildcard); + /* + * Free xs:anyType. + */ + { + xmlSchemaParticlePtr particle; + /* Attribute wildcard. */ + xmlSchemaFreeWildcard(xmlSchemaTypeAnyTypeDef->attributeWildcard); + /* Content type. */ + particle = (xmlSchemaParticlePtr) xmlSchemaTypeAnyTypeDef->subtypes; + /* Wildcard. */ + xmlSchemaFreeWildcard((xmlSchemaWildcardPtr) + particle->children->children->children); + xmlFree((xmlSchemaParticlePtr) particle->children->children); + /* Sequence model group. */ + xmlFree((xmlSchemaModelGroupPtr) particle->children); + xmlFree((xmlSchemaParticlePtr) particle); + xmlSchemaTypeAnyTypeDef->subtypes = NULL; + } xmlHashFree(xmlSchemaTypesBank, (xmlHashDeallocator) xmlSchemaFreeType); xmlSchemaTypesInitialized = 0; } @@ -2133,7 +2251,7 @@ xmlSchemaValAtomicType(xmlSchemaTypePtr type, const xmlChar * value, unsigned int len, neg = 0; xmlChar cval[25]; xmlChar *cptr = cval; - int dec = -1; + unsigned int dec = ~0u; if (cur == NULL) goto return1; @@ -2166,7 +2284,9 @@ xmlSchemaValAtomicType(xmlSchemaTypePtr type, const xmlChar * value, *cptr++ = *cur++; len++; } else if (*cur == '.') { - if (dec != -1) + if (len == 0) + len++; + if (dec != ~0u) goto return1; /* multiple decimal points */ cur++; if ((*cur == 0) && (cur -1 == value)) @@ -2193,8 +2313,8 @@ xmlSchemaValAtomicType(xmlSchemaTypePtr type, const xmlChar * value, /* * If a mixed decimal, get rid of trailing zeroes */ - if (dec != -1) { - while ((len > dec) && (cptr > cval) &&
+ if (dec != ~0u) { + while ((len > dec) && (cptr > cval) && (*(cptr-1) == '0')) { cptr--; len--; @@ -2216,7 +2336,7 @@ xmlSchemaValAtomicType(xmlSchemaTypePtr type, const xmlChar * value, if (len == 0) len++; v->value.decimal.sign = neg; - if (dec == -1) { + if (dec == ~0u) { v->value.decimal.frac = 0; v->value.decimal.total = len; } else { @@ -4685,6 +4805,8 @@ xmlSchemaCompareValuesInternal(xmlSchemaValType xtype, return(1); else if (ret == 0) return(0); + else + return(-1); } else if (x->value.base64.total > y->value.base64.total) return(1); diff --git a/xmlstring.c b/xmlstring.c index d73c49c..67a20b9 100644 --- a/xmlstring.c +++ b/xmlstring.c @@ -533,7 +533,7 @@ xmlStrcat(xmlChar *cur, const xmlChar *add) { * * Returns the number of characters written to @buf or -1 if an error occurs. */ -int +int XMLCDECL xmlStrPrintf(xmlChar *buf, int len, const xmlChar *msg, ...) { va_list args; int ret; diff --git a/xmlunicode.c b/xmlunicode.c index af91f47..454963f 100644 --- a/xmlunicode.c +++ b/xmlunicode.c @@ -926,8 +926,8 @@ static xmlChSRange xmlZS[] = {{0x20, 0x20}, {0xa0, 0xa0}, {0x1680, 0x1680}, {0x205f, 0x205f}, {0x3000, 0x3000} }; static xmlChRangeGroup xmlZG = {9,0,xmlZS,NULL}; -xmlUnicodeNameTable xmlUnicodeBlockTbl = {xmlUnicodeBlocks, 128}; -xmlUnicodeNameTable xmlUnicodeCatTbl = {xmlUnicodeCats, 36}; +static xmlUnicodeNameTable xmlUnicodeBlockTbl = {xmlUnicodeBlocks, 128}; +static xmlUnicodeNameTable xmlUnicodeCatTbl = {xmlUnicodeCats, 36}; /** * xmlUnicodeLookup: diff --git a/xmlwriter.c b/xmlwriter.c index 5e537ea..6227398 100644 --- a/xmlwriter.c +++ b/xmlwriter.c @@ -739,7 +739,7 @@ xmlTextWriterStartComment(xmlTextWriterPtr writer) return -1; } - p->name = 0; + p->name = NULL; p->state = XML_TEXTWRITER_COMMENT; xmlListPushFront(writer->nodes, p); @@ -825,7 +825,7 @@ xmlTextWriterEndComment(xmlTextWriterPtr writer) * * Returns the bytes written (may be 0 because of buffering) or -1 in case of error */ -int +int XMLCDECL xmlTextWriterWriteFormatComment(xmlTextWriterPtr writer, const char *format, ...) { @@ -1018,7 +1018,7 @@ xmlTextWriterStartElementNS(xmlTextWriterPtr writer, if ((writer == NULL) || (name == NULL) || (*name == '\0')) return -1; - buf = 0; + buf = NULL; if (prefix != 0) { buf = xmlStrdup(prefix); buf = xmlStrcat(buf, BAD_CAST ":"); @@ -1200,7 +1200,7 @@ xmlTextWriterFullEndElement(xmlTextWriterPtr writer) * * Returns the bytes written (may be 0 because of buffering) or -1 in case of error */ -int +int XMLCDECL xmlTextWriterWriteFormatRaw(xmlTextWriterPtr writer, const char *format, ...) { @@ -1326,7 +1326,7 @@ xmlTextWriterWriteRaw(xmlTextWriterPtr writer, const xmlChar * content) * * Returns the bytes written (may be 0 because of buffering) or -1 in case of error */ -int +int XMLCDECL xmlTextWriterWriteFormatString(xmlTextWriterPtr writer, const char *format, ...) { @@ -1745,7 +1745,7 @@ xmlTextWriterStartAttributeNS(xmlTextWriterPtr writer, if ((writer == NULL) || (name == NULL) || (*name == '\0')) return -1; - buf = 0; + buf = NULL; if (prefix != 0) { buf = xmlStrdup(prefix); buf = xmlStrcat(buf, BAD_CAST ":"); @@ -1887,7 +1887,7 @@ xmlTextWriterEndAttribute(xmlTextWriterPtr writer) * * Returns the bytes written (may be 0 because of buffering) or -1 in case of error */ -int +int XMLCDECL xmlTextWriterWriteFormatAttribute(xmlTextWriterPtr writer, const xmlChar * name, const char *format, ...) @@ -1982,7 +1982,7 @@ xmlTextWriterWriteAttribute(xmlTextWriterPtr writer, const xmlChar * name, * * Returns the bytes written (may be 0 because of buffering) or -1 in case of error */ -int +int XMLCDECL xmlTextWriterWriteFormatAttributeNS(xmlTextWriterPtr writer, const xmlChar * prefix, const xmlChar * name, @@ -2063,7 +2063,7 @@ xmlTextWriterWriteAttributeNS(xmlTextWriterPtr writer, if ((writer == NULL) || (name == NULL) || (*name == '\0')) return -1; - buf = 0; + buf = NULL; if (prefix != NULL) { buf = xmlStrdup(prefix); buf = xmlStrcat(buf, BAD_CAST ":"); @@ -2078,7 +2078,7 @@ xmlTextWriterWriteAttributeNS(xmlTextWriterPtr writer, sum += count; if (namespaceURI != NULL) { - buf = 0; + buf = NULL; buf = xmlStrdup(BAD_CAST "xmlns"); if (prefix != NULL) { buf = xmlStrcat(buf, BAD_CAST ":"); @@ -2104,7 +2104,7 @@ xmlTextWriterWriteAttributeNS(xmlTextWriterPtr writer, * * Returns the bytes written (may be 0 because of buffering) or -1 in case of error */ -int +int XMLCDECL xmlTextWriterWriteFormatElement(xmlTextWriterPtr writer, const xmlChar * name, const char *format, ...) @@ -2199,7 +2199,7 @@ xmlTextWriterWriteElement(xmlTextWriterPtr writer, const xmlChar * name, * * Returns the bytes written (may be 0 because of buffering) or -1 in case of error */ -int +int XMLCDECL xmlTextWriterWriteFormatElementNS(xmlTextWriterPtr writer, const xmlChar * prefix, const xmlChar * name, @@ -2444,7 +2444,7 @@ xmlTextWriterEndPI(xmlTextWriterPtr writer) * * Returns the bytes written (may be 0 because of buffering) or -1 in case of error */ -int +int XMLCDECL xmlTextWriterWriteFormatPI(xmlTextWriterPtr writer, const xmlChar * target, const char *format, ...) { @@ -2587,7 +2587,7 @@ xmlTextWriterStartCDATA(xmlTextWriterPtr writer) return -1; } - p->name = 0; + p->name = NULL; p->state = XML_TEXTWRITER_CDATA; xmlListPushFront(writer->nodes, p); @@ -2653,7 +2653,7 @@ xmlTextWriterEndCDATA(xmlTextWriterPtr writer) * * Returns the bytes written (may be 0 because of buffering) or -1 in case of error */ -int +int XMLCDECL xmlTextWriterWriteFormatCDATA(xmlTextWriterPtr writer, const char *format, ...) { @@ -2959,7 +2959,7 @@ xmlTextWriterEndDTD(xmlTextWriterPtr writer) * * Returns the bytes written (may be 0 because of buffering) or -1 in case of error */ -int +int XMLCDECL xmlTextWriterWriteFormatDTD(xmlTextWriterPtr writer, const xmlChar * name, const xmlChar * pubid, @@ -3203,7 +3203,7 @@ xmlTextWriterEndDTDElement(xmlTextWriterPtr writer) * * Returns the bytes written (may be 0 because of buffering) or -1 in case of error */ -int +int XMLCDECL xmlTextWriterWriteFormatDTDElement(xmlTextWriterPtr writer, const xmlChar * name, const char *format, ...) @@ -3440,7 +3440,7 @@ xmlTextWriterEndDTDAttlist(xmlTextWriterPtr writer) * * Returns the bytes written (may be 0 because of buffering) or -1 in case of error */ -int +int XMLCDECL xmlTextWriterWriteFormatDTDAttlist(xmlTextWriterPtr writer, const xmlChar * name, const char *format, ...) @@ -3697,7 +3697,7 @@ xmlTextWriterEndDTDEntity(xmlTextWriterPtr writer) * * Returns the bytes written (may be 0 because of buffering) or -1 in case of error */ -int +int XMLCDECL xmlTextWriterWriteFormatDTDInternalEntity(xmlTextWriterPtr writer, int pe, const xmlChar * name, @@ -89,7 +89,7 @@ double xmlXPathNAN = 0; double xmlXPathPINF = 1; double xmlXPathNINF = -1; -double xmlXPathNZERO = 0; +static double xmlXPathNZERO = 0; /* not exported from headers */ static int xmlXPathInitialized = 0; /** @@ -189,6 +189,15 @@ static int xmlXPathDisableOptimizer = 0; * * ************************************************************************/ +/** + * XP_ERRORNULL: + * @X: the error code + * + * Macro to raise an XPath error and return NULL. + */ +#define XP_ERRORNULL(X) \ + { xmlXPathErr(ctxt, X); return(NULL); } + /* * The array xmlXPathErrorMessages corresponds to the enum xmlXPathError */ @@ -1116,20 +1125,20 @@ xmlXPathDebugDumpCompExpr(FILE *output, xmlXPathCompExprPtr comp, * * Returns the XPath object just removed */ -extern xmlXPathObjectPtr +xmlXPathObjectPtr valuePop(xmlXPathParserContextPtr ctxt) { xmlXPathObjectPtr ret; if ((ctxt == NULL) || (ctxt->valueNr <= 0)) - return (0); + return (NULL); ctxt->valueNr--; if (ctxt->valueNr > 0) ctxt->value = ctxt->valueTab[ctxt->valueNr - 1]; else ctxt->value = NULL; ret = ctxt->valueTab[ctxt->valueNr]; - ctxt->valueTab[ctxt->valueNr] = 0; + ctxt->valueTab[ctxt->valueNr] = NULL; return (ret); } /** @@ -1141,7 +1150,7 @@ valuePop(xmlXPathParserContextPtr ctxt) * * returns the number of items on the value stack */ -extern int +int valuePush(xmlXPathParserContextPtr ctxt, xmlXPathObjectPtr value) { if ((ctxt == NULL) || (value == NULL)) return(-1); @@ -1391,25 +1400,16 @@ xmlXPathFormatNumber(double number, char buffer[], int buffersize) } else if (number == ((int) number)) { char work[30]; char *ptr, *cur; - int res, value = (int) number; + int value = (int) number; ptr = &buffer[0]; - if (value < 0) { - *ptr++ = '-'; - value = -value; - } if (value == 0) { *ptr++ = '0'; } else { + snprintf(work, 29, "%d", value); cur = &work[0]; - while (value != 0) { - res = value % 10; - value = value / 10; - *cur++ = '0' + res; - } - cur--; - while ((cur >= &work[0]) && (ptr - buffer < buffersize)) { - *ptr++ = *cur--; + while ((*cur) && (ptr - buffer < buffersize)) { + *ptr++ = *cur++; } } if (ptr - buffer < buffersize) { @@ -4577,6 +4577,9 @@ xmlXPathEqualNodeSetFloat(xmlXPathParserContextPtr ctxt, ret = 1; break; } + } else { /* NaN is unequal to any value */ + if (neq) + ret = 1; } } } @@ -7571,7 +7574,7 @@ xmlXPathParseNameComplex(xmlXPathParserContextPtr ctxt, int qualified) { buffer = (xmlChar *) xmlMallocAtomic(max * sizeof(xmlChar)); if (buffer == NULL) { - XP_ERROR0(XPATH_MEMORY_ERROR); + XP_ERRORNULL(XPATH_MEMORY_ERROR); } memcpy(buffer, buf, len); while ((IS_LETTER(c)) || (IS_DIGIT(c)) || /* test bigname.xml */ @@ -7584,7 +7587,7 @@ xmlXPathParseNameComplex(xmlXPathParserContextPtr ctxt, int qualified) { buffer = (xmlChar *) xmlRealloc(buffer, max * sizeof(xmlChar)); if (buffer == NULL) { - XP_ERROR0(XPATH_MEMORY_ERROR); + XP_ERRORNULL(XPATH_MEMORY_ERROR); } } COPY_BUF(l,buffer,len,c); @@ -7820,7 +7823,7 @@ xmlXPathParseLiteral(xmlXPathParserContextPtr ctxt) { while ((IS_CHAR_CH(CUR)) && (CUR != '"')) NEXT; if (!IS_CHAR_CH(CUR)) { - XP_ERROR0(XPATH_UNFINISHED_LITERAL_ERROR); + XP_ERRORNULL(XPATH_UNFINISHED_LITERAL_ERROR); } else { ret = xmlStrndup(q, CUR_PTR - q); NEXT; @@ -7831,13 +7834,13 @@ xmlXPathParseLiteral(xmlXPathParserContextPtr ctxt) { while ((IS_CHAR_CH(CUR)) && (CUR != '\'')) NEXT; if (!IS_CHAR_CH(CUR)) { - XP_ERROR0(XPATH_UNFINISHED_LITERAL_ERROR); + XP_ERRORNULL(XPATH_UNFINISHED_LITERAL_ERROR); } else { ret = xmlStrndup(q, CUR_PTR - q); NEXT; } } else { - XP_ERROR0(XPATH_START_LITERAL_ERROR); + XP_ERRORNULL(XPATH_START_LITERAL_ERROR); } return(ret); } @@ -7924,6 +7927,9 @@ xmlXPathCompVariableReference(xmlXPathParserContextPtr ctxt) { PUSH_LONG_EXPR(XPATH_OP_VARIABLE, 0, 0, 0, name, prefix); SKIP_BLANKS; + if ((ctxt->context != NULL) && (ctxt->context->flags & XML_XPATH_NOVAR)) { + XP_ERROR(XPATH_UNDEF_VARIABLE_ERROR); + } } /** @@ -8647,7 +8653,7 @@ xmlXPathCompNodeTest(xmlXPathParserContextPtr ctxt, xmlXPathTestVal *test, if (name == NULL) name = xmlXPathParseNCName(ctxt); if (name == NULL) { - XP_ERROR0(XPATH_EXPR_ERROR); + XP_ERRORNULL(XPATH_EXPR_ERROR); } blanks = IS_BLANK_CH(CUR); @@ -8668,7 +8674,7 @@ xmlXPathCompNodeTest(xmlXPathParserContextPtr ctxt, xmlXPathTestVal *test, else { if (name != NULL) xmlFree(name); - XP_ERROR0(XPATH_EXPR_ERROR); + XP_ERRORNULL(XPATH_EXPR_ERROR); } *test = NODE_TEST_TYPE; @@ -8683,7 +8689,7 @@ xmlXPathCompNodeTest(xmlXPathParserContextPtr ctxt, xmlXPathTestVal *test, name = NULL; if (CUR != ')') { name = xmlXPathParseLiteral(ctxt); - CHECK_ERROR 0; + CHECK_ERROR NULL; *test = NODE_TEST_PI; SKIP_BLANKS; } @@ -8691,7 +8697,7 @@ xmlXPathCompNodeTest(xmlXPathParserContextPtr ctxt, xmlXPathTestVal *test, if (CUR != ')') { if (name != NULL) xmlFree(name); - XP_ERROR0(XPATH_UNCLOSED_ERROR); + XP_ERRORNULL(XPATH_UNCLOSED_ERROR); } NEXT; return(name); @@ -8729,7 +8735,7 @@ xmlXPathCompNodeTest(xmlXPathParserContextPtr ctxt, xmlXPathTestVal *test, name = xmlXPathParseNCName(ctxt); if (name == NULL) { - XP_ERROR0(XPATH_EXPR_ERROR); + XP_ERRORNULL(XPATH_EXPR_ERROR); } } return(name); @@ -8919,10 +8925,18 @@ xmlXPathCompStep(xmlXPathParserContextPtr ctxt) { CHECK_ERROR; + type = (xmlXPathTypeVal) 0; + test = (xmlXPathTestVal) 0; name = xmlXPathCompNodeTest(ctxt, &test, &type, &prefix, name); if (test == 0) return; + if ((prefix != NULL) && (ctxt->context != NULL) && + (ctxt->context->flags & XML_XPATH_CHECKNS)) { + if (xmlXPathNsLookup(ctxt->context, prefix) == NULL) { + xmlXPathErr(ctxt, XPATH_UNDEF_PREFIX_ERROR); + } + } #ifdef DEBUG_STEP xmlGenericError(xmlGenericErrorContext, "Basis : computing new set\n"); @@ -10983,7 +10997,7 @@ xmlXPathCompOpEval(xmlXPathParserContextPtr ctxt, xmlXPathStepOpPtr op) */ static xmlXPathObjectPtr xmlXPathRunStreamEval(xmlXPathContextPtr ctxt, xmlPatternPtr comp) { - int max_depth; + int max_depth, min_depth; int from_root; int ret, depth; xmlNodePtr cur = NULL, limit = NULL; @@ -10999,6 +11013,9 @@ xmlXPathRunStreamEval(xmlXPathContextPtr ctxt, xmlPatternPtr comp) { return(NULL); if (max_depth == -2) max_depth = 10000; + min_depth = xmlPatternMinDepth(comp); + if (min_depth == -1) + return(NULL); from_root = xmlPatternFromRoot(comp); if (from_root < 0) return(NULL); @@ -11010,13 +11027,20 @@ xmlXPathRunStreamEval(xmlXPathContextPtr ctxt, xmlPatternPtr comp) { if (retval == NULL) return(NULL); - if ((from_root) && (max_depth == 0)) { - xmlXPathNodeSetAddUnique(retval->nodesetval, (xmlNodePtr) ctxt->doc); - return(retval); - } else if (max_depth == 0) { - xmlXPathNodeSetAddUnique(retval->nodesetval, ctxt->node); + /* + * handle the special cases of / amd . being matched + */ + if (min_depth == 0) { + if (from_root) { + xmlXPathNodeSetAddUnique(retval->nodesetval, (xmlNodePtr) ctxt->doc); + } else { + xmlXPathNodeSetAddUnique(retval->nodesetval, ctxt->node); + } + } + if (max_depth == 0) { return(retval); } + if (from_root) { cur = (xmlNodePtr)ctxt->doc; } else if (ctxt->node != NULL) { @@ -11381,7 +11405,7 @@ xmlXPathCtxtCompile(xmlXPathContextPtr ctxt, const xmlChar *str) { if( pctxt->error != XPATH_EXPRESSION_OK ) { xmlXPathFreeParserContext(pctxt); - return (0); + return(NULL); } if (*pctxt->cur != 0) { @@ -2412,7 +2412,7 @@ xmlXPtrAdvanceChar(xmlNodePtr *node, int *indx, int bytes) { if (pos + bytes >= len) { bytes -= (len - pos); cur = xmlXPtrAdvanceNode(cur, NULL); - cur = 0; + pos = 0; } else if (pos + bytes < len) { pos += bytes; *node = cur; diff --git a/xstc/Makefile.in b/xstc/Makefile.in index 36242b1..a435815 100644 --- a/xstc/Makefile.in +++ b/xstc/Makefile.in @@ -152,6 +152,7 @@ TEST_PUSH = @TEST_PUSH@ TEST_REGEXPS = @TEST_REGEXPS@ TEST_SAX = @TEST_SAX@ TEST_SCHEMAS = @TEST_SCHEMAS@ +TEST_SCHEMATRON = @TEST_SCHEMATRON@ TEST_THREADS = @TEST_THREADS@ TEST_VALID = @TEST_VALID@ TEST_VTIME = @TEST_VTIME@ @@ -187,6 +188,7 @@ WITH_REGEXPS = @WITH_REGEXPS@ WITH_RUN_DEBUG = @WITH_RUN_DEBUG@ WITH_SAX1 = @WITH_SAX1@ WITH_SCHEMAS = @WITH_SCHEMAS@ +WITH_SCHEMATRON = @WITH_SCHEMATRON@ WITH_THREADS = @WITH_THREADS@ WITH_TREE = @WITH_TREE@ WITH_TRIO = @WITH_TRIO@ |