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 /smlnj-lib/branches/rt-transition/HTML/html-sig.sml
ViewVC logotype

Annotation of /smlnj-lib/branches/rt-transition/HTML/html-sig.sml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2980 - (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 : monnier 8 type pcdata = string
17 :     type cdata = string
18 :     type url = string
19 :     type pixels = cdata
20 :     type name = string
21 :     type id = string
22 : monnier 2
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 : monnier 8 body : body
120 : monnier 2 }
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 : monnier 8 and body = BODY of {
143 :     background : url option,
144 :     bgcolor : cdata option,
145 :     text : cdata option,
146 :     link : cdata option,
147 :     vlink : cdata option,
148 :     alink : cdata option,
149 :     content : block
150 :     }
151 :    
152 : monnier 2 and block
153 :     = BlockList of block list
154 :     | TextBlock of text
155 :     | Hn of {
156 :     n : int,
157 :     align : HAlign.align option,
158 :     content : text
159 :     }
160 :     (* NOTE: the content of an ADDRESS element is really (text | P)* *)
161 :     | ADDRESS of block
162 :     | P of {
163 :     align : HAlign.align option,
164 :     content : text
165 :     }
166 :     | UL of {
167 :     ty : ULStyle.style option,
168 :     compact : bool,
169 :     content : list_item list
170 :     }
171 :     | OL of {
172 :     ty : cdata option,
173 :     start : int option,
174 :     compact : bool,
175 :     content : list_item list
176 :     }
177 :     | DIR of {
178 :     compact : bool,
179 :     content : list_item list
180 :     }
181 :     | MENU of {
182 :     compact : bool,
183 :     content : list_item list
184 :     }
185 :     | DL of {
186 :     compact : bool,
187 :     content : {dt : text list, dd : block} list
188 :     }
189 :     | PRE of {
190 :     width : int option,
191 :     content : text
192 :     }
193 :     | DIV of {
194 :     align : HAlign.align,
195 :     content : block
196 :     }
197 :     | CENTER of block
198 :     | BLOCKQUOTE of block
199 :     | FORM of {
200 :     action : url option,
201 :     method : HttpMethod.method,
202 :     enctype : cdata option,
203 :     content : block (* -(FORM) *)
204 :     }
205 :     | ISINDEX of {prompt : cdata option}
206 :     | HR of {
207 :     align : HAlign.align option,
208 :     noshade : bool,
209 :     size : pixels option,
210 :     width : cdata option
211 :     }
212 :     | TABLE of {
213 :     align : HAlign.align option,
214 :     width : cdata option,
215 :     border : pixels option,
216 :     cellspacing : pixels option,
217 :     cellpadding : pixels option,
218 :     caption : caption option,
219 :     content : tr list
220 :     }
221 :    
222 :     and list_item = LI of {
223 :     ty : cdata option,
224 :     value : int option,
225 :     content : block
226 :     }
227 :    
228 :     (** table content **)
229 :     and caption = CAPTION of {
230 :     align : CaptionAlign.align option,
231 :     content : text
232 :     }
233 :     and tr = TR of {
234 :     align : HAlign.align option,
235 :     valign : CellVAlign.align option,
236 :     content : table_cell list
237 :     }
238 :     and table_cell
239 :     = TH 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 :     | TD of {
250 :     nowrap : bool,
251 :     rowspan : int option,
252 :     colspan : int option,
253 :     align : HAlign.align option,
254 :     valign : CellVAlign.align option,
255 :     width : pixels option,
256 :     height : pixels option,
257 :     content : block
258 :     }
259 :    
260 :     (** Text **)
261 :     and text
262 :     = TextList of text list
263 :     | PCDATA of pcdata
264 :     | TT of text
265 :     | I of text
266 :     | B of text
267 :     | U of text
268 :     | STRIKE of text
269 :     | BIG of text
270 :     | SMALL of text
271 :     | SUB of text
272 :     | SUP of text
273 :     | EM of text
274 :     | STRONG of text
275 :     | DFN of text
276 :     | CODE of text
277 :     | SAMP of text
278 :     | KBD of text
279 :     | VAR of text
280 :     | CITE of text
281 :     | A of {
282 :     name : cdata option,
283 :     href : url option,
284 :     rel : cdata option,
285 :     rev : cdata option,
286 :     title : cdata option,
287 :     content : text (* -(A) *)
288 :     }
289 :     | IMG of {
290 :     src : url,
291 :     alt : cdata option,
292 :     align : IAlign.align option,
293 :     height : pixels option,
294 :     width : pixels option,
295 :     border : pixels option,
296 :     hspace : pixels option,
297 :     vspace : pixels option,
298 :     usemap : url option,
299 :     ismap : bool
300 :     }
301 :     | APPLET of {
302 :     codebase : url option,
303 :     code : cdata,
304 :     name : cdata option,
305 :     alt : cdata option,
306 :     align : IAlign.align option,
307 :     height : pixels option,
308 :     width : pixels option,
309 :     hspace : pixels option,
310 :     vspace : pixels option,
311 :     content : text
312 :     }
313 :     | PARAM of { (* applet parameter *)
314 :     name : name,
315 :     value : cdata option
316 :     }
317 :     | FONT of {
318 :     size : cdata option,
319 :     color : cdata option,
320 :     content : text
321 :     }
322 :     | BASEFONT of {
323 :     size : cdata option,
324 :     content : text
325 :     }
326 :     | BR of {
327 :     clear : TextFlowCtl.control option
328 :     }
329 :     | MAP of {
330 :     name : cdata option,
331 :     content : area list
332 :     }
333 :     | INPUT of {
334 :     ty : InputType.ty option,
335 :     name : cdata option,
336 :     value : cdata option,
337 :     checked : bool,
338 :     size : cdata option,
339 :     maxlength : int option,
340 :     src : url option,
341 :     align : IAlign.align option
342 :     }
343 :     | SELECT of {
344 :     name : cdata,
345 :     size : int option,
346 :     content : select_option list
347 :     }
348 :     | TEXTAREA of {
349 :     name : cdata,
350 :     rows : int,
351 :     cols : int,
352 :     content : pcdata
353 :     }
354 :     (* SCRIPT elements are placeholders for the next version of HTML *)
355 :     | SCRIPT of pcdata
356 :    
357 :     (* map areas *)
358 :     and area = AREA of {
359 :     shape : Shape.shape option,
360 :     coords : cdata option,
361 :     href : url option,
362 :     nohref : bool,
363 :     alt : cdata
364 :     }
365 :    
366 :     (* SELECT options *)
367 :     and select_option = OPTION of {
368 :     selected : bool,
369 :     value : cdata option,
370 :     content : pcdata
371 :     }
372 :    
373 :     end (* signature HTML *)
374 :    

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