summaryrefslogtreecommitdiff
path: root/src/lxml/ElementInclude.py
diff options
context:
space:
mode:
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":