1 <page title="Closure HTML Manual">
5 <p>Parse into LHTML:</p>
7 (<b>chtml:parse</b> "<p>nada</p>" <b>(chtml:make-lhtml-builder)</b>)
9 => (:HTML NIL (:HEAD NIL) (:BODY NIL (:P NIL "nada")))
12 <p>Serialize LHTML back into a string:</p>
14 (<b>chtml:serialize-lhtml</b> * (<b>chtml:make-string-sink</b>))
16 => "<HTML><HEAD></HEAD><BODY><P>nada</P></BODY></HTML>"
25 CL-USER> <b>(chtml:parse #p"/path/to/example.html" nil)</b>
28 CL-USER> <b>(chtml:parse "<p>nada</p>" nil)</b>
31 CL-USER> (chtml:parse "<p>nada</p>" <b>(chtml:make-lhtml-builder)</b>)
32 (:HTML NIL (:HEAD NIL) (:BODY NIL (:P NIL "nada")))
34 CL-USER> (chtml:parse "<p>nada</p>" <b>(cxml-dom:make-dom-builder)</b>)
35 #<RUNE-DOM::DOCUMENT {10048699E1}>
37 CL-USER> (chtml:parse "<p>nada</p>" <b>(stp:make-builder)</b>)
38 #.(CXML-STP-IMPL::DOCUMENT
39 :CHILDREN '(#.(CXML-STP:ELEMENT
40 #| :PARENT of type DOCUMENT |#
43 :NAMESPACE-URI "http://www.w3.org/1999/xhtml")))
48 <h3>Comparison to Closure XML</h3>
50 The Closure browser uses Closure XML and Closure HTML. In turn,
51 both parsers depend on closure-common.
53 <table cellspacing="0">
55 <td style="border-bottom: 2px solid black;
56 border-right: 2px solid black;
59 <td style="border-bottom: 2px solid black;
60 border-right: 1px solid black;
64 <td style="border-bottom: 2px solid black;
70 <td style="border-bottom: 1px solid black;
71 border-right: 2px solid black;
75 <td style="border-bottom: 1px solid black;
76 border-right: 1px solid black;
80 <td style="border-bottom: 1px solid black;
86 <td style="border-bottom: 1px solid black;
87 border-right: 2px solid black;
91 <td style="border-bottom: 1px solid black;
92 border-right: 1px solid black;
94 Strictly correct (non-wellformed XML rejected)
96 <td style="border-bottom: 1px solid black;
98 Lax (Tries to accept broken HTML)