root/livinglogic.python.xist/src/ll/xist/ns/html.py @ 2520:b322c0ceba5d

Revision 2520:b322c0ceba5d, 31.8 KB (checked in by Walter Doerwald <walter@…>, 14 years ago)

Moved source files into src directory (to avoid import problems when
importing from the directory where setup.py is in).

Line 
1#! /usr/bin/env python
2# -*- coding: iso-8859-1 -*-
3
4## Copyright 1999-2006 by LivingLogic AG, Bayreuth/Germany.
5## Copyright 1999-2006 by Walter Dörwald
6##
7## All Rights Reserved
8##
9## See xist/__init__.py for the license
10
11"""
12<par>An &xist; namespace that contains definitions for all the elements
13in <link href="http://www.w3.org/TR/html4/loose.dtd">&html; 4.0 transitional</link>.</par>
14"""
15
16__version__ = "$Revision$".split()[1]
17# $Source$
18
19import cgi # for parse_header
20
21from ll.xist import xsc, utils, sims
22from ll.xist.ns import xml
23
24
25# common attributes types
26class DirAttr(xsc.TextAttr): "direction for weak/neutral text"; values = (u"ltr", u"rtl")
27class ContentTypeAttr(xsc.TextAttr): "media type, as per [RFC2045]"
28class ContentTypesAttr(xsc.TextAttr): "comma-separated list of media types, as per [RFC2045]"
29class CharsetAttr(xsc.TextAttr): "a character encoding, as per [RFC2045]"
30class CharsetsAttr(xsc.TextAttr): "a space separated list of character encodings, as per [RFC2045]"
31class LanguageCodeAttr(xsc.TextAttr): "a language code, as per [RFC3066]"
32class CharacterAttr(xsc.TextAttr): "a single character, as per section 2.2 of [XML]"
33class LinkTypesAttr(xsc.TextAttr): "space-separated list of link types"
34class MediaDescAttr(xsc.TextAttr): "single or comma-separated list of media descriptors"
35class URIListAttr(xsc.TextAttr): "a space separated list of Uniform Resource Identifiers"
36class DatetimeAttr(xsc.TextAttr): "date and time information. ISO date format"
37class ScriptAttr(xsc.TextAttr): "script expression"
38class StyleSheetAttr(xsc.StyleAttr): "style sheet data"
39class TextAttr(xsc.TextAttr): "used for titles etc."
40class FrameTargetAttr(xsc.TextAttr): "render in this frame"
41class LengthAttr(xsc.TextAttr): "<rep>nn</rep> for pixels or <rep>nn%</rep> for percentage length"
42class MultiLengthAttr(xsc.TextAttr): "pixel, percentage, or relative"
43class PixelsAttr(xsc.IntAttr): "integer representing length in pixels"
44class ShapeAttr(xsc.TextAttr): "image shapes"; values = (u"rect", u"circle", u"poly", u"default")
45class CoordsAttr(xsc.TextAttr): "comma separated list of lengths"
46class ImgAlignAttr(xsc.TextAttr): "image alignment"; values = (u"top", u"middle", u"bottom", u"left", u"right", u"absmiddle")
47class ColorAttr(xsc.ColorAttr): "a color using sRGB: #RRGGBB as Hex values"
48class TextAlignAttr(xsc.TextAttr): "text alignment"; values = (u"left", u"right", u"center", u"justify")
49class OLStyleAttr(xsc.TextAttr): values = "1aAiI"
50class ULStyleAttr(xsc.TextAttr): values = (u"disc", u"square", u"circle")
51class InputTypeAttr(xsc.TextAttr): values = (u"text", u"password", u"checkbox", u"radio", u"submit", u"reset", u"file", u"hidden", u"image", u"button")
52class TRulesAttr(xsc.TextAttr): values = (u"none", u"groups", u"rows", u"cols", u"all")
53class TAlignAttr(xsc.TextAttr): values = (u"left", u"right", u"center")
54class CAlignAttr(xsc.TextAttr): values = (u"top", u"bottom", u"left", u"right")
55class TFrameAttr(xsc.TextAttr): values = (u"void", u"above", u"below", u"hsides", u"lhs", u"rhs", u"vsides", u"box", u"border")
56class ScopeAttr(xsc.TextAttr): values = (u"row", u"col", u"rowgroup", u"colgroup")
57
58
59# common attributes sets
60class coreattrs(xsc.Element.Attrs):
61    "core attributes common to most elements"
62    class id(xsc.IDAttr): "document-wide unique id"
63    class class_(xsc.TextAttr): "space separated list of classes"; xmlname = "class"
64    class style(StyleSheetAttr): "associated style info"
65    class title(TextAttr): "advisory title/amplification"
66
67
68class i18nattrs(xsc.Element.Attrs):
69    "internationalization attributes"
70    class lang(LanguageCodeAttr): "language code (backwards compatible)"
71    class dir(DirAttr): pass
72
73
74class eventattrs(xsc.Element.Attrs):
75    "attributes for common UI events"
76    class onclick(ScriptAttr): "a pointer button was clicked"
77    class ondblclick(ScriptAttr): "a pointer button was double clicked"
78    class onmousedown(ScriptAttr): "a pointer button was pressed down"
79    class onmouseup(ScriptAttr): "a pointer button was released"
80    class onmousemove(ScriptAttr): "a pointer was moved onto the element"
81    class onmouseover(ScriptAttr): "a pointer was moved onto the element" # deprecated
82    class onmouseout(ScriptAttr): "a pointer was moved away from the element"
83    class onkeypress(ScriptAttr): "a key was pressed and released"
84    class onkeydown(ScriptAttr): "a key was pressed down"
85    class onkeyup(ScriptAttr): "a key was released"
86
87
88class focusattrs(xsc.Element.Attrs):
89    "attributes for elements that can get the focus"
90    class accesskey(CharacterAttr): "accessibility key character"
91    class tabindex(xsc.IntAttr): "position in tabbing order"
92    class onfocus(ScriptAttr): "the element got the focus"
93    class onblur(ScriptAttr): "the element lost the focus"
94
95
96class allattrs(coreattrs, i18nattrs, eventattrs):
97    pass
98
99
100class cellhalignattrs(xsc.Element.Attrs):
101    class align(xsc.TextAttr): values = ("left", "center", "right", "justify", "char")
102    class char(CharacterAttr): pass
103    class charoff(LengthAttr): pass
104
105
106class cellvalignattrs(xsc.Element.Attrs):
107    class valign(xsc.TextAttr): values = ("top", "middle", "bottom", "baseline")
108
109
110class DocTypeHTML40transitional(xsc.DocType):
111    """
112    document type for HTML 4.0 transitional
113    """
114    def __init__(self):
115        xsc.DocType.__init__(self, 'html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"')
116
117
118class DocTypeHTML401transitional(xsc.DocType):
119    """
120    document type for HTML 4.01 transitional
121    """
122    def __init__(self):
123        xsc.DocType.__init__(self, 'html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"')
124
125
126class DocTypeXHTML10strict(xsc.DocType):
127    """
128    document type for XHTML 1.0 strict
129    """
130    def __init__(self):
131        xsc.DocType.__init__(self, 'html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"')
132
133
134class DocTypeXHTML10transitional(xsc.DocType):
135    """
136    document type for XHTML 1.0 transitional
137    """
138    def __init__(self):
139        xsc.DocType.__init__(self, 'html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"')
140
141
142class DocTypeXHTML11(xsc.DocType):
143    """
144    document type for XHTML 1.1
145    """
146    def __init__(self):
147        xsc.DocType.__init__(self, 'html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"')
148
149
150# The global structure of an HTML document
151class html(xsc.Element):
152    """
153    document structure
154    """
155    class Attrs(i18nattrs):
156        class id(xsc.IDAttr): pass
157
158    def convert(self, converter):
159        if converter.lang is not None and "lang" not in self.attrs and (xml, "lang") not in self.attrs:
160            node = html(self.content, self.attrs, {"lang": converter.lang, (xml, "lang"): converter.lang})
161            return node.convert(converter)
162        else:
163            return super(html, self).convert(converter)
164
165
166class head(xsc.Element):
167    """
168    document head
169    """
170    class Attrs(i18nattrs):
171        class id(xsc.IDAttr): pass
172        class profile(xsc.URLAttr): pass
173
174
175class title(xsc.Element):
176    """
177    document title
178    """
179    class Attrs(i18nattrs):
180        class id(xsc.IDAttr): pass
181
182    def unwrapHTML(self, node, converter):
183        if isinstance(node, xsc.Element) and issubclass(node.__ns__, __ns__): # is this one of our own elements => filter it out
184            if isinstance(node, img):
185                node = node["alt"]
186            else:
187                node = node.content.mapped(self.unwrapHTML, converter)
188        return node
189
190    def convert(self, converter):
191        content = self.content.convert(converter)
192        content = content.mapped(self.unwrapHTML, converter)
193        return title(content, self.attrs)
194
195
196class base(xsc.Element):
197    """
198    document base URI
199    """
200    model = sims.Empty()
201    class Attrs(xsc.Element.Attrs):
202        class id(xsc.IDAttr): pass
203        class href(xsc.URLAttr): pass
204        class target(FrameTargetAttr): pass
205
206
207class meta(xsc.Element):
208    """
209    generic metainformation. If the <lit>http-equiv</lit> attribute
210    has the value "content-type" the encoding in the <lit>content</lit>
211    attribute will be set automatically when publishing.
212    """
213    model = sims.Empty()
214    class Attrs(i18nattrs):
215        class id(xsc.IDAttr): pass
216        class http_equiv(xsc.TextAttr): xmlname = "http-equiv"
217        class name(xsc.TextAttr): pass
218        class content(xsc.TextAttr): required = True
219        class scheme(xsc.TextAttr): pass
220
221    def publish(self, publisher):
222        if u"http_equiv" in self.attrs and not self.attrs.http_equiv.isfancy():
223            ctype = unicode(self[u"http_equiv"]).lower()
224            if ctype == u"content-type" and u"content" in self.attrs:
225                (contenttype, options) = cgi.parse_header(unicode(self[u"content"]))
226                if u"charset" not in options or options[u"charset"] != publisher.encoding:
227                    options[u"charset"] = publisher.encoding
228                    node = self.__class__(
229                        self.attrs,
230                        http_equiv=u"Content-Type",
231                        content=(contenttype, u"; ", u"; ".join(u"%s=%s" % option for option in options.items()))
232                    )
233                    return node.publish(publisher) # return a generator-iterator
234        return super(meta, self).publish(publisher) # return a generator-iterator
235
236
237class link(xsc.Element):
238    """
239    a media-independent link
240    """
241    model = sims.Empty()
242    class Attrs(allattrs):
243        class charset(CharsetAttr): pass
244        class href(xsc.URLAttr): pass
245        class hreflang(LanguageCodeAttr): pass
246        class type(ContentTypeAttr): pass
247        class rel(LinkTypesAttr): pass
248        class rev(LinkTypesAttr): pass
249        class media(MediaDescAttr): pass
250        class target(FrameTargetAttr): pass
251
252
253class style(xsc.Element):
254    """
255    style info, which may include CDATA sections
256    """
257    model = sims.NoElements()
258    class Attrs(i18nattrs):
259        class id(xsc.IDAttr): pass
260        class type(ContentTypeAttr): required = True
261        class media(MediaDescAttr): pass
262        class title(TextAttr): pass
263
264
265class script(xsc.Element):
266    """
267    script statements, which may include CDATA sections
268    """
269    model = sims.NoElements()
270    class Attrs(xsc.Element.Attrs):
271        class id(xsc.IDAttr): pass
272        class charset(CharsetAttr): pass
273        class type(ContentTypeAttr): required = True
274        class language(xsc.TextAttr): pass
275        class src(xsc.URLAttr): pass
276        class defer(xsc.BoolAttr): pass
277
278
279class noscript(xsc.Element):
280    """
281    alternate content container for non script-based rendering
282    """
283    class Attrs(allattrs):
284        pass
285
286
287class iframe(xsc.Element):
288    """
289    inline subwindow
290    """
291    class Attrs(coreattrs):
292        class longdesc(xsc.URLAttr): pass
293        class name(xsc.TextAttr): pass
294        class src(xsc.URLAttr): pass
295        class frameborder(xsc.TextAttr): values = (1, 0)
296        class marginwidth(PixelsAttr): pass
297        class marginheight(PixelsAttr): pass
298        class noresize(xsc.BoolAttr): pass # deprecated
299        class scrolling(xsc.TextAttr): values = (u"yes", u"no", u"auto")
300        class align(ImgAlignAttr): pass
301        class height(LengthAttr): pass
302        class width(LengthAttr): pass
303        class hspace(xsc.IntAttr): pass # deprecated
304        class vspace(xsc.IntAttr): pass # deprecated
305        class bordercolor(xsc.ColorAttr): pass # deprecated
306
307
308class noframes(xsc.Element):
309    """
310    alternate content container for non frame-based rendering
311    """
312    class Attrs(allattrs):
313        pass
314
315
316class body(xsc.Element):
317    """
318    document body
319    """
320    class Attrs(allattrs):
321        class onload(ScriptAttr): pass
322        class onunload(ScriptAttr): pass
323        class onfocus(xsc.TextAttr): pass # deprecated
324        class background(xsc.URLAttr): pass # deprecated
325        class bgcolor(xsc.ColorAttr): pass # deprecated
326        class text(xsc.ColorAttr): pass # deprecated
327        class link(xsc.ColorAttr): pass # deprecated
328        class vlink(xsc.ColorAttr): pass # deprecated
329        class alink(xsc.ColorAttr): pass # deprecated
330        class leftmargin(xsc.IntAttr): pass # deprecated
331        class topmargin(xsc.IntAttr): pass # deprecated
332        class marginwidth(xsc.IntAttr): pass # deprecated
333        class marginheight(xsc.IntAttr): pass # deprecated
334
335
336class div(xsc.Element):
337    """
338    generic language/style container
339    """
340    class Attrs(allattrs):
341        class align(TextAlignAttr): pass
342
343
344class p(xsc.Element):
345    """
346    paragraph
347    """
348    class Attrs(allattrs):
349        class align(TextAlignAttr): pass
350
351
352class h1(xsc.Element):
353    """
354    heading
355    """
356    class Attrs(allattrs):
357        class align(TextAlignAttr): pass
358
359
360class h2(xsc.Element):
361    """
362    heading
363    """
364    class Attrs(allattrs):
365        class align(TextAlignAttr): pass
366
367
368class h3(xsc.Element):
369    """
370    heading
371    """
372    class Attrs(allattrs):
373        class align(TextAlignAttr): pass
374
375
376class h4(xsc.Element):
377    """
378    heading
379    """
380    class Attrs(allattrs):
381        class align(TextAlignAttr): pass
382
383
384class h5(xsc.Element):
385    """
386    heading
387    """
388    class Attrs(allattrs):
389        class align(TextAlignAttr): pass
390
391
392class h6(xsc.Element):
393    """
394    heading
395    """
396    class Attrs(allattrs):
397        class align(TextAlignAttr): pass
398
399
400class ul(xsc.Element):
401    """
402    unordered list
403    """
404    class Attrs(allattrs):
405        class type(ULStyleAttr): pass
406        class compact(xsc.BoolAttr): pass
407
408
409class ol(xsc.Element):
410    """
411    ordered list
412    """
413    class Attrs(allattrs):
414        class type(OLStyleAttr): pass
415        class compact(xsc.BoolAttr): pass
416        class start(xsc.IntAttr): pass
417
418
419class menu(xsc.Element):
420    """
421    single column list (deprecated)
422    """
423    class Attrs(allattrs):
424        class compact(xsc.BoolAttr): pass
425
426
427class dir(xsc.Element):
428    """
429    multiple column list (deprecated)
430    """
431    class Attrs(allattrs):
432        class compact(xsc.BoolAttr): pass
433
434
435class li(xsc.Element):
436    """
437    list item
438    """
439    class Attrs(allattrs):
440        class type(xsc.TextAttr): pass
441        class value(xsc.IntAttr): pass
442
443
444class dl(xsc.Element):
445    """
446    definition list
447    """
448    class Attrs(allattrs):
449        class compact(xsc.BoolAttr): pass
450
451
452class dt(xsc.Element):
453    """
454    definition term
455    """
456    class Attrs(allattrs):
457        pass
458
459
460class dd(xsc.Element):
461    """
462    definition description
463    """
464    class Attrs(allattrs):
465        pass
466
467
468class address(xsc.Element):
469    """
470    information on author
471    """
472    class Attrs(allattrs):
473        pass
474
475
476class hr(xsc.Element):
477    """
478    horizontal rule
479    """
480    model = sims.Empty()
481    class Attrs(allattrs):
482        class align(xsc.TextAttr): values = (u"left", u"right", u"center")
483        class noshade(xsc.BoolAttr): pass
484        class size(PixelsAttr): pass
485        class width(LengthAttr): pass # deprecated
486        class color(xsc.ColorAttr): pass # deprecated
487
488
489class pre(xsc.Element):
490    """
491    preformatted text
492    """
493    class Attrs(allattrs):
494        class width(xsc.IntAttr): pass
495
496
497class blockquote(xsc.Element):
498    """
499    block-like quotes
500    """
501    class Attrs(allattrs):
502        class cite(xsc.URLAttr): pass
503
504
505class center(xsc.Element): # deprecated
506    """
507    centered block level element
508    """
509    class Attrs(allattrs):
510        pass
511
512
513class ins(xsc.Element):
514    """
515    inserted text
516    """
517    class Attrs(allattrs):
518        class cite(xsc.URLAttr): pass
519        class datetime(DatetimeAttr): pass
520
521
522class del_(xsc.Element):
523    """
524    deleted text
525    """
526    xmlname = "del"
527    class Attrs(allattrs):
528        class cite(xsc.URLAttr): pass
529        class datetime(DatetimeAttr): pass
530
531
532class a(xsc.Element):
533    """
534    anchor
535    """
536    class Attrs(allattrs, focusattrs):
537        class charset(CharsetAttr): pass
538        class type(ContentTypeAttr): pass
539        class name(xsc.TextAttr): pass
540        class href(xsc.URLAttr): pass
541        class hreflang(LanguageCodeAttr): pass
542        class rel(LinkTypesAttr): pass
543        class rev(LinkTypesAttr): pass
544        class shape(ShapeAttr): pass
545        class coords(CoordsAttr): pass
546        class target(FrameTargetAttr): pass
547        class oncontextmenu(xsc.TextAttr): pass # deprecated
548
549
550class span(xsc.Element):
551    """
552    generic language/style container
553    """
554    class Attrs(allattrs):
555        pass
556
557
558class bdo(xsc.Element):
559    """
560    I18N BiDi over-ride
561    """
562    class Attrs(coreattrs, eventattrs):
563        class lang(LanguageCodeAttr): pass
564        class dir(DirAttr): required = True
565
566
567class br(xsc.Element):
568    """
569    forced line break
570    """
571    model = sims.Empty()
572    class Attrs(coreattrs):
573        class clear(xsc.TextAttr): values = (u"left", u"all", u"right", u"none")
574
575
576class em(xsc.Element):
577    """
578    Indicates emphasis.
579    """
580    class Attrs(allattrs):
581        pass
582
583
584class strong(xsc.Element):
585    """
586    Indicates stronger emphasis than em.
587    """
588    class Attrs(allattrs):
589        pass
590
591
592class dfn(xsc.Element):
593    """
594    Indicates that this is the defining instance of the enclosed term.
595    """
596    class Attrs(allattrs):
597        pass
598
599
600class code(xsc.Element):
601    """
602    Designates a fragment of computer code.
603    """
604    class Attrs(allattrs):
605        pass
606
607
608class samp(xsc.Element):
609    """
610    Designates sample output from programs, scripts, etc.
611    """
612    class Attrs(allattrs):
613        pass
614
615
616class kbd(xsc.Element):
617    """
618    Indicates text to be entered by the user.
619    """
620    class Attrs(allattrs):
621        pass
622
623
624class var(xsc.Element):
625    """
626    Indicates an instance of a variable or program argument.
627    """
628    class Attrs(allattrs):
629        pass
630
631
632class cite(xsc.Element):
633    """
634    Contains a citation or a reference to other sources.
635    """
636    class Attrs(allattrs):
637        pass
638
639
640class abbr(xsc.Element):
641    """
642    Indicates an abbreviated form (e.g., WWW, HTTP, URI, Mass., etc.)
643    """
644    class Attrs(allattrs):
645        pass
646
647
648class acronym(xsc.Element):
649    """
650    Indicates an acronym (e.g., WAC, radar, etc.).
651    """
652    class Attrs(allattrs):
653        pass
654
655
656class q(xsc.Element):
657    """
658    short inline quotation
659    """
660    class Attrs(allattrs):
661        class cite(xsc.URLAttr): pass
662
663
664class sub(xsc.Element):
665    """
666    subscript
667    """
668    class Attrs(allattrs):
669        pass
670
671
672class sup(xsc.Element):
673    """
674    superscript
675    """
676    class Attrs(allattrs):
677        pass
678
679
680class tt(xsc.Element):
681    """
682    teletype or monospaced text style
683    """
684    class Attrs(allattrs):
685        pass
686
687
688class i(xsc.Element):
689    """
690    italic text style
691    """
692    class Attrs(allattrs):
693        pass
694
695
696class b(xsc.Element):
697    """
698    bold text style
699    """
700    class Attrs(allattrs):
701        pass
702
703
704class big(xsc.Element):
705    """
706    large text style
707    """
708    class Attrs(allattrs):
709        pass
710
711
712class small(xsc.Element):
713    """
714    small text style
715    """
716    class Attrs(allattrs):
717        pass
718
719
720class u(xsc.Element):
721    """
722    underline text style
723    """
724    class Attrs(allattrs):
725        pass
726
727
728class s(xsc.Element):
729    """
730    strike-through text style
731    """
732    class Attrs(allattrs):
733        pass
734
735
736class strike(xsc.Element):
737    """
738    strike-through text style
739    """
740    class Attrs(allattrs):
741        pass
742
743
744class basefont(xsc.Element): # deprecated
745    """
746    base font size
747    """
748    model = sims.Empty()
749    class Attrs(coreattrs, i18nattrs):
750        class id(xsc.IDAttr): pass
751        class size(xsc.TextAttr): required = True
752        class color(xsc.ColorAttr): pass
753        class face(xsc.TextAttr): pass
754
755
756class font(xsc.Element): # deprecated
757    """
758    local change to font
759    """
760    class Attrs(coreattrs, i18nattrs):
761        class face(xsc.TextAttr): pass
762        class size(xsc.TextAttr): pass
763        class color(xsc.ColorAttr): pass
764
765
766class object(xsc.Element):
767    """
768    generic embedded object
769    """
770    class Attrs(allattrs):
771        class declare(xsc.BoolAttr): pass
772        class classid(xsc.URLAttr): pass
773        class codebase(xsc.URLAttr): pass
774        class data(xsc.URLAttr): pass
775        class type(ContentTypeAttr): pass
776        class codetype(ContentTypeAttr): pass
777        class archive(URIListAttr): pass
778        class standby(TextAttr): pass
779        class height(LengthAttr): pass
780        class width(LengthAttr): pass
781        class usemap(xsc.URLAttr): pass
782        class name(xsc.TextAttr): pass
783        class tabindex(xsc.IntAttr): pass
784        class align(ImgAlignAttr): pass
785        class border(PixelsAttr): pass
786        class hspace(PixelsAttr): pass
787        class vspace(PixelsAttr): pass
788
789
790class param(xsc.Element):
791    """
792    named property value
793    """
794    model = sims.Empty()
795    class Attrs(xsc.Element.Attrs):
796        class id(xsc.IDAttr): pass
797        class name(xsc.TextAttr): required = True
798        class value(xsc.TextAttr): pass
799        class valuetype(xsc.TextAttr): values = (u"data", u"ref", u"object")
800        class type(ContentTypeAttr): pass
801
802
803class applet(xsc.Element): # deprecated
804    """
805    Java applet
806    """
807    class Attrs(coreattrs):
808        class codebase(xsc.URLAttr): pass
809        class archive(xsc.TextAttr): pass
810        class code(xsc.TextAttr): pass
811        class object(xsc.TextAttr): pass
812        class alt(TextAttr): pass
813        class name(xsc.TextAttr): pass
814        class width(LengthAttr): required = True
815        class height(LengthAttr): required = True
816        class align(ImgAlignAttr): pass
817        class hspace(PixelsAttr): pass
818        class vspace(PixelsAttr): pass
819
820
821class img(xsc.Element):
822    """
823    Embedded image
824    """
825    model = sims.Empty()
826    class Attrs(allattrs):
827        class src(xsc.URLAttr): required = True
828        class alt(TextAttr): required = True
829        class name(xsc.TextAttr): pass
830        class longdesc(xsc.URLAttr): pass
831        class width(LengthAttr): pass
832        class height(LengthAttr): pass
833        class usemap(xsc.URLAttr): pass
834        class ismap(xsc.BoolAttr): pass
835        class align(ImgAlignAttr): pass
836        class border(LengthAttr): pass
837        class hspace(PixelsAttr): pass
838        class vspace(PixelsAttr): pass
839        class lowsrc(xsc.URLAttr): pass # deprecated
840
841    def __unicode__(self):
842        return unicode(self["alt"])
843
844
845class map(xsc.Element):
846    """
847    client-side image map
848    """
849    class Attrs(i18nattrs, eventattrs):
850        class id(xsc.IDAttr): required = True
851        class class_(xsc.TextAttr): pass
852        class style(StyleSheetAttr): pass
853        class title(TextAttr): pass
854        class name(xsc.TextAttr): pass
855
856
857class area(xsc.Element):
858    """
859    client-side image map area
860    """
861    model = sims.Empty()
862    class Attrs(allattrs, focusattrs):
863        class shape(ShapeAttr): pass
864        class coords(CoordsAttr): pass
865        class href(xsc.URLAttr): pass
866        class nohref(xsc.BoolAttr): pass
867        class alt(TextAttr): required = True
868        class target(FrameTargetAttr): pass
869
870
871class form(xsc.Element):
872    """
873    interactive form
874    """
875    class Attrs(allattrs):
876        class action(xsc.URLAttr): required = True
877        class method(xsc.TextAttr): values = (u"get", u"post")
878        class name(xsc.TextAttr): pass
879        class enctype(ContentTypeAttr): pass
880        class onsubmit(ScriptAttr): pass
881        class onreset(ScriptAttr): pass
882        class accept_charset(CharsetsAttr): xmlname = "accept-charset"
883        class target(FrameTargetAttr): pass
884
885
886class label(xsc.Element):
887    """
888    form field label text
889    """
890    class Attrs(allattrs):
891        class for_(xsc.TextAttr): xmlname = "for"
892        class accesskey(CharacterAttr): pass
893        class onfocus(ScriptAttr): pass
894        class onblur(ScriptAttr): pass
895
896
897class input(xsc.Element):
898    """
899    form control
900    """
901    model = sims.Empty()
902    class Attrs(allattrs, focusattrs):
903        class type(InputTypeAttr): pass
904        class name(xsc.TextAttr): pass
905        class value(xsc.TextAttr): pass
906        class checked(xsc.BoolAttr): pass
907        class disabled(xsc.BoolAttr): pass
908        class readonly(xsc.BoolAttr): pass
909        class size(xsc.TextAttr): pass
910        class maxlength(xsc.IntAttr): pass
911        class src(xsc.URLAttr): pass
912        class alt(xsc.TextAttr): pass
913        class usemap(xsc.URLAttr): pass
914        class onselect(ScriptAttr): pass
915        class onchange(ScriptAttr): pass
916        class accept(ContentTypesAttr): pass
917        class align(ImgAlignAttr): pass
918        class border(xsc.IntAttr): pass # deprecated
919
920
921class select(xsc.Element):
922    """
923    option selector
924    """
925    class Attrs(allattrs):
926        class name(xsc.TextAttr): pass
927        class size(xsc.IntAttr): pass
928        class multiple(xsc.BoolAttr): pass
929        class disabled(xsc.BoolAttr): pass
930        class tabindex(xsc.IntAttr): pass
931        class onfocus(ScriptAttr): pass
932        class onblur(ScriptAttr): pass
933        class onchange(ScriptAttr): pass
934        class rows(xsc.TextAttr): pass # deprecated
935
936
937class optgroup(xsc.Element):
938    """
939    option group
940    """
941    class Attrs(allattrs):
942        class disabled(xsc.BoolAttr): pass
943        class label(TextAttr): required = True
944
945
946class option(xsc.Element):
947    """
948    selectable choice
949    """
950    class Attrs(allattrs):
951        class selected(xsc.BoolAttr): pass
952        class disabled(xsc.BoolAttr): pass
953        class label(TextAttr): pass
954        class value(xsc.TextAttr): pass
955
956
957class textarea(xsc.Element):
958    """
959    multi-line text field
960    """
961    class Attrs(allattrs, focusattrs):
962        class name(xsc.TextAttr): pass
963        class rows(xsc.IntAttr): required = True
964        class cols(xsc.IntAttr): required = True
965        class disabled(xsc.BoolAttr): pass
966        class readonly(xsc.BoolAttr): pass
967        class onselect(ScriptAttr): pass
968        class onchange(ScriptAttr): pass
969        class wrap(xsc.TextAttr): values = (u"virtual", u"physical", u"off") # deprecated
970
971
972class fieldset(xsc.Element):
973    """
974    form control group
975    """
976    class Attrs(allattrs):
977        pass
978
979
980class legend(xsc.Element):
981    """
982    fieldset legend
983    """
984    class Attrs(allattrs):
985        class accesskey(xsc.TextAttr): pass
986        class align(xsc.TextAttr): values = (u"top", u"bottom", u"left", u"right")
987
988
989class button(xsc.Element):
990    """
991    push button
992    """
993    class Attrs(allattrs, focusattrs):
994        class name(xsc.TextAttr): pass
995        class value(xsc.TextAttr): pass
996        class type(xsc.TextAttr): values = (u"button", u"submit", u"reset")
997        class disabled(xsc.BoolAttr): pass
998
999
1000class isindex(xsc.Element):
1001    model = sims.Empty()
1002    class Attrs(coreattrs, i18nattrs):
1003        class prompt(TextAttr): pass
1004
1005
1006class table(xsc.Element):
1007    """
1008    table
1009    """
1010    class Attrs(allattrs):
1011        class summary(TextAttr): pass
1012        class width(LengthAttr): pass
1013        class border(PixelsAttr): pass
1014        class frame(TFrameAttr): pass
1015        class rules(TRulesAttr): pass
1016        class cellspacing(LengthAttr): pass
1017        class cellpadding(LengthAttr): pass
1018        class align(TAlignAttr): pass
1019        class bgcolor(xsc.ColorAttr): pass # deprecated
1020        class height(xsc.TextAttr): pass # deprecated
1021        class background(xsc.URLAttr): pass # deprecated
1022        class bordercolor(xsc.ColorAttr): pass # deprecated
1023        class hspace(xsc.IntAttr): pass # deprecated
1024        class vspace(xsc.IntAttr): pass # deprecated
1025
1026
1027class caption(xsc.Element):
1028    """
1029    table caption
1030    """
1031    class Attrs(allattrs):
1032        class align(CAlignAttr): pass
1033
1034
1035class colgroup(xsc.Element):
1036    """
1037    table column group
1038    """
1039    class Attrs(allattrs, cellhalignattrs, cellvalignattrs):
1040        class span(xsc.TextAttr): pass
1041        class width(MultiLengthAttr): pass
1042
1043
1044class col(xsc.Element):
1045    """
1046    table column
1047    """
1048    class Attrs(allattrs, cellhalignattrs, cellvalignattrs):
1049        class span(xsc.TextAttr): pass
1050        class width(MultiLengthAttr): pass
1051
1052
1053class thead(xsc.Element):
1054    """
1055    table header
1056    """
1057    class Attrs(allattrs, cellhalignattrs, cellvalignattrs):
1058        pass
1059
1060
1061class tfoot(xsc.Element):
1062    """
1063    table footer
1064    """
1065    class Attrs(allattrs, cellhalignattrs, cellvalignattrs):
1066        pass
1067
1068
1069class tbody(xsc.Element):
1070    """
1071    table body
1072    """
1073    class Attrs(allattrs, cellhalignattrs, cellvalignattrs):
1074        pass
1075
1076
1077class tr(xsc.Element):
1078    """
1079    table row
1080    """
1081    class Attrs(allattrs, cellhalignattrs, cellvalignattrs):
1082        class bgcolor(xsc.ColorAttr): pass
1083        class nowrap(xsc.BoolAttr): pass # deprecated
1084        class width(LengthAttr): pass # deprecated
1085        class background(xsc.URLAttr): pass # deprecated
1086
1087
1088class th(xsc.Element):
1089    """
1090    table header cell
1091    """
1092    class Attrs(allattrs, cellhalignattrs, cellvalignattrs):
1093        class abbr(TextAttr): pass
1094        class axis(xsc.TextAttr): pass
1095        class headers(xsc.TextAttr): pass
1096        class scope(ScopeAttr): pass
1097        class rowspan(xsc.IntAttr): pass
1098        class colspan(xsc.IntAttr): pass
1099        class nowrap(xsc.BoolAttr): pass
1100        class bgcolor(xsc.ColorAttr): pass
1101        class width(LengthAttr): pass
1102        class height(LengthAttr): pass
1103        class background(xsc.URLAttr): pass # deprecated
1104        class bordercolor(xsc.ColorAttr): pass # deprecated
1105
1106
1107class td(xsc.Element):
1108    """
1109    table data cell
1110    """
1111    class Attrs(allattrs, cellhalignattrs, cellvalignattrs):
1112        class abbr(TextAttr): pass
1113        class axis(xsc.TextAttr): pass
1114        class headers(xsc.TextAttr): pass
1115        class scope(ScopeAttr): pass
1116        class rowspan(xsc.IntAttr): pass
1117        class colspan(xsc.IntAttr): pass
1118        class nowrap(xsc.BoolAttr): pass
1119        class bgcolor(xsc.ColorAttr): pass
1120        class width(LengthAttr): pass
1121        class height(LengthAttr): pass
1122        class background(xsc.URLAttr): pass # deprecated
1123        class bordercolor(xsc.ColorAttr): pass # deprecated
1124
1125
1126class embed(xsc.Element):
1127    """
1128    generic embedded object (Internet Exploder)
1129    """
1130    class Attrs(xsc.Element.Attrs):
1131        class width(xsc.TextAttr): pass
1132        class height(xsc.TextAttr): pass
1133        class src(xsc.URLAttr): pass
1134        class controller(xsc.TextAttr): pass
1135        class href(xsc.URLAttr): pass
1136        class target(xsc.TextAttr): pass
1137        class border(xsc.IntAttr): pass
1138        class pluginspage(xsc.URLAttr): pass
1139        class quality(xsc.TextAttr): pass
1140        class type(xsc.TextAttr): pass
1141        class bgcolor(xsc.ColorAttr): pass
1142        class menu(xsc.TextAttr): pass # deprecated
1143
1144
1145# The pain, the pain ...
1146class frameset(xsc.Element):
1147    """
1148    window subdivision
1149    """
1150    class Attrs(coreattrs):
1151        class rows(xsc.TextAttr): pass
1152        class cols(xsc.TextAttr): pass
1153        class onload(xsc.TextAttr): pass
1154        class onunload(xsc.TextAttr): pass
1155        class framespacing(xsc.TextAttr): pass # deprecated
1156        class border(xsc.IntAttr): pass # deprecated
1157        class marginwidth(xsc.IntAttr): pass # deprecated
1158        class marginheight(xsc.IntAttr): pass # deprecated
1159        class frameborder(xsc.IntAttr): pass # deprecated
1160        class noresize(xsc.BoolAttr): pass # deprecated
1161        class scrolling(xsc.TextAttr): pass # deprecated
1162
1163
1164class frame(xsc.Element):
1165    """
1166    subwindow
1167    """
1168    model = sims.Empty()
1169    class Attrs(coreattrs):
1170        class longdesc(xsc.TextAttr): pass
1171        class name(xsc.TextAttr): pass
1172        class src(xsc.URLAttr): pass
1173        class frameborder(xsc.TextAttr): pass
1174        class marginwidht(xsc.TextAttr): pass
1175        class marginheight(xsc.TextAttr): pass
1176        class noresize(xsc.BoolAttr): pass
1177        class scrolling(xsc.TextAttr): pass
1178        class framespacing(xsc.TextAttr): pass # deprecated
1179        class border(xsc.IntAttr): pass # deprecated
1180        class marginwidth(xsc.IntAttr): pass # deprecated
1181        class marginheight(xsc.IntAttr): pass # deprecated
1182        class frameborder(xsc.IntAttr): pass # deprecated
1183        class noresize(xsc.BoolAttr): pass # deprecated
1184        class scrolling(xsc.TextAttr): pass # deprecated
1185
1186
1187# More pain
1188class nobr(xsc.Element): # deprecated
1189    """
1190    prevents line breaks
1191    """
1192
1193
1194class __ns__(xsc.Namespace):
1195    xmlname = "html"
1196    xmlurl = "http://www.w3.org/1999/xhtml"
1197__ns__.makemod(vars())
1198
1199
1200# Parameter entities defined in the DTD
1201pe_special_extra = (object, embed, applet, img, map, iframe) # embed is deprecated
1202pe_special_basic = (br, span, bdo)
1203pe_special = pe_special_basic + pe_special_extra
1204pe_fontstyle_extra = (big, small, font, basefont)
1205pe_fontstyle_basic = (tt, i, b, u, s, strike)
1206pe_fontstyle = pe_fontstyle_basic + pe_fontstyle_extra
1207pe_phrase_extra = (sub, sup)
1208pe_phrase_basic = (em, strong, dfn, code, q, samp, kbd, var, cite, abbr, acronym)
1209pe_phrase = pe_phrase_basic + pe_phrase_extra
1210pe_inline_forms = (input, select, textarea, label, button)
1211pe_misc_inline = (ins, del_, script)
1212pe_misc = (noscript,) + pe_misc_inline
1213pe_inline = (a,) + pe_special + pe_fontstyle + pe_phrase + pe_inline_forms
1214pe_Inline = pe_inline + pe_misc_inline
1215pe_heading = (h1, h2, h3, h4, h5, h6)
1216pe_lists = (ul, ol, dl, menu, dir)
1217pe_blocktext = (pre, hr, blockquote, address, center, noframes)
1218pe_block = (p,) + pe_heading + (div,) + pe_lists + pe_blocktext + (isindex, fieldset, table)
1219pe_Flow = pe_block + (form,) + pe_inline + pe_misc
1220
1221
1222base.model = \
1223meta.model = \
1224link.model = \
1225hr.model = \
1226br.model = \
1227basefont.model = \
1228param.model = \
1229img.model = \
1230area.model = \
1231input.model = \
1232isindex.model = \
1233col.model = \
1234frame.model = sims.Empty()
1235noscript.model = \
1236iframe.model = \
1237body.model = \
1238div.model = \
1239li.model = \
1240dd.model = \
1241blockquote.model = \
1242center.model = \
1243ins.model = \
1244del_.model = \
1245th.model = \
1246td.model = \
1247nobr.model = sims.ElementsOrText(*pe_Flow)
1248p.model = \
1249h1.model = \
1250h2.model = \
1251h3.model = \
1252h4.model = \
1253h5.model = \
1254h6.model = \
1255dt.model = \
1256span.model = \
1257bdo.model = \
1258em.model = \
1259strong.model = \
1260dfn.model = \
1261code.model = \
1262samp.model = \
1263kbd.model = \
1264var.model = \
1265cite.model = \
1266abbr.model = \
1267acronym.model = \
1268q.model = \
1269sub.model = \
1270sup.model = \
1271tt.model = \
1272i.model = \
1273b.model = \
1274big.model = \
1275small.model = \
1276u.model = \
1277s.model = \
1278strike.model = \
1279font.model = \
1280label.model = \
1281legend.model = \
1282caption.model = sims.ElementsOrText(*pe_Inline)
1283ul.model = \
1284ol.model = \
1285menu.model = \
1286dir.model = sims.Elements(li)
1287title.model = \
1288style.model = \
1289script.model = \
1290option.model = \
1291textarea.model = sims.NoElements()
1292object.model = \
1293applet.model = \
1294embed.model = sims.ElementsOrText(*((param,) + pe_block + (form,) + pe_inline + pe_misc))
1295thead.model = \
1296tfoot.model = \
1297tbody.model = sims.Elements(tr)
1298map.model = sims.Elements(*(pe_block + (form,) + pe_misc + (area,)))
1299noframes.model = sims.Elements(body)
1300table.model = sims.Elements(caption, col, colgroup, thead, tfoot, tbody, tr)
1301colgroup.model = sims.Elements(col)
1302dl.model = sims.Elements(dt, dd)
1303frameset.model = sims.Elements(frameset, frame, noframes)
1304html.model = sims.Elements(head, body, frameset)
1305select.model = sims.Elements(optgroup, option)
1306optgroup.model = sims.Elements(option)
1307tr.model = sims.Elements(th, td)
1308head.model = sims.Elements(title, base, script, style, meta, link, object, isindex)
1309pre.model = sims.ElementsOrText(*((a,) + pe_special_basic + pe_fontstyle_basic + pe_phrase_basic + pe_inline_forms + pe_misc_inline))
1310fieldset.model = sims.ElementsOrText(*((legend,) + pe_block + (form,) + pe_inline + pe_misc))
1311button.model = sims.ElementsOrText(*((p,) + pe_heading + (div,) + pe_lists + pe_blocktext + (table, br, span, bdo, object, applet, img, map) + pe_fontstyle + pe_phrase + pe_misc))
1312form.model = sims.ElementsOrText(*(pe_block + pe_inline + pe_misc))
1313address.model = sims.ElementsOrText(*(pe_inline + pe_misc_inline + (p,)))
1314a.model = sims.ElementsOrText(*(pe_special + pe_fontstyle + pe_phrase + pe_inline_forms + pe_misc_inline))
Note: See TracBrowser for help on using the browser.