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