8. Enhancements and bug fixes

8.1. 3.6.1 (, 2007)

  • Fixed a bug in James Clark's XP, the XML parser used by this toolset. The line numbers reported for an XML file where the encoding was other than UTF-8, UTF-16 and ISO-8859-1 (e.g. Windows-1252) and containing DOS-style end of lines (e.g. "\r\n") were incorrect. For example, a parse error found at line 67 actually occurred at line 67/2=34.

8.2. 3.5 (October 3, 2006)

  • Removed dtdtoxsd, which was used to convert a DTD to a W3C XML schema. Please use Trang, a much better tool than dtdtoxsd, if you need this functionality.

  • Added rngvalid, a RELAX NG validator, and schvalid, a Schematron validator.

  • Renamed the distribution to XMLmind Validation Toolset.

8.3. 3.2 (April 03, 2006)

Bug fixes:

  • This case (found in Dublin Core's dcterms.xsd) was wrongly detected as being an error: a complexType having simpleContent which is the restriction of a base complexType having a mixed content and an emptiable particle.

8.4. V3.0 Patch 1 (December 2, 2005)

Bug fixes:

  • A xs:keyref identity constraint could reference a xs:key identity constraint, but not to a xs:unique identity constraint.

  • An xs:all group must be the topmost group of a content model. Xsdvalid failed to enforce this constraint when the xs:all group was contained in a xs:group.

  • Xsdvalid allowed element names to contain certain invalid characters. For example: it allowed to declare: <element name="µ-computer"/>.

  • If schema1 includes schema2 and schema2 imports schema3, schema1 could reference components from schema3 without necessarily having a <xs:import namespace="target namespace of schema3"/> element.

  • A value like 12.34E56 was accepted as being a valid xs:decimal.

8.5. V2.11 (July 11, 2005)

Bug fixes:

  • There was a bug in the documentation of the XMLmind Xsdvalid Toolset. The documentation should read: the xsdvalid, dtdvalid, dtdtoxsd command-line tools are XML catalog aware. These command line tools will use the XML catalogs specified in environment variable XML_CATALOG_FILES. This variable must contain one or several XML catalog file names or URLs separated by a semi-colon (';').

8.6. V2.10 (June 2, 2005)

Bug fixes:

  • Fixed a NullPointerException that occurred for union types having a member type with a pattern facet or an enumeration facet and another member type of the same base type, but having no pattern facet or enumeration facet.

  • When xsdvalid cannot cope with an import element without a schemaLocation attribute, it reports an x-src-import warning. Previously, it used to report a x-src-import fatal error.

8.7. V2.9 Patch 1 (April 4, 2005)

Bug fixes:

  • The blockDefault and finalDefault attributes were applied not only to the direct descendants of a schema element but also to components obtained from imported schemas.

8.8. V2.9 (February 7, 2005)

Bug fixes:

  • Error: element declaration "bar" inconsistent [cos-element-consistent] was reported for the valid example below:

    <xs:element name="foo">
      <xs:complexType>
        <xs:sequence>
          <xs:element name="bar" type="xs:token" />
          <xs:element name="bar" type="xs:token" nillable="true" />
        </xs:sequence>
      </xs:complexType>
    </xs:element>

    An error is still reported for the above valid schema, but the error is now an implementation error: implementation limit: element declaration "bar" differs from previous element declarations "bar" [x-cos-element-consistent].

  • The implementation of wildcards was out of date.

    For example, ##other meant (to make it simple) "any namespace, including absent, different from targetNamespace".

    In fact, ##other means "a namespace must be specified and this namespace must be different from targetNamespace".

Regressions:

  • Xsdvalid: W3C XML Schemas having no target namespace can no longer be serialized. Option -ss - schema_location where '-' means no target namespace is no longer supported.

  • Xsdvalid, dtdvalid: last deseralized schema or DTD is no longer cached. In practice, this means that:

    xsdvalid -r serial f1.xhtml f2.xhtml f3.xhtml

    is now much slower now because the W3C XML Schema for XHTML is deserialized for each document to be validated.

    If you want to speed up this, run something like:

    xsdvalid -r serial -ss http://www.xmlmind.com/xmleditor/schema/xhtml xhtml.xsd \
        f1.xhtml f2.xhtml f3.xhtml

8.9. V2.6 Patch 1 (June 18, 2004)

Enhancements:

  • Upgraded the Schema for Schemas to the version included in "XML Schema Part 1: Structures Second Edition - W3C Proposed Edited Recommendation 18 March 2004".

    This version of the Schema for Schemas allows to add attributes with non-schema namespaces to annotate most schema components.

    Slightly edited this normative schema to allow spaces before and after path alternatives in the xpath attributes of elements selector and field. Example:

    <xs:key name="truck1" >
      <xs:selector xpath="truck" />
      <xs:field xpath="@number | @plate" />
    </xs:key>
  • Xsdvalid now supports xs:import elements without a schemaLocation attribute, if an xs:import element for the same namespace but this time having a schemaLocation attribute has previously been processed.

    Example:

      <xs:import namespace="foo" 
                 schemaLocation="http://foo.com/schema1.xsd" />
     
      <!-- Later, typically inside an included module. -->
      <xs:import namespace="foo" />

    Note that the other example below will not work because the W3C XML Schema validation engine cannot guess which of schema1.xsd or schema2.xsd needs to be imported.

      <xs:import namespace="foo" 
                 schemaLocation="http://foo.com/schema1.xsd" />
    
      <!-- Later, typically inside an included module. -->
      <xs:import namespace="foo" 
                 schemaLocation="http://foo.com/schema2.xsd" />
     
      <!-- Later, typically inside another included module. -->
      <xs:import namespace="foo" />
  • Xsdvalid: it is now possible to use XML catalogs to resolve URLs found in the following places:

    • Schema locations in xsi:schemaLocation and in xsi:noNamespaceSchemaLocation.

    • Schema locations in xs:include, xs:redefine, xs:import.

Bug fixes:

  • ``Placeholder groups'' such as:

    <xs:group name="Misc.extra">
      <xs:choice/>
    </xs:group>

    caused xsdvalid to throw a NullPointerException.

  • Identity constraints found in element declarations themselves contained in groups, like for example,

       <xs:group name="general">
          <xs:sequence>
             <xs:element name="general" type="general">
                <xs:unique name="generalUnique">
                   <xs:selector xpath="*"/>
                   <xs:field xpath="@uniqueElementName"/>
                </xs:unique>
             </xs:element>
          </xs:sequence>
       </xs:group>

    caused xsdvalid to report false errors (the error message was: an identity-constraint with the same name "XXX" has already been defined).

8.10. V2.6 (May 10, 2004)

Enhancements:

  • The xsdvalid, dtdvalid, dtdtoxsd command-line tools are now XML catalog aware. These command line tools will use the XML catalogs specified in environment variable XXE_CATALOG. This variable must contain one or several XML catalog file names or URLs separated by a semi-colon (';').

Bug fixes:

  • The complete schema built from multiple schemas specified using xsi:schemaLocation and / or xsi:noNamespaceSchemaLocation attributes was incorrect.

8.11. V2.5 Patch 3 (March 10, 2004)

Bug fixes:

  • The validation engine implemented the original "Schema Component Constraint: Type Derivation OK (Simple)" specification, not the one fixed in "XML Schema 1.0 Specification Errata". This caused valid substitution groups where the type of the head was xs:anyType to be rejected by the engine.

  • A substitution group containing just a single non-abstract member was ignored.

8.12. V2.5 Patch 1 (December 15, 2003)

Bug fixes:

  • In XPath expressions, the default namespace declared with xmlns was used for name tests on elements. Now, if the QName does not have a prefix, then the namespace URI is null.

    Example: default namespace is "http://www.w3.org/1999/xhtml".

    Before the bug fix, "div/p" meant "{http://www.w3.org/1999/xhtml}div/{http://www.w3.org/1999/xhtml}p".

    After the bug fix, "div/p" means "{}div/{}p".

8.13. V2.5 (November 04, 2003)

Option -gendoc added to xsdvalid and dtdvalid allows to automatically generate an hypertext (HTML) reference manual from an XML schema or a DTD. See note about the generated documentation.

8.14. V2.4 (August 13, 2003)

Enhancements:

Bug fixes:

  • QNames in included schema with no target namespace were not properly resolved when the including schema had a target namespace (feature known as ``Chameleon Includes'').

8.15. V2.0 Beta 1 (September 3, 2002)

Changed version number to V2 to use the same version number as XXE.

8.16. V1.0 Patch 3 (August 19, 2002)

Forgot to update the documentation for the release of Patch2.

8.17. V1.0 Patch 2 (July 29, 2002)

Validating really large XML schemas on Windows was not possible due to a stack overflow error. Increasing the stack size by editing xsdvalid.bat and adding -Xss1m to the Java command line had no effect.

Xsdvalid 1.0 Patch2 requires Java 1.4. It will not run with Java 1.3. Do not upgrade if you cannot install Java 1.4 on your machine.

8.18. V1.0 Patch 1 (April 25, 2002)

Fixed an obscure bug related to restrictions of the NMTOKENS, IDREFS, and ENTITIES simple types.

8.19. V1.0 (January 9, 2002)

Initial release.