summaryrefslogtreecommitdiff
path: root/src/lxml/ElementInclude.py
diff options
context:
space:
mode:
authorscoder <none@none>2007-06-21 00:14:15 +0200
committerscoder <none@none>2007-06-21 00:14:15 +0200
commitd6d59fc9c6567fb5f32e4eb8daaa722eba81a45e (patch)
tree18d31e17491f75fb48aa38bf8086a63d2e0d0e60 /src/lxml/ElementInclude.py
parent4b31133e9e36b6ceec645678d1f6d935b1cba1df (diff)
downloadpython-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.py15
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":