Yunqa • The Delphi Inspiration

Delphi Components and Applications

User Tools

Site Tools


products:xml:history

Table of Contents

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.3.0 – 8 Dec 2023

Update libxml2 to version v2.12.2:

  • Parser: Fix invalid free in xmlParseBalancedChunkMemoryRecover.
  • Parser: Make CRLF increment line number
  • HTML Parser: Switch to UTF-8 if a document starts with '<?xm' to match long-standing behavior. In most cases, a document starting with an XML declaration will specify UTF-8.
  • Tree: Fix regression when copying DTDs.

Other improvements:

  • Add the EXSLT crypto module.
  • Correct xmlErrorLevel values.
  • Fix xmlEncodingWrapper encoding to non-UTF-8 encodings, and invalid input.
  • Improve precision of large <xsl:number …> values.
  • Fix EXSLT infinite recursion regression for functions without parameters.

DIXml v6.2.1 – 29 Nov 2023

Update libxml2 to version v2.12.0:

  • Improvements:
    • Fix most known quadratic behavior in the XML parser.
    • Rewrite internal hash tables to reduce memory consumption.
    • When parsing data from memory, stream data chunk by chunk instead of copying the whole buffer (possibly twice with encodings), reducing peak memory consumption considerably.
    • Add xmlCtxtSetMaxAmplification to allow parsing of files that would otherwise trigger the billion laughs protection.
    • Fix several bugs in the regex determinism checks. Invalid XML Schemas which previous versions erroneously accepted will now be rejected.
    • Lots of smaller improvements.
  • Bug fixes:
    • Parser: Stop switching to ISO-8859-1 on encoding errors.
    • Parser: Support encoded external PEs in entity values.
    • Parser: Update line number after coalescing text nodes.
    • Parser: Check for truncated multi-byte sequences.
    • Fix UTF-8 validation in xmlGetUTF8Char.
    • SAX2: Allow multiple top-level elements.

Update libxslt to version v1.1.39:

  • Transform: Check maximum depth when processing default templates.
  • Imports: Limit nesting depth.

DIXml v6.2.0 – 22 Nov 2023

  • Support Delphi 12 Athens Win32 and Win64.

DIXml v6.1.1 – 11 Aug 2023

Update libxml2 to version v2.11.5:

  • Fix parser to always skip the BOM when switching the encoding.
  • Fix wrong parent pointer assignment in xmlCopyDocElementContent.
  • Fix range check error parsing files greater than 2 GB.

DIXml v6.1.0 – 25 May 2023

Update libxml2 to version v2.11.4:

  • Improve protection against entity expansion attacks, also known as “billion laughs”. Heavily nested entities should be detected and false positives reduced. However, it is still possible that large documents which use entities extensively are rejected.
  • Fix several cases of quadratic behavior in the XML push parser.
  • Rework the XInclude engine to support nested includes properly.
  • Fix about 90 memory errors after malloc failures.
  • Deprecate several outdated and internal functions.
  • Many other improvements and bug fixes, such as:
    • No longer use recursion to validate elements.
    • XInclude aborts immediately if it exceeds max depth.
    • Fix handling of URI port numbers.
    • Improve HTML parsing of nested lists.
    • Multiple XML parser improvements.
    • Ensure that error messages are valid UTF-8.
    • XPath number('-') returns NaN.

Update libxslt to version v1.1.38:

  • Fix about 40 memory errors after malloc failures.
  • The result of generate-id() is now deterministic across multiple transformations.
  • Many other improvements and bug fixes, such as:
    • nil pointer dereference.
    • Floating point and integer overflows.
    • Date overflow checks and rounding.

DIXml v6.0.2 – 26 Apr 2023

Update libxml2 to version v2.10.4:

  • Fix non-deterministic hashing of empty dict strings.
  • Fix XML Schema null pointer dereferencing.
  • Fix: SAX2 ignores namespaces in HTML documents.
  • Fix IO “buffer full” error with certain buffer sizes

DIXml v6.0.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.0.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

XML:

  • 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.

XSLT:

  • 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: 2023/12/07 21:25 by 127.0.0.1