Sync from SUSE:SLFO:Main python-lxml revision ace179b922d6696d5a9bad1c87d173c0
This commit is contained in:
commit
ebd5ba1b32
23
.gitattributes
vendored
Normal file
23
.gitattributes
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
## Default LFS
|
||||
*.7z filter=lfs diff=lfs merge=lfs -text
|
||||
*.bsp filter=lfs diff=lfs merge=lfs -text
|
||||
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.gem filter=lfs diff=lfs merge=lfs -text
|
||||
*.gz filter=lfs diff=lfs merge=lfs -text
|
||||
*.jar filter=lfs diff=lfs merge=lfs -text
|
||||
*.lz filter=lfs diff=lfs merge=lfs -text
|
||||
*.lzma filter=lfs diff=lfs merge=lfs -text
|
||||
*.obscpio filter=lfs diff=lfs merge=lfs -text
|
||||
*.oxt filter=lfs diff=lfs merge=lfs -text
|
||||
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||
*.png filter=lfs diff=lfs merge=lfs -text
|
||||
*.rpm filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.tgz filter=lfs diff=lfs merge=lfs -text
|
||||
*.ttf filter=lfs diff=lfs merge=lfs -text
|
||||
*.txz filter=lfs diff=lfs merge=lfs -text
|
||||
*.whl filter=lfs diff=lfs merge=lfs -text
|
||||
*.xz filter=lfs diff=lfs merge=lfs -text
|
||||
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||
*.zst filter=lfs diff=lfs merge=lfs -text
|
110
ISO-Schematron-schema-optional.patch
Normal file
110
ISO-Schematron-schema-optional.patch
Normal file
@ -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.3/CHANGES.txt
|
||||
===================================================================
|
||||
--- lxml-4.9.3.orig/CHANGES.txt
|
||||
+++ lxml-4.9.3/CHANGES.txt
|
||||
@@ -27,6 +27,14 @@ Other changes
|
||||
* Built with Cython 0.29.36 to adapt to changes in Python 3.12.
|
||||
|
||||
|
||||
+* 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.3/doc/validation.txt
|
||||
===================================================================
|
||||
--- lxml-4.9.3.orig/doc/validation.txt
|
||||
+++ lxml-4.9.3/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.3/src/lxml/isoschematron/__init__.py
|
||||
===================================================================
|
||||
--- lxml-4.9.3.orig/src/lxml/isoschematron/__init__.py
|
||||
+++ lxml-4.9.3/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)
|
29
close_file_before_test.patch
Normal file
29
close_file_before_test.patch
Normal file
@ -0,0 +1,29 @@
|
||||
---
|
||||
src/lxml/tests/test_etree.py | 9 ++++++---
|
||||
1 file changed, 6 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/src/lxml/tests/test_etree.py
|
||||
+++ b/src/lxml/tests/test_etree.py
|
||||
@@ -18,6 +18,7 @@ import re
|
||||
import gc
|
||||
import operator
|
||||
import textwrap
|
||||
+import tempfile
|
||||
import zlib
|
||||
import gzip
|
||||
|
||||
@@ -5276,9 +5277,11 @@ class ETreeWriteTestCase(HelperTestCase)
|
||||
|
||||
def test_write_file_gzip_parse(self):
|
||||
tree = self.parse(_bytes('<a>'+'<b/>'*200+'</a>'))
|
||||
- with tmpfile() as filename:
|
||||
- tree.write(filename, compression=9)
|
||||
- data = etree.tostring(etree.parse(filename))
|
||||
+ with tempfile.NamedTemporaryFile() as f:
|
||||
+ tree.write(f.name, compression=9)
|
||||
+ f.file.flush()
|
||||
+ f.file.seek(0)
|
||||
+ data = etree.tostring(etree.parse(f.name))
|
||||
self.assertEqual(_bytes('<a>'+'<b/>'*200+'</a>'),
|
||||
data)
|
||||
|
BIN
lxml-4.9.3.tar.gz
(Stored with Git LFS)
Normal file
BIN
lxml-4.9.3.tar.gz
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
lxmldoc-4.5.2.pdf
(Stored with Git LFS)
Normal file
BIN
lxmldoc-4.5.2.pdf
(Stored with Git LFS)
Normal file
Binary file not shown.
1604
python-lxml.changes
Normal file
1604
python-lxml.changes
Normal file
File diff suppressed because it is too large
Load Diff
2
python-lxml.rpmlintrc
Normal file
2
python-lxml.rpmlintrc
Normal file
@ -0,0 +1,2 @@
|
||||
addFilter("zero-length")
|
||||
addFilter("no-dependency-on python-base")
|
142
python-lxml.spec
Normal file
142
python-lxml.spec
Normal file
@ -0,0 +1,142 @@
|
||||
#
|
||||
# spec file for package python-lxml
|
||||
#
|
||||
# Copyright (c) 2023 SUSE LLC
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
# upon. The license for this file, and modifications and additions to the
|
||||
# file, is the same license as for the pristine package itself (unless the
|
||||
# license for the pristine package is not an Open Source License, in which
|
||||
# case the license is the MIT License). An "Open Source License" is a
|
||||
# license that conforms to the Open Source Definition (Version 1.9)
|
||||
# published by the Open Source Initiative.
|
||||
|
||||
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
||||
#
|
||||
|
||||
|
||||
%{?sle15_python_module_pythons}
|
||||
Name: python-lxml
|
||||
Version: 4.9.3
|
||||
Release: 0
|
||||
Summary: Pythonic XML processing library
|
||||
License: BSD-3-Clause AND GPL-2.0-or-later
|
||||
Group: Development/Languages/Python
|
||||
URL: https://lxml.de/
|
||||
Source0: https://files.pythonhosted.org/packages/source/l/lxml/lxml-%{version}.tar.gz
|
||||
Source1: https://lxml.de/lxmldoc-4.5.2.pdf
|
||||
Source99: python-lxml.rpmlintrc
|
||||
# PATCH-FIX-UPSTREAM close_file_before_test.patch bsc#1206555 mcepl@suse.com
|
||||
# make sure the testing data are flushed to the file
|
||||
Patch0: close_file_before_test.patch
|
||||
# PATCH-FIX-OPENSUSE Skip a test under libxml2 2.10.4+
|
||||
# https://bugs.launchpad.net/lxml/+bug/2016939
|
||||
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 with %python-Cython < 3}
|
||||
BuildRequires: %{python_module base}
|
||||
BuildRequires: %{python_module cssselect >= 0.9.1}
|
||||
BuildRequires: %{python_module setuptools >= 18.0.1}
|
||||
BuildRequires: fdupes
|
||||
%if 0%{?suse_version} == 1500
|
||||
# Assume the best that the old libxml2 in SLE15 is patched for https://gitlab.gnome.org/GNOME/libxml2/-/issues/378 (CVE-2022-2309)
|
||||
BuildRequires: libxml2-devel
|
||||
%else
|
||||
BuildRequires: libxml2-devel >= 2.10.2
|
||||
%endif
|
||||
BuildRequires: libxslt-devel >= 1.1.27
|
||||
BuildRequires: python-rpm-macros
|
||||
Requires: python-cssselect >= 0.9.1
|
||||
%python_subpackages
|
||||
|
||||
%description
|
||||
lxml is a Pythonic binding for the libxml2 and libxslt libraries. It
|
||||
provides convenient access to these libraries using the ElementTree
|
||||
API. It extends the ElementTree API significantly to offer support for XPath,
|
||||
RelaxNG, XML Schema, XSLT and C14N.
|
||||
|
||||
%if 0%{?suse_version} > 1500
|
||||
%package -n %{name}-doc
|
||||
Summary: Documentation for python-lxml, an XML processing library
|
||||
Group: Documentation/Other
|
||||
BuildArch: noarch
|
||||
|
||||
%description -n %{name}-doc
|
||||
lxml is a Pythonic binding for the libxml2 and libxslt libraries. It
|
||||
provides convenient access to these libraries using the ElementTree
|
||||
API. It extends the ElementTree API significantly to offer support for XPath,
|
||||
RelaxNG, XML Schema, XSLT and C14N.
|
||||
|
||||
This package contains documentation for lxml (HTML and PDF).
|
||||
%endif
|
||||
|
||||
%package devel
|
||||
Summary: Development files for python-lxml
|
||||
Group: Development/Libraries/Python
|
||||
Requires: %{name} = %{version}
|
||||
|
||||
%description devel
|
||||
lxml is a Pythonic binding for the libxml2 and libxslt libraries. It
|
||||
provides convenient access to these libraries using the ElementTree
|
||||
API. It extends the ElementTree API significantly to offer support for XPath,
|
||||
RelaxNG, XML Schema, XSLT and C14N.
|
||||
|
||||
This package contains header files needed to use lxml's C API.
|
||||
|
||||
%prep
|
||||
%autosetup -p1 -n lxml-%{version}
|
||||
|
||||
cp %{SOURCE1} .
|
||||
|
||||
# remove generated files
|
||||
find -name '*.c' -delete -print
|
||||
rm src/lxml/lxml.etree.h
|
||||
rm src/lxml/lxml.etree_api.h
|
||||
|
||||
%build
|
||||
export CFLAGS="%{optflags}"
|
||||
%python_build --with-cython
|
||||
|
||||
%check
|
||||
# The tests fail on SLE 11 due to broken incremental parsing in libxml2
|
||||
export CFLAGS="%{optflags}"
|
||||
export LANG=en_US.UTF-8
|
||||
export PYTHONUNBUFFERED=x
|
||||
# cyclic dependency between html5lib and lxml
|
||||
rm -v src/lxml/html/tests/test_html5parser.py
|
||||
%{python_expand PYTHON3="$python" %make_build test3}
|
||||
|
||||
%install
|
||||
%python_install
|
||||
%python_expand %fdupes %{buildroot}
|
||||
|
||||
%files %{python_files}
|
||||
%license LICENSES.txt
|
||||
%doc CHANGES.txt CREDITS.txt README.rst
|
||||
%{python_sitearch}/lxml/
|
||||
%{python_sitearch}/lxml-%{version}-py%{python_version}.egg-info
|
||||
%exclude %{python_sitearch}/lxml/*.h
|
||||
%exclude %{python_sitearch}/lxml/includes/*.h
|
||||
|
||||
%if 0%{?suse_version} > 1500
|
||||
%files -n %{name}-doc
|
||||
%license LICENSES.txt
|
||||
%endif
|
||||
%doc doc/html
|
||||
%doc lxmldoc-*.pdf
|
||||
|
||||
%files %{python_files devel}
|
||||
%license LICENSES.txt
|
||||
%{python_sitearch}/lxml/*.h
|
||||
%{python_sitearch}/lxml/includes/*.h
|
||||
|
||||
%changelog
|
731
remove-ISO-Schematron-schema.patch
Normal file
731
remove-ISO-Schematron-schema.patch
Normal file
@ -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" />
|
12
skip-test-under-libxml2-2.10.4.patch
Normal file
12
skip-test-under-libxml2-2.10.4.patch
Normal file
@ -0,0 +1,12 @@
|
||||
Index: lxml-4.9.2/src/lxml/tests/test_etree.py
|
||||
===================================================================
|
||||
--- lxml-4.9.2.orig/src/lxml/tests/test_etree.py
|
||||
+++ lxml-4.9.2/src/lxml/tests/test_etree.py
|
||||
@@ -3068,6 +3068,7 @@ class ETreeOnlyTestCase(HelperTestCase):
|
||||
self.assertEqual(re, e.nsmap)
|
||||
self.assertEqual(r, s.nsmap)
|
||||
|
||||
+ @unittest.skipIf(etree.LIBXML_VERSION >= (2, 10, 4), "libxml2 regression ignores namespaces")
|
||||
def test_html_prefix_nsmap(self):
|
||||
etree = self.etree
|
||||
el = etree.HTML('<hha:page-description>aa</hha:page-description>').find('.//page-description')
|
20
skip-test-under-libxml2-2.11.1.patch
Normal file
20
skip-test-under-libxml2-2.11.1.patch
Normal file
@ -0,0 +1,20 @@
|
||||
Index: lxml-4.9.2/src/lxml/tests/test_io.py
|
||||
===================================================================
|
||||
--- lxml-4.9.2.orig/src/lxml/tests/test_io.py
|
||||
+++ lxml-4.9.2/src/lxml/tests/test_io.py
|
||||
@@ -15,6 +15,7 @@ from .common_imports import (
|
||||
read_file, write_to_file, BytesIO, tmpfile
|
||||
)
|
||||
|
||||
+import lxml
|
||||
|
||||
class _IOTestCaseBase(HelperTestCase):
|
||||
"""(c)ElementTree compatibility for IO functions/methods
|
||||
@@ -304,6 +305,7 @@ class _IOTestCaseBase(HelperTestCase):
|
||||
os.unlink(f.name)
|
||||
self.assertEqual(utext, root.text)
|
||||
|
||||
+ @unittest.skipIf(lxml.etree.LIBXML_VERSION >= (2, 11, 1), "libxml2 regression has issues with utf16")
|
||||
def test_iterparse_utf16_bom(self):
|
||||
utext = _str('Søk på nettet')
|
||||
uxml = '<?xml version="1.0" encoding="UTF-16"?><p>%s</p>' % utext
|
Loading…
Reference in New Issue
Block a user