XML Validation and Well-Formedness Check
XML Well-Formedness Check
A "Well Formed XML" document means that it has a correct XML syntax.
Using the Check XML Form function checks that your document conforms to the XML syntax
rules.
Validate Documents
A "Valid" XML document is a "Well Formed" XML document, which
also conforms to the rules of a Document Type Definition (DTD) , XML Schema or other
type of schema, which defines the legal elements of an XML document.
When creating an XML document, errors can be introduced. When working with large
projects or many files, the probability that the errors will occur is even greater.
Determining that your project is error free can be time consuming and even
frustrating. For this reason <oXygen/> provides functions that enable easy error
identification and rapid error location.
Validate XML Documents Against W3C XML Schemas
The XML schemas gain more and more usage over DTDs. <oXygen/> integrates always
the latest version of the Xerces-J XML parser to validate documents against XML
Schemas. Xerces is the best open source XML parser and is widely used in the
enterprise servers.
Most of the XML Schema related errors are reported not only with a descriptive
message but also with a pointer (URL) to the exact location in the XML Schema
specification that is related with that error, thus if you are interested in more
details about that error or if you want to have the normative words of the
specification that is just a click away, no need to spend a lot of time to find the
relevant place in the schema specification documents.
Validation Scenarios
Validation scenarios are a very powerful feature and they solve
a number of important issues when working with XML and XML related technologies. They
allow working with modules and performing multiple validations in one action.
By default the validation of a document is done by using a
processor (XML parser, XSLT transformer, XQuery engine, etc.) to analyze the current
file. The validation scenario allows to specify a set of files to validate and for
each file what processor to use and whether or not to perform continuous validation.
Thus if you work on a module you can set the validation on the master file, the file
that refers that module. Also you can perform multiple validations with different
processors or on different files.
Working with Modules
Let's imagine you work on a big XML document and at some moment you decide to
split that into more files and use external entities to include those files into a
master document. When you edit one of those files then what you want to check is
that the master document that includes the current file is valid. The <oXygen/>
validation scenarios allow you to specify exactly that and validate the master
document that includes the current file instead of validating only the current file.
Thus the current file gets validated in the context it is used from.
Let's take another example. XSLT stylesheets (as in fact many other XML related
technologies like XQuery, Relax NG, etc.) can be invalid by themselves but they can
be valid when included or imported from other files. For instance one can write an
XSLT stylesheet that makes a reference to a named template or to a variable that is
not defined in the current file but it is defined in a file that includes or imports
that XSLT stylesheet. In that case if you check the XSLT module for validity you
will get an error that there is no such template with that name or that the referred
variable is not declared. However if you validate the master XSLT stylesheet that
refers to this module than that is valid. <oXygen/> validation scenarios allow to
specify that not the module should be validated but instead the master file that
refers that module, thus validating the XSLT module in context.
Multiple Validations in One Action
Some XML technologies are complicated as it is the case with XML Schema for
instance, some processors have their particularities as in the case of different
XSLT processors. When you edit documents that are supposed to be public or that are
supposed to work no matter what engine they will be used with then it is best to
check your file against all the engines your document will be used with. The
<oXygen/> validation scenarios allow you to specify multiple validations to be
performed and choose the engine for each validation. Thus you can set for instance
any of the processors <oXygen/> has support for XML Schema validation (there are 6
XML Schema processors <oXygen/> supports and others can be added as external
processors) when you edit a schema, and <oXygen/> will validate your schema against
all in one action, thus you can easily check that your schema will work no matter
what processor will be used.
Imagine you have a set of instance documents and you want to change their schema
while making sure they are still valid. <oXygen/> validation scenarios allow you to
configure multiple validations, on each instance document and on the schema file and
all will be performed in a single action, thus you are sure that the schema is valid
and your instances are still valid against the updated schema.
Working with Modules and Multiple Validation
When you work with modules there is also the use case to reuse them in different
contexts. <oXygen/> allows you to validate the module in all the contexts it is
used from as the validation scenarios allow setting multiple files for validation.
Thus you can add there all the master files that use the module and in a single
action you check that the module is valid in all contexts it is used from.
Continuous Validation
<oXygen/> can be configured to mark validation errors in the edited document as you
modify it using the keyboard. If you enable the Validate as you type
option after the configured delay from the last key typed the validation
errors will be highlighted automatically in the editor panel.
At the bottom of the editing area, there is a reporting label that presents the
message of the error that is closest to the caret position.
Error Markers and Overview Ruler
The errors, including the ones generated by the continuous
validation are marked in place by underlining the error location. The locations are
also marked in an overview ruler that allows quick navigation between the error
markers.
Multiple External Validation Engines
<oXygen/> has built-in support for: LIBXML, XSV, SaxonSA, MSXML4.0, MSXML .NET, SQC
In addition to these ones that are pre-configured, you can add your own validator.
Schematron Support
<oXygen/> can validate XML documents using Schematron schemas and XML Schemas or
Relax NG Schemas that contain embedded Schematron rules. Also it includes editing and
validation support for Schematron schemas.
For validation <oXygen/> uses the Skeleton XSLT processor that is Schematron 1.5
conformant.
For schemas that define different validation phases <oXygen/> shows automatically
a dialog where the validation phase can be selected.
Starting with version 8.2 <oXygen/> includes support for ISO Schematron.
Editing ISO Schematron Schemas
<oXygen/> has a Schematron editor that detects automatically from the namespace
that the edited Schematron schema is ISO Schematron. It offers content completion
with documentation for the ISO Schematron elements, attributes and values and also
features continuous validation.
Editing Support for Embedded ISO Schematron Rules in XML Schema
When editing XML Schemas <oXygen/> offers inside
xs:annotation/xs:appinfo ISO Schematron proposals though content completion thus
allowing easier editing of Schematron embedded rules.
Validating XML Documents Against ISO Schematron
The validation support from <oXygen/> handles validation
against ISO Schematron schemas. This includes validation on request, continuous
validation and batch validation.
Validating XML Document Against ISO Schematron embedded rules
ISO Schematron rules can be embedded in other schemas.
<oXygen/> offers validation against ISO Schematron rules embedded in Relax NG
schemas or in XML Schemas.
Support for Abstract Patterns and Included ISO Schematron Schemas
<oXygen/> handles also ISO Schematron schemas that contain abstract patterns or
references to other ISO Schematron files through sch:include. There is a limitation
on schema validation that checks the document as it is, without expanding the
includes.
Schematron diagnostics and reports
The diagnostics messages issued by a Schematron schema are
displayed together with the other validation errors. Schematron report messages are
treated as warnings.
Option for using Saxon 9 SA (Schema Aware) for Schematron
The XPath 2.0 checks used in an ISO Schematron schema or a
Schematron 1.5 schema can be executed optionally with Saxon 9 SA instead of Saxon 9
B in order to access the schema aware features of Saxon 9 SA.
Allow foreign elements in an ISO Schematron schema
The allow-foreign parameter set for Schematron processing
allows XML elements which are outside the ISO Schematron namespace like xsl:function
and xsl:import-schema to be used inside an ISO Schematron schema.
XML Catalog Support
An XML Catalog defines mappings between schema locations. For example if you are
using DocBook, the default documents are using the DTDs located on the Oasis web site.
This means that for each validation the DTDs are downloaded - operation that takes
time. To overcome this problem, the <oXygen/> XML editor makes use of several
catalogs for DocBook, TEI and XHTML frameworks. These are automatically set up at the
editor first run.
The catalog list can be managed from the options, as seen below.
Validate with XML Schema while Allowing External Entities
The lack of support for something similar to external entities is a known
weakness of the XML Schema. Therefore there are documents that although refer to a
schema they also contain a DTD declaration mainly for allowing the definition of
external entities. <oXygen/> allows you to configure the validation to be performed
against the specified XML schema even if a DTD is also specified thus allowing
external entities and XML schema to coexist.
Validate XML Documents Against DTDs
You can use <oXygen/> to validate an XML document instance against a specified
DTD.
Validate XML Documents Against Relax NG Schema
With <oXygen/> you can easily validate against Relax NG both in XML syntax and
compact syntax and against Namespace Routing Language schemas .
Extended Batch Validation
The files currently selected in the Project can be validated in one action against
a schema file. The supported schemas are XML Schema, Relax NG, NRL, Schematron or XML
Schema or Relax NG schema with embedded Schematron rules. This together with the
logical folder support of the project allows you to group your files and validate them
very easily.
The next image shows the dialog for choosing the schema.
Error Reporting and Error Tracking
The errors are reported by indicating the severity of the problem, location
information (line number, the system identifier of the file if different from the
current edited file) and a descriptive message. Tracking the errors in the document is
as easy as clicking on the error in the error panel: the editor will open the file
causing the error and it will highlight the location of the error.
Control the XML Parser Features
You can control some parser settings used for validation. The features made
available through <oXygen/> options are:
-
http://apache.org/xml/features/validation/schema
This turns on/off schema validation -
http://apache.org/xml/features/validation/schema-full-checking
This turns on/off full schema grammar constraint -
http://apache.org/xml/features/validation/honour-all-schemaLocations
All schema location hints will be used to locate the components for a given
target namespace.
To ensure that your document gets the maximum verification, all three are turned
on by default.
Wizard for Schema Association
To associate a schema with a document you can use the "Associate schema..." action
that will present a wizard to accomplish this task.
Your document will be modified to contain the schema location declaration.
|