=== version history of XML::Compile

Unless noted otherwise, these changes where initiated and applied by
Mark Overmeer.

version 0.72: Tue Mar 25 10:22:39 CET 2008

	Fixes:

	- [Drew Taylor] experienced that 'time' basic type was not
	  implemented.

	- ::Template::anyElement fix [Drew Taylor]

	- timezoneFrag is optional, wrongly implemented in many regexes.

	- ::Template::union incorrectly processed [Drew Taylor]

	Improvements:

	- document that XML::LibXML nodes can be specified on any location
	  for WRITERs. (feature was added in 0.70)

	- document how to handle mixed content.

version 0.71: Tue Mar 18 16:52:34 CET 2008

	Fixes:

	- require Math::BigInt 1.78, to understand 'try'

	- cannot run t/59big tests with BigInt GMP library.

version 0.70: Fri Mar 14 17:35:22 CET 2008

	Fixes:

	- document that ::Schema::compile(check_occurs) default value
	  is true, not false.

	- maxOccurs==0 now works.  Some tools use it, but it is silly.

	- more name-space switches.

	- missed an element component in simpleType facet related error
	  messages.  Spotted by [Allan Wind]

	- die when illegal float value [Sander Hulst]

	- template example for empty complexType incorrect.

	- template example for repeated blocks incorrect.

	- repeated particle blocks within particle blocks caused
	  problems. rt.cpan.org#34079 [Drew Taylor]

	Improvements:

	- minor typos in man-pages [Allan Wind]

	- ::Translate::compileTree() can start with a type.

	- path displayed in error-messages now use @ before attributes,
	  not at()

	- more docs on how substitutionGroups are represented.

	- new option ::Schema::compile(validation), which covers the
	  existing three flags for partial validations.

	- option check_values was not documented in ::Translate

	- template Perl did not use Data::Dumper; don't invoke it.

	- protect difficult characters in perl template keys.

	- The writer now accepts a prepared XML element, not only a HASH
	  or single value, for any simple or complex type element.

	- Math::BigInt uses Math::BigInt::GMP for more performance, if
	  installed.

version 0.69: Tue Feb 12 09:59:30 CET 2008

	Fixes:

	- name-space switch accidentally took 'qualified' on elements
	  to be used for attributes. Detected by [Sander Hulst]

version 0.68: Fri Feb  8 09:32:20 CET 2008

	Fixes:

	- ref element did not switch to settings of destination namespace.
	  Reported by [Sander Hulst]

	- ref attribute idem.

	- ref attributes should lookup namespace in destination schema,
	  not source schema.

	Improvements:

	- added ::Namespaces::printIndex() to list defined toplevel items.

	- XML::Compile::dataToXML() returns information about the source if
	  requested.

version 0.67: Mon Feb  4 09:31:17 CET 2008

	Fixes:

	- use of boolean 0 produced an error. [Allan Wind]
	  tests in t/21types.t

version 0.66: Thu Jan 31 09:32:00 CET 2008

	Fixes:

	- added a few tests to t/48subst.t to prove that min/maxOccurs
	  works with substitutionGroups. Had to remove two error checks.

	- ::Namespaces::findID() failed, because ::Instance::id()
	  was missing. [Philippe B]

	- ignore element when maxOccurs==0 [Allan Wind]

	Improvements:

	- added xml2yaml script, based on code by [Slaven Rezic]

	- XSD search path will split on ';' on Windows.

	- refrased start text of XML::Compile.  Suggested by [Sander Hulst]

	- looking for schema files with XML::Compile::findSchemaFile(),
	  will not check for readability, because using "-r" is useless.
	  So, the existence of the file suffices.

	- describe syntax of repetative substitutionGroups.

	- all errors in ::Schema are either marked in class 'usage', or
	  in class 'schema'.  Errors in other packages still need
	  classification.

	- ::Schema::Instance now reports include and import information.

	- reformulation in "{url}name" explanation, spotted by [Allan Wind]

version 0.65: Wed Jan 16 10:28:53 CET 2008

	Fixes:

	- fix an error "isa on unblessed" in XmlWriter.  An error will
	  be produced when an ARRAY or HASH is found where a simple
	  element value is expected.

	Improvements:

	- support schemas without targetNamespace.  Tests in t/71nons.t.

	- ::Schema::compile(interpret_nillable_as_optional) added, for
	  broken schemas, where people have interpreted the Schema
	  specs wrongly. Reported by [Christian Mueller]

version 0.64: Mon Jan  7 11:49:49 CET 2008

	Fixes:

	- ::BuiltInFacets requires Math::Big{Int,Float}

	- template() made mistake when a prohibited attribute was
	  encountered.

	- empty complexTypes are acceptable. [Kaare Rasmussen]

	- typo: implemented base64binary, but should have been
	  base64Binary.  Detected by [Gert Doering]

	Improvements:

	- perl template output with a long list of sequence element
	  names now split over multiple lines.

	- XML::Compile::Schema now explains how to use xsd files and
	  imports/includes found in them.

version 0.63: Sat Dec 15 15:15:43 CET 2007

	Changes:

	- Require XML::LibXML 1.65, which solves attribute creating
	  issues.

	Fixes:

	- dateTime did not format correctly: missing colon between
	  minute and seconds.

	- example template production failed on explicitly optional
	  attributes and any kind of arrays.  Reported by [Gareth Kirwan]

	Improvements:

	- Added XML::Compile::Util::type_of_node()

	- some error paths are cleaner, but still a few to be improved.

	- ::compile() new option 'ignore_unused_tags", requested by
	  rt.cpan.org#31539 [Slaven Rezic]

version 0.62: Tue Nov 27 12:23:38 CET 2007

	Fixes:

	- Remove requirement for Data::Dump::Streamer.

version 0.61: Tue Nov 27 11:43:08 CET 2007

	Changes:

	- Moved XML::Compile::Dumper from this distribution into
	  its own.

	Fixes:

	- ::compileClient(element_qualified => 'TOP') did remove the
	  existing qualification need.

version 0.60: Sat Nov 24 10:22:53 CET 2007

	Changes:

	- ELEMENT_ORDER hook returns packed types, not nodeName's,
	  because that would include a (non constant) prefix.

	Fixes:

	- ::Util::pack_type() with undef namespace returned undef.

	Improvements:

	- Warn people about out-dated libxml2 when running tests
	  in t/01use.t.  Let's see of CPANTesters like this.

	- when a READER is compiled with C<rpc_hrefs>, then elements
	  may have a href attribute, used for SOAP-RPC encoding.

version 0.59: Thu Nov  8 14:04:44 CET 2007

	Fixes:

	- Schema recursion detected too often.  It had to be based on the
	  schema-node, not the type name (which isn't unique enough)
	  Spotted by [Gert Doering].

version 0.58: Tue Nov  6 12:35:28 CET 2007

	Fixes:

	- could not handle empty sequences.

	- boolean 'true' and 'false' must be decoded into 1 and 0.

	- parsing of boolean was sensitive for blanks.

	- elements_qualified overrule extended too far.

version 0.57: Mon Nov  5 15:53:19 CET 2007

	Fixes:

	- basic schema elements (like SCHEMA2001 int) could not be
	  used as starting point for translation.

	Improvements:

	- XML::Compile::Util now exports some standard name-spaces as
	  symbolic names, like SCHEMA2001.

	- added 2001 XMLSchema instance xsd.

	- XML::Compile::Schema::importDefinitions ignores undef param.

	- compile(output_namespaces) now can be initialized with a
	  simple ARRAY, and explained a little better.

version 0.56: Thu Oct 18 09:25:16 CEST 2007

	Improvements:

	- XML::Compile::Util::pack_type() and ::unpack_type() now
	  understand name-spaceless types.

	- filled-in pre-declared type tables for older schema
	  definitions, but did NOT IMPLEMENT the differences in
	  SCHEMA RULES.  Some initial checks in t/81-2000.t

	- XML::Compile::SOAP::Server split-off from XML::Compile::SOAP;
	  documentation updated to reflect this.

	- added README.todo

	- implemented correct QNAME run-time "{ns}local" to "prefix:local"
	  translator, for writer.  May cause run-time error message.  

version 0.55: Wed Sep 26 10:32:49 CEST 2007

	Changes:

	- split-off the SOAP and WSDL things into a separate
	  XML::Compile::SOAP distribution, because they need more
	  complex dependencies and need more releases in the near
	  future.

	- install xsd's automatically in XML/Compile/xsd/
	  (XML::Compile::SOAP's xsd-files are in XML/Compile/SOAP/xsd/)

	Improvements:

	- added display of XML::LibXML version to t/01use.t

	- accept recursive schema's.  Reported by [Scott Peimann]
	  tests in t/62recurse.t

	- old bug in XML::LibXML shows up in its 1.64 release in combination
	  with the XML::Compile test-set.  XML::LibXML 1.65 contains the
	  patch.

	- skip t/pod.t when manuals are still in OODoc format.

	- XML::Compile::addSchemaDirs() effects are now global.

	- XML::Compile::knownNamespaces() can be used to define own
	  files for name-spaces, also global.

version 0.54: Fri Sep 14 15:35:53 CEST 2007

	Fixes:

	- XmlReader::block_handler called "last", where "return" was
	  ment, resulting in a warning. [Gert Doering]

	- Handle case where choice has minOccurs==1, but one (or more)
	  of the options has minOccurs==0... which makes the choice
	  optional implicitly.  Found by  [Gert Doering]

version 0.53: Thu Sep  6 21:15:14 CEST 2007

	Changes:

	- When calling SOAP operations, the elements do not use a Body
	  or Header anymore: these structures are flattened for the
	  user's convenience.

	Fixes:

	- totalDigits did only handle floats, not integers.  Reported
	  by [Gert Doering]

	- float values should not show trailing zeros.  The use of
	  sprintf "%lf" was superfluous, hence removed.

	- produce error when pre-installed schemas are not found.

	Improvements:

	- a bit of progress on WSDL/SOAP

	- YAPC::EU 2007 presentation available on the website.

version 0.52: Tue Aug 14 09:37:14 CEST 2007

	Fixes:

	- sloppy_integer did not pass some usage restrictions for
	  other than Integer->int translation.

version 0.51: Fri Aug 10 14:27:05 CEST 2007

	Changes:

	- the labels for blocks when maxOccurs >= 2 have changed from
	  f.i. 'xyz' into 'seq_xyz', to become clearer.

	Fixes:

	- both attribute with own simpleType definition, as attribute ref
	  to attribute with own simpleType were missing.

	- got direct compilation of top-level attributes to work, and
	  all available soap11 tests with it.

	Improvements:

	- much clearer docs about repetative blocks.

	- reread/corrected a few manual pages, but there is still a
	  lot to do.

version 0.50: Thu Aug  9 23:19:19 CEST 2007

	MAJOR REWRITE of the schema parser and code generators.

	Changes:

	- any maxOccurs >1 will produce/require an ARRAY.  Until now,
	  the sequence, all, choice, and group didn't work correctly.

	- removed a way to catch the errors produced while processing
	  a message: an error is an error (or use hooks).

	- convert error handling to Log::Report, which allows translations
	  and clean processing.

	- much improved error messages.

	- hooks are called differently, to be more useful.

	Fixes:

	- the reader now requires the correct order of the elements
	  inside the message.

	- "any" can appear everywhere, not only at the end of blocks.

	- "any" now correctly defaults as minOccur==maxOccur==1

	- accept attributes for complexType/simpleContent

	- floating-point restriction (facet) did not process well.

	- an empty XML container will be produced when an {} was
	  given: it will not be ignored.

	- improved template output

	Improvements:

	- added t/pod.t, which flagged some (produced) pod errors

	- added XML::Compile::Iterator, to ease the implementation of
	  XML::Compile::Schema::Translate

	- more checks whether the schema is sound.

	- added XML::Compile::Util

	- removed XML::Compile::parse() and parseFile() from the
	  public interface.

	- in doc: schema's should be schemas [Sven Neuhaus]

	- many more tests

	- no need for wsdl-patch.xsd anymore.

version 0.18: Wed Jun  6 22:46:44 CEST 2007

	Changes:

	- renamed XML::Compile::Schema::importData() into
	  ::importDefinitions()

	- renamed XML::Compile::WSDL::addSchemas() into
	  ::importDefinitions()

	- Schema::addSchema() will only add parsed XML.
	  Use Schema::importDefinitions() to added any (other) kind
	  of data.

	- reworked Namespaces::findElement() and ::findType() into
	  ::find(KIND, ...)

	- upgraded XML::LibXML requirement to 1.63

	Fixes:

	- Added dependency for IO 1.22 (IO::File)

	- Preference to address elements with a certain name, about
	  types.

	- Regular expression for all date types was not precise enough.
	  Now following the specs more closely.
	  Bug report from [Gerard Gerritsen]

	- Namespace of schema now separates attributeGroup and group
	  names from element, attributes and types.

	- include_namespaces parameter to Schema::compile() was always
	  set to 1.

	Improvements:

	- added xsd/2003-* for SOAP1.2

	- initial implementation for SOAP in lib/XML/Compile/SOAP.pm
	  and lib/XML/Compile/SOAP/SOAP1[12].pm

	- hooks with type/id/path will be invoked on all nodes.

	- removed Translate::reference(), in favour of a reference
	  lookup per kind of object.

	- ::Translate::element_by_node() renamed to ::element().

	- ::Schema::compile() and ::template() do not check provided
	  name anymore, but leave that to ::Translate::new()

	- ::Schema::compile(elements_qualified) now can limit ns-qual
	  to the TOP element only.

version 0.17: Tue Mar 20 12:21:57 CET 2007

	Improvements:

	- added XML::Compile::Dumper and t/21dump.t.  Added automatic
	  compatibility tests with non-dumped parsing.  However, this
	  results in "PmmREFCNT_dec: REFCNT decremented below 0! during
	  global destruction." errors in XML::LibXML, so is disabled by
	  default (see $skip_dumper in t/TestTools.pm)

version 0.16: Sun Feb 25 00:28:48 CET 2007

	Changes:

	- rename Schema::importSchema() into Schema::importData(), because
	  its parameter is very different from what addSchemas() expects
	  but the name was too close.

	- added patch to WSDL, to simplify the tOperation type, which
	  is overly complex.

	- now all four kinds of operations are detected.

	- build-in type anyURI is relative, hence cannot be checked at
	  parse time.  This means that XML::Compile doesn't need
	  Regexp::Common anymore (which was a forgotten dependency).

version 0.15: Fri Feb 16 16:21:59 CET 2007

	Changes:

	- removed "top()" from XML::Compile, because with multiple
	  XML sepcification files, there is no real "top" element.

	Fixes:

	- do not destroy caller's data when creating complex or tagged
	  elements.

	- added missing str2num() in BuiltInTypes for floats and doubles.

	Improvements:

	- move non-distributed xsd's to private dir.

	- added XML::Compile::WSDL and t/80wsdl.t, partial implementation

	- added XML::Compile::SOAP::Operation, partial implementation

	- added reader hooks and t/60hooks_r.t

	- added writer hooks and t/61hooks_w.t

	- implemented attribute by ref

version 0.14: Tue Jan 30 12:30:34 CET 2007

	Fixes:

	- Sequence of choices will multiply min/max.  Required to
	  understand WSDL.

	- Give error on unknown particles.

	Improvements:

	- Implemented 'any' element

	- fields of type QName are translated from "prefix:type"
	  into "{namespace}type".

	- Makefile.PL requires 5.8.0, which is probably still a mild
	  setting.  XML::LibXML is probably more demanding.

version 0.13: Mon Jan 29 00:11:12 CET 2007

	Fixes:

	- One place with nested Complex extensions, but more may need
	  fixing.

	Improvements:

	- Added WSDL and SOAP schema's

	- fixed importSchema() where addSchema() missed an 's'
	  -> addSchemas().

	- XML::Compile::new() now also accepts a filename, a ref
	  Scalar, and pre-defined name-spaces.

	- skip key, keyref, unique, selector, fields elements; just
	  like notation and annotation are lost.

	- defined top-level element "attribute", but not yet used.
	  Only useful in anyAttribute, which is not checked.

	- check all top-level elements for their name, to find typo's.

	- implemented anyAttribute

	- XML::Compile::dataToXML is used to accept user spec of XML
	  on many places.

version 0.12: Tue Dec 19 15:22:59 CET 2006

	Fixes:

	- fixed attributes can be optional. [Igor Shynkarev]

	- correct dateTime values were disapproved. [John R.]

	- converted to use oodist script (new feature of OODoc)

version 0.11: Wed Oct 25 08:08:20 CEST 2006

	Fixes:

	- Need to use "getChildrenBy..." in stead of "getElementsBy" in
	  XmlReader, because otherwise we search the whole tree.
	  Problem reported by [Igor Shynkarev]

	Improvements:

	- When the reader is called with a document, its document-element
	  is taken automatically.  In response to [Igor Shynkarev]

	- First attempt for XML template output.

version 0.10: Tue Oct 24 11:40:09 CEST 2006

	Fixes:

	- Some minor cleanups in XmlWriter

	- Now depends on XML::LibXML 1.61, which has a lot of improvements
	  and fixes.  As disadvantage does it require a recent libxml2,
	  which is only included with very recent Linux distributions.

	- t/49big.t test failed when installed on 64bit Perl, because
	  one of the test-values was smaller then MAX_INT in that case.

	- Default attribute type anyType.

	- anyType is correct namespace.

	- Type resolving when schemaNamespace is not the default was
	  broken.

	- Complex body permitted to be empty.

	- Default for "check_occurs" set to `true', because default should
	  give best results.

	- Missing element with default gave error when check_occurs.

	Improvements:

	- Added Template.pm to produce a Perl template example of a certain
	  type.  See XML::Compile::Schema::template()

	- Implemented type definitions contain an example which is used
	  for the templates.

version 0.09: Mon Sep 25 08:40:24 CEST 2006

	Fixes:  [thanks to cpan-testers work by Slavan Rezic]

	- MANIFEST not correct: contained old files

	- Removed dependency for Regex::Common, added Math::BigInt

	- Upgraded to XML::LibXML 1.60, which changed from Attribute
	  handling.

	Improvements:

	- Reorganized order in some man-pages.

version 0.08: Fri Sep 22 15:52:49 CEST 2006

	Improvements:

	- Turned XML::Compile::Schema::Translate into a singleton object,
	  and reshaped functions into methods.  The arguments hash intern
	  in object.  Together much cleaner.

	- Replaced use of "croak" for errors during translation into a
	  call to the error() method, with nicer and more consequent
	  error text layout.

	- Split XML::Compile::Schema::BuiltinStructs into lazy loading
	  XML::Compile::Schema::XmlReader and ::XmlWriter.

version 0.07: Thu Sep 21 15:06:05 CEST 2006

	- implemented substitution-groups

	- implementation of ref-element was bogus.

	- improved documentation (more about Schemas)

	- $schema->addSchemas from text

	- $schema->importSchema() with support of search-path.  Schema's not
	  automatically installed (yet)

	- added other schema's to the distribution.

version 0.06: Thu Sep 14 10:10:31 CEST 2006

	- The internals of the translator (and the produced code) are
	  fully rewritted to support complexType/simpleContent in a
	  clean way.

	- better support for list.

	- major improvements in the documentation.

version 0.05: Sun Aug 27 12:00:00 CEST 2006

	- Release as OODoc processed package :(

version 0.04: Sun Aug 27 11:49:54 CEST 2006

	- Rewrote the particle handling to better process nesting and
	  min/maxOccurs.

	- Many rewrites to implement complexType/simpleType processing.

	- Extended list describing missing features (and resolved quite
	  a few of them).  Parser is much stricter now, closer to the
	  specs.

version 0.03: Tue Aug 15 09:13:06 CEST 2006

	- Doc about what to pass as type to compile() was not updated.

	- Added attribute default, fixed and use=forbidden.

	- Added simpleType within list.

	- Added memberTypes with union.

version 0.02: Mon Aug 14 13:42:02 CEST 2006

	- Perl internal integer dependent size of INT_MIN and INT_MAX
	  to avoid use of BigInt.  Idea by [Merijn H Brand]

	- Added type assertions to translator, to check known attributes
	  to follow the spec.

	- All constructing routines are called with ($path, $args, ...)
	  where before, the $args option had different locations in the
	  parameter lists.

	- Moved element fixed tests to t/47fixed.t, reimplemented it to
	  make it work with BigInt.

	- Implemented element default and t/48default.t

	- Non-sloppy integers implemented in BigInts, tests t/49big.t

	- Element ref() should not specify own name.

	- XML::Compile::Schema::Instance collects info about one single
	  schema.

	- XML::Compile::Schema::Namespaces collects schema instances.

	- Under fly adding of schemas with ::Schema::addSchema

	- understands qualified and unqualified processing

	- and many more...

version 0.01: Wed Jul 26 12:19:10 CEST 2006

	- initial version