Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Annotation of /sml/trunk/src/smlnj-lib/HTML/html-sig.sml
ViewVC logotype

Annotation of /sml/trunk/src/smlnj-lib/HTML/html-sig.sml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2 - (view) (download)

1 : monnier 2 (* html-sig.sml
2 :     *
3 :     * COPYRIGHT (c) 1995 AT&T Bell Laboratories.
4 :     * COPYRIGHT (c) 1996 AT&T Research.
5 :     *
6 :     * This file defines the abstract syntax of HTML documents. The
7 :     * AST follows the HTML 3.2 Proposed Standard.
8 :     *)
9 :    
10 :     signature HTML =
11 :     sig
12 :    
13 :     val htmlVersion : string (* = "3.2" *)
14 :    
15 :     (* the HTML data representations (these are all string) *)
16 :     type pcdata
17 :     type cdata
18 :     type url
19 :     type pixels (* = cdata *)
20 :     type name
21 :     type id
22 :    
23 :     (* the different types of HTTP methods *)
24 :     structure HttpMethod : sig
25 :     eqtype method
26 :     val get : method
27 :     val put : method
28 :     val toString : method -> string
29 :     val fromString : string -> method option
30 :     end
31 :    
32 :     (* the different types of INPUT elements *)
33 :     structure InputType : sig
34 :     eqtype ty
35 :     val text : ty
36 :     val password : ty
37 :     val checkbox : ty
38 :     val radio : ty
39 :     val submit : ty
40 :     val reset : ty
41 :     val file : ty
42 :     val hidden : ty
43 :     val image : ty
44 :     val toString : ty -> string
45 :     val fromString : string -> ty option
46 :     end
47 :    
48 :     (* alignment attributes for IMG, APPLET and INPUT elements *)
49 :     structure IAlign : sig
50 :     eqtype align
51 :     val top : align
52 :     val middle : align
53 :     val bottom : align
54 :     val left : align
55 :     val right : align
56 :     val toString : align -> string
57 :     val fromString : string -> align option
58 :     end
59 :    
60 :     structure HAlign : sig
61 :     eqtype align
62 :     val left : align
63 :     val center : align
64 :     val right : align
65 :     val toString : align -> string
66 :     val fromString : string -> align option
67 :     end
68 :    
69 :     structure CellVAlign : sig
70 :     eqtype align
71 :     val top : align
72 :     val middle : align
73 :     val bottom : align
74 :     val baseline : align
75 :     val toString : align -> string
76 :     val fromString : string -> align option
77 :     end
78 :    
79 :     structure CaptionAlign : sig
80 :     eqtype align
81 :     val top : align
82 :     val bottom : align
83 :     val toString : align -> string
84 :     val fromString : string -> align option
85 :     end
86 :    
87 :     structure ULStyle : sig
88 :     eqtype style
89 :     val disc : style
90 :     val square : style
91 :     val circle : style
92 :     val toString : style -> string
93 :     val fromString : string -> style option
94 :     end
95 :    
96 :     structure Shape : sig
97 :     eqtype shape
98 :     val rect : shape
99 :     val circle : shape
100 :     val poly : shape
101 :     val default : shape
102 :     val toString : shape -> string
103 :     val fromString : string -> shape option
104 :     end
105 :    
106 :     structure TextFlowCtl : sig
107 :     eqtype control
108 :     val left : control
109 :     val right : control
110 :     val all : control
111 :     val none : control
112 :     val toString : control -> string
113 :     val fromString : string -> control option
114 :     end
115 :    
116 :     datatype html = HTML of {
117 :     version : cdata option,
118 :     head : head_content list,
119 :     body : block
120 :     }
121 :    
122 :     and head_content
123 :     = Head_TITLE of pcdata
124 :     | Head_ISINDEX of {prompt : cdata option}
125 :     | Head_BASE of {href : url}
126 :     | Head_META of {
127 :     httpEquiv : name option,
128 :     name : name option,
129 :     content : cdata
130 :     }
131 :     | Head_LINK of {
132 :     id : id option,
133 :     href : url option,
134 :     rel : cdata option,
135 :     rev : cdata option,
136 :     title : cdata option
137 :     }
138 :     (* SCRIPT/STYLE elements are placeholders for the next version of HTML *)
139 :     | Head_SCRIPT of pcdata
140 :     | Head_STYLE of pcdata
141 :    
142 :     and block
143 :     = BlockList of block list
144 :     | TextBlock of text
145 :     | Hn of {
146 :     n : int,
147 :     align : HAlign.align option,
148 :     content : text
149 :     }
150 :     (* NOTE: the content of an ADDRESS element is really (text | P)* *)
151 :     | ADDRESS of block
152 :     | P of {
153 :     align : HAlign.align option,
154 :     content : text
155 :     }
156 :     | UL of {
157 :     ty : ULStyle.style option,
158 :     compact : bool,
159 :     content : list_item list
160 :     }
161 :     | OL of {
162 :     ty : cdata option,
163 :     start : int option,
164 :     compact : bool,
165 :     content : list_item list
166 :     }
167 :     | DIR of {
168 :     compact : bool,
169 :     content : list_item list
170 :     }
171 :     | MENU of {
172 :     compact : bool,
173 :     content : list_item list
174 :     }
175 :     | DL of {
176 :     compact : bool,
177 :     content : {dt : text list, dd : block} list
178 :     }
179 :     | PRE of {
180 :     width : int option,
181 :     content : text
182 :     }
183 :     | DIV of {
184 :     align : HAlign.align,
185 :     content : block
186 :     }
187 :     | CENTER of block
188 :     | BLOCKQUOTE of block
189 :     | FORM of {
190 :     action : url option,
191 :     method : HttpMethod.method,
192 :     enctype : cdata option,
193 :     content : block (* -(FORM) *)
194 :     }
195 :     | ISINDEX of {prompt : cdata option}
196 :     | HR of {
197 :     align : HAlign.align option,
198 :     noshade : bool,
199 :     size : pixels option,
200 :     width : cdata option
201 :     }
202 :     | TABLE of {
203 :     align : HAlign.align option,
204 :     width : cdata option,
205 :     border : pixels option,
206 :     cellspacing : pixels option,
207 :     cellpadding : pixels option,
208 :     caption : caption option,
209 :     content : tr list
210 :     }
211 :    
212 :     and list_item = LI of {
213 :     ty : cdata option,
214 :     value : int option,
215 :     content : block
216 :     }
217 :    
218 :     (** table content **)
219 :     and caption = CAPTION of {
220 :     align : CaptionAlign.align option,
221 :     content : text
222 :     }
223 :     and tr = TR of {
224 :     align : HAlign.align option,
225 :     valign : CellVAlign.align option,
226 :     content : table_cell list
227 :     }
228 :     and table_cell
229 :     = TH of {
230 :     nowrap : bool,
231 :     rowspan : int option,
232 :     colspan : int option,
233 :     align : HAlign.align option,
234 :     valign : CellVAlign.align option,
235 :     width : pixels option,
236 :     height : pixels option,
237 :     content : block
238 :     }
239 :     | TD of {
240 :     nowrap : bool,
241 :     rowspan : int option,
242 :     colspan : int option,
243 :     align : HAlign.align option,
244 :     valign : CellVAlign.align option,
245 :     width : pixels option,
246 :     height : pixels option,
247 :     content : block
248 :     }
249 :    
250 :     (** Text **)
251 :     and text
252 :     = TextList of text list
253 :     | PCDATA of pcdata
254 :     | TT of text
255 :     | I of text
256 :     | B of text
257 :     | U of text
258 :     | STRIKE of text
259 :     | BIG of text
260 :     | SMALL of text
261 :     | SUB of text
262 :     | SUP of text
263 :     | EM of text
264 :     | STRONG of text
265 :     | DFN of text
266 :     | CODE of text
267 :     | SAMP of text
268 :     | KBD of text
269 :     | VAR of text
270 :     | CITE of text
271 :     | A of {
272 :     name : cdata option,
273 :     href : url option,
274 :     rel : cdata option,
275 :     rev : cdata option,
276 :     title : cdata option,
277 :     content : text (* -(A) *)
278 :     }
279 :     | IMG of {
280 :     src : url,
281 :     alt : cdata option,
282 :     align : IAlign.align option,
283 :     height : pixels option,
284 :     width : pixels option,
285 :     border : pixels option,
286 :     hspace : pixels option,
287 :     vspace : pixels option,
288 :     usemap : url option,
289 :     ismap : bool
290 :     }
291 :     | APPLET of {
292 :     codebase : url option,
293 :     code : cdata,
294 :     name : cdata option,
295 :     alt : cdata option,
296 :     align : IAlign.align option,
297 :     height : pixels option,
298 :     width : pixels option,
299 :     hspace : pixels option,
300 :     vspace : pixels option,
301 :     content : text
302 :     }
303 :     | PARAM of { (* applet parameter *)
304 :     name : name,
305 :     value : cdata option
306 :     }
307 :     | FONT of {
308 :     size : cdata option,
309 :     color : cdata option,
310 :     content : text
311 :     }
312 :     | BASEFONT of {
313 :     size : cdata option,
314 :     content : text
315 :     }
316 :     | BR of {
317 :     clear : TextFlowCtl.control option
318 :     }
319 :     | MAP of {
320 :     name : cdata option,
321 :     content : area list
322 :     }
323 :     | INPUT of {
324 :     ty : InputType.ty option,
325 :     name : cdata option,
326 :     value : cdata option,
327 :     checked : bool,
328 :     size : cdata option,
329 :     maxlength : int option,
330 :     src : url option,
331 :     align : IAlign.align option
332 :     }
333 :     | SELECT of {
334 :     name : cdata,
335 :     size : int option,
336 :     content : select_option list
337 :     }
338 :     | TEXTAREA of {
339 :     name : cdata,
340 :     rows : int,
341 :     cols : int,
342 :     content : pcdata
343 :     }
344 :     (* SCRIPT elements are placeholders for the next version of HTML *)
345 :     | SCRIPT of pcdata
346 :    
347 :     (* map areas *)
348 :     and area = AREA of {
349 :     shape : Shape.shape option,
350 :     coords : cdata option,
351 :     href : url option,
352 :     nohref : bool,
353 :     alt : cdata
354 :     }
355 :    
356 :     (* SELECT options *)
357 :     and select_option = OPTION of {
358 :     selected : bool,
359 :     value : cdata option,
360 :     content : pcdata
361 :     }
362 :    
363 :     end (* signature HTML *)
364 :    

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0