Skip to main content

A Python tool and API that validates STIX and CybOX XML instance documents.

Source:

https://github.com/STIXProject/stix-validator

Documentation:

http://stix-validator.readthedocs.org

Information:

https://stixproject.github.io | https://cyboxproject.github.io

Build Status Code Health PyPI Version Badge

Validation

The STIX Document Validator (sdv) can perform the following forms of STIX document validation:

The following forms of CybOX document validation are also possible:

Dependencies

The STIX Document Validator has the following dependencies:

  • Python: Python interpreter

  • lxml >= v3.2.0: XML processing library.

    • libxml2 >= v2.9.1: Required XML processing C library for lxml.

  • xlrd >= v0.9.2: XLSX library for parsing STIX Profiles.

For a Windows installer of lxml, we recommend looking here: http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml

The STIX Document Validator supports Python 3.8+.

Installation

The recommended method for installing the STIX Document Validator is via pip.

$ pip install stix-validator

This will install the sdv package into your Python installation’s site-packages and four scripts found under sdv/scripts on your PATH.

How To Use

The STIX Document Validator bundles four scripts: stix_validator.py, profile_to_sch.py, profile_to_xslt.py, and cybox_validator.py,

STIX Validation

The stix_validator.py script can can validate a STIX XML document against STIX schemas, STIX Best Practices, and STIX Profiles.

NOTE: The STIX Profile validation should be considered experimental.

Validate using bundled schemas

$ stix-validator <stix_document.xml>

Validate using schemaLocation

$ stix-validator --use-schemaloc <stix_document.xml>

Validate using non-bundled schemas

$ stix-validator --schema-dir </path/to/schemas> <stix_document.xml>

NOTE: If you are trying to validate a STIX document from a checked-out copy of STIX schema repository, make sure you have also cloned the CybOX schema submodule with git submodule init and git submodule update.

Validate a directory of STIX documents

$ stix-validator </path/to/stix_dir>

Validate multiple files and/or directories

$ stix-validator <one.xml> <two.xml> <directory_of_files> ...

Check “best practice” guidance

$ stix-validator --best-practices <stix_document.xml>

Validate using STIX Profile

$ stix-validator --profile <stix_profile.xlsx> <stix_document.xml>

STIX Profile to Schematron Conversion

The profile_to_sch.py script performs a conversion from a valid STIX profile to schematron.

$ profile-to-sch <valid_stix_profile.xlsx>

Schematron output is sent to stdout.

STIX Profile to XSLT Conversion

The profile_to_xslt.py script performs a conversion from a valid STIX profile to XSLT.

$ profile-to-xslt <valid_stix_profile.xlsx>

XSLT output is sent to stdout.

CybOX Validation

The cybox_validator.py script can perform CybOX XML Schema validation.

Validate using bundled schemas

$ cybox-validator <cybox_document.xml>

Validate using schemaLocation

$ cybox-validator --use-schemaloc <cybox_document.xml>

Validate using non-bundled schemas

$ cybox-validator --schema-dir </path/to/schemas> <cybox_document.xml>

Validate a directory of CybOX documents

$ cybox-validator </path/to/cybox_dir>

Validate multiple files and/or directories

$ cybox-validator <one.xml> <two.xml> <directory_of_files> ...

All STIX and CybOX Documents?

The STIX Document Validator bundles XML schemas with it, which includes all STIX (v1.0 through v1.2.1) and CybOX (2.0 through v2.1) schema files. If a document includes instances of schematic constructs defined outside of the STIX or CybOX languages, a user must point the STIX Document Validator scripts at those schemas in order to validate.

To use schemas other than those bundled with the STIX Document Validator use the --schemas-dir flag to pass in a path to a schema directory.

Common Libxml2 Error

Users often report an error which looks something like the following:

Fatal error occurred: local union type: A type, derived by list or union, must have the
simple ur-type definition as base type, not '{http://cybox.mitre.org/common-2}(NULL)'., line 350

This error is caused by an insufficient version of libxml2 being installed on the system. The STIX Document Validator requires libxml2 v2.9.1 at a minimum and is not guaranteed to work properly with earlier versions.

To see what version of libxml2 you have installed, execute the xml2-config --version command and make sure you are running at least v2.9.1.

Terms

BY USING THE STIX DOCUMENT VALIDATOR, YOU SIGNIFY YOUR ACCEPTANCE OF THE TERMS AND CONDITIONS OF USE. IF YOU DO NOT AGREE TO THESE TERMS, DO NOT USE THE STIX DOCUMENT VALIDATOR.

For more information, please refer to the LICENSE.txt file

Metadata

Release files for stix-validator 3.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for stix-validator 3.0.0
File Size Uploaded
stix-validator-3.0.0.tar.gz 2.4 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for stix-validator 3.0.0
File Interpreter ABI Platform
stix_validator-3.0.0-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 5.8 MB

Release files / stix-validator-3.0.0.tar.gz

Download URL stix-validator-3.0.0.tar.gz
Size 2.4 MB
Tags Source
SHA-256 checksum
How to use checksums
4c9c04e708e6b27bd2469e680dea0cc41ae0cd776066d9daf6cbd8b17c17718b
BLAKE2b-256 checksum
How to use checksums
da3b4e6e41c1298a9a211f41e978dfad96f0a7569ab14e4b25f1f980daa62a7a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.9.2

Release files / stix_validator-3.0.0-py2.py3-none-any.whl

Download URL stix_validator-3.0.0-py2.py3-none-any.whl
Size 3.4 MB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
224885f8bfa410060425798b86584521a32089e5366540d74bd6e02c5f0b07ce
BLAKE2b-256 checksum
How to use checksums
bb70c6120e1d3b9a1e2a3185be2adb1247f8ed3a96ae5ab4dbac1a8e3926dafa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.9.2

Release history Release notifications | RSS feed

This release

3.0.0 This release

2 release files

2.5.1

2 release files

2.5.0

2 release files

2.4.0

2 release files

2.3.0

2 release files

2.2.0

2 release files

2.1.5

2 release files

2.1.4

2 release files

2.1.3

2 release files

2.1.2

2 release files

2.1.1

2 release files

2.1.0

2 release files

2.0.2

2 release files

2.0.1

2 release files

2.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page