|Did you know ...||Search Documentation:|
|Pack xsd -- README.md|
Validate an XML Document against an XML Schema in SWI-Prolog.
All you need is SWI-Prolog. See there for installation instructions.
Only for development purposes the
library(tap) is needed.
It is possible to create a pre-compiled file which increases the tool's performance significantly. The command line interface is compiled using swipl's
swipl -g main -o cli.exe -c cli.pl
The `.exe` suffix is chosen for compatibility with Windows systems.
A command line interface is provided, too. You can directly execute it via
swipl -g main cli.pl -- schema.xsd instance.xml
Call with `--help` instead of the filenames to get more options.
After the pre-compilation step mentioned before, the created executable can be called via:
./cli.exe schema.xsd instance.xml
library(xsd) exports the following predicates:
Validates an XML Document with Identifier `Document` against an XML Schema `Schema`.
library(xsd/flatten) exports the following predicates:
Loads an XML file from source `Input` into the prolog database. An `Identifier` can be freely chosen, otherwise it will be generated.
Deletes all nodes corresponding to `Identifier` from the prolog database.
?- use_module(library(xsd)), xsd_validate('path/to/schema.xsd', 'path/to/instance.xml').
Once an XML file is loaded using
xml_flatten/2, it will be represented by the following predicates:
node(File_ID, ID, Namespace, Node)
Each node in the document `File_ID` is represented by a node/4 fact with the unique identifier `ID`. Also, the namespace and the name of the element are stated.
node_attribute(File_ID, ID, Attribute, Value)
For every attribute a `node_attribute/4` fact is generated. It stores the `Attribute` and `Value` of an attribute associated to node `ID` inside document `File_ID`.
text_node(File_ID, ID, Node)
Text inside the document `File_ID` is represented as `text_node/3` facts. These have unique identifiers like regular document nodes and store the text `Node`.
FEATURES.md for full list of currently supported components of the XML Schema Definition Language.
Developed and tested in SWI-Prolog, version 7.4.1, 64 bit.