diff options
author | Leonard Richardson <leonardr@segfault.org> | 2021-11-29 22:13:33 -0500 |
---|---|---|
committer | Leonard Richardson <leonardr@segfault.org> | 2021-11-29 22:13:33 -0500 |
commit | ad52722cc6b55ce414d395e9a0860cee57c0ab2d (patch) | |
tree | 8ff820b41d9ee5fb1f896629782270349cd8311b /bs4/element.py | |
parent | c005e9ba28b4eec3a5fab173b928609bc692dd51 (diff) |
Do a better job of keeping track of namespaces as an XML document is
parsed, so that CSS selectors that use namespaces will do the right
thing more often. [bug=1946243]
Diffstat (limited to 'bs4/element.py')
-rw-r--r-- | bs4/element.py | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/bs4/element.py b/bs4/element.py index 3383621..c6cb2eb 100644 --- a/bs4/element.py +++ b/bs4/element.py @@ -1183,6 +1183,7 @@ class Tag(PageElement): can_be_empty_element=None, cdata_list_attributes=None, preserve_whitespace_tags=None, interesting_string_types=None, + namespaces=None ): """Basic constructor. @@ -1215,6 +1216,9 @@ class Tag(PageElement): to be considered. The default is to consider NavigableString and CData the only interesting string subtypes. + :param namespaces: A dictionary mapping currently active + namespace prefixes to URIs. This can be used later to + construct CSS selectors. """ if parser is None: self.parser_class = None @@ -1226,6 +1230,7 @@ class Tag(PageElement): raise ValueError("No value provided for new tag's name.") self.name = name self.namespace = namespace + self._namespaces = namespaces or {} self.prefix = prefix if ((not builder or builder.store_line_numbers) and (sourceline is not None or sourcepos is not None)): @@ -1308,7 +1313,7 @@ class Tag(PageElement): for child in self.contents: clone.append(child.__copy__()) return clone - + @property def is_empty_element(self): """Is this tag an empty-element tag? (aka a self-closing tag) |