Did you know ... | Search Documentation: |
Pack xsd -- README.md |
Validate an XML Document against an XML Schema in SWI-Prolog.
First of all, you need SWI-Prolog. Take a look at the official website for installation instructions.
After that, you have to install the latest version of the regex library. Installation instructions for this library can be found with the provided link.
If you are a developer of this project, you must also install the tap library in order to successfully execute our tests.
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 -c
option:
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
The library(xsd)
exports the following predicates:
xsd_validate(+Schema, +Document)
Validates an XML Document with Identifier `Document` against an XML Schema `Schema`.
The 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.
remove_file(+Identifier)
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`.
Please see FEATURES.md for the full list of currently supported components of the XML Schema Definition Language.
Developed and tested in SWI-Prolog, version 7.4.1, 64 bit.
This tool has been developed as part of a practical course at the University of Würzburg, Germany. It contains contributions of: