- Version 1.9.19 (9 Oct 2013)
handle Unicode supplementary character (#3609978, patch from Dan Rabe),
LABEL to inline element (#152),
fixed resource leak (#151).
- Version 1.9.18 (27 Feb 2013)
P (#3595486, patch from Ahmed Ashour),
accept more characters as attribute names (like "?" or ";").
- Version 1.9.17 (5 Nov 2012)
- Don't rely on default locale for lowercase/uppercase conversion of tag and attribute names (#3544334, based on patch provided by Ronald Brill),
FRAMESET (fix StackOverflowError #3555034),
FRAMESET when missing,
recognize encoding specified in
fix StackOverflowError occurring with content after closing
BODY tag with feature
http://cyberneko.org/html/features/balance-tags/ignore-outside-content set to
TABLE doesn't close inline elements anymore (#3527659, reverting fix for #2019307).
- Version 1.9.16 (18 Jul 2012)
Add new feature
http://cyberneko.org/html/features/scanner/allow-selfclosing-tags to allow self closing tags (e.g.
<DIV>) (default is false) (#3519597, patch provided by Ronald Brill),
allow block elements within
BUTTON (#3524099, patch provided by Ronald Brill).
- Version 1.9.15 (3 Aug 2011)
Avoid using a synchronized structure (here java.util.Properties) to store built-in entities that are loaded at startup (#3001745),
INS to inline element,
BUTTON to inline element.
don't parse body of
add new feature
http://cyberneko.org/html/features/scanner/allow-selfclosing-iframe to allow empty
IFRAME tags (default is false),
make detected encoding available as Locator2.getEncoding() (#3381270).
- Version 1.9.14 (2 Feb 2010)
Don't parse body of
NOFRAMES (fixes StackOverflowError reported in #2854697),
TABLE can have multiple
TFOOT (patch provided by Ahmed Ashour, #2893796),
trim encoding found in
meta tag (#2904817),
fix ArrayIndexOutOfBoundException on empty attribute when using feature
recognize tags even if the
> of the opening tag is missing (#2886227),
TABLE can close a table (#2913095),
fix StackOverflowError when parsing document fragment (#2911449),
fix NullPointerException occurring with the
insert-namespaces feature (#2942363).
- Version 1.9.13 (2 Sept 2009)
A tag should close opened
A tag (fixes OutOfMemoryException reported in #2780607),
not all entities with missing semicolon should be recognized as entities (different browsers behave differently therefore
until we have something like "browser profiles", NekoHTML will only recognized incomplete entities with code less than 256),
TR nested directly within
TH are container and should force closing of nested tags like
don't generate incorrect warnings about missing closing
HTML tags when feature
http://cyberneko.org/html/features/balance-tags/ignore-outside-content is off,
don't generate opening
SELECT tag when it's missing (therefore discard child nodes),
added experimental tag balancer property
http://cyberneko.org/html/properties/balance-tags/fragment-context-stack allowing to to specify the current tag stack when evaluating a new input source during parsing,
ignore whitespaces that are direct children of
org.cyberneko.html.filters.Writer wrongly changes attribute value of some
META tags (#2815779),
http://www.w3.org/1999/xhtml namespace for automatically inserted tags (#2799585),
DOMFragmentParser ignores invalid processing instruction and attribute name (#2828553, #2828534),
define latest Xerces version (2.9.1) as dependency in the published Maven POM,
end of parent element forces closing of unknown elements (#2816091),
handle new lines directly in HTMLScanner.scanCharacters to avoid multiple calls (patch provided by Sean Bridges, #2829319),
fix ArrayIndexOutOfBoundsException occurring using
strip-comment-delims feature (#2837555).
- Version 1.9.12 (20 Apr 2009)
- fixed NPE when parsing from a Character stream (patch provided by Ludger B�nger, #2503982),
when closing comment --> is missing, comment ends with > (patch provided by Tatsuhiko Miyabe, #2552096),
don't treat tags with non-HTML namespace like HTML tags (patch provided by Tatsuhiko Miyabe, #2551958),
force creation of BODY rather than of HEAD for unknown tags,
fix incorrect HTMLEventInfo augmentations for script content (patch provided by Louis Ryan, #2236681),
add HEAD and BODY tags when missing (#1898038),
ignore encoding specified in xml declaration if feature
is set to
hold text found before HTML to feed it first once BODY is opened,
when strip-cdata-delims and strip-comment-delims are on, CDATA delimiters should be trimmed even if CDATA is located within a comment (#2671917),
fixed infinite loop while searching end comment signs (patch provided by H. J. Hill, #2671480),
should not strip the whole line after opening delimiter (#2767233).
- Version 1.9.11 (29 Dec 2008)
- fixed regression introduced in 1.9.10 with LI incorrectly closing too much parent nodes,
search for element to close on stack should stop on block node not on container node,
- Version 1.9.10 (22 Dec 2008)
- SELECT wrongly closes (and reopens) inline tags (patch provided by Ahmed Ashour, #2146829),
add character offsets in HTMLEventInfo augmentations (patch provided by Ian Roberts, #2128228),
use encoding provided in XML declaration to decode the stream (#1918243),
recognize entities even if trailing semicolon is missing (patch provided by Tatsuhiko Miyabe, #1981792),
handle P like SPAN and allow it to be contained in A, B, I, U, ... (fixes #2421765),
ignore xml declaration attributes for which no value could be scanned (fixes #2421775).
- Version 1.9.9 (11 Sept 2008)
- Fixed bugs #2059466 and #2051091 (accepting unknown tags within inline elements as well as as containers, don't accept any container in head),
#2039483 (wrong augmentation when attribute value contains a newline, patch from Ian Roberts),
#2039915 (failed skip() does not back up columnNumber, patch from Ian Roberts),
added new feature
http://cyberneko.org/html/features/parse-noscript-content to turn off <noscript> content parsing,
#2094515 FONT tag should be considered like inline tags and reopened when closing was forced by an inline element to respect tag balancing.
- Version 1.9.8 (22 Jul 2008)
- Fixed bugs #1949460 (handling of uppercase 'X' for entities in hexadecimal format),
#1951703 (isEncodingCompatible throws UnsupportedOperationException when default encoding is JISAutoDetect, patch from Tatsuhiko Miyabe),
#1990307 (evaluateInputSource parses only partially, patch from kkolman),
ignore self closing tags for tags that accept a body (generalisation of what was done in 1.9.7 with the FORM tag),
unknown tags can't be container,
improved parsing of script body (comments and tags),
#2019307 (table closes inline elements),
#1903899 (ErrorHandlerWrapper missing in xercesMinimal.jar).
- Version 1.9.7 (5 Apr 2008)
- Call methods that differ between Xerces versions using a bridge pro Xerces version rather than reflection.
ignore closing instruction in <form .../>,
fixed issues 1922810, 1927966, 1926831 (thanks to Ahmed Ashour)
- Version 220.127.116.11 (17 Mar 2008)
- Accept comments and tags in <title> element as browsers do (patch provided by Ahmed Ashour, issue 1879598),
discard form opening tag when it is within an other form,
added experimental possibility to immediately evaluate a new input source during parsing
(patch provided by Ahmed Ashour, issue 1895946).
added experimental interface to enable handlers to be notified of ignored opening and closing tags.
Finally fix compatibility with Java 1.3.
- Version 18.104.22.168 (23 Jan 2008)
- Fixed charset regression reported by Marc Guillemot.
- Version 1.9.6 (14 Dec 2007)
- Changed license to Apache 2.0;
boosted the version number to reflect the maturity of the project;
re-organized project files to decouple it from the rest of the
CyberNeko Tools for XNI;
updated xercesMinimal.jar and source so that NekoHTML compiles using
changed default behavior to not normalize attribute values
and added new feature to allow user to turn on normalization;
modified build to target compilation for Java 1.3 as suggested by
adjusted <p> tag-balancing suggested by Jacob Kjome;
fixed issues 1723287, 1746732, and 1790414.
- Version 0.9.5 (18 Jun 2005)
- Added feature submitted by Asgeir Asgeirsson to allow scanner to fix
character entity references for Microsoft Windows® characters;
stopped building nekohtmlXni.jar file by default;
fixed handling of <blockquote> reported by Joseph Walton
to better match browser behavior;
fixed tag-balancing bug for unknown elements reported by Marc
Guillemot and Vadim Tashlikovich;
fixed mapping of encoding name in
reported by Marc Guillemot;
changed tag-balancing to allow headers inside of links suggested
by Laurens Fridael;
applied attribute namespace patch from Joseph Walton;
fixed namespace bug for "xml" prefixes reported by Asgeir
fixed namespace bug for "xmlns" prefixes reported by
fixed no-such-method exception bug when using augmentations feature
with older versions of Xerces2 reported by Hans Donner.
- Version 0.9.4 (17 Nov 2004)
- Fixed typo in proviso 5 of the license agreement;
added features to strip CDATA delimiters (i.e. "<![CDATA[" and
"]]>") from <script> and <style> elements suggested by Dan Sojka;
fixed tag-balancing problem reported by Egor Samarkhanov;
applied augmentations patches donated by Marc-Andr� Morissette;
implemented augmentation performance enhancements inspired by
fixed ignore-outside-content bug reported by Chris Erskine;
updated link to Xerces download site.
- Version 0.9.3 (30 Jun 2004)
- Implemented scanning of XML declaration;
fixed <script> tag scanning bug reported by Vasiliev Ivan;
Version class and manifest entries to query
and fixed some Javadoc errors.
- Version 0.9.2 (31 Mar 2004)
- Fixed entity reference scanning and tag-balancing bugs identified
by Tommy Sandstrom;
fixed tag-balancing bug reported by Oliver Pfeiffer;
fixed doctype scanning bug reported by Jonathan Baxter;
updated Purifier filter to synthesize missing namespace bindings;
updated Writer filter to convert all known characters back to
their entity names;
updated implementation to work with Xerces-J 2.6.2 that removed
ObjectFactory class in the
- Version 0.9.1 (24 Feb 2004)
- Fixed namespace binding bug reported by Jonathan Baxter.
- Version 0.9 (19 Feb 2004)
- Implemented scanning of CDATA sections;
implemented namespace processing;
added features to
override namespace bindings,
insert namespace bindings if not present,
override doctype public and system identifiers, and
insert doctype declaration if not present;
added a filter to allow applications to "purify" the input, ensuring
that the output is well-formed XML;
added missing location augmentations from document type declaration
fixed newline scanning bugs reported by Jonathan Baxter;
fixed comment scanning bugs and infinite loop bug caused by extremely
long element and attribute names found by Ram Subbaroyan.
- Version 0.8.3 (12 Dec 2003)
- Fixed null pointer exception for <frameset> tags reported by
added missing file to xercesMinimal.jar file reported by Brent Beardsley.
- Version 0.8.2 (14 Nov 2003)
- Fixed array index out of bounds exception in special tags and
doctype scanning bug reported by Leo Galambos;
updated processing instruction scanning to handle weird PIs exported
from Microsoft products as reported by Gabriele Bulfon;
fixed erroneous reporting of missing whitespace before attributes
reported by Arno Schatz;
installed a default error handler that prints to standard error
suggested by Arno Schatz;
fixed handling of dangling </p> reported by Gopi Murthy to
better match browser behavior.
- Version 0.8.1 (30 Sep 2003)
- Fixed bug reported by Yuan Ji that allowed multiple <html> tags;
fixed bug in stripping leading comments in <script> tags
as reported by Lawrence McCartin;
added feature to be able to strip HTML comment delimiters (i.e. "<!--"
and "-->") from <style> element content suggested by
updated DOMParser to work around a bug in the Xerces HTML DOM
implementation when a doctype node was inserted into the document,
reported by Troy Waldrep;
updated the DOMFragmentParser to allow setting of features and
properties as requested by Paul Reeves;
changed the status of the document fragment parser from experimental
added feature to allow application to ignore a character encoding
specified in a <meta http-equiv='Content-Type'
content='text/html;charset=...'> tag requested by Roger Fullerton;
changed feature identifier for document fragment tag balancing to
be more in line with other features (but retained old feature
identifier for backwards compatibility).
- Version 0.8 (05 Aug 2003)
- Implemented scanning of doctype declaration;
implemented non-normalized attribute value for XNI filters that want
to know original attribute value;
fixed bug scanning entity references inside of unquoted attributes;
fixed line counting bug in attribute values reported by Arno Schatz;
updated files in xercesMinimal.jar noted by Brent Beardsley.
- Version 0.7.7 (25 Jun 2003)
- Fixed handling of <font> tags reported by Dave King;
fixed bugs that caused multiple <head> and <body> tags
as reported by Mike Bowler;
fixed missing <tr> bug in nested tables reported by Troy Waldrep;
normalized newlines in attribute values to spaces.
- Version 0.7.6 (06 May 2003)
- Fixed infinite loop in special tags reported by Mike Bowler.
- Version 0.7.5 (02 May 2003)
- Fixed parsing of entity reference within <textarea> tags reported
by Mattias Jiderhamn;
changed behavior of tag balancer to not consume content after the end
<body> and <html> tags but retained old behavior through
fixed <noscript> bug reported by Takashi Tomokiyo;
updated implementation for XNI changes introduced in Xerces-J 2.4.0.
- Version 0.7.4 (03 Mar 2003)
- Fixed <form> element balancing problem reported by Dan Rocco;
fixed null pointer exception reported by Michael Dynin that was
caused by a null XMLResourceIdentifier object passed to the
startGeneralEntity method in the Xerces DOM parser classes;
fixed handling of <font> element as requested by Arno Schatz
to better match current browsers;
replaced generic catch exception blocks with explicit catch blocks
suggested by Arno Schatz;
fixed <center> tag-balancing problem reported by Russell Gold;
fixed null pointer exception caused by null namespace context
object passed to Xerces SAX parser class reported by David Leslie;
added FAQ entry describing how to insert custom filters before
- Version 0.7.3 (28 Jan 2003)
- Updated implementation for XNI changes introduced in Xerces-J 2.3.0;
fixed hack string to accommodate XML4J build of Xerces included in
the Eclipse editor reported by Geoffrey Longman.
- Version 0.7.2 (10 Jan 2003)
- Fixed class-cast exception bug in DOMFragmentParser reported by
fixed <span> tag-balancing bug reported by Ron Cemer;
fixed handling of form tags missing a parent element reported by
Russell Gold in order to better match browser behavior.
- Version 0.7.1 (06 Dec 2002)
- Fixed null pointer exception caused by null attributes object
passed to Xerces SAX parser class as reported by Kevin Huber;
fixed infinite loop condition when encountering "</html[eof]"
as reported by Matt Hurst.
- Version 0.7 (27 Nov 2002)
- Changed behavior of tag balancer for unbalanced elements
as requested by Troy Waldrep to make output match that
produced by browsers such as Mozilla;
fixed other tag balancing problems identified by a bug
reported by Laurens Fridael;
added experimental HTML fragment
parsing feature and DOM fragment parser class;
fixed buffer boundary bug in skipMarkup method reported
by Mike Bowler;
added constructor to the Writer filter that accepts a
Java writer object parameter as requested by Alain
fixed HTMLScanner class so that it can compile with JDK 1.1
as reported by Mikko Honkala;
fixed bug reported by Russell Gold that would ignore
the <param> element within an <applet>
- Version 0.6.8 (30 Sep 2002)
- Implemented scanning of processing instructions;
improved performance of HTMLElements#getElement method inspired
by Sam Cheung;
changed tag balancer algorithm as requested by Mike Bowler so
that it does not close the <body> element to insert a
proper parent element;
fixed <isindex> proper parent bug and <script> empty
element tag bug reported by Mike Bowler;
fixed bug reported by YingLCS that a <form> tag
would prematurely close a <p> tag;
updated implementation for XNI changes introduced in Xerces-J 2.2.0.
- Version 0.6.7 (06 Sep 2002)
- Added a FAQ section;
updated implementation for XNI changes introduced in Xerces-J 2.1.0.
- Version 0.6.6 (25 Aug 2002)
- Changed packaging to include product name and version in
HTMLConfiguration to implement the
fixed bug reported by Martin Jericho to correct handling
of <col> element;
fixed bug reported by Dave King that would skip to end of
document if bad markup was found;
fixed numerous bugs related to scanning <script> tags
reported by Sam Cheung;
added feature to be able to strip HTML comment delimiters (i.e.
"<!--" and "-->") from <script> element content;
changed the status of the feature to dynamically insert
content from experimental to
added code to be able to compare test files against canonical
output for regression testing;
fixed minor bugs found by the tests.
- Version 0.6.5 (17 Jul 2002)
- Fixed bug in changing character encoding when "charset=..." is
not written in lowercase;
mark attributes as "specified".
- Version 0.6.4 (15 Jun 2002)
- Re-organized package contents for integration into the CyberNeko
Tools for XNI package;
fixed table closing bug reported by Oskar Liljeblad;
fixed newline bug reported by OtisG;
fixed line counting bug reported by Donald Ball.
- Version 0.6.3 (29 May 2002)
- Fixed bug in handling of <th> elements reported by
fixed various tag-balancing problems.
- Version 0.6.2 (26 May 2002)
- Changed scanner behavior as requested by Alexey Shananin to
report malformed start elements (e.g. <...>) as
fixed tag balancing bug introduced in previous version. Oops!
- Version 0.6.1 (23 May 2002)
- Changed tag balancer behavior to swallow events after the close
of the <html> tag to ensure that the document stream
added additional Ruby elements;
improved tag balancer performance.
- Version 0.6 (12 May 2002)
- Added property to allow custom document filters to be appended
to the default NekoHTML parser pipeline;
added convenience filters for serializing HTML documents and
removing elements from the document event stream;
added samples to demonstrate the filtering feature;
added experimental functionality to
allow applications to dynamically insert content into the
HTML document stream;
added a minimal Xerces2 Jar file containing just the files
required for using the HTMLConfiguration class directly to
alleviate full dependence on Xerces2 distribution;
applied patch from Serge Proskuryakov to fix handling of
misplaced <title> within <body>;
fixed minor tag balancing bug;
re-organized and added new documentation.
- Version 0.5 (07 May 2002)
- Fixed some location reporting information bugs and added
feature to report character boundaries of events via the
associated augmentations object;
added feature to disable tag balancing;
added features to notify handlers of start and end of character
and built-in XML and HTML entity references.
- Version 0.4.1 (03 May 2002)
- Fixed some unquoted attribute value scanning bugs reported
by Xiaowei Jiang;
fixed hack for Xerces-J 2.0.1 reported by Ron Cemer;
now passing locator object to
celebrated opening of the Spider-Man movie.
- Version 0.4 (14 Apr 2002)
- Added properties to control case of element and attribute names;
changed behavior of parser so that only known HTML elements
have their names modified according to the properties — all
unknown tags are left as-is;
added property to set default encoding;
added feature to augment infoset to report "synthesized" events;
added feature to be able to report errors and localized the error
implemented the locator so that location information can be
fixed element information so that more elements are properly
scanned as "special".
- Version 0.3.3 (02 Apr 2002)
- Separated META-INF/services/* files to separate Jar
so that HTML parser configuration selection can be controlled
more explicitly; added DOM and SAX parser classes for
convenience; and fixed bug so that parser now obeys the
encoding specified in the input source.
- Version 0.3.2 (15 Mar 2002)
- Fixed problem with bare <input> elements appearing outside
of <form> tag.
- Version 0.3.1 (07 Mar 2002)
- Fixed handling of bare ampersands in content and attribute
- Version 0.3 (25 Feb 2002)
- Changed license to an Apache style license and fixed a
- Version 0.2.3 (19 Feb 2002)
- Nested tables bug fix.
- Version 0.2.2 (17 Feb 2002)
- More bug fixes to allow the parser to be used with Xalan
2.3.0. The parser wasn't keeping track of features and
properties and without namespaces turned on, Xalan would
not correctly transform the SAX events emitted using
- Version 0.2.1 (16 Feb 2002)
- Minor bug fix to work around problem in Xerces-J 2.0.0 SAX
parser that drops attributes when parser configuration
doesn't have a symbol table.
- Version 0.2 (14 Feb 2002)
- Adding support for UTF-8, UTF-16, and other 8-bit encodings
supported by Java.
- Version 0.1 (04 Feb 2002)
- Initial writing.
(C) Copyright 2002-2009, Andy Clark, Marc Guillemot. All rights reserved.