Changeset 2590:7b6bba35f3a0 in livinglogic.python.xist

Show
Ignore:
Timestamp:
09/22/06 08:54:55 (13 years ago)
Author:
Walter Doerwald <walter@…>
Branch:
default
Message:

htmlspecials.pixel() now no longer uses colored pixels, instead color is
done via CSS. The URL for the one remaining transparent pixel can now be
specified via src (either as an XML attribute or via the converter context).

Rename attrs methods with() and without() to withnames() and withoutnames()
(for Python 2.5 compatibility).

Use elinks instead of w3m for asText() and move/rename this method to a
function ll.xist.ns.html.astext().

Try to make XIST independent from PyXML (however PyXML is still required
for parsing via expat and for dtd2xsc.py (because this requires xmlproc)).

Remove the long dperecated method withSep().

Use Py_ssize_t in the C source where appropriate.

Files:
2 added
217 removed
37 modified

Legend:

Unmodified
Added
Removed
  • INSTALL.xml

    r2568 r2590  
    1010<item>if you want to parse broken &html;: <link href="http://www.xmlsoft.org/">libxml2</link> 
    1111(including its Python wrapper),</item> 
    12 <item>if you want want to use the method <method>asText</method> to convert &html; to 
    13 plain text: <link href="http://w3m.sourceforge.net/">w3m</link>,</item> 
     12<item>if you want want to use the function <function>ll.xist.ns.html.astext</function> 
     13to convert &html; to plain text: <link href="http://elinks.or.cz/">elinks</link>,</item> 
    1414<item>if you want to install this package as an egg: 
    1515<link href="http://peak.telecommunity.com/DevCenter/setuptools">setuptools</link>.</item> 
  • MANIFEST.in

    r2558 r2590  
    1515recursive-include demos * 
    1616recursive-include scripts *.py 
    17 include px/*.gif 
     17include px/spc.gif 
  • MIGRATION.xml

    r2560 r2590  
    11<?xml version='1.0' encoding='iso-8859-1'?> 
     2<section><title>Migrating to version 2.15</title> 
     3 
     4<section><title>Changes to plain text conversion</title> 
     5 
     6<par>The node method <method>asText</method> has been moved to the 
     7<module>html</module> namespace, os you have to replace:</par> 
     8 
     9<prog>print node.asText()</prog> 
     10 
     11<par>with:</par> 
     12 
     13<prog> 
     14from ll.xist.ns import html 
     15print html.astext(node) 
     16</prog> 
     17 
     18</section> 
     19 
     20<section><title>Changes to <class>htmlspecials.pixel</class></title> 
     21 
     22<par>If you've been using the <lit>color</lit> attribute for 
     23<class>htmlspecials.pixel</class>, you have to add a <lit>#</lit> in from of 
     24the value, as it is a &css; color value now. (And if've you've been using 
     25<lit>color</lit> and a &css; padding of a different color: This will no longer 
     26work).</par> 
     27 
     28</section> 
     29 
     30 
    231<section><title>Migrating to version 2.14</title> 
    332 
  • NEWS.xml

    r2574 r2590  
    11<?xml version='1.0' encoding='iso-8859-1'?> 
     2<section><title>Changes in 2.15 (released ??/??/2006)</title> 
     3<ulist> 
     4<item>&xist; has been made compatible with Python 2.5: Code has been updated 
     5to use the proper C API for memory management and <link href="http://www.python.org/dev/peps/pep-0353/">PEP 353</link> 
     6support has been added. &xist; now includes its own fixed version of <module>sgmlop</module>.</item> 
     7<item>The <class>ll.xist.xsc.Attrs</class> methods <method>with</method> and 
     8<method>without</method> have been renamed to <method>withnames</method> and 
     9<method>withoutnames</method> for Python 2.5 compatibility.</item> 
     10<item><class>ll.xist.ns.htmlspecials.pixel</class> no longer handles colors 
     11via different GIFs. It uses the <lit>background-color</lit> in the <lit>style</lit> 
     12attribute instead. The same change has been implemented for 
     13<class>ll.xist.ns.htmlspecials.autopixel</class>. It's now possible to overwrite 
     14the default <lit>src</lit> attribute value of <lit>root:px/spc.gif</lit> either 
     15via the &xml; attribute or via the converter context.</item> 
     16<item>The node method <method>asText</method> has been made a function, moved 
     17into the <module>html</module> namespace and renamed to <function>astext</function>. 
     18Furthermore <app moreinfo="http://elinks.or.cz/">elinks</app> is used for plain text 
     19formatting now instead of <app moreinfo="http://w3m.sourceforge.net/">w3m</app>.</item> 
     20</ulist> 
     21</section> 
     22 
     23 
    224<section><title>Changes in 2.14.2 (released 07/04/2006)</title> 
    325<ulist> 
  • setup.py

    r2576 r2590  
    5656args = dict( 
    5757    name="ll-xist", 
    58     version="2.14.2", 
     58    version="2.15", 
    5959    description="An extensible HTML/XML generator", 
    6060    long_description=DESCRIPTION, 
     
    7070    ext_modules=[ 
    7171        tools.Extension("ll.xist.csstokenizer", ["src/ll/xist/csstokenizer.cxx"]), 
    72         tools.Extension("ll.xist.helpers", ["src/ll/xist/helpers.c"]) 
     72        tools.Extension("ll.xist.helpers", ["src/ll/xist/helpers.c"]), 
     73        tools.Extension("ll.xist.sgmlop", ["src/ll/xist/sgmlop.c"]) 
    7374    ], 
    7475    entry_points=dict( 
     
    8788    ], 
    8889    install_requires=[ 
    89         "ll-core >= 1.3", 
     90        "ll-core >= 1.5", 
    9091        "PyXML >= 0.8.4", 
    9192    ], 
  • src/ll/xist/csstokenizer.cxx

    r2520 r2590  
    11/* 
    2 ** Copyright 1999-2006 by LivingLogic AG, Bayreuth, Germany. 
     2** Copyright 1999-2006 by LivingLogic AG, Bayreuth/Germany. 
    33** Copyright 1999-2006 by Walter Dörwald 
    44** 
  • src/ll/xist/helpers.c

    r2533 r2590  
    11/* 
    2 ** Copyright 1999-2006 by LivingLogic AG, Bayreuth, Germany. 
     2** Copyright 1999-2006 by LivingLogic AG, Bayreuth/Germany. 
    33** Copyright 1999-2006 by Walter Dörwald 
    44** 
     
    103103{ 
    104104    PyObject *str; 
    105     int oldsize; 
     105    Py_ssize_t oldsize; 
    106106    const char *encoding; 
    107107    PyObject *test; 
     
    117117        if (PyErr_ExceptionMatches(PyExc_UnicodeError)) /* OK, we try it character by character */ 
    118118        { 
    119             int i; 
    120             int oldsize = PyUnicode_GET_SIZE(str); 
    121             int newsize = 0; 
     119            Py_ssize_t i; 
     120            Py_ssize_t oldsize = PyUnicode_GET_SIZE(str); 
     121            Py_ssize_t newsize = 0; 
    122122            PyObject *result; 
    123123            Py_UNICODE *p; 
  • src/ll/xist/helpers.h

    r2533 r2590  
    99 
    1010 
    11 static PyObject *STRINGLIB_NAME(PyObject *str, int inattr) 
     11static PyObject *STRINGLIB_NAME(PyObject *str, Py_ssize_t inattr) 
    1212{ 
    13     int i; 
    14     int oldsize; 
    15     int newsize = 0; 
     13    Py_ssize_t i; 
     14    Py_ssize_t oldsize; 
     15    Py_ssize_t newsize = 0; 
    1616 
    1717    oldsize = STRINGLIB_LEN(str); 
  • src/ll/xist/ns/form.py

    r2520 r2590  
    6363 
    6464    def convert(self, converter): 
    65         e = html.textarea(self[u"value"], self.attrs.without([u"value"])) 
     65        e = html.textarea(self[u"value"], self.attrs.withoutnames([u"value"])) 
    6666        return e.convert(converter) 
    6767 
  • src/ll/xist/ns/html.py

    r2520 r2590  
    1717# $Source$ 
    1818 
    19 import cgi # for parse_header 
     19import os, cgi 
    2020 
    2121from ll.xist import xsc, utils, sims 
     
    11901190    prevents line breaks 
    11911191    """ 
     1192 
     1193 
     1194def astext(node, encoding="iso-8859-1", width=72): 
     1195    """ 
     1196    <par>Return the node <arg>node</arg> as a formatted plain string. <arg>node</arg> 
     1197    must contain an &html; trees.</par> 
     1198 
     1199    <par>This requires that <app moreinfo="http://elinks.or.cz/">elinks</app> is 
     1200    installed.</par> 
     1201 
     1202    <par><arg>encoding</arg> specifies the output encoding. <arg>width</arg> 
     1203    specifies the output width.</par> 
     1204    """ 
     1205 
     1206    options = [ 
     1207        "-dump 1", 
     1208        "-dump-charset %s" % encoding, 
     1209        "-dump-width %d" % width, 
     1210        "-force-html", 
     1211        "-no-home", 
     1212        "-no-numbering", 
     1213        "-no-references", 
     1214        "-verbose 0", 
     1215    ] 
     1216 
     1217    text = node.asBytes(encoding="utf-8") 
     1218 
     1219    cmd = "elinks %s" % " ".join(options) 
     1220    (stdin, stdout) = os.popen2(cmd) 
     1221 
     1222    stdin.write(text) 
     1223    stdin.close() 
     1224    text = stdout.read() 
     1225    stdout.close() 
     1226    text = "\n".join(line.rstrip() for line in text.splitlines()) 
     1227    return text 
    11921228 
    11931229 
  • src/ll/xist/ns/htmlspecials.py

    r2520 r2590  
    6262 
    6363class _pixelbase(html.img): 
     64    class Context(html.img.Context): 
     65        def __init__(self): 
     66            self.src = "root:px/spc.gif" 
     67 
    6468    class Attrs(html.img.Attrs): 
    6569        class color(xsc.TextAttr): 
    6670            """ 
    67             The pixel color as a three digit hex value or <lit>spc</lit> to 
    68             get a transparent pixel. 
     71            The pixel color as a &css; value. Leave it blank to get a transparent 
     72            pixel. 
    6973            """ 
    70             default = u"spc" 
    71  
    72             def checkvalid(self): 
    73                 if len(self) and not self.isfancy(): 
    74                     content = unicode(self) 
    75                     if content != u"spc": 
    76                         if len(content) == 3: 
    77                             for c in content: 
    78                                 if c not in u"0369cf": 
    79                                     warnings.warn(xsc.IllegalAttrValueWarning(self)) 
    80                         else: 
    81                             warnings.warn(xsc.IllegalAttrValueWarning(self)) 
    8274 
    8375        class alt(html.img.Attrs.alt): 
     
    8779class pixel(_pixelbase): 
    8880    """ 
    89     <par>element for single pixel images.</par> 
     81    <par>element for single transparent pixel image.</par> 
    9082     
    91     <par>The default is the image <filename>root:px/0.gif</filename>, but 
    92     you can specify the color as a three digit hex string, which will be 
    93     used as the filename, i.e. <markup>&lt;pixel color="000"/&gt;</markup> 
    94     results in <markup>&lt;img src="root:px/000.gif"&gt;</markup>.</par> 
     83    <par>You can specify the pixel color via the <lit>color</lit> 
     84    attribute (which will set the background-color in the style attribute.</par> 
    9585 
    9686    <par>In addition to that you can specify width and height attributes 
     
    10494        class height(_pixelbase.Attrs.height): 
    10595            default = 1 
    106         src = None # remove source attribute 
    107  
    108     def convert(self, converter): 
    109         self.attrs.checkvalid() 
     96 
     97    def convert(self, converter): 
     98        if self.attrs.src: 
     99            src = self.attrs.src 
     100        else: 
     101            src = converter[self].src 
     102        if self.attrs.color: 
     103            style = ["background-color: ", self.attrs.color, ";"] 
     104            if self.attrs.style: 
     105                style.append(" ") 
     106                style.append(self.attrs.style) 
     107        else: 
     108            style = self.attrs.style 
    110109        e = converter.target.img( 
    111             self.attrs.without([u"color"]), 
    112             src=(u"root:px/", self[u"color"], u".gif") 
     110            self.attrs.withoutnames([u"color"]), 
     111            style=style, 
     112            src=src, 
    113113        ) 
    114114        return e.convert(converter) 
     
    144144        if not issubclass(target, (ihtml, html)): 
    145145            raise ValueError("unknown conversion target %r" % target) 
    146         self.attrs.checkvalid() 
    147         e = target.img(self.attrs.without([u"color"])) 
    148         src = self[u"src"].convert(converter).forInput(converter.root) 
     146        e = target.img(self.attrs.withoutnames([u"color"])) 
     147        src = self.attrs.src.convert(converter).forInput(converter.root) 
    149148        e._addimagesizeattributes(src, u"width", u"height") 
    150         e[u"src"] = (u"root:px/", self[u"color"], u".gif") 
     149        e.attrs.src = converter[self].src 
    151150        return e 
    152151 
  • src/ll/xist/ns/meta.py

    r2520 r2590  
    4343        if issubclass(target, (ihtml, html)): 
    4444            e = target.meta( 
    45                 self.attrs.without([u"mimetype"]), 
     45                self.attrs.withoutnames([u"mimetype"]), 
    4646                http_equiv=u"Content-Type", 
    4747                content=self[u"mimetype"], 
     
    6969 
    7070    def convert(self, converter): 
    71         e = html.meta(self.attrs.without([u"type"])) 
     71        e = html.meta(self.attrs.withoutnames([u"type"])) 
    7272        e[u"http_equiv"] = u"Content-Script-Type" 
    7373        e[u"content"] = self[u"type"] 
  • src/ll/xist/ns/text.py

    r2520 r2590  
    4545 
    4646class HeaderFormattingMixin(object): 
    47     abovetext = None 
    48     belowtext = None 
     47    underline = None 
    4948 
    5049    def convert(self, converter): 
     
    5251        content = unicode(self.content.convert(converter)) 
    5352        l = len(content) 
    54         if self.abovetext: 
    55             abovetext = ((self.abovetext*l)[:l], target.br()) 
     53        if self.underline: 
     54            underline = ((self.underline*l)[:l], target.br()) 
    5655        else: 
    57             abovetext = None 
    58         if self.belowtext: 
    59             belowtext = ((self.belowtext*l)[:l], target.br()) 
    60         else: 
    61             belowtext = None 
     56            underline = None 
    6257        e = self.base( 
    6358            target.br(), 
    64             abovetext, 
    6559            self.content, target.br(), 
    66             belowtext 
     60            underline 
    6761        ) 
    6862        return e.convert(converter) 
     
    7064 
    7165class h1(HeaderFormattingMixin, html_.h1): 
    72     abovetext = u"#" 
    73     belowtext = u"#" 
     66    underline = u"=" 
    7467    base = html_.h1 
    7568 
    7669 
    7770class h2(HeaderFormattingMixin, html_.h2): 
    78     abovetext = u"=" 
    79     belowtext = u"=" 
     71    underline = u"=" 
    8072    base = html_.h2 
    8173 
    8274 
    8375class h3(HeaderFormattingMixin, html_.h3): 
    84     abovetext = u"-" 
    85     belowtext = u"-" 
     76    underline = u"-" 
    8677    base = html_.h3 
    8778 
    8879 
    8980class h4(HeaderFormattingMixin, html_.h4): 
    90     belowtext = u"#" 
     81    underline = u"-" 
    9182    base = html_.h4 
    9283 
    9384 
    9485class h5(HeaderFormattingMixin, html_.h5): 
    95     belowtext = u"=" 
     86    underline = u"-" 
    9687    base = html_.h5 
    9788 
    9889 
    9990class h6(HeaderFormattingMixin, html_.h6): 
    100     belowtext = u"-" 
     91    underline = u"-" 
    10192    base = html_.h6 
    10293 
  • src/ll/xist/parsers.py

    r2559 r2590  
    2121 
    2222from xml import sax 
    23 from xml.parsers import sgmlop 
    2423from xml.sax import expatreader 
    25 from xml.sax import saxlib 
    2624from xml.sax import handler 
    27 from xml.dom import html as htmldtd 
    2825 
    2926from ll import url 
    30  
    31 import xsc, utils, cssparsers 
    32 from ns import html 
     27from ll.xist import xsc, utils, cssparsers, sgmlop 
     28from ll.xist.ns import html 
     29 
     30# from PyXML/dom/html/__init__.py 
     31HTML_OPT_END = ["body", "colgroup", "dd", "dt", "head", "html", "li", "option", "p", "tbody", "td", "tfoot", "th", "thead", "tr"] 
     32 
     33HTML_FORBIDDEN_END = ["area", "base", "basefont", "br", "col", "frame", "hr", "img", "input", "isindex", "link", "meta", "param"] 
     34 
     35HTML_DTD = { 
     36    "col": [], 
     37    "u": ["#PCDATA", "a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br", "button", "cite", "code", "del", "dfn", "em", "font", "i", "iframe", "img", "input", "ins", "kbd", "label", "map", "noscript", "object", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "textarea", "tt", "u", "var"], 
     38    "p": ["#PCDATA", "a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br", "button", "cite", "code", "del", "dfn", "em", "font", "i", "iframe", "img", "input", "ins", "kbd", "label", "map", "noscript", "object", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "textarea", "tt", "u", "var"], 
     39    "caption": ["#PCDATA", "a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br", "button", "cite", "code", "del", "dfn", "em", "font", "i", "iframe", "img", "input", "ins", "kbd", "label", "map", "noscript", "object", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "textarea", "tt", "u", "var"], 
     40    "q": ["#PCDATA", "a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br", "button", "cite", "code", "del", "dfn", "em", "font", "i", "iframe", "img", "input", "ins", "kbd", "label", "map", "noscript", "object", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "textarea", "tt", "u", "var"], 
     41    "i": ["#PCDATA", "a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br", "button", "cite", "code", "del", "dfn", "em", "font", "i", "iframe", "img", "input", "ins", "kbd", "label", "map", "noscript", "object", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "textarea", "tt", "u", "var"], 
     42    "textarea": ["#PCDATA"], 
     43    "center": ["#PCDATA", "a", "abbr", "acronym", "address", "applet", "b", "basefont", "bdo", "big", "blockquote", "br", "button", "center", "cite", "code", "del", "dfn", "dir", "div", "dl", "em", "fieldset", "font", "form", "h1", "h2", "h3", "h4", "h5", "h6", "hr", "i", "iframe", "img", "input", "ins", "isindex", "kbd", "label", "map", "menu", "noframes", "noscript", "object", "ol", "p", "pre", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "table", "textarea", "tt", "u", "ul", "var"], 
     44    "script": ["#PCDATA"], 
     45    "ol": ["li"], 
     46    "a": ["#PCDATA", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br", "button", "cite", "code", "del", "dfn", "em", "font", "i", "iframe", "img", "input", "ins", "kbd", "label", "map", "noscript", "object", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "textarea", "tt", "u", "var"], 
     47    "legend": ["#PCDATA", "a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br", "button", "cite", "code", "del", "dfn", "em", "font", "i", "iframe", "img", "input", "ins", "kbd", "label", "map", "noscript", "object", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "textarea", "tt", "u", "var"], 
     48    "strong": ["#PCDATA", "a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br", "button", "cite", "code", "del", "dfn", "em", "font", "i", "iframe", "img", "input", "ins", "kbd", "label", "map", "noscript", "object", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "textarea", "tt", "u", "var"], 
     49    "address": ["#PCDATA", "a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br", "button", "cite", "code", "del", "dfn", "em", "font", "i", "iframe", "img", "input", "ins", "kbd", "label", "map", "noscript", "object", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "textarea", "tt", "u", "var"], 
     50    "br": [], 
     51    "base": [], 
     52    "object": ["#PCDATA", "a", "abbr", "acronym", "address", "applet", "b", "basefont", "bdo", "big", "blockquote", "br", "button", "center", "cite", "code", "del", "dfn", "dir", "div", "dl", "em", "fieldset", "font", "form", "h1", "h2", "h3", "h4", "h5", "h6", "hr", "i", "iframe", "img", "input", "ins", "isindex", "kbd", "label", "map", "menu", "noframes", "noscript", "object", "ol", "p", "param", "pre", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "table", "textarea", "tt", "u", "ul", "var"], 
     53    "basefont": [], 
     54    "map": ["address", "area", "blockquote", "center", "del", "dir", "div", "dl", "fieldset", "form", "h1", "h2", "h3", "h4", "h5", "h6", "hr", "ins", "isindex", "menu", "noframes", "noscript", "ol", "p", "pre", "script", "table", "ul"], 
     55    "body": ["#PCDATA", "a", "abbr", "acronym", "address", "applet", "b", "basefont", "bdo", "big", "blockquote", "br", "button", "center", "cite", "code", "del", "dfn", "dir", "div", "dl", "em", "fieldset", "font", "form", "h1", "h2", "h3", "h4", "h5", "h6", "hr", "i", "iframe", "img", "input", "ins", "isindex", "kbd", "label", "map", "menu", "noframes", "noscript", "object", "ol", "p", "pre", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "table", "textarea", "tt", "u", "ul", "var"], 
     56    "samp": ["#PCDATA", "a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br", "button", "cite", "code", "del", "dfn", "em", "font", "i", "iframe", "img", "input", "ins", "kbd", "label", "map", "noscript", "object", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "textarea", "tt", "u", "var"], 
     57    "dl": ["dd", "dt"], 
     58    "acronym": ["#PCDATA", "a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br", "button", "cite", "code", "del", "dfn", "em", "font", "i", "iframe", "img", "input", "ins", "kbd", "label", "map", "noscript", "object", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "textarea", "tt", "u", "var"], 
     59    "html": ["body", "frameset", "head"], 
     60    "em": ["#PCDATA", "a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br", "button", "cite", "code", "del", "dfn", "em", "font", "i", "iframe", "img", "input", "ins", "kbd", "label", "map", "noscript", "object", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "textarea", "tt", "u", "var"], 
     61    "label": ["#PCDATA", "a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br", "button", "cite", "code", "del", "dfn", "em", "font", "i", "iframe", "img", "input", "ins", "kbd", "label", "map", "noscript", "object", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "textarea", "tt", "u", "var"], 
     62    "tbody": ["tr"], 
     63    "bdo": ["#PCDATA", "a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br", "button", "cite", "code", "del", "dfn", "em", "font", "i", "iframe", "img", "input", "ins", "kbd", "label", "map", "noscript", "object", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "textarea", "tt", "u", "var"], 
     64    "sub": ["#PCDATA", "a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br", "button", "cite", "code", "del", "dfn", "em", "font", "i", "iframe", "img", "input", "ins", "kbd", "label", "map", "noscript", "object", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "textarea", "tt", "u", "var"], 
     65    "meta": [], 
     66    "ins": ["#PCDATA", "a", "abbr", "acronym", "address", "applet", "b", "basefont", "bdo", "big", "blockquote", "br", "button", "center", "cite", "code", "del", "dfn", "dir", "div", "dl", "em", "fieldset", "font", "form", "h1", "h2", "h3", "h4", "h5", "h6", "hr", "i", "iframe", "img", "input", "ins", "isindex", "kbd", "label", "map", "menu", "noframes", "noscript", "object", "ol", "p", "pre", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "table", "textarea", "tt", "u", "ul", "var"], 
     67    "frame": [], 
     68    "s": ["#PCDATA", "a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br", "button", "cite", "code", "del", "dfn", "em", "font", "i", "iframe", "img", "input", "ins", "kbd", "label", "map", "noscript", "object", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "textarea", "tt", "u", "var"], 
     69    "title": ["#PCDATA"], 
     70    "frameset": ["frame", "frameset", "noframes"], 
     71    "pre": ["#PCDATA", "a", "abbr", "acronym", "b", "bdo", "br", "button", "cite", "code", "dfn", "em", "i", "input", "kbd", "label", "map", "q", "s", "samp", "select", "span", "strong", "sub", "sup", "textarea", "tt", "u", "var"], 
     72    "dir": ["li"], 
     73    "div": ["#PCDATA", "a", "abbr", "acronym", "address", "applet", "b", "basefont", "bdo", "big", "blockquote", "br", "button", "center", "cite", "code", "del", "dfn", "dir", "div", "dl", "em", "fieldset", "font", "form", "h1", "h2", "h3", "h4", "h5", "h6", "hr", "i", "iframe", "img", "input", "ins", "isindex", "kbd", "label", "map", "menu", "noframes", "noscript", "object", "ol", "p", "pre", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "table", "textarea", "tt", "u", "ul", "var"], 
     74    "small": ["#PCDATA", "a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br", "button", "cite", "code", "del", "dfn", "em", "font", "i", "iframe", "img", "input", "ins", "kbd", "label", "map", "noscript", "object", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "textarea", "tt", "u", "var"], 
     75    "iframe": ["#PCDATA", "a", "abbr", "acronym", "address", "applet", "b", "basefont", "bdo", "big", "blockquote", "br", "button", "center", "cite", "code", "del", "dfn", "dir", "div", "dl", "em", "fieldset", "font", "form", "h1", "h2", "h3", "h4", "h5", "h6", "hr", "i", "iframe", "img", "input", "ins", "isindex", "kbd", "label", "map", "menu", "noframes", "noscript", "object", "ol", "p", "pre", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "table", "textarea", "tt", "u", "ul", "var"], 
     76    "del": ["#PCDATA", "a", "abbr", "acronym", "address", "applet", "b", "basefont", "bdo", "big", "blockquote", "br", "button", "center", "cite", "code", "del", "dfn", "dir", "div", "dl", "em", "fieldset", "font", "form", "h1", "h2", "h3", "h4", "h5", "h6", "hr", "i", "iframe", "img", "input", "ins", "isindex", "kbd", "label", "map", "menu", "noframes", "noscript", "object", "ol", "p", "pre", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "table", "textarea", "tt", "u", "ul", "var"], 
     77    "applet": ["#PCDATA", "a", "abbr", "acronym", "address", "applet", "b", "basefont", "bdo", "big", "blockquote", "br", "button", "center", "cite", "code", "del", "dfn", "dir", "div", "dl", "em", "fieldset", "font", "form", "h1", "h2", "h3", "h4", "h5", "h6", "hr", "i", "iframe", "img", "input", "ins", "isindex", "kbd", "label", "map", "menu", "noframes", "noscript", "object", "ol", "p", "param", "pre", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "table", "textarea", "tt", "u", "ul", "var"], 
     78    "ul": ["li"], 
     79    "isindex": [], 
     80    "button": ["#PCDATA", "abbr", "acronym", "address", "applet", "b", "basefont", "bdo", "big", "blockquote", "br", "center", "cite", "code", "del", "dfn", "dir", "div", "dl", "em", "font", "h1", "h2", "h3", "h4", "h5", "h6", "hr", "i", "img", "ins", "kbd", "map", "menu", "noframes", "noscript", "object", "ol", "p", "pre", "q", "s", "samp", "script", "small", "span", "strike", "strong", "sub", "sup", "table", "tt", "u", "ul", "var"], 
     81    "colgroup": ["col"], 
     82    "b": ["#PCDATA", "a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br", "button", "cite", "code", "del", "dfn", "em", "font", "i", "iframe", "img", "input", "ins", "kbd", "label", "map", "noscript", "object", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "textarea", "tt", "u", "var"], 
     83    "table": ["caption", "col", "colgroup", "tbody", "tfoot", "thead", "tr"], 
     84    "dt": ["#PCDATA", "a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br", "button", "cite", "code", "del", "dfn", "em", "font", "i", "iframe", "img", "input", "ins", "kbd", "label", "map", "noscript", "object", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "textarea", "tt", "u", "var"], 
     85    "optgroup": ["option"], 
     86    "abbr": ["#PCDATA", "a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br", "button", "cite", "code", "del", "dfn", "em", "font", "i", "iframe", "img", "input", "ins", "kbd", "label", "map", "noscript", "object", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "textarea", "tt", "u", "var"], 
     87    "link": [], 
     88    "h4": ["#PCDATA", "a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br", "button", "cite", "code", "del", "dfn", "em", "font", "i", "iframe", "img", "input", "ins", "kbd", "label", "map", "noscript", "object", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "textarea", "tt", "u", "var"], 
     89    "dd": ["#PCDATA", "a", "abbr", "acronym", "address", "applet", "b", "basefont", "bdo", "big", "blockquote", "br", "button", "center", "cite", "code", "del", "dfn", "dir", "div", "dl", "em", "fieldset", "font", "form", "h1", "h2", "h3", "h4", "h5", "h6", "hr", "i", "iframe", "img", "input", "ins", "isindex", "kbd", "label", "map", "menu", "noframes", "noscript", "object", "ol", "p", "pre", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "table", "textarea", "tt", "u", "ul", "var"], 
     90    "big": ["#PCDATA", "a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br", "button", "cite", "code", "del", "dfn", "em", "font", "i", "iframe", "img", "input", "ins", "kbd", "label", "map", "noscript", "object", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "textarea", "tt", "u", "var"], 
     91    "hr": [], 
     92    "form": ["#PCDATA", "a", "abbr", "acronym", "address", "applet", "b", "basefont", "bdo", "big", "blockquote", "br", "button", "center", "cite", "code", "del", "dfn", "dir", "div", "dl", "em", "fieldset", "font", "h1", "h2", "h3", "h4", "h5", "h6", "hr", "i", "iframe", "img", "input", "ins", "isindex", "kbd", "label", "map", "menu", "noframes", "noscript", "object", "ol", "p", "pre", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "table", "textarea", "tt", "u", "ul", "var"], 
     93    "option": ["#PCDATA"], 
     94    "fieldset": ["#PCDATA", "a", "abbr", "acronym", "address", "applet", "b", "basefont", "bdo", "big", "blockquote", "br", "button", "center", "cite", "code", "del", "dfn", "dir", "div", "dl", "em", "fieldset", "font", "form", "h1", "h2", "h3", "h4", "h5", "h6", "hr", "i", "iframe", "img", "input", "ins", "isindex", "kbd", "label", "legend", "map", "menu", "noframes", "noscript", "object", "ol", "p", "pre", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "table", "textarea", "tt", "u", "ul", "var"], 
     95    "blockquote": ["#PCDATA", "a", "abbr", "acronym", "address", "applet", "b", "basefont", "bdo", "big", "blockquote", "br", "button", "center", "cite", "code", "del", "dfn", "dir", "div", "dl", "em", "fieldset", "font", "form", "h1", "h2", "h3", "h4", "h5", "h6", "hr", "i", "iframe", "img", "input", "ins", "isindex", "kbd", "label", "map", "menu", "noframes", "noscript", "object", "ol", "p", "pre", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "table", "textarea", "tt", "u", "ul", "var"], 
     96    "head": ["base", "isindex", "link", "meta", "object", "script", "style", "title"], 
     97    "thead": ["tr"], 
     98    "cite": ["#PCDATA", "a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br", "button", "cite", "code", "del", "dfn", "em", "font", "i", "iframe", "img", "input", "ins", "kbd", "label", "map", "noscript", "object", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "textarea", "tt", "u", "var"], 
     99    "td": ["#PCDATA", "a", "abbr", "acronym", "address", "applet", "b", "basefont", "bdo", "big", "blockquote", "br", "button", "center", "cite", "code", "del", "dfn", "dir", "div", "dl", "em", "fieldset", "font", "form", "h1", "h2", "h3", "h4", "h5", "h6", "hr", "i", "iframe", "img", "input", "ins", "isindex", "kbd", "label", "map", "menu", "noframes", "noscript", "object", "ol", "p", "pre", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "table", "textarea", "tt", "u", "ul", "var"], 
     100    "input": [], 
     101    "var": ["#PCDATA", "a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br", "button", "cite", "code", "del", "dfn", "em", "font", "i", "iframe", "img", "input", "ins", "kbd", "label", "map", "noscript", "object", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "textarea", "tt", "u", "var"], 
     102    "th": ["#PCDATA", "a", "abbr", "acronym", "address", "applet", "b", "basefont", "bdo", "big", "blockquote", "br", "button", "center", "cite", "code", "del", "dfn", "dir", "div", "dl", "em", "fieldset", "font", "form", "h1", "h2", "h3", "h4", "h5", "h6", "hr", "i", "iframe", "img", "input", "ins", "isindex", "kbd", "label", "map", "menu", "noframes", "noscript", "object", "ol", "p", "pre", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "table", "textarea", "tt", "u", "ul", "var"], 
     103    "tfoot": ["tr"], 
     104    "dfn": ["#PCDATA", "a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br", "button", "cite", "code", "del", "dfn", "em", "font", "i", "iframe", "img", "input", "ins", "kbd", "label", "map", "noscript", "object", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "textarea", "tt", "u", "var"], 
     105    "li": ["#PCDATA", "a", "abbr", "acronym", "address", "applet", "b", "basefont", "bdo", "big", "blockquote", "br", "button", "center", "cite", "code", "del", "dfn", "dir", "div", "dl", "em", "fieldset", "font", "form", "h1", "h2", "h3", "h4", "h5", "h6", "hr", "i", "iframe", "img", "input", "ins", "isindex", "kbd", "label", "map", "menu", "noframes", "noscript", "object", "ol", "p", "pre", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "table", "textarea", "tt", "u", "ul", "var"], 
     106    "param": [], 
     107    "tr": ["td", "th"], 
     108    "tt": ["#PCDATA", "a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br", "button", "cite", "code", "del", "dfn", "em", "font", "i", "iframe", "img", "input", "ins", "kbd", "label", "map", "noscript", "object", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "textarea", "tt", "u", "var"], 
     109    "menu": ["li"], 
     110    "area": [], 
     111    "img": [], 
     112    "span": ["#PCDATA", "a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br", "button", "cite", "code", "del", "dfn", "em", "font", "i", "iframe", "img", "input", "ins", "kbd", "label", "map", "noscript", "object", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "textarea", "tt", "u", "var"], 
     113    "style": [], 
     114    "noscript": ["#PCDATA", "a", "abbr", "acronym", "address", "applet", "b", "basefont", "bdo", "big", "blockquote", "br", "button", "center", "cite", "code", "del", "dfn", "dir", "div", "dl", "em", "fieldset", "font", "form", "h1", "h2", "h3", "h4", "h5", "h6", "hr", "i", "iframe", "img", "input", "ins", "isindex", "kbd", "label", "map", "menu", "noframes", "noscript", "object", "ol", "p", "pre", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "table", "textarea", "tt", "u", "ul", "var"], 
     115    "noframes": ["#PCDATA", "a", "abbr", "acronym", "address", "applet", "b", "basefont", "bdo", "big", "blockquote", "br", "button", "center", "cite", "code", "del", "dfn", "dir", "div", "dl", "em", "fieldset", "font", "form", "h1", "h2", "h3", "h4", "h5", "h6", "hr", "i", "iframe", "img", "input", "ins", "isindex", "kbd", "label", "map", "menu", "noframes", "noscript", "object", "ol", "p", "pre", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "table", "textarea", "tt", "u", "ul", "var"], 
     116    "select": ["optgroup", "option"], 
     117    "font": ["#PCDATA", "a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br", "button", "cite", "code", "del", "dfn", "em", "font", "i", "iframe", "img", "input", "ins", "kbd", "label", "map", "noscript", "object", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "textarea", "tt", "u", "var"], 
     118    "strike": ["#PCDATA", "a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br", "button", "cite", "code", "del", "dfn", "em", "font", "i", "iframe", "img", "input", "ins", "kbd", "label", "map", "noscript", "object", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "textarea", "tt", "u", "var"], 
     119    "sup": ["#PCDATA", "a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br", "button", "cite", "code", "del", "dfn", "em", "font", "i", "iframe", "img", "input", "ins", "kbd", "label", "map", "noscript", "object", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "textarea", "tt", "u", "var"], 
     120    "h5": ["#PCDATA", "a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br", "button", "cite", "code", "del", "dfn", "em", "font", "i", "iframe", "img", "input", "ins", "kbd", "label", "map", "noscript", "object", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "textarea", "tt", "u", "var"], 
     121    "kbd": ["#PCDATA", "a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br", "button", "cite", "code", "del", "dfn", "em", "font", "i", "iframe", "img", "input", "ins", "kbd", "label", "map", "noscript", "object", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "textarea", "tt", "u", "var"], 
     122    "h6": ["#PCDATA", "a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br", "button", "cite", "code", "del", "dfn", "em", "font", "i", "iframe", "img", "input", "ins", "kbd", "label", "map", "noscript", "object", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "textarea", "tt", "u", "var"], 
     123    "h1": ["#PCDATA", "a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br", "button", "cite", "code", "del", "dfn", "em", "font", "i", "iframe", "img", "input", "ins", "kbd", "label", "map", "noscript", "object", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "textarea", "tt", "u", "var"], 
     124    "h3": ["#PCDATA", "a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br", "button", "cite", "code", "del", "dfn", "em", "font", "i", "iframe", "img", "input", "ins", "kbd", "label", "map", "noscript", "object", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "textarea", "tt", "u", "var"], 
     125    "h2": ["#PCDATA", "a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br", "button", "cite", "code", "del", "dfn", "em", "font", "i", "iframe", "img", "input", "ins", "kbd", "label", "map", "noscript", "object", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "textarea", "tt", "u", "var"], 
     126    "code": ["#PCDATA", "a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br", "button", "cite", "code", "del", "dfn", "em", "font", "i", "iframe", "img", "input", "ins", "kbd", "label", "map", "noscript", "object", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub", "sup", "textarea", "tt", "u", "var"] 
     127} 
    33128 
    34129 
     
    381476 
    382477        # guess omitted close tags 
    383         while self._stack and self._stack[-1].upper() in htmldtd.HTML_OPT_END and name not in htmldtd.HTML_DTD.get(self._stack[-1], []): 
     478        while self._stack and self._stack[-1] in HTML_OPT_END and name not in HTML_DTD.get(self._stack[-1], []): 
    384479            BadEntityParser.finish_endtag(self, self._stack[-1]) 
    385480            del self._stack[-1] 
    386481 
    387482        # Check whether this element is allowed in the current context 
    388         if self._stack and name not in htmldtd.HTML_DTD.get(self._stack[-1], []): 
     483        if self._stack and name not in HTML_DTD.get(self._stack[-1], []): 
    389484            warnings.warn(xsc.IllegalDTDChildWarning(name, self._stack[-1])) 
    390485 
     
    399494        BadEntityParser.finish_starttag(self, name, newattrs) 
    400495 
    401         if name.upper() in htmldtd.HTML_FORBIDDEN_END: 
     496        if name in HTML_FORBIDDEN_END: 
    402497            # close tags immediately for which we won't get an end 
    403498            BadEntityParser.finish_endtag(self, name) 
     
    409504    def finish_endtag(self, name): 
    410505        name = name.lower() 
    411         if name.upper() in htmldtd.HTML_FORBIDDEN_END: 
     506        if name in HTML_FORBIDDEN_END: 
    412507            # do nothing: we've already closed it 
    413508            return 
     
    424519 
    425520class ExpatParser(expatreader.ExpatParser): 
     521    def external_entity_ref(self, context, base, sysid, pubid): 
     522        print locals() 
     523        return expatreader.ExpatParser.external_entity_ref(self, context, base, sysid, pubid) 
     524 
    426525    def reset(self): 
    427526        expatreader.ExpatParser.reset(self) 
     
    798897 
    799898    def __decorateException(self, exception): 
    800         if not isinstance(exception, saxlib.SAXParseException): 
     899        if not isinstance(exception, sax.SAXParseException): 
    801900            msg = exception.__class__.__name__ 
    802901            msg2 = str(exception) 
    803902            if msg2: 
    804903                msg += ": " + msg2 
    805             exception = saxlib.SAXParseException(msg, exception, self._locator) 
     904            exception = sax.SAXParseException(msg, exception, self._locator) 
    806905        return exception 
    807906 
  • src/ll/xist/scripts/doc2txt.py

    r2522 r2590  
    22# -*- coding: iso-8859-1 -*- 
    33 
    4 ## Copyright 1999-2005 by LivingLogic AG, Bayreuth/Germany. 
    5 ## Copyright 1999-2005 by Walter Dörwald 
     4## Copyright 1999-2006 by LivingLogic AG, Bayreuth/Germany. 
     5## Copyright 1999-2006 by Walter Dörwald 
    66## 
    77## All Rights Reserved 
  • src/ll/xist/scripts/dtd2xsc.py

    r2522 r2590  
    22# -*- coding: iso-8859-1 -*- 
    33 
    4 ## Copyright 1999-2005 by LivingLogic AG, Bayreuth/Germany. 
    5 ## Copyright 1999-2005 by Walter Dörwald 
     4## Copyright 1999-2006 by LivingLogic AG, Bayreuth/Germany. 
     5## Copyright 1999-2006 by Walter Dörwald 
    66## 
    77## All Rights Reserved 
  • src/ll/xist/scripts/tld2xsc.py

    r2522 r2590  
    22# -*- coding: iso-8859-1 -*- 
    33 
    4 ## Copyright 1999-2005 by LivingLogic AG, Bayreuth/Germany. 
    5 ## Copyright 1999-2005 by Walter Dörwald 
     4## Copyright 1999-2006 by LivingLogic AG, Bayreuth/Germany. 
     5## Copyright 1999-2006 by Walter Dörwald 
    66## 
    77## All Rights Reserved 
  • src/ll/xist/xsc.py

    r2559 r2590  
    888888        return str(unicode(self)) 
    889889 
    890     def asText(self, monochrome=True, squeezeBlankLines=False, lineNumbers=False, width=72): 
    891         """ 
    892         <par>Return the node as a formatted plain string. Note that this really 
    893         only make sense for &html; trees.</par> 
    894  
    895         <par>This requires that <app moreinfo="http://w3m.sf.net/">w3m</app> is 
    896         installed.</par> 
    897         """ 
    898  
    899         options = [] 
    900         if monochrome: 
    901             options.append("-M") 
    902         if squeezeBlankLines: 
    903             options.append("-s") 
    904         if lineNumbers: 
    905             options.append("-num") 
    906         if width != 80: 
    907             options.append("-cols %d" % width) 
    908  
    909         text = self.asBytes(encoding="iso-8859-1") 
    910  
    911         cmd = "w3m %s -T text/html -dump" % " ".join(options) 
    912         (stdin, stdout) = os.popen2(cmd) 
    913  
    914         stdin.write(text) 
    915         stdin.close() 
    916         text = stdout.read() 
    917         stdout.close() 
    918         text = "\n".join(line.rstrip() for line in text.splitlines()) 
    919         return text 
    920  
    921890    def __int__(self): 
    922891        """ 
     
    12721241        else: 
    12731242            return self 
    1274  
    1275     def withSep(self, separator, clone=False): 
    1276         warnings.warn(DeprecationWarning("withSep() is deprecated, use withsep() instead")) 
    1277         return self.withsep(separator, clone) 
    12781243 
    12791244    def __xattrs__(self, mode): 
     
    27242689        return node 
    27252690 
    2726     def with(self, names=[], xml=False): 
     2691    def withnames(self, names=[], xml=False): 
    27272692        """ 
    27282693        <par>Return a copy of <self/> where only the attributes in <arg>names</arg> are 
     
    27342699            return self.filtered(lambda n: n.__class__.__name__ in names) 
    27352700 
    2736     def without(self, names=[], xml=False): 
     2701    def withoutnames(self, names=[], xml=False): 
    27372702        """ 
    27382703        <par>Return a copy of <self/> where all the attributes in <arg>names</arg> are 
     
    28412806                    raise IllegalAttrError(cls, name, xml=xml) 
    28422807 
    2843         def with(self, names=[], namespaces=(), keepglobals=False, xml=False): 
     2808        def withnames(self, names=[], namespaces=(), keepglobals=False, xml=False): 
    28442809            """ 
    28452810            <par>Return a copy of <self/> where only the attributes in <arg>names</arg> are 
     
    28732838            return self.filtered(keep) 
    28742839 
    2875         def without(self, names=[], namespaces=(), keepglobals=True, xml=False): 
     2840        def withoutnames(self, names=[], namespaces=(), keepglobals=True, xml=False): 
    28762841            """ 
    28772842            <par>Return a copy of <self/> where all the attributes in <arg>names</arg> are 
  • test/common.py

    r2379 r2590  
    22# -*- coding: iso-8859-1 -*- 
    33 
    4 ## Copyright 1999-2005 by LivingLogic AG, Bayreuth/Germany. 
    5 ## Copyright 1999-2005 by Walter Dörwald 
     4## Copyright 1999-2006 by LivingLogic AG, Bayreuth/Germany. 
     5## Copyright 1999-2006 by Walter Dörwald 
    66## 
    77## All Rights Reserved 
  • test/test_comparisons.py

    r2334 r2590  
    22# -*- coding: iso-8859-1 -*- 
    33 
    4 ## Copyright 1999-2005 by LivingLogic AG, Bayreuth/Germany. 
    5 ## Copyright 1999-2005 by Walter Dörwald 
     4## Copyright 1999-2006 by LivingLogic AG, Bayreuth/Germany. 
     5## Copyright 1999-2006 by Walter Dörwald 
    66## 
    77## All Rights Reserved 
  • test/test_conversion.py

    r2343 r2590  
    22# -*- coding: iso-8859-1 -*- 
    33 
    4 ## Copyright 1999-2005 by LivingLogic AG, Bayreuth/Germany. 
    5 ## Copyright 1999-2005 by Walter Dörwald 
     4## Copyright 1999-2006 by LivingLogic AG, Bayreuth/Germany. 
     5## Copyright 1999-2006 by Walter Dörwald 
    66## 
    77## All Rights Reserved 
  • test/test_cssparse.py

    r2342 r2590  
    22# -*- coding: iso-8859-1 -*- 
    33 
    4 ## Copyright 1999-2005 by LivingLogic AG, Bayreuth/Germany. 
    5 ## Copyright 1999-2005 by Walter Dörwald 
     4## Copyright 1999-2006 by LivingLogic AG, Bayreuth/Germany. 
     5## Copyright 1999-2006 by Walter Dörwald 
    66## 
    77## All Rights Reserved 
  • test/test_doc.py

    r2411 r2590  
    22# -*- coding: iso-8859-1 -*- 
    33 
    4 ## Copyright 1999-2005 by LivingLogic AG, Bayreuth/Germany. 
    5 ## Copyright 1999-2005 by Walter Dörwald 
     4## Copyright 1999-2006 by LivingLogic AG, Bayreuth/Germany. 
     5## Copyright 1999-2006 by Walter Dörwald 
    66## 
    77## All Rights Reserved 
  • test/test_dtd2xsc.py

    r2341 r2590  
    22# -*- coding: iso-8859-1 -*- 
    33 
    4 ## Copyright 1999-2005 by LivingLogic AG, Bayreuth/Germany. 
    5 ## Copyright 1999-2005 by Walter Dörwald 
     4## Copyright 1999-2006 by LivingLogic AG, Bayreuth/Germany. 
     5## Copyright 1999-2006 by Walter Dörwald 
    66## 
    77## All Rights Reserved 
  • test/test_location.py

    r2334 r2590  
    22# -*- coding: iso-8859-1 -*- 
    33 
    4 ## Copyright 1999-2005 by LivingLogic AG, Bayreuth/Germany. 
    5 ## Copyright 1999-2005 by Walter Dörwald 
     4## Copyright 1999-2006 by LivingLogic AG, Bayreuth/Germany. 
     5## Copyright 1999-2006 by Walter Dörwald 
    66## 
    77## All Rights Reserved 
  • test/test_namespaces.py

    r2334 r2590  
    22# -*- coding: iso-8859-1 -*- 
    33 
    4 ## Copyright 1999-2005 by LivingLogic AG, Bayreuth/Germany. 
    5 ## Copyright 1999-2005 by Walter Dörwald 
     4## Copyright 1999-2006 by LivingLogic AG, Bayreuth/Germany. 
     5## Copyright 1999-2006 by Walter Dörwald 
    66## 
    77## All Rights Reserved 
  • test/test_parse.py

    r2439 r2590  
    22# -*- coding: iso-8859-1 -*- 
    33 
    4 ## Copyright 1999-2005 by LivingLogic AG, Bayreuth/Germany. 
    5 ## Copyright 1999-2005 by Walter Dörwald 
     4## Copyright 1999-2006 by LivingLogic AG, Bayreuth/Germany. 
     5## Copyright 1999-2006 by Walter Dörwald 
    66## 
    77## All Rights Reserved 
     
    1313 
    1414import py.test 
    15 from xml.sax import saxlib 
     15 
     16from xml import sax 
    1617from xml.parsers import expat 
    1718 
     
    3031    except exception: 
    3132        pass 
    32     except saxlib.SAXParseException, exc: 
     33    except sax.SAXParseException, exc: 
    3334        realexc = exc.getException() 
    3435        assert isinstance(realexc, exception) 
  • test/test_pickle.py

    r2332 r2590  
    22# -*- coding: iso-8859-1 -*- 
    33 
    4 ## Copyright 1999-2005 by LivingLogic AG, Bayreuth/Germany. 
    5 ## Copyright 1999-2005 by Walter Dörwald 
     4## Copyright 1999-2006 by LivingLogic AG, Bayreuth/Germany. 
     5## Copyright 1999-2006 by Walter Dörwald 
    66## 
    77## All Rights Reserved 
  • test/test_pretty.py

    r2334 r2590  
    22# -*- coding: iso-8859-1 -*- 
    33 
    4 ## Copyright 1999-2005 by LivingLogic AG, Bayreuth/Germany. 
    5 ## Copyright 1999-2005 by Walter Dörwald 
     4## Copyright 1999-2006 by LivingLogic AG, Bayreuth/Germany. 
     5## Copyright 1999-2006 by Walter Dörwald 
    66## 
    77## All Rights Reserved 
  • test/test_publish.py

    r2495 r2590  
    22# -*- coding: iso-8859-1 -*- 
    33 
    4 ## Copyright 1999-2005 by LivingLogic AG, Bayreuth/Germany. 
    5 ## Copyright 1999-2005 by Walter Dörwald 
     4## Copyright 1999-2006 by LivingLogic AG, Bayreuth/Germany. 
     5## Copyright 1999-2006 by Walter Dörwald 
    66## 
    77## All Rights Reserved 
  • test/test_sims.py

    r2334 r2590  
    22# -*- coding: iso-8859-1 -*- 
    33 
    4 ## Copyright 1999-2005 by LivingLogic AG, Bayreuth/Germany. 
    5 ## Copyright 1999-2005 by Walter Dörwald 
     4## Copyright 1999-2006 by LivingLogic AG, Bayreuth/Germany. 
     5## Copyright 1999-2006 by Walter Dörwald 
    66## 
    77## All Rights Reserved 
  • test/test_tld.py

    r2407 r2590  
    22# -*- coding: iso-8859-1 -*- 
    33 
    4 ## Copyright 1999-2005 by LivingLogic AG, Bayreuth/Germany. 
    5 ## Copyright 1999-2005 by Walter Dörwald 
     4## Copyright 1999-2006 by LivingLogic AG, Bayreuth/Germany. 
     5## Copyright 1999-2006 by Walter Dörwald 
    66## 
    77## All Rights Reserved 
  • test/test_url.py

    r2559 r2590  
    22# -*- coding: iso-8859-1 -*- 
    33 
    4 ## Copyright 1999-2005 by LivingLogic AG, Bayreuth/Germany. 
    5 ## Copyright 1999-2005 by Walter Dörwald 
     4## Copyright 1999-2006 by LivingLogic AG, Bayreuth/Germany. 
     5## Copyright 1999-2006 by Walter Dörwald 
    66## 
    77## All Rights Reserved 
  • test/test_walk.py

    r2387 r2590  
    22# -*- coding: iso-8859-1 -*- 
    33 
    4 ## Copyright 1999-2005 by LivingLogic AG, Bayreuth/Germany. 
    5 ## Copyright 1999-2005 by Walter Dörwald 
     4## Copyright 1999-2006 by LivingLogic AG, Bayreuth/Germany. 
     5## Copyright 1999-2006 by Walter Dörwald 
    66## 
    77## All Rights Reserved 
  • test/test_xfind.py

    r2458 r2590  
    22# -*- coding: iso-8859-1 -*- 
    33 
    4 ## Copyright 1999-2005 by LivingLogic AG, Bayreuth/Germany. 
    5 ## Copyright 1999-2005 by Walter Dörwald 
     4## Copyright 1999-2006 by LivingLogic AG, Bayreuth/Germany. 
     5## Copyright 1999-2006 by Walter Dörwald 
    66## 
    77## All Rights Reserved 
  • test/test_xist.py

    r2559 r2590  
    22# -*- coding: iso-8859-1 -*- 
    33 
    4 ## Copyright 1999-2005 by LivingLogic AG, Bayreuth/Germany. 
    5 ## Copyright 1999-2005 by Walter Dörwald 
     4## Copyright 1999-2006 by LivingLogic AG, Bayreuth/Germany. 
     5## Copyright 1999-2006 by Walter Dörwald 
    66## 
    77## All Rights Reserved 
     
    1111import sys, unittest, cStringIO, warnings 
    1212 
    13 from xml.sax import saxlib 
    1413from xml.parsers import expat 
    1514 
     
    150149 
    151150 
    152 def test_asText(): 
     151def test_astext(): 
    153152    for node in common.allnodes(): 
    154         node.asText() 
    155         node.asText(monochrome=True) 
    156         node.asText(squeezeBlankLines=True) 
    157         node.asText(lineNumbers=True) 
    158         node.asText(width=120) 
     153        html.astext(node) 
     154        html.astext(node, width=120) 
    159155 
    160156 
     
    435431    keys.remove("class_") 
    436432 
    437     keys1 = node.attrs.without(["class_"]).keys() 
     433    keys1 = node.attrs.withoutnames(["class_"]).keys() 
    438434    keys1.sort() 
    439435    assert keys == keys1 
    440436 
    441437    keys.remove((xml2, "space")) 
    442     keys2 = node.attrs.without(["class_", (xml, "space")]).keys() 
     438    keys2 = node.attrs.withoutnames(["class_", (xml, "space")]).keys() 
    443439    keys2.sort() 
    444440    assert keys == keys2 
     
    446442    keys.remove((xml2, "lang")) 
    447443    keys.remove((xml2, "base")) 
    448     keys3 = node.attrs.without(["class_"], [xml]).keys() 
     444    keys3 = node.attrs.withoutnames(["class_"], [xml]).keys() 
    449445    keys3.sort() 
    450446    assert keys == keys3 
    451447 
    452448    # Check that non existing attrs are handled correctly 
    453     keys4 = node.attrs.without(["class_", "src"], keepglobals=False).keys() 
     449    keys4 = node.attrs.withoutnames(["class_", "src"], keepglobals=False).keys() 
    454450    keys4.sort() 
    455451    assert keys == keys4 
     
    472468    keys.remove("lang") 
    473469 
    474     assert node.attrs.with(["lang"]).keys() == ["lang"] 
    475  
    476     keys1 = node.attrs.with(["lang", "align"]).keys() 
     470    assert node.attrs.withnames(["lang"]).keys() == ["lang"] 
     471 
     472    keys1 = node.attrs.withnames(["lang", "align"]).keys() 
    477473    keys1.sort() 
    478474    assert keys1 == ["align", "lang"] 
     
    480476    keys = ["lang", (xml2, "lang")] 
    481477    keys.sort() 
    482     keys2 = node.attrs.with(keys).keys() 
     478    keys2 = node.attrs.withnames(keys).keys() 
    483479    keys2.sort() 
    484480    assert keys2 == keys 
     
    486482    keys = ["lang", (xml2, "lang"), (xml2, "space")] 
    487483    keys.sort() 
    488     keys3 = node.attrs.with(["lang"], [xml]).keys() 
     484    keys3 = node.attrs.withnames(["lang"], [xml]).keys() 
    489485    keys3.sort() 
    490486    assert keys3 == keys 
  • test/test_xnd.py

    r2334 r2590  
    22# -*- coding: iso-8859-1 -*- 
    33 
    4 ## Copyright 1999-2005 by LivingLogic AG, Bayreuth/Germany. 
    5 ## Copyright 1999-2005 by Walter Dörwald 
     4## Copyright 1999-2006 by LivingLogic AG, Bayreuth/Germany. 
     5## Copyright 1999-2006 by Walter Dörwald 
    66## 
    77## All Rights Reserved