Release Highlights
------------------
This is basically a stabilization of 0.43, although it adds a new selector to
NSAC: SAC_SCOPE_SELECTOR, intended to be used at selectors like 'has(>p)'. Also
introduces a new ExtendedCSSPrimitiveValue in CSS Object Model, while the method
writeCssText(SimpleWriter) is removed from CSSPrimitiveValue2 (it is available
through ExtendedCSSPrimitiveValue). The idea is that interfaces ending with '2'
should only contain essential methods, and 'writeCssText' is useful but nowhere
near being a requirement.
Other than that, there are quite a few bug fixes; all users are encouraged to
upgrade.
Release Highlights (0.43)
-------------------------
A new STRICT compliance mode was introduced, (basically like the 'standards'
mode). Now there are QUIRKS and STRICT. LENIENT was removed as it was mixing
different things. Now compliance modes are automatic, instead of being set at
the factory's instantiation.
Three new NSAC parser flags were added, to provide compatibility with IE hacks:
* IEVALUES supports values ending with \9 or \0, as well as progid filters and
IE expressions that were unconditionally accepted in prior versions.
* IEPRIO allows values ending with the '!ie' priority hack (and puts them into
SAC_COMPAT_IDENT compatibility values).
* IEPRIOCHAR accepts values with an '!important!' priority, and sets it to
SAC_COMPAT_PRIO pseudo-values. Those values must be handled as of !important
priority.
The object model manages these compatibility values in parallel to standard
ones. For example, after parsing this declaration:
width: 900px; width: 890px\9;
its serialization will be (if the flag was set correctly):
width: 900px; width: 890px\9;
but the declaration's length shall be only 1. And computed styles only use the
standard values unless there are no alternatives (no standard value was set).
The workings are similar for:
width: 890px!ie;
width: 890px!important!;
with the last one being handled as of important priority. SAC_COMPAT_PRIO values
are never used in computed styles.
Upgrading from 0.42.x
---------------------
If you were using the LENIENT mode, to get a similar behaviour you need to
instantiate a factory with the Parser2.Flag.STARHACK and possibly Flag.IEVALUES.
If you used the old QUIRKS mode, the equivalent would be to set the factory to
setLenientSystemValues(false). Now lenient system values are decoupled from the
other setup tweaks.
To support progid filters and IE expressions, you need to set the IEVALUES flag
when creating the factory (or the NSAC parser).
There are other changes that could affect users, but dealing with them should
be easy. If you experience any problem upgrading, please use the css4j forum.