Some experiments with the language: html, epub, covers.
[librarian.git] / librarian / parser.py
1 # -*- coding: utf-8 -*-
2 #
3 # This file is part of Librarian, licensed under GNU Affero GPLv3 or later.
4 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
5 #
6 from lxml import etree
7 from . import DCNS, SSTNS
8 from . import core, meta
9
10
11 class SSTParser(etree.XMLParser):
12     """ XML parser using relevant element classes. """
13     def __init__(self):
14         super(SSTParser, self).__init__(remove_blank_text=False)
15         lookup = etree.ElementNamespaceClassLookup()
16         self.set_element_class_lookup(lookup)
17
18         # Define core language tags.
19         sst_ns = lookup.get_namespace(SSTNS.uri)
20         sst_ns['aside'] = core.Aside
21         sst_ns['div'] = core.Div
22         sst_ns['header'] = core.Header
23         sst_ns['section'] = core.Section
24         sst_ns['span'] = core.Span
25         sst_ns['metadata'] = meta.Metadata
26
27         # Define any special metadata.
28         dc_ns = lookup.get_namespace(DCNS.uri)
29         dc_ns['creator'] = meta.Person
30         dc_ns['identifier'] = meta.Identifier