root/galaxy-central/eggs/docutils-0.4-py2.6.egg/docutils/writers/docutils_xml.py @ 3

リビジョン 3, 2.7 KB (コミッタ: kohda, 14 年 前)

Install Unix tools  http://hannonlab.cshl.edu/galaxy_unix_tools/galaxy.html

行番号 
1# Authors: David Goodger
2# Contact: goodger@users.sourceforge.net
3# Revision: $Revision: 3512 $
4# Date: $Date: 2005-06-19 17:26:13 +0200 (Sun, 19 Jun 2005) $
5# Copyright: This module has been placed in the public domain.
6
7"""
8Simple internal document tree Writer, writes Docutils XML.
9"""
10
11__docformat__ = 'reStructuredText'
12
13
14import docutils
15from docutils import frontend, writers
16
17
18class Writer(writers.Writer):
19
20    supported = ('xml',)
21    """Formats this writer supports."""
22
23    settings_spec = (
24        '"Docutils XML" Writer Options',
25        'Warning: the --newlines and --indents options may adversely affect '
26        'whitespace; use them only for reading convenience.',
27        (('Generate XML with newlines before and after tags.',
28          ['--newlines'],
29          {'action': 'store_true', 'validator': frontend.validate_boolean}),
30         ('Generate XML with indents and newlines.',
31          ['--indents'],
32          {'action': 'store_true', 'validator': frontend.validate_boolean}),
33         ('Omit the XML declaration.  Use with caution.',
34          ['--no-xml-declaration'],
35          {'dest': 'xml_declaration', 'default': 1, 'action': 'store_false',
36           'validator': frontend.validate_boolean}),
37         ('Omit the DOCTYPE declaration.',
38          ['--no-doctype'],
39          {'dest': 'doctype_declaration', 'default': 1,
40           'action': 'store_false', 'validator': frontend.validate_boolean}),))
41
42    settings_defaults = {'output_encoding_error_handler': 'xmlcharrefreplace'}
43
44    config_section = 'docutils_xml writer'
45    config_section_dependencies = ('writers',)
46
47    output = None
48    """Final translated form of `document`."""
49
50    xml_declaration = '<?xml version="1.0" encoding="%s"?>\n'
51    #xml_stylesheet = '<?xml-stylesheet type="text/xsl" href="%s"?>\n'
52    doctype = (
53        '<!DOCTYPE document PUBLIC'
54        ' "+//IDN docutils.sourceforge.net//DTD Docutils Generic//EN//XML"'
55        ' "http://docutils.sourceforge.net/docs/ref/docutils.dtd">\n')
56    generator = '<!-- Generated by Docutils %s -->\n'
57
58    def translate(self):
59        settings = self.document.settings
60        indent = newline = ''
61        if settings.newlines:
62            newline = '\n'
63        if settings.indents:
64            newline = '\n'
65            indent = '    '
66        output_prefix = []
67        if settings.xml_declaration:
68            output_prefix.append(
69                self.xml_declaration % settings.output_encoding)
70        if settings.doctype_declaration:
71            output_prefix.append(self.doctype)
72        output_prefix.append(self.generator % docutils.__version__)
73        docnode = self.document.asdom().childNodes[0]
74        self.output = (''.join(output_prefix)
75                       + docnode.toprettyxml(indent, newline))
Note: リポジトリブラウザについてのヘルプは TracBrowser を参照してください。