xslint

Name

xslint — Check XSL document for semantic errors

Synopsis

perl xslint.pl [--verbose] [--debug] [--flat outname] [--informative] [--warning] [--error] {stylesheet}

Description

XSLint is an XSL "lint checker." It reads an XSL stylesheet and looks for semantic errors.

This documentation is for Version 0.05.

XSLint looks for:

  • An incorrect XSLT URI.

  • Failure to provide a version.

  • Duplicate match patterns.

  • Modes that are used but never defined

  • Modes that are defined but never used

  • Named templates that are used but never defined

  • Named templates that are defined but never used

  • Templates that use name= where match= was probably intended

  • xsl:call-template elements that contain anything other than xsl:with-param

  • Variable/parameter references that are not defined at the point of use.

  • fo: elements that aren't part of the XSL 1.0 PR.

  • fo: element properties that aren't part of the XSL 1.0 PR.

Requirements

XSL Lint requires Perl 5, XML::Parser, and XML::DOM. Contact your favorite CPAN archive (cpan.perl.com) for more information about obtaining and installing Perl modules.

Options

--verbose

Display progress status and other informative messages.

--debug

Turn on debugging messages.

--flat outname

XSLint "flattens" the stylesheet by expanding all xsl:include elements. If the --flat option is given, the flattened stylesheet is written to outname.

--informative

Display informative messages. Off by default.

--warning

Display warning messages. On by default, use --nowarning to disable.

--error

Display error messages. On by default, use --noerror to disable.

Copyright

XSLint is Copyright © 1999, 2000 Norman Walsh

Ironically, assertion of copyright is done to make it easier to distribute this software. (At least one organization, Software in the Public Interest, requires an explicit copyright statement in order to redistribute the software.)

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

Except as contained in this notice, the names of individuals credited with contribution to this software shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from the individuals in question.

Any software derived from this Software that is publically distributed will be identified with a different name and the version strings in any derived Software will be changed so that no possibility of confusion between the derived package and this Software will exist.

Warranty

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL NORMAN WALSH OR ANY OTHER CONTRIBUTOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Bugs

  • There's no support for xsl:import.

  • XSLint doesn't handle XSLT stylesheets that use a namespace prefix other than "xsl:".

  • XSLint doesn't handle XSLT stylesheets that use a namespace prefix other than "fo:" for XSL Formatting Objects.

  • Duplicate match pattern searching is very limited.

    At present, XSLint only detects textually duplicate match patterns, not match patterns that could match the same element. So it's not as useful as it sounds. Improvements are planned.

Contacting the Author

XSLint is maintained by Norman Walsh, <ndw@nwalsh.com>.

The best way to reach norm is by email. You will find additional contact information at http://nwalsh.com/~ndw/.