From 6074d27829c19b9c78b33efa7664f8a3fe4a0147287a48ce71a977bd7744cb42 Mon Sep 17 00:00:00 2001 From: Matej Cepl <mcepl@suse.com> Date: Fri, 14 Jul 2023 16:45:23 +0000 Subject: [PATCH] - Add ISO-Schematron-schema-optional.patch and remove-ISO-Schematron-schema.patch to remove non-free RNG schema file (bsc#1213351). OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-lxml?expand=0&rev=183 --- ISO-Schematron-schema-optional.patch | 110 ++++ python-lxml.changes | 7 + python-lxml.spec | 6 + remove-ISO-Schematron-schema.patch | 731 +++++++++++++++++++++++++++ 4 files changed, 854 insertions(+) create mode 100644 ISO-Schematron-schema-optional.patch create mode 100644 remove-ISO-Schematron-schema.patch diff --git a/ISO-Schematron-schema-optional.patch b/ISO-Schematron-schema-optional.patch new file mode 100644 index 0000000..8306ce9 --- /dev/null +++ b/ISO-Schematron-schema-optional.patch @@ -0,0 +1,110 @@ +From 4bfab2c821961fb4c5ed8a04e329778c9b09a1df Mon Sep 17 00:00:00 2001 +From: Stefan Behnel <stefan_ml@behnel.de> +Date: Wed, 12 Jul 2023 16:59:07 +0200 +Subject: [PATCH] Make the validation of ISO-Schematron files optional in lxml, + depending on the availability of the RNG validation file. Some lxml + distributions discard the validation schema file due to licensing issues. + +See https://bugs.launchpad.net/lxml/+bug/2024343 +--- + CHANGES.txt | 8 ++++++++ + doc/validation.txt | 9 +++++++++ + src/lxml/isoschematron/__init__.py | 24 +++++++++++++++++++----- + 3 files changed, 36 insertions(+), 5 deletions(-) + +Index: lxml-4.9.2/CHANGES.txt +=================================================================== +--- lxml-4.9.2.orig/CHANGES.txt ++++ lxml-4.9.2/CHANGES.txt +@@ -2,6 +2,14 @@ + lxml changelog + ============== + ++* LP#2024343: The validation of the schema file itself is now optional in the ++ ISO-Schematron implementation. This was done because some lxml distributions ++ discard the RNG validation schema file due to licensing issues. The validation ++ can now always be disabled with ``Schematron(..., validate_schema=False)``. ++ It is enabled by default if available and disabled otherwise. The module ++ constant ``lxml.isoschematron.schematron_schema_valid_supported`` can be used ++ to detect whether schema file validation is available. ++ + 4.9.2 (2022-12-13) + ================== + +Index: lxml-4.9.2/doc/validation.txt +=================================================================== +--- lxml-4.9.2.orig/doc/validation.txt ++++ lxml-4.9.2/doc/validation.txt +@@ -615,6 +615,15 @@ The usage of validation phases is a uniq + a very powerful tool e.g. for establishing validation stages or to provide + different validators for different "validation audiences". + ++Note: Some lxml distributions exclude the validation schema file due to licensing issues. ++Since lxml 5.0, the validation of the user provided schema can be disabled with ++``Schematron(..., validate_schema=False)``. ++It is enabled by default if available and disabled otherwise. Previous versions of ++lxml always had it enabled and failed at import time if the file was not available. ++Thus, some distributions chose to remove the entire ISO-Schematron support. ++The module constant ``lxml.isoschematron.schematron_schema_valid_supported`` can be used ++since lxml 5.0 to detect whether schema file validation is available. ++ + (Pre-ISO-Schematron) + -------------------- + +Index: lxml-4.9.2/src/lxml/isoschematron/__init__.py +=================================================================== +--- lxml-4.9.2.orig/src/lxml/isoschematron/__init__.py ++++ lxml-4.9.2/src/lxml/isoschematron/__init__.py +@@ -61,10 +61,16 @@ iso_svrl_for_xslt1 = _etree.XSLT(_etree. + svrl_validation_errors = _etree.XPath( + '//svrl:failed-assert', namespaces={'svrl': SVRL_NS}) + +- + # RelaxNG validator for schematron schemas +-schematron_schema_valid = _etree.RelaxNG( +- file=os.path.join(_resources_dir, 'rng', 'iso-schematron.rng')) ++schematron_schema_valid_supported = False ++try: ++ schematron_schema_valid = _etree.RelaxNG( ++ file=os.path.join(_resources_dir, 'rng', 'iso-schematron.rng')) ++ schematron_schema_valid_supported = True ++except _etree.RelaxNGParseError: ++ # Some distributions delete the file due to licensing issues. ++ def schematron_schema_valid(arg): ++ raise NotImplementedError("Validating the ISO schematron requires iso-schematron.rng") + + + def stylesheet_params(**kwargs): +@@ -153,6 +159,13 @@ class Schematron(_etree._Validator): + report document gets stored and can be accessed as the ``validation_report`` + property. + ++ If ``validate_schema`` is set to False, the validation of the schema file ++ itself is disabled. Validation happens by default after building the full ++ schema, unless the schema validation file cannot be found at import time, ++ in which case the validation gets disabled. Some lxml distributions exclude ++ this file due to licensing issues. ISO-Schematron validation can then still ++ be used normally, but the schemas themselves cannot be validated. ++ + Here is a usage example:: + + >>> from lxml import etree +@@ -234,7 +247,8 @@ class Schematron(_etree._Validator): + def __init__(self, etree=None, file=None, include=True, expand=True, + include_params={}, expand_params={}, compile_params={}, + store_schematron=False, store_xslt=False, store_report=False, +- phase=None, error_finder=ASSERTS_ONLY): ++ phase=None, error_finder=ASSERTS_ONLY, ++ validate_schema=schematron_schema_valid_supported): + super(Schematron, self).__init__() + + self._store_report = store_report +@@ -273,7 +287,7 @@ class Schematron(_etree._Validator): + schematron = self._include(schematron, **include_params) + if expand: + schematron = self._expand(schematron, **expand_params) +- if not schematron_schema_valid(schematron): ++ if validate_schema and not schematron_schema_valid(schematron): + raise _etree.SchematronParseError( + "invalid schematron schema: %s" % + schematron_schema_valid.error_log) diff --git a/python-lxml.changes b/python-lxml.changes index ef2dfec..3718c1e 100644 --- a/python-lxml.changes +++ b/python-lxml.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Fri Jul 14 15:42:00 UTC 2023 - Matej Cepl <mcepl@suse.com> + +- Add ISO-Schematron-schema-optional.patch and + remove-ISO-Schematron-schema.patch to remove non-free RNG + schema file (bsc#1213351). + ------------------------------------------------------------------- Thu May 4 14:52:53 UTC 2023 - David Anes <david.anes@suse.com> diff --git a/python-lxml.spec b/python-lxml.spec index 0bb6a4b..75d994c 100644 --- a/python-lxml.spec +++ b/python-lxml.spec @@ -36,6 +36,12 @@ Patch1: skip-test-under-libxml2-2.10.4.patch # PATCH-FIX-OPENSUSE Skip a test under libxml2 2.11.1+ # https://bugs.launchpad.net/lxml/+bug/2018522 Patch2: skip-test-under-libxml2-2.11.1.patch +# PATCH-FIX-UPSTREAM ISO-Schematron-schema-optional.patch lp#2024343 mcepl@suse.com +# Make ISO Schematron RNG validation schemes optional and then remove it gh#lxml/lxml@4bfab2c82196 +Patch3: ISO-Schematron-schema-optional.patch +# PATCH-FIX-UPSTREAM remove-ISO-Schematron-schema.patch gl#fedora/legal/fedora-license-data/-#154 mcepl@suse.com +# Actually remove the schema +Patch4: remove-ISO-Schematron-schema.patch BuildRequires: %{python_module Cython >= 0.29.7} BuildRequires: %{python_module base} BuildRequires: %{python_module cssselect >= 0.9.1} diff --git a/remove-ISO-Schematron-schema.patch b/remove-ISO-Schematron-schema.patch new file mode 100644 index 0000000..1bba569 --- /dev/null +++ b/remove-ISO-Schematron-schema.patch @@ -0,0 +1,731 @@ +--- + src/lxml/isoschematron/resources/rng/iso-schematron.rng | 709 ---------------- + src/lxml/tests/test_isoschematron.py | 1 + 2 files changed, 1 insertion(+), 709 deletions(-) + +Index: lxml-4.9.2/src/lxml/isoschematron/resources/rng/iso-schematron.rng +=================================================================== +--- lxml-4.9.2.orig/src/lxml/isoschematron/resources/rng/iso-schematron.rng ++++ /dev/null +@@ -1,709 +0,0 @@ +-<?xml version="1.0" encoding="UTF-8"?> +-<!-- Copyright © ISO/IEC 2015 --> +-<!-- +- The following permission notice and disclaimer shall be included in all +- copies of this XML schema ("the Schema"), and derivations of the Schema: +- +- Permission is hereby granted, free of charge in perpetuity, to any +- person obtaining a copy of the Schema, to use, copy, modify, merge and +- distribute free of charge, copies of the Schema for the purposes of +- developing, implementing, installing and using software based on the +- Schema, and to permit persons to whom the Schema is furnished to do so, +- subject to the following conditions: +- +- THE SCHEMA IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +- THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR +- OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +- ARISING FROM, OUT OF OR IN CONNECTION WITH THE SCHEMA OR THE USE OR +- OTHER DEALINGS IN THE SCHEMA. +- +- In addition, any modified copy of the Schema shall include the following +- notice: +- +- "THIS SCHEMA HAS BEEN MODIFIED FROM THE SCHEMA DEFINED IN ISO/IEC 19757-3, +- AND SHOULD NOT BE INTERPRETED AS COMPLYING WITH THAT STANDARD". +---> +-<grammar ns="http://purl.oclc.org/dsdl/schematron" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> +- <start> +- <ref name="schema"/> +- </start> +- <!-- Element declarations --> +- <define name="schema"> +- <element name="schema"> +- <optional> +- <attribute name="id"> +- <data type="ID"/> +- </attribute> +- </optional> +- <ref name="rich"/> +- <optional> +- <attribute name="schemaVersion"> +- <ref name="non-empty-string"/> +- </attribute> +- </optional> +- <optional> +- <attribute name="defaultPhase"> +- <data type="IDREF"/> +- </attribute> +- </optional> +- <optional> +- <attribute name="queryBinding"> +- <ref name="non-empty-string"/> +- </attribute> +- </optional> +- <interleave> +- <ref name="foreign"/> +- <zeroOrMore> +- <ref name="inclusion"/> +- </zeroOrMore> +- <group> +- <optional> +- <ref name="title"/> +- </optional> +- <zeroOrMore> +- <ref name="ns"/> +- </zeroOrMore> +- <zeroOrMore> +- <ref name="p"/> +- </zeroOrMore> +- <zeroOrMore> +- <ref name="let"/> +- </zeroOrMore> +- <zeroOrMore> +- <ref name="phase"/> +- </zeroOrMore> +- <oneOrMore> +- <ref name="pattern"/> +- </oneOrMore> +- <zeroOrMore> +- <ref name="p"/> +- </zeroOrMore> +- <optional> +- <ref name="diagnostics"/> +- </optional> +- <optional> +- <!-- edited (lxml): required in standard, optional here (since it can be empty anyway) --> +- <ref name="properties"/> +- </optional> +- </group> +- </interleave> +- </element> +- </define> +- <define name="active"> +- <element name="active"> +- <attribute name="pattern"> +- <data type="IDREF"/> +- </attribute> +- <interleave> +- <ref name="foreign"/> +- <zeroOrMore> +- <choice> +- <text/> +- <ref name="dir"/> +- <ref name="emph"/> +- <ref name="span"/> +- </choice> +- </zeroOrMore> +- </interleave> +- </element> +- </define> +- <define name="assert"> +- <element name="assert"> +- <attribute name="test"> +- <ref name="exprValue"/> +- </attribute> +- <optional> +- <attribute name="flag"> +- <ref name="flagValue"/> +- </attribute> +- </optional> +- <optional> +- <attribute name="id"> +- <data type="ID"/> +- </attribute> +- </optional> +- <optional> +- <attribute name="diagnostics"> +- <data type="IDREFS"/> +- </attribute> +- </optional> +- <optional> +- <attribute name="properties"> +- <data type="IDREFS"/> +- </attribute> +- </optional> +- <ref name="rich"/> +- <ref name="linkable"/> +- <interleave> +- <ref name="foreign"/> +- <zeroOrMore> +- <choice> +- <text/> +- <ref name="name"/> +- <ref name="value-of"/> +- <ref name="emph"/> +- <ref name="dir"/> +- <ref name="span"/> +- </choice> +- </zeroOrMore> +- </interleave> +- </element> +- </define> +- <define name="diagnostic"> +- <element name="diagnostic"> +- <attribute name="id"> +- <data type="ID"/> +- </attribute> +- <ref name="rich"/> +- <interleave> +- <ref name="foreign"/> +- <zeroOrMore> +- <choice> +- <text/> +- <ref name="value-of"/> +- <ref name="emph"/> +- <ref name="dir"/> +- <ref name="span"/> +- </choice> +- </zeroOrMore> +- </interleave> +- </element> +- </define> +- <define name="diagnostics"> +- <element name="diagnostics"> +- <interleave> +- <ref name="foreign"/> +- <zeroOrMore> +- <ref name="inclusion"/> +- </zeroOrMore> +- <zeroOrMore> +- <ref name="diagnostic"/> +- </zeroOrMore> +- </interleave> +- </element> +- </define> +- <define name="dir"> +- <element name="dir"> +- <optional> +- <attribute name="value"> +- <choice> +- <value>ltr</value> +- <value>rtl</value> +- </choice> +- </attribute> +- </optional> +- <interleave> +- <ref name="foreign"/> +- <text/> +- </interleave> +- </element> +- </define> +- <define name="emph"> +- <element name="emph"> +- <text/> +- </element> +- </define> +- <define name="extends"> +- <element name="extends"> +- <choice> +- <attribute name="rule"> +- <data type="IDREF"/> +- </attribute> +- <attribute name="href"> +- <ref name="uriValue"/> +- </attribute> +- </choice> +- <ref name="foreign-empty"/> +- </element> +- </define> +- <define name="let"> +- <element name="let"> +- <attribute name="name"> +- <ref name="nameValue"/> +- </attribute> +- <choice> +- <attribute name="value"> +- <data type="string" datatypeLibrary=""/> +- </attribute> +- <oneOrMore> +- <ref name="foreign-element"/> +- </oneOrMore> +- </choice> +- </element> +- </define> +- <define name="name"> +- <element name="name"> +- <optional> +- <attribute name="path"> +- <ref name="pathValue"/> +- </attribute> +- </optional> +- <ref name="foreign-empty"/> +- </element> +- </define> +- <define name="ns"> +- <element name="ns"> +- <attribute name="uri"> +- <ref name="uriValue"/> +- </attribute> +- <attribute name="prefix"> +- <ref name="nameValue"/> +- </attribute> +- <ref name="foreign-empty"/> +- </element> +- </define> +- <define name="p"> +- <element name="p"> +- <optional> +- <attribute name="id"> +- <data type="ID"/> +- </attribute> +- </optional> +- <optional> +- <attribute name="class"> +- <ref name="classValue"/> +- </attribute> +- </optional> +- <optional> +- <attribute name="icon"> +- <ref name="uriValue"/> +- </attribute> +- </optional> +- <interleave> +- <ref name="foreign"/> +- <zeroOrMore> +- <choice> +- <text/> +- <ref name="dir"/> +- <ref name="emph"/> +- <ref name="span"/> +- </choice> +- </zeroOrMore> +- </interleave> +- </element> +- </define> +- <define name="param"> +- <element name="param"> +- <attribute name="name"> +- <ref name="nameValue"/> +- </attribute> +- <attribute name="value"> +- <ref name="non-empty-string"/> +- </attribute> +- </element> +- </define> +- <define name="pattern"> +- <element name="pattern"> +- <optional> +- <attribute name="documents"> +- <ref name="pathValue"/> +- </attribute> +- </optional> +- <ref name="rich"/> +- <interleave> +- <ref name="foreign"/> +- <zeroOrMore> +- <ref name="inclusion"/> +- </zeroOrMore> +- <choice> +- <group> +- <attribute name="abstract"> +- <value>true</value> +- </attribute> +- <attribute name="id"> +- <data type="ID"/> +- </attribute> +- <optional> +- <ref name="title"/> +- </optional> +- <group> +- <zeroOrMore> +- <ref name="p"/> +- </zeroOrMore> +- <zeroOrMore> +- <ref name="let"/> +- </zeroOrMore> +- <zeroOrMore> +- <ref name="rule"/> +- </zeroOrMore> +- </group> +- </group> +- <group> +- <optional> +- <attribute name="abstract"> +- <value>false</value> +- </attribute> +- </optional> +- <optional> +- <attribute name="id"> +- <data type="ID"/> +- </attribute> +- </optional> +- <optional> +- <ref name="title"/> +- </optional> +- <group> +- <zeroOrMore> +- <ref name="p"/> +- </zeroOrMore> +- <zeroOrMore> +- <ref name="let"/> +- </zeroOrMore> +- <zeroOrMore> +- <ref name="rule"/> +- </zeroOrMore> +- </group> +- </group> +- <group> +- <optional> +- <attribute name="abstract"> +- <value>false</value> +- </attribute> +- </optional> +- <attribute name="is-a"> +- <data type="IDREF"/> +- </attribute> +- <optional> +- <attribute name="id"> +- <data type="ID"/> +- </attribute> +- </optional> +- <optional> +- <ref name="title"/> +- </optional> +- <group> +- <zeroOrMore> +- <ref name="p"/> +- </zeroOrMore> +- <zeroOrMore> +- <ref name="param"/> +- </zeroOrMore> +- </group> +- </group> +- </choice> +- </interleave> +- </element> +- </define> +- <define name="phase"> +- <element name="phase"> +- <attribute name="id"> +- <data type="ID"/> +- </attribute> +- <ref name="rich"/> +- <interleave> +- <ref name="foreign"/> +- <zeroOrMore> +- <ref name="inclusion"/> +- </zeroOrMore> +- <group> +- <zeroOrMore> +- <ref name="p"/> +- </zeroOrMore> +- <zeroOrMore> +- <ref name="let"/> +- </zeroOrMore> +- <zeroOrMore> +- <ref name="active"/> +- </zeroOrMore> +- </group> +- </interleave> +- </element> +- </define> +- <define name="properties"> +- <element name="properties"> +- <zeroOrMore> +- <ref name="property"/> +- </zeroOrMore> +- </element> +- </define> +- <define name="property"> +- <element name="property"> +- <attribute name="id"> +- <data type="ID"/> +- </attribute> +- <optional> +- <attribute name="role"> +- <ref name="roleValue"/> +- </attribute> +- </optional> +- <optional> +- <attribute name="scheme"/> +- </optional> +- <interleave> +- <ref name="foreign"/> +- <zeroOrMore> +- <choice> +- <text/> +- <ref name="name"/> +- <ref name="value-of"/> +- <ref name="emph"/> +- <ref name="dir"/> +- <ref name="span"/> +- </choice> +- </zeroOrMore> +- </interleave> +- </element> +- </define> +- <define name="report"> +- <element name="report"> +- <attribute name="test"> +- <ref name="exprValue"/> +- </attribute> +- <optional> +- <attribute name="flag"> +- <ref name="flagValue"/> +- </attribute> +- </optional> +- <optional> +- <attribute name="id"> +- <data type="ID"/> +- </attribute> +- </optional> +- <optional> +- <attribute name="diagnostics"> +- <data type="IDREFS"/> +- </attribute> +- </optional> +- <optional> +- <attribute name="properties"> +- <data type="IDREFS"/> +- </attribute> +- </optional> +- <ref name="rich"/> +- <ref name="linkable"/> +- <interleave> +- <ref name="foreign"/> +- <zeroOrMore> +- <choice> +- <text/> +- <ref name="name"/> +- <ref name="value-of"/> +- <ref name="emph"/> +- <ref name="dir"/> +- <ref name="span"/> +- </choice> +- </zeroOrMore> +- </interleave> +- </element> +- </define> +- <define name="rule"> +- <element name="rule"> +- <optional> +- <attribute name="flag"> +- <ref name="flagValue"/> +- </attribute> +- </optional> +- <ref name="rich"/> +- <ref name="linkable"/> +- <interleave> +- <ref name="foreign"/> +- <zeroOrMore> +- <ref name="inclusion"/> +- </zeroOrMore> +- <choice> +- <group> +- <attribute name="abstract"> +- <value>true</value> +- </attribute> +- <attribute name="id"> +- <data type="ID"/> +- </attribute> +- <zeroOrMore> +- <ref name="let"/> +- </zeroOrMore> +- <oneOrMore> +- <choice> +- <ref name="assert"/> +- <ref name="report"/> +- <ref name="extends"/> +- <ref name="p"/> +- </choice> +- </oneOrMore> +- </group> +- <group> +- <attribute name="context"> +- <ref name="pathValue"/> +- </attribute> +- <optional> +- <attribute name="id"> +- <data type="ID"/> +- </attribute> +- </optional> +- <optional> +- <attribute name="abstract"> +- <value>false</value> +- </attribute> +- </optional> +- <zeroOrMore> +- <ref name="let"/> +- </zeroOrMore> +- <oneOrMore> +- <choice> +- <ref name="assert"/> +- <ref name="report"/> +- <ref name="extends"/> +- <ref name="p"/> +- </choice> +- </oneOrMore> +- </group> +- </choice> +- </interleave> +- </element> +- </define> +- <define name="span"> +- <element name="span"> +- <attribute name="class"> +- <ref name="classValue"/> +- </attribute> +- <interleave> +- <ref name="foreign"/> +- <text/> +- </interleave> +- </element> +- </define> +- <define name="title"> +- <element name="title"> +- <zeroOrMore> +- <choice> +- <text/> +- <ref name="dir"/> +- </choice> +- </zeroOrMore> +- </element> +- </define> +- <define name="value-of"> +- <element name="value-of"> +- <attribute name="select"> +- <ref name="pathValue"/> +- </attribute> +- <ref name="foreign-empty"/> +- </element> +- </define> +- <!-- common declarations --> +- <define name="inclusion"> +- <element name="include"> +- <attribute name="href"> +- <ref name="uriValue"/> +- </attribute> +- <ref name="foreign-empty"/> +- </element> +- </define> +- <define name="rich"> +- <optional> +- <attribute name="icon"> +- <ref name="uriValue"/> +- </attribute> +- </optional> +- <optional> +- <attribute name="see"> +- <ref name="uriValue"/> +- </attribute> +- </optional> +- <optional> +- <attribute name="fpi"> +- <ref name="fpiValue"/> +- </attribute> +- </optional> +- <optional> +- <attribute name="xml:lang"> +- <ref name="langValue"/> +- </attribute> +- </optional> +- <optional> +- <attribute name="xml:space"> +- <choice> +- <value>preserve</value> +- <value>default</value> +- </choice> +- </attribute> +- </optional> +- </define> +- <define name="linkable"> +- <optional> +- <attribute name="role"> +- <ref name="roleValue"/> +- </attribute> +- </optional> +- <optional> +- <attribute name="subject"> +- <ref name="pathValue"/> +- </attribute> +- </optional> +- </define> +- <define name="foreign"> +- <ref name="foreign-attributes"/> +- <zeroOrMore> +- <ref name="foreign-element"/> +- </zeroOrMore> +- </define> +- <define name="foreign-empty"> +- <ref name="foreign-attributes"/> +- </define> +- <define name="foreign-attributes"> +- <zeroOrMore> +- <attribute> +- <anyName> +- <except> +- <nsName ns=""/> +- <nsName ns="http://www.w3.org/XML/1998/namespace"/> +- </except> +- </anyName> +- </attribute> +- </zeroOrMore> +- </define> +- <define name="foreign-element"> +- <element> +- <anyName> +- <except> +- <nsName/> +- </except> +- </anyName> +- <zeroOrMore> +- <choice> +- <attribute> +- <anyName/> +- </attribute> +- <ref name="foreign-element"/> +- <ref name="schema"/> +- <text/> +- </choice> +- </zeroOrMore> +- </element> +- </define> +- <!-- Data types --> +- <define name="uriValue"> +- <data type="anyURI"/> +- </define> +- <define name="pathValue"> +- <data type="string" datatypeLibrary=""/> +- </define> +- <define name="exprValue"> +- <data type="string" datatypeLibrary=""/> +- </define> +- <define name="fpiValue"> +- <data type="string" datatypeLibrary=""/> +- </define> +- <define name="langValue"> +- <data type="language"/> +- </define> +- <define name="roleValue"> +- <data type="string" datatypeLibrary=""/> +- </define> +- <define name="flagValue"> +- <data type="string" datatypeLibrary=""/> +- </define> +- <define name="nameValue"> +- <data type="string" datatypeLibrary=""/> +- </define> +- <!-- In the default query language binding, xsd:NCNAME --> +- <define name="classValue"> +- <data type="string" datatypeLibrary=""/> +- </define> +- <define name="non-empty-string"> +- <data type="token"> +- <param name="minLength">1</param> +- </data> +- </define> +-</grammar> +Index: lxml-4.9.2/src/lxml/tests/test_isoschematron.py +=================================================================== +--- lxml-4.9.2.orig/src/lxml/tests/test_isoschematron.py ++++ lxml-4.9.2/src/lxml/tests/test_isoschematron.py +@@ -55,6 +55,7 @@ class ETreeISOSchematronTestCase(HelperT + schema = isoschematron.Schematron(schema) + self.assertTrue(schema) + ++ @unittest.skip("No RNG schema present, validation is not possible.") + def test_schematron_invalid_schema_empty(self): + schema = self.parse('''\ + <schema xmlns="http://purl.oclc.org/dsdl/schematron" />