lxml also provides support for ISO-Schematron, based on the pure-XSLT skeleton implementation of Schematron: There is also basic support for The parser in lxml can do on-the-fly validation of a document against a DTD or an XML schema.
The DTD is retrieved automatically based on the DOCTYPE of the parsed document.
Since version 2.0, lxml.etree features pre-ISO-Schematron support, using the class lxml.etree.
Ironically the service that is being accessed accepts SOAP data but the service does not expose any WSDL even though it uses some WS-* specification features - namely digital signature of the XML body of the message.
Since I didn't have much luck finding the information I needed in one place I thought I'd write it up here, so it hopefully helps out some of you (and myself) in the future.
Both signing and and validation can be done with the Signed Xml class in combination with the X509Certificate and X509Certifcate2 classes.
For testing it's a good idea to create self signed certificate that you can use both for signing and validating.
It will only contain log entries that appeared during the validation.
Similar to XSLT, there's also a less efficient but easier shortcut method to do one-shot Relax NG validation: lxml.etree also has XML Schema (XSD) support, using the class lxml.etree. The API is very similar to the Relax NG and DTD classes.XML schema is supported in a similar way, but requires an explicit schema to be provided: As described above, the parser support for DTDs depends on internal or external subsets of the XML file.This means that the XML file itself must either contain a DTD or must reference a DTD to make this work.For quick review: When signing a document you'll use a Private key to sign a portion of the the document and embed a signature into the document.You then use a Public key to validate the signature when reading the document.If you ever need to pass an XPath as argument to the XSLT stylesheet you can pass in an etree.