Yunqa • The Delphi Inspiration

Delphi Components and Applications

User Tools

Site Tools


DIXml: Version History

DIXml is an embedded XML, XSLT, and EXSLT processing library for Delphi (Embarcadero / CodeGear / Borland). It is build on the libxml2, libxslt and libexslt libraries but requires no DLLs nor other external files.

DIXml v6.00.1 – 29 Oct 2022

Update libxml2 to version v2.10.3:

  • Fix dict corruption caused by entity reference cycles.
  • Fix integer overflows with XML_PARSE_HUGE
  • Fix overflow check in SAX2.

Update libxslt to version v1.1.37:

  • Minor improvements.

DIXml v6.00.0 – 8 Sep 2022

Update libxml2 to version v2.10.2:

  • Improvements:
    • Fix xmlCtxtReadDoc with encoding.
    • Add schematron let variable tag and value-of tag support.
    • Implement xpath1() XPointer scheme.
    • Make copying nodes non-recursive.
    • Code cleanups and simplifications.
  • Security Fixes:
    • Reserve byte for #0 terminator and report errors consistently in xmlBuf and xmlBuffer
    • Fix missing #0 terminators in xmlBuf and xmlBuffer functions.
    • Fix xmlBufAvail so it returns length without including a byte for #0 terminator.
    • Fix ownership of xmlNodePtr and xmlAttrPtr fields in xmlSetTreeDoc.
    • Fix use-after-free bugs when calling xmlTextReaderClose before ]]xmlFreeTextReader]] on post-validating parser.
  • Bug fixes:
    • Fix HTML parsing to skip incorrectly opened comments.
    • Restore behavior of htmlDocContentDumpFormatOutput to it preserves xmlDoc.Type_.
    • Fix memory leak with invalid XSD.
    • Make XPath depth check work with recursive invocations.
    • Avoid double-free if malloc fails in internal inputPush.
    • XSD schema validation: Properly fold whitespace around the QName value. Also add whitespace folding for some atomic data types that it is missing on.
  • Removed and deprecated:
    • Remove unused xmlBuf functions.
    • Deprecate module initialization and cleanup functions.
    • Deprecate legacy functions.
    • Deprecate all xmlNanoFTP… functions.

Update libxslt to version v1.1.36:

  • Fix quadratic behavior with variables and parameters.

DIXml v5.21.0 – 6 May 2022

Update libxml2 to version v2.9.14:

  • Improvements:
    • Fix recovery from invalid HTML start tags: Only try to parse a start tag if there is a < followed by an ASCII letter. This is more in line with HTML5 and the old behavior in recovery mode. Emit a literal < if the following character is invalid.
    • XPath functions ceiling() and floor() handle INF, NAN, and -0.0.
  • Security Fixes:
    • Integer overflow in xmlBuf and xmlBuffer.
    • Integer overflow skipping blank characters during parsing.
    • Normalize XPath strings in-place.
    • Fix memory leaks and potential double free.
  • Other Fixes:
    • Fix parsing of subtracted regex character classes.
    • Fix certain combinations of regex range quantifiers.
    • Fix range quantifier on subregex.
    • Detect local inclusions to fix recursions in xi:include.
    • Reset last error in xmlCleanupGlobals.

DIXml v5.20.0 – 8 Mar 2022

Update libxml2 to version v2.9.13:

  • Regression fixes:
    • RelaxNG pattern matching.
    • Nested documents in xmlFreeNode.
    • PEs in external DTD.
    • Random dropping of characters on dumping ASCII encoded XML.
    • Parsing invalid HTML tags in push mode.
    • Parsing public IDs literals in HTML.
    • Buffering in xmlOutputBufferWrite.
    • Whitespace when serializing empty HTML documents.
    • XPath recursion limit.
  • Bug fixes:
    • xmlSetTreeDoc with entity references.
    • Double counting of CRLF in comments
    • XML parser input buffer growth.
    • Do not normalize namespace URIs in XPointer xmlns() scheme.
    • Handling of XSD with empty namespace.
    • Parse failure when 4-byte character in UTF-16 BE is split across a chunk.
    • Memory leak, null pointer dereference and use-after-free fixes.

Update libxslt to version v1.1.35:

  • Fix performance regression with predicates in patterns.
  • Fix regression in xsltComputeSortResult.
  • Fix conflict resolution for templates with same priority.
  • Fix xsl:number generating invalid UTF-8.
  • Support attribute value templates in xsl:sort lang attributes.
  • Do not pass first <xsl:sort> in <xsl:apply-templates> twice.
  • Fix quadratic runtime with text and <xsl:message>.
  • Do not allow empty EXSLT durations.
  • Memory leak, double-free and use-after-free fixes.

DIXml 5.19.0 – 16 Sep 2021

  • Support Delphi 11 Alexandria Win32 and Win64.

DIXml 5.18.0 – 15 Jul 2021

Update libxml2 to version v2.9.12:

  • New xmlPopOutputCallbacks.
  • Fix quadratic runtime in HTML push parser.
  • Fix UTF-8 decoder in HTML parser.
  • Over 100 smaller bug fixes like:
    • integer overflows,
    • memory leaks,
    • error propagations and return values,
    • memory use after free,
    • quadratic / exponential runtime behaviours,
    • nil pointer dereferences,
    • UTF-8 validations.
  • Nearly 100 sercurity, function, and performance improvements.

DIXml 5.17.0 – 30 Jan 2021

  • Add functions and types required by YuXMLSec:
    • XSLT security.
    • xmlAddID, xmlFreeIDTable, xmlGetID, xmlIsID, xmlRemoveID.
    • xmlAddRef, xmlFreeRefTable, xmlIsRef, xmlRemoveRef, xmlGetRefs.
    • xmlXPathErr.

DIXml 5.16.0 – 5 Jun 2020

  • Support Delphi 10.4 Sydney Win32 and Win64.

DIXml 5.15.0 – 13 Nov 2019


  • Optional recursion limit when parsing XPath expressions. Useful to avoid stack overflows. Note that parsing a parenthesized expression currently consumes more than 10 stack frames, so this limit should be set rather low.
  • Improve XPath predicate and filter evaluation as well as error propagation, particularly out of memory conditions.
  • Fix that the parser did not stop immediately after a 'Double hyphen within comment' error.
  • Fix return value of xmlOutputBufferWrite. With memory buffers, the total size of the buffer was added again and again, potentially leading to an integer overflow.
  • Fix schema validation related to ##other namespace.
  • Disallow conditional sections in internal subsets. Conditional sections are only allowed in external parameter entities referenced from the internal subset.
  • Fix a number of memory leaks, invalid pointer dereferences, integer overflows, and uninitialized memory accesses.
  • Avoid potential stack overflows by making some functions non-recursive.


  • Do not allow xsl:template without name and match attributes.
  • Fix performance regression with xsl:number.
  • Fix a number of memory leaks, integer overflows, invalid pointer dereferences, dangling pointers, and error propagations.
  • Avoid potential stack overflows by making some functions non-recursive.

DIXml 5.14.0 – 7 Mar 2019

  • Adjust DIXmlConverters to DIConverters 1.18.0 changes.

XML Bug Fixes:

  • Fix: If the XPath stack was corrupted, for example by a misbehaving extension function, the “and” and “or” XPath operators could dereference nil pointers.
  • Fix building relative URIs.
  • Fix problem with data in interleave in RelaxNG validation.
  • Fix memory leak when switching the input encoding results in an error.
  • Fix SAX2 memory leak of nodes in the freelist.
  • Fix HTML serialization with UTF-8 encoding.
  • Use actual doc in xmlTextReaderRead*Xml.
  • Unlink node before freeing it in xmlSAX2StartElement.
  • Check return value of nodePush in xmlSAX2StartElement.
  • Free input buffer in xmlHaltParser.
  • Reset HTML parser input pointers on encoding failure.
  • Fix xmlSchemaValidCtxtPtr reuse memory leak.
  • Fix xmlTextReaderNext with preparsed document.
  • HTML noscript should not close p.
  • Don't change context node in xmlXPathRoot.
  • Stop using XPATH_OP_RESET.
  • Fix xmlParserEntityCheck.
  • Halt parser in case of encoding error.
  • Clear entity content in case of errors.
  • Fix buffer over-read in xmlParseNCNameComplex.
  • Fix IO callback signatures.
  • Fix misc callback signatures.
  • Fix list callback signatures.

XML Improvements:

  • Fix problem with data in interleave in RelaxNG validation.
  • Remove redefined starts and defines inside include elements.
  • Allow choice within choice in nameClass in RELAX NG.
  • Look inside divs for starts and defines inside include.
  • Support xmlTextReaderNextSibling w/o preparsed doc.
  • Improve restoring of context size and position.
  • Simplify and harden nodeset filtering.
  • Avoid unnecessary backups of the context node.
  • Fix inconsistency in xmlXPathIsInf.
  • Improve handling of context input_id.

XSLT Bug Fixes:

  • Fix transform callback signatures.
  • Fix extension callback signatures.
  • Fix deallocator signatures.
  • Fix XPath callback signatures.
  • Fix hash callback signatures.
  • Don't cache direct evaluation of patterns with variables.
  • Move function result RVTs to context variable.
  • Fix EXSLT functions returning RVTs from outer scopes.
  • Fix handling of RVTs returned from nested EXSLT functions.

DIXml 5.13.0 – 24 Dec 2018

  • Support Delphi 10.3 Rio Win32 and Win64.

DIXml 5.12.0 – 22 Nov 2017

XML Security:

  • Detect infinite recursion in parameter entities.
  • Fix handling of parameter-entity references.
  • Disallow namespace nodes in XPointer ranges.
  • Fix XPointer paths beginning with range-to.

XML Bug Fixes:

  • xmlcatalog: restore ability to query system catalog easily.
  • Fix comparison of nodesets to strings.
  • Fix XPath stack frame logic.
  • Report undefined XPath variable error message.
  • Handle more invalid entity values in recovery mode.
  • Fix structured validation errors.
  • Handle illegal entity values in recovery mode.
  • Fix memory leak in nanoftp.
  • Fix memory leaks in SAX1 parser.
  • Problem resolving relative URIs.
  • Fix unwanted warnings when switching encodings.
  • Heap-buffer-overflow read of size 1 parsing regular expression character ranges.
  • Fix NULL pointer deref in parsing regular expression character escapes.
  • Fix infinite loops with push parser in recovery mode.
  • Fix NULL deref parsing external character entities.
  • Make sure not to call IS_BLANK_CH when parsing the DTD.
  • Fix pathological performance when outputting charrefs.
  • Fix duplicate SAX callbacks for entity content.
  • Treat URIs with scheme as absolute in C14N.
  • Fix copy-paste errors in error messages.
  • Fix sanity check parsing HTML names.
  • Fix potential infinite loop in xmlStringLenDecodeEntities.
  • Reset parser input pointers on encoding failure.
  • Fix memory leak in xmlParseEntityDecl error path.
  • Fix xmlBuildRelativeURI for URIs starting with './'.
  • Fix type confusion in xmlValidateOneNamespace.
  • Fix memory leak in xmlStringLenGetNodeList.
  • Fix NULL pointer deref dumping element content.
  • Fix memory leak in xmlBufAttrSerializeTxtContent.
  • Stop parser on unsupported encodings.
  • Check for integer overflow in memory debug code.
  • Fix buffer size checks in xmlSnprintfElementContent.
  • Avoid reparsing in when parsing start tags.
  • Fix regular expression undefined behavior.
  • Check XPath exponents for overflow.
  • Check XPath prosition predicate for overflow.
  • Fix spurious error message.
  • Fix memory leak in xmlCanonicPath.
  • Fix memory leak comparing node set values.
  • Fix memory leak in pattern error path.
  • Fix memory leak in parser error path.
  • Fix memory leaks in XPointer error paths.
  • Fix memory leak merging node sets.
  • Fix memory leak in XPath filter optimizations.
  • Fix memory leaks in XPath error paths.
  • Do not leak the new CData node if adding fails.
  • Prevent unwanted external entity reference.
  • Increase buffer space for port in HTTP redirect support.
  • Fix format string warnings.
  • Disallow namespace nodes in XPointer points.
  • Fix comparison with root node in xmlXPathCmpNodes.
  • Fix attribute decoding during XML schema validation.
  • Fix NULL pointer deref in XPointer range-to.

XML Improvements:

  • Add const in five places to move 1 KiB to .rdata.
  • Get rid of “blanks wrapper” for parameter entities.
  • Simplify handling of parameter entity references.
  • Make HTML parser functions take const pointers.
  • Rework entity boundary checks.
  • Don't switch encoding for internal parameter entities.
  • Initialize keepBlanks in HTML parser.
  • Remove useless check in xmlParseAttributeListDecl.
  • Allow zero sized memory input buffers.
  • Check for integer overflow converting numbers to string representations.
  • Simplify control flow parsing XML start tags.
  • Parse small XPath numbers more accurately.
  • Rework XPath rounding functions.
  • Fix axis traversal from attribute and namespace nodes.
  • Check for trailing characters in XPath expressions earlier.
  • Rework final handling of XPath results.
  • Make xmlXPathEvalExpression call xmlXPathEval.

XSLT Bug Fixes:

  • Fix NULL deref in xsltDefaultSortFunction.
  • Fix memory hazards in EXSLT function evaluation.
  • Fix memory leaks in EXSLT error paths.
  • Fix memory leak in str:concat with empty node-set.
  • Fix memory leaks in error paths.
  • Fix NULL pointer deref in XSLT format number function.
  • Fix UTF-8 check in str:padding.
  • Check for overflow parsing year without time zone.
  • Fix double to int conversion.
  • Check for overflow parsing duration strings.
  • Disable xsltCopyTextString optimization for extensions.
  • Create DOCTYPE for HTML version 5.
  • Make xsl:decimal-format work with namespaces.
  • Remove the norm:localTime extension function. It was non-standard, undocumented and used a custom date format.
  • Check for integer overflow adding text to text nodes.
  • Detect infinite recursion when evaluating function arguments.
  • Fix memory leak in the the element-available() XSLT function.
  • Fix for pattern predicates calling functions.
  • Fix heap overread in in the format-number() XSLT function.
  • Fix <xsl:number level=“any”/> for non-element nodes.
  • Fix unreachable code adding a child node.
  • Change version number in xsl:version warning.
  • Avoid infinite recursion after failed param evaluation.
  • Stop if potential recursion is detected.
  • Consider built-in templates in apply-imports.
  • Fix precedence with multiple attribute sets.
  • Rework attribute set resolution.

XSLT Improvements:

  • New-line terminate error message that missed this convention.
  • Use xmlBuffers in EXSLT string functions.
  • Switch to xmlUTF8Strsize in EXSLT string functions.
  • Check for return value of xmlUTF8Strlen.
  • Avoid double/long round trip formating an item number.
  • Separate date and duration structs.
  • Check for overflow in calculating date differences.
  • Clamp seconds field of durations.
  • Fix date:difference with time zones.
  • Change internal representation of years.
  • Optimize leap year calculation.
  • Make some symbols static.
  • Remove redundant NULL check in XSLT number node processing.
  • Fix forwards compatibility for imported stylesheets.
  • Reduce warnings in forwards-compatible mode.
  • Precompute XSLT elements after preprocessing.
  • Fix whitespace scanning the top level elements of an XSL stylesheet.
  • Consolidate recursion checks.
  • Treat XSLT_STATE_STOPPED as errors.
  • Make sure that XSLT_STATE_STOPPED isn't overwritten.
  • Rewrite memory management of local RVTs.
  • Validate QNames of attribute sets.
  • Ignore imported stylesheets when applying xsl:use-attribute-sets.

DIXml 5.11.0 – 3 Apr 2017

  • Support Delphi 10.2 Tokyo Win32 and Win64.

DIXml 5.10.0 – 10 Jun 2016

XML Bug Fixes:

  • More format string warnings with possible format string vulnerability.
  • Avoid building recursive entities.
  • Fix buffer overreads, underreads, and use after free.
  • Detect change of encoding when parsing HTML names.
  • Fix inappropriate fetch of entities content.
  • Avoid an out of bound access when serializing malformed strings.
  • Integer overflow parsing port number in URI.
  • Fix error with regexp on nullable counted char transition.
  • Fix memory leak with XPath namespace nodes.
  • Fix namespace axis traversal.
  • Fix nil pointer dereference in documents with no root element.
  • Fix XSD validation of URIs with ampersands.
  • Fix namespace::node() XPath expression.
  • Fix parsing of NCNames in XPath.
  • Normalize string-based datatype value in RelaxNG facet checking.

XSLT Bug Fixes:

  • date:add(): Keep timezone & fix buffer overflow.
  • Fix saxon:line-number() with namespace nodes.
  • Fix dyn:map() with namespace nodes.
  • Fix error handling in Saxon extension functions.
  • Fix double free in hash functions.
  • Fix multiple possible nil pointer dereferences.
  • Detect attribute sets recursions in more cases.
  • Check name vales for attribute-set elements to avoid an indefinite loop.

XSLT Improvements:

  • Fix xsl:number() lower and upper bound for format token “i”.
  • Fix xsl:number() lower bound for format token “a”.
  • Handle negative xsl:number() values.
  • Round xsl:number() values to nearest integer.
  • Allow {URI}NCName syntax for user parameters.
  • Fix error messages for unsupported methods.

DIXml 5.9.0 – 7 May 2016

  • Support Delphi 10.1 Berlin Win32 and Win64.

DIXml 5.8.0 – 9 Mar 2016

XML Security Fixes:

  • Prevent buffer overead with HTML parser in push mode.
  • Fix memory access error due to incorrect entities boundaries.
  • Avoid internal state error when growing the parser buffer.
  • Use a common function to stop the parser on error more consistently.
  • Fix an entity expansion issue.
  • Avoid heap buffer overflow.
  • Avoid processing entities after encoding conversion failures.
  • Enforce the reader to run in constant memory.
  • Cleanup conditional section error handling.
  • Stop parsing on entities boundaries errors.

XML Bug Fixes:

  • Bug on creating new stream from entity.
  • Do not print error context when there is none.
  • Avoid extra processing of MarkupDecl when EOF.
  • Fix parsing short unclosed comment uninitialized access.
  • Add missing Null check.
  • Fix a bug in CData error handling in the push parser.
  • Fix a bug on name parsing at the end of current input buffer.
  • Fix the spurious ID already defined error.
  • Fix previous change to node sort order.
  • Fix a self assignment issue.
  • Fail parsing early on if encoding conversion failed.
  • Do not process encoding values if the declaration if broken.
  • Make xmlMemUsed and xmlMemBlocks thread-safe.
  • Fix support for except in nameclasses.
  • Fix order of root nodes.
  • Allow attributes on descendant-or-self axis.
  • Fix timsort invariant loop re: Envisage article.
  • Remove various unused value assignments.
  • Revert “Missing initialization for the catalog module”.

XML Improvements:

  • Recover unescaped less-than character in HTML recovery parsing.
  • Allow HTML serializer to output HTML5 DOCTYPE.

XSLT Bug Fixes:

  • Properly initialize EXSLT month and day to 1.
  • Fix various potential nil-pointer dereferences.
  • Fix xsltNumberFormat memory leak.
  • Check that a parent node is an element before dereferencing its namespace to fix type confusion in preprocessing attributes.
  • Check name vales for attribute-set elements and recursion.

XSLT Improvements:

  • Use hash table to look up named templates. For big XSLTs (>50000 templates), this results in a huge improvement of the compilation time.

DIXml 5.7.2 – 15 Sep 2015

  • Support Delphi 10 Seattle Win32 and Win64.

DIXml 5.7.1 – 25 Apr 2015

  • Add support for Delphi XE8 Win32 and Win64.

DIXml 5.7.0 – 6 Nov 2014

  • Support element node traversal in document fragments.
  • Add missing NULL checks that could cause an AV if a pointer was dereferenced.
  • Correct structured error column when skipping white space and parsing attribute values & end tags.
  • Fix a problem properly saving URIs.
  • Fix Enum check and missing break.
  • Fix possible HTML parser overflow reading the document encoding.
  • Fix memory leak in xmlNanoFTPConnect.
  • Fix parser bug on misformed namespace attributes.
  • Fix parser error on repeated recursive entity expansion containing &lt;.
  • Correctly release Windows Critical sections in xmlRMutexLock and xmlRMutexUnlock.
  • Fix parser memory leak xml reading an encoding header field with XML_PARSE_IGNORE_ENC.
  • Fix XSLT str:align with UTF-8 strings.

DIXml 5.6.0 – 3 Oct 2014

  • Support Delphi XE7 Win32 and Win64.

DIXml 5.5.1 – 4 Aug 2014

  • Backward incompatibility change: Remove the EXSLT str:replace() function. It is broken and can not be fixed with the current design of the library.
  • Add EXSLT math functions math:abs(), math:sqrt(), math:power(), math:log(), math:sin(), math:cos(), math:tan(), math:asin(), math:acos(), math:atan(), math:atan2(), math:exp().
  • Fix nearly 100 bugs in XML, XSLT and EXSLT.
  • Documentation improvements.

DIXml 5.5.0 – 28 Apr 2014

  • Support Delphi XE6 Win32 and Win64.
  • Mark xmlXPathEvalExpression as deprecated in favor of xmlXPathEval.
  • Add XPath to DIXml_Canonicalization demo.
  • Improve XPath documentation.

DIXml 5.0.1 – 7 Apr 2014

  • Fix interface of xmlC14NDocSaveTo, xmlC14NDocDumpMemory, xmlC14NDocSave, and xmlC14NExecute. They all used xmlCharPtr where xmlChar_ptr_array_ptr was required.
  • Fix interface of htmlNodeDumpOutput and htmlNodeDumpFormatOutput. They both used xmlDocPtr where xmlNodePtr was required.
  • New DIXmlUtils unit with various utility functions.
  • Add new DIXml_Canonicalization demo.
  • Largely extend and improve documentation.

DIXml 5.0.0 – 25 Sep 2013

  • Support Delphi XE5 Win32 and Win64.

DIXml 4.5.0 – 14 Jun 2013

  • Support Delphi XE4 Win32 and Win64.

DIXml 4.0.2 – 23 Apr 2013

  • Add xmlXPathSetContextNode and xmlXPathNodeEval. They make it easier to evaluate XPath expressions with a context node other than the document root without poking about inside the internals of the context.
  • Do not URI escape server side includes when dumping an HTML attribute.
  • Fix an error in xmlCleanupParser.
  • Improve the hashing functions.
  • Improve handling of xmlStopParser: Add XML_ERR_USER_STOP error code and try to stop parsing as quickly as possible.
  • Remove risk of lockup if xmlInitializeDict was called by two threads concurrently. Initialization is now automatic and xmlInitializeDict deprecated.
  • Activate detection of encoding in external subset.
  • Fix an output buffer flushing conversion bug.
  • Fix an old bug in xmlSchemaValidateOneElement.
  • Fix schema validation in combination with xsi:nil.
  • xmlCtxtReadFile now works with literal IPv6 URLs.
  • Detect excessive entities expansion upon replacement. If entities expansion in the XML parser is asked for, it is possble to craft relatively small input document leading to excessive on-the-fly content generation. Now account for those replacement and stop parsing after a given threshold. It can be bypassed as usual with the XML_PARSE_HUGE parser option.
  • Fix the flushing out of raw buffers on encoding conversions.
  • Fix some buffer conversion issues.
  • When calling xmlNodeDump make sure the buffer grows quickly using a double-it scheme.
  • Try IBM-037 when looking for EBCDIC character encoding handlers.
  • Fix potential out of bound access parsing attribute values.
  • Fix large parse of file from memory.
  • Fix a bug in the XML_PARSE_NSCLEAN option of the parser.
  • Fix a regression breaking validation while streaming.
  • Cache presence of '<' in entities content.
  • Avoid extra processing on entities: If an entity has already been checked for correctness do not check it again on every reference.

DIXml 4.0.1 – 14 Dec 2012

XML Bug Fixes

  • Fix a regression in breaking validation while streaming.
  • Fix a bug in the nsclean option of the parser.
  • Fix large parse of file from memory.
  • Fix potential parser out of bound access.
  • Try IBM-037 when looking for EBCDIC handlers.

XSLT Bug Fixes

  • Fix generate-id() to avoid generating the same ID.
  • Fix crash with empty xsl:key/@match attribute.
  • Crash when passing an uninitialized variable to document().
  • Fix regression: Default namespace not correctly used.

DIXml 4.0.0 – 4 Oct 2012

  • Support Delphi XE3 Win32 and Win64.

XML New Features

  • A few new API entry points,
  • More resilient push parser mode.
  • Faster XPath evaluation

XML Improvements

  • Allow to set the quoting character of an xmlTextWriter.
  • Keep non-significant blanks node in HTML parser.
  • Add a forbidden variable error number and message to XPath.
  • Support long path names on WNT.
  • Improve HTML escaping of attribute on output.
  • Switching XPath node sorting to Timsort.
  • Optimizing '//' in XPath expressions.
  • Expose xmlBufShrink in the public tree API.
  • Visible HTML elements close the head tag.
  • Fix file and line report for XSD SAX and reader streaming validation.
  • Fix const qualifyer to definition of xmlBufferDetach.
  • Add support for big line numbers in error reporting.
  • Deprecate xmlBuffer for serialization and use the new xmlBuf instead.
  • Improve compatibility between xmlBuf and xmlBuffer.
  • New xmlOutputBuffer accessors xmlOutputBufferGetContent and xmlOutputBufferGetSize.
  • Improvements for old buffer compatibility.
  • Improve error reporting on parser errors.
  • Implement some default limits in the XPath module.
  • Introduce some default parser limits.
  • Cleanups and new limit APIs for dictionaries.
  • Cleanup URI module memory allocation code.
  • Impose a reasonable limit on PI size.
  • Avoid quadratic behaviour in some push parsing cases.
  • Impose a reasonable limit on comment size.
  • Impose a reasonable limit on attribute size.
  • Cleanup function xmlBufResetInput.
  • xmlTextReader bails too quickly on error.
  • Use a hybrid allocation scheme in xmlNodeSetContent.
  • Use buffers when constructing string node lists.
  • Add HTML parser support for HTML5 meta charset encoding declaration.
  • Wrong message for double hyphen in comment XML error.
  • Add function xmlTextReaderRelaxNGValidateCtxt.
  • Add hash randomization to hash and dict structures.
  • Improve the error report on undefined REFs.
  • Add exception for new W3C PI xml-model.
  • Add options to ignore the internal encoding.

XML Bug Fixes

  • Change the XPath code to percolate allocation errors.
  • Fix reuse of xmlInitParser.
  • Fix potential crash on entities errors.
  • Fix the XPath arity check to also check the XPath stack limits.
  • Fix problem with specific and generic error handlers.
  • Avoid a potential infinite recursion.
  • Fix an XSD error when generating internal automata.
  • Patch for xinclude of text using multibyte characters.
  • Fix a segfault on XSD validation on pattern error.
  • Add a missing element check.
  • Adding various checks on node type though the API.
  • Namespace nodes can't be unlinked with xmlUnlinkNode.
  • Fix make dist to include new private header files.
  • More fixups on the push parser behaviour.
  • Strengthen behaviour of the push parser in problematic situations.
  • Enforce XML_PARSER_EOF state handling through the parser.
  • Fixup limits parser.
  • Do not fetch external parsed entities.
  • Fix entities local buffers size problems.
  • Fix parser local buffers size problems.
  • Fix a failure to report xmlreader parsing failures.
  • Fix a race in xmlNewInputStream.
  • Fix weird streaming RelaxNG errors.
  • HTML parser error with <noscript> in the <head>.
  • XSD: optional element in complex type extension.
  • Fix HTML serialization error and htmlSetMetaEncoding.
  • xinclude with parse=“text” does not use the entity loader.
  • Allow to parse 1 byte HTML files.
  • Patch that fixes the skipping of the HTML_PARSE_NOIMPLIED flag.
  • Avoid memory leak if xmlParserInputBufferCreateIO fails.
  • Prevent an infinite loop when dumping a node with encoding problems.
  • HTML element position is not detected propperly.
  • Fix a problem with entities in SAX mode.
  • Fix SAX2 builder in case of undefined attributes namespace.
  • Fix SAX2 builder in case of undefined element namespaces.
  • Fix a pair of possible out of array char references.
  • Fix an allocation error when copying entities.
  • Make sure the parser returns when getting a Stop order.
  • Fix some potential problems on reallocation failures.
  • Fix a schema type duration comparison overflow.
  • Fix an unimplemented part in RNG value validation.
  • Fix missing error status in XPath evaluation and harden XPath evaluation.
  • Fix an off by one error in encoding.
  • Fix RELAX NG include bug.
  • Fix XSD validation bug..
  • Fix some potential problems on reallocation failures.
  • Fix use of the structured callback channel and its data initialization.
  • Fix memory corruption when parsing a balanced chunk.
  • Fix a potential freeing error in XPath.
  • Fix a potential memory access error.

XSLT Improvements

  • Add the saxon:systemId extension.
  • Add an append mode to document output.
  • Allow per-context override of xsltMaxDepth, introduce xsltMaxVars.
  • Precompile patterns in xsl:number.

XSLT Bug fixes

  • Report errors on variable use in key.
  • Fix handling of names in xsl:attribute.
  • Reserved namespaces in xsl:element and xsl:attribute.
  • Null-terminate result string of cry:rc4_decrypt.
  • EXSLT date normalization fix.
  • Exit after compilation of invalid func:result.
  • Fix for EXSLT func:function.
  • Rewrite EXSLT string:replace to be conformant.
  • Avoid a heap use after free error.
  • Fix a dictionary string usage.
  • Output should not include extraneous newlines when indent is off.
  • document('') fails to return stylesheets parsed from memory.
  • Forwards-compatible processing of unknown top level elements.
  • Fix system-property with unknown namespace.
  • Hardening of code checking node types in EXSLT.
  • Hardening of code checking node types in various entry point.
  • Fix default template processing on namespace nodes.
  • Fix a bug in selecting XSLT elements.
  • Fix some case of pattern parsing errors.
  • Fix a memory leak with xsl:number.
  • Fix a problem with ESXLT date:add.
  • Fix a memory leak if compiled with Windows locale support.
  • Fix generate-id.
  • Fix curlies support in literals for non-compiled AVTs.
  • Allow whitespace in xsl:variable with select.
  • Small fixes to locale code.
  • Fix popping of vars.
  • Fix direct pattern matching bug.

DIXml 3.1.0 – 22 Dec 2011

  • Support Delphi XE2 Win64.

DIXml 3.0.0 – 15 Oct 2011

  • Support Delphi XE2 Win32.
  • Enable XSLT debugger (xsltSetDebuggerStatus, xsltSetDebuggerCallbacks): See DIXml_XSLT_Tutorial demo for an example implementation.

DIXml 2.2.1 – 3 Mar 2011

  • Enable locale support so that Windows API string comparison functions may be used for XSLT sorting if available.
  • Various XSLT fixes and improvements.
  • Add an HTML parser option to avoid a default doctype.
  • Disable an over-optimization which caused an AV when processing floating point numbers.
  • Fix potential memory leak in XPath
  • Fix potential memory curruption in XML parser and XPath.
  • Various other fixes for XPath, HTML parser, iso995 encoding, and more.

DIXml 2.2.0 – 28 Sep 2010

  • Delphi XE support.
  • Some additions and corrections to demos projects and help.

DIXml 2.1.2 – 27 Mar 2010

  • Fix broken escape behaviour in regexp ranges.
  • ChunkParser: Incorrect decoding of small xml files.
  • Fixed HTML encoding detection.
  • Fix encoding selection for xmlParseInNodeContext.
  • Fix xmlPreviousElementSibling mistake.
  • Fix xmlParseInNodeContext for HTML content.
  • Fix lost namespace when copying node.
  • Recognize ID attribute in HTML without DOCTYPE.
  • Fix memory leak in xmlXPathEvalExpression.
  • Don't give default HTML boolean attribute values in parser.
  • xmlCtxtResetLastError should reset ctxt-errNo.
  • Completely revised the help generator to ease navigation and improve readability. Send your feedback!

DIXml 2.1.1 – 16 Oct 2009

  • Switch parser to XML-1.0 5th edition, add parsing flag XML_PARSE_OLD10 for old versions.
  • Switch URI parsing to RFC 3986.
  • Improve handling of misplaced html/head/body in HTML parser.
  • Improve xmlSave…() functions to handle HTML documents and trees.
  • Performance improvements, for example when the encoder can not serialize characters on output.
  • Numerous bug fixes: Realloc problems, potential double frees, and access violations.

DIXml 2.1.0 – 12 Sep 2009

  • Delphi 2010 support.
  • Improvements and bug fixes to the demo projects.

DIXml 2.0.0 – 22 Nov 2008

  • Delphi 2009 support.

DIXml 1.0.1 – 14 May 2008

XSLT bug fixes:

  • Pattern compilation.
  • Key initialization.
  • Processing of top level elements of stylesheets which are not in the XSLT namespace and are not an extension either.

DIXml 1.0 – 11 Apr 2008

  • Fix several bugs and potential memory leaks, including a missing check in UTF-8 decoding.
  • Improved HTML parsing.
  • First sketch of new DIXmlConverters unit with additional conversion functions based on the DIConverters] library.
  • Better demo projects: Several problems corrected, better code documentation.

DIXml 1.0 Beta 8 – 2 Dec 2007

  • Build libxml with LIBXML_THREAD_ENABLED defined.
  • Add interface for thread handling.
  • Add interface for global variables and thread handling of those variables.

DIXml 1.0 Beta 7 – 20 Nov 2007

  • Add XSLT documents and variables APIs.
  • Further API improvements, fixes, and documentations.
  • Add to all demo projects proper initialize and finalize code for global XML and XSLT variables.
  • Add character encoding options to DIXml_XSLT_Browser demo.
  • New DIXml_xmlOuputBuffer_WideString demo project to demonstrate how to use the xmlOutputBuffer API interface to serialize an XML document straight into a Delphi WideString.
  • New DIXml_XSLT_WideString demo project to show XSLT transformation with optimized WideString document loading and saving.

DIXml 1.0 Beta 6 – 6 Nov 2007

  • Do not crash xmlMemFree() when passing a nil pointer.
  • Fix XML saving to avoid a crash when dumping an attribute from an XHTML document.
  • Enhance nanohttp to include port number (if not = 80) on the “Header:” URL
  • Fix a regular expression range bug and correct a typo which resulted in a warning.
  • Fix EXSLT extension week-in-year result which did not conform to the specification.
  • Remove some unused code. This slightly decreases the library size.
  • Add schema validation demo based on xmlTextReader.

DIXml 1.0 Beta 5 – 29 Oct 2007

  • Fix internal library string to floating point conversion which surfaced when testing the XML schema validation.

DIXml 1.0 Beta 4 – 29 Oct 2007

  • Add XML schema validation interfaces and demo.

DIXml 1.0 Beta 3 – 6 Sep 2007

  • XML fixes (libxml 2.6.30):
    • Windows path handling.
    • xmlXPathNodeSetSort problem.
    • leak when reusing a writer for a new document.
    • Schemas xsi:nil handling patch.
    • relative URI build problem.
    • crash in xmlDocFormatDump.
    • invalid char in comment detection bug.
    • disparity with xmlSAXUserParseMemory.
    • automata generation for complex regexp counts problems.
    • Schemas IDC import problems.
    • xpath predicate evailation error handling.
  • XSLT fixes (libxslt 1.1.22):
    • RVT cleanup problems
    • exclude-result-prefix bug
    • stylesheet compilation error handling
  • Interface the global variables xmlTreeIndentString and xmlSaveNoEmptyTags.
  • New NameSpace demo project.

DIXml 1.0 Beta 2 – 20 Jun 2007

  • Update embedded libxml2 to version 2.6.29 and libxslt to version 1.1.21.
  • Add HTTP and FTP input/output support.
  • Add interface for canonicalization (xmlC14N… functions and procedures).
  • Add interface for catalog (xmlCatalog… functions and procedures).
  • Add interface for HTML tree output (various html… functions and procedures).
  • Add interface for lists (xmlList… functions and procedures).
  • Add interface for SAX (deprecated, legacy only).
  • Add interface for SAX2 (xmlSAX2… functions and procedures).
  • Add interface for Schematron (xmlSchematron… functions and procedures).
  • Add interface for Save (xmlSave… functions and procedures).
  • Add interface for XPointer (xmlXPtr … functions and procedures).
  • Add interface for Unicode character classes (xmlUCSIs… functions).
  • Add other interface parts, plus a few fixes.
  • Fix: Unrecognized end of file could result in endless loop.
  • Documentation updates.

DIXml 1.0 Beta 1 – 23 May 2007

  • First public release.
products/xml/history.txt · Last modified: 2022/10/29 16:50 by