| 1859 | raise ValueError(f'Prefix {prefix} of QName "{prefixed_name}" is not declared in scope') |
| 1860 | |
| 1861 | def _qname(self, qname, uri=None): |
| 1862 | if uri is None: |
| 1863 | uri, tag = qname[1:].rsplit('}', 1) if qname[:1] == '{' else ('', qname) |
| 1864 | else: |
| 1865 | tag = qname |
| 1866 | |
| 1867 | prefixes_seen = set() |
| 1868 | for u, prefix in self._iter_namespaces(self._declared_ns_stack): |
| 1869 | if u == uri and prefix not in prefixes_seen: |
| 1870 | return f'{prefix}:{tag}' if prefix else tag, tag, uri |
| 1871 | prefixes_seen.add(prefix) |
| 1872 | |
| 1873 | # Not declared yet => add new declaration. |
| 1874 | if self._rewrite_prefixes: |
| 1875 | if uri in self._prefix_map: |
| 1876 | prefix = self._prefix_map[uri] |
| 1877 | else: |
| 1878 | prefix = self._prefix_map[uri] = f'n{len(self._prefix_map)}' |
| 1879 | self._declared_ns_stack[-1].append((uri, prefix)) |
| 1880 | return f'{prefix}:{tag}', tag, uri |
| 1881 | |
| 1882 | if not uri and '' not in prefixes_seen: |
| 1883 | # No default namespace declared => no prefix needed. |
| 1884 | return tag, tag, uri |
| 1885 | |
| 1886 | for u, prefix in self._iter_namespaces(self._ns_stack): |
| 1887 | if u == uri: |
| 1888 | self._declared_ns_stack[-1].append((uri, prefix)) |
| 1889 | return f'{prefix}:{tag}' if prefix else tag, tag, uri |
| 1890 | |
| 1891 | if not uri: |
| 1892 | # As soon as a default namespace is defined, |
| 1893 | # anything that has no namespace (and thus, no prefix) goes there. |
| 1894 | return tag, tag, uri |
| 1895 | |
| 1896 | raise ValueError(f'Namespace "{uri}" is not declared in scope') |
| 1897 | |
| 1898 | def data(self, data): |
| 1899 | if not self._ignored_depth: |