|
rpm-build |
d9acb6 |
|
|
rpm-build |
d9acb6 |
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
|
rpm-build |
d9acb6 |
<head>
|
|
rpm-build |
d9acb6 |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
rpm-build |
d9acb6 |
<meta name="generator" content="Docutils 0.12: http://docutils.sourceforge.net/" />
|
|
rpm-build |
d9acb6 |
<title>Validation with lxml</title>
|
|
rpm-build |
d9acb6 |
<link rel="stylesheet" href="style.css" type="text/css" />
|
|
rpm-build |
d9acb6 |
<script type="text/javascript">
|
|
rpm-build |
d9acb6 |
function trigger_menu(event) {
|
|
rpm-build |
d9acb6 |
var sidemenu = document.getElementById("sidemenu");
|
|
rpm-build |
d9acb6 |
var classes = sidemenu.getAttribute("class");
|
|
rpm-build |
d9acb6 |
classes = (classes.indexOf(" visible") === -1) ? classes + " visible" : classes.replace(" visible", "");
|
|
rpm-build |
d9acb6 |
sidemenu.setAttribute("class", classes);
|
|
rpm-build |
d9acb6 |
event.preventDefault();
|
|
rpm-build |
d9acb6 |
event.stopPropagation();
|
|
rpm-build |
d9acb6 |
}
|
|
rpm-build |
d9acb6 |
function hide_menu() {
|
|
rpm-build |
d9acb6 |
var sidemenu = document.getElementById("sidemenu");
|
|
rpm-build |
d9acb6 |
var classes = sidemenu.getAttribute("class");
|
|
rpm-build |
d9acb6 |
if (classes.indexOf(" visible") !== -1) {
|
|
rpm-build |
d9acb6 |
sidemenu.setAttribute("class", classes.replace(" visible", ""));
|
|
rpm-build |
d9acb6 |
}
|
|
rpm-build |
d9acb6 |
}
|
|
rpm-build |
d9acb6 |
</script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
|
|
rpm-build |
d9acb6 |
<body onclick="hide_menu()">
|
|
rpm-build |
d9acb6 |
|
|
rpm-build |
d9acb6 |
Validation with lxml
|
|
rpm-build |
d9acb6 |
|
|
rpm-build |
d9acb6 |
Apart from the built-in DTD support in parsers, lxml currently supports three
|
|
rpm-build |
d9acb6 |
schema languages: DTD, Relax NG and XML Schema. All three provide
|
|
rpm-build |
d9acb6 |
identical APIs in lxml, represented by validator classes with the obvious
|
|
rpm-build |
d9acb6 |
names.
|
|
rpm-build |
d9acb6 |
lxml also provides support for ISO-Schematron, based on the pure-XSLT
|
|
rpm-build |
d9acb6 |
skeleton implementation of Schematron:
|
|
rpm-build |
d9acb6 |
There is also basic support for pre-ISO-Schematron through the libxml2
|
|
rpm-build |
d9acb6 |
Schematron features. However, this does not currently support error reporting
|
|
rpm-build |
d9acb6 |
in the validation phase due to insufficiencies in the implementation as of
|
|
rpm-build |
d9acb6 |
libxml2 2.6.30.
|
|
rpm-build |
d9acb6 |
|
|
rpm-build |
d9acb6 |
Contents
|
|
rpm-build |
d9acb6 |
|
|
rpm-build |
d9acb6 |
Validation at parse time
|
|
rpm-build |
d9acb6 |
DTD
|
|
rpm-build |
d9acb6 |
RelaxNG
|
|
rpm-build |
d9acb6 |
XMLSchema
|
|
rpm-build |
d9acb6 |
Schematron
|
|
rpm-build |
d9acb6 |
(Pre-ISO-Schematron)
|
|
rpm-build |
d9acb6 |
|
|
rpm-build |
d9acb6 |
|
|
rpm-build |
d9acb6 |
The usual setup procedure:
|
|
rpm-build |
d9acb6 |
>>> from lxml import etree
|