diff options
author | scoder <none@none> | 2007-06-21 00:14:15 +0200 |
---|---|---|
committer | scoder <none@none> | 2007-06-21 00:14:15 +0200 |
commit | d6d59fc9c6567fb5f32e4eb8daaa722eba81a45e (patch) | |
tree | 18d31e17491f75fb48aa38bf8086a63d2e0d0e60 /src/lxml/ElementInclude.py | |
parent | 4b31133e9e36b6ceec645678d1f6d935b1cba1df (diff) | |
download | python-lxml-d6d59fc9c6567fb5f32e4eb8daaa722eba81a45e.tar.gz |
[svn r2492] ElementInclude didn't honour base URL of source document
--HG--
branch : trunk
rename : src/lxml/tests/test_xinclude.xml => src/lxml/tests/include/test_xinclude.xml
Diffstat (limited to 'src/lxml/ElementInclude.py')
-rw-r--r-- | src/lxml/ElementInclude.py | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/lxml/ElementInclude.py b/src/lxml/ElementInclude.py index 52fcaeb7..e25e6368 100644 --- a/src/lxml/ElementInclude.py +++ b/src/lxml/ElementInclude.py @@ -46,6 +46,7 @@ ## import copy, etree +from urlparse import urljoin try: set @@ -123,13 +124,15 @@ def _wrap_et_loader(loader): def include(elem, loader=None): if hasattr(elem, 'getroot'): - #if hasattr(elem, 'docinfo'): - # base_url = elem.docinfo.URL - _include(elem.getroot(), loader) + tree = elem + elem = elem.getroot() else: - _include(elem, loader) + tree = elem.getroottree() + if hasattr(tree, 'docinfo'): + base_url = tree.docinfo.URL + _include(elem, loader, base_url=base_url) -def _include(elem, loader=None, _parent_hrefs=None): +def _include(elem, loader=None, _parent_hrefs=None, base_url=None): if loader is not None: load_include = _wrap_et_loader(loader) else: @@ -146,7 +149,7 @@ def _include(elem, loader=None, _parent_hrefs=None): for e in include_elements: if e.tag == XINCLUDE_INCLUDE: # process xinclude directive - href = e.get("href") + href = urljoin(base_url, e.get("href")) parse = e.get("parse", "xml") parent = e.getparent() if parse == "xml": |