diff options
Diffstat (limited to 'creactistore/_templates/lib/rdflib/plugins/serializers/xmlwriter.py')
-rw-r--r-- | creactistore/_templates/lib/rdflib/plugins/serializers/xmlwriter.py | 103 |
1 files changed, 0 insertions, 103 deletions
diff --git a/creactistore/_templates/lib/rdflib/plugins/serializers/xmlwriter.py b/creactistore/_templates/lib/rdflib/plugins/serializers/xmlwriter.py deleted file mode 100644 index d36af4b..0000000 --- a/creactistore/_templates/lib/rdflib/plugins/serializers/xmlwriter.py +++ /dev/null @@ -1,103 +0,0 @@ -import codecs -from xml.sax.saxutils import quoteattr, escape - -__all__ = ['XMLWriter'] - -class XMLWriter(object): - def __init__(self, stream, namespace_manager, encoding=None, decl=1, extra_ns={}): - encoding = encoding or 'utf-8' - encoder, decoder, stream_reader, stream_writer = codecs.lookup(encoding) - self.stream = stream = stream_writer(stream) - if decl: - stream.write('<?xml version="1.0" encoding="%s"?>' % encoding) - self.element_stack = [] - self.nm = namespace_manager - self.extra_ns=extra_ns - self.closed = True - - def __get_indent(self): - return " " * len(self.element_stack) - indent = property(__get_indent) - - def __close_start_tag(self): - if not self.closed: # TODO: - self.closed = True - self.stream.write(">") - - def push(self, uri): - self.__close_start_tag() - write = self.stream.write - write("\n") - write(self.indent) - write("<%s" % self.qname(uri)) - self.element_stack.append(uri) - self.closed = False - self.parent = False - - def pop(self, uri=None): - top = self.element_stack.pop() - if uri: - assert uri == top - write = self.stream.write - if not self.closed: - self.closed = True - write("/>") - else: - if self.parent: - write("\n") - write(self.indent) - write("</%s>" % self.qname(top)) - self.parent = True - - def element(self, uri, content, attributes={}): - """Utility method for adding a complete simple element""" - self.push(uri) - for k, v in attributes.iteritems(): - self.attribute(k,v) - self.text(content) - self.pop() - - def namespaces(self, namespaces=None): - if not namespaces: - namespaces=self.nm.namespaces() - - write = self.stream.write - write("\n") - for prefix, namespace in namespaces: - if prefix: - write(' xmlns:%s="%s"\n' % (prefix, namespace)) - else: - write(' xmlns="%s"\n' % namespace) - - for prefix, namespace in self.extra_ns.items(): - if prefix: - write(' xmlns:%s="%s"\n' % (prefix, namespace)) - else: - write(' xmlns="%s"\n' % namespace) - - - def attribute(self, uri, value): - write = self.stream.write - write(" %s=%s" % (self.qname(uri), quoteattr(value))) - - def text(self, text): - self.__close_start_tag() - if "<" in text and ">" in text and not "]]>" in text: - self.stream.write("<![CDATA[") - self.stream.write(text) - self.stream.write("]]>") - else: - self.stream.write(escape(text)) - - def qname(self,uri): - """Compute qname for a uri using our extra namespaces, - or the given namespace manager""" - - for pre,ns in self.extra_ns.items(): - if uri.startswith(ns): - if pre!="": - return ":".join(pre,uri[len(ns):]) - else: - return uri[len(ns):] - - return self.nm.qname(uri) |