1 //------------------------------------------------------------------------------
2 // <copyright file="HtmlProps.cs" company="Microsoft">
3 // Copyright (c) Microsoft Corporation. All rights reserved.
5 // <owner current="true" primary="true">Microsoft</owner>
6 //------------------------------------------------------------------------------
8 namespace System.Xml.Xsl.XsltOld {
9 using Res = System.Xml.Utils.Res;
11 using System.Collections;
12 using System.Collections.Specialized;
13 using System.Diagnostics;
15 using System.Globalization;
17 internal class HtmlElementProps {
19 private bool abrParent;
20 private bool uriParent;
21 private bool noEntities;
24 private bool nameParent;
26 static public HtmlElementProps Create(bool empty, bool abrParent, bool uriParent, bool noEntities, bool blockWS, bool head, bool nameParent) {
27 HtmlElementProps props = new HtmlElementProps();
29 props.abrParent = abrParent ;
30 props.uriParent = uriParent ;
31 props.noEntities = noEntities;
32 props.blockWS = blockWS ;
34 props.nameParent = nameParent;
37 public bool Empty { get { return this.empty ; } }
38 public bool AbrParent { get { return this.abrParent ; } }
39 public bool UriParent { get { return this.uriParent ; } }
40 public bool NoEntities { get { return this.noEntities; } }
41 public bool BlockWS { get { return this.blockWS ; } }
42 public bool Head { get { return this.head ; } }
43 public bool NameParent { get { return this.nameParent; } }
46 static private Hashtable s_table = CreatePropsTable();
47 // static private HtmlElementProps s_otherElements = Create(false, false, false, false, false, false, false);
49 static public HtmlElementProps GetProps(string name) {
50 HtmlElementProps result = (HtmlElementProps) s_table[name];
52 // We can do this but in case of Xml/Html mixed output this doesn't have big sence.
53 // return result != null ? result : s_otherElements;
56 static Hashtable CreatePropsTable() {
57 bool o = false, X = true;
58 Hashtable table = new Hashtable(71, StringComparer.OrdinalIgnoreCase); {
59 // EMPTY ABR URI NO_ENT NO_WS HEAD NAME
60 table.Add( "a" , Create( o , o , X , o , o , o , X ) );
61 table.Add( "address" , Create( o , o , o , o , X , o , o ) );
62 table.Add( "applet" , Create( o , o , o , o , X , o , o ) );
63 table.Add( "area" , Create( X , X , X , o , X , o , o ) );
64 table.Add( "base" , Create( X , o , X , o , X , o , o ) );
65 table.Add( "basefont" , Create( X , o , o , o , X , o , o ) );
66 table.Add( "blockquote" , Create( o , o , X , o , X , o , o ) );
67 table.Add( "body" , Create( o , o , o , o , X , o , o ) );
68 table.Add( "br" , Create( X , o , o , o , o , o , o ) );
69 table.Add( "button" , Create( o , X , o , o , o , o , o ) );
70 table.Add( "caption" , Create( o , o , o , o , X , o , o ) );
71 table.Add( "center" , Create( o , o , o , o , X , o , o ) );
72 table.Add( "col" , Create( X , o , o , o , X , o , o ) );
73 table.Add( "colgroup" , Create( o , o , o , o , X , o , o ) );
74 table.Add( "dd" , Create( o , o , o , o , X , o , o ) );
75 table.Add( "del" , Create( o , o , X , o , X , o , o ) );
76 table.Add( "dir" , Create( o , X , o , o , X , o , o ) );
77 table.Add( "div" , Create( o , o , o , o , X , o , o ) );
78 table.Add( "dl" , Create( o , X , o , o , X , o , o ) );
79 table.Add( "dt" , Create( o , o , o , o , X , o , o ) );
80 table.Add( "fieldset" , Create( o , o , o , o , X , o , o ) );
81 table.Add( "font" , Create( o , o , o , o , X , o , o ) );
82 table.Add( "form" , Create( o , o , X , o , X , o , o ) );
83 table.Add( "frame" , Create( X , X , o , o , X , o , o ) );
84 table.Add( "frameset" , Create( o , o , o , o , X , o , o ) );
85 table.Add( "h1" , Create( o , o , o , o , X , o , o ) );
86 table.Add( "h2" , Create( o , o , o , o , X , o , o ) );
87 table.Add( "h3" , Create( o , o , o , o , X , o , o ) );
88 table.Add( "h4" , Create( o , o , o , o , X , o , o ) );
89 table.Add( "h5" , Create( o , o , o , o , X , o , o ) );
90 table.Add( "h6" , Create( o , o , o , o , X , o , o ) );
91 table.Add( "head" , Create( o , o , X , o , X , X , o ) );
92 table.Add( "hr" , Create( X , X , o , o , X , o , o ) );
93 table.Add( "html" , Create( o , o , o , o , X , o , o ) );
94 table.Add( "iframe" , Create( o , o , o , o , X , o , o ) );
95 table.Add( "img" , Create( X , X , X , o , o , o , o ) );
96 table.Add( "input" , Create( X , X , X , o , o , o , o ) );
97 table.Add( "ins" , Create( o , o , X , o , X , o , o ) );
98 table.Add( "isindex" , Create( X , o , o , o , X , o , o ) );
99 table.Add( "legend" , Create( o , o , o , o , X , o , o ) );
100 table.Add( "li" , Create( o , o , o , o , X , o , o ) );
101 table.Add( "link" , Create( X , o , X , o , X , o , o ) );
102 table.Add( "map" , Create( o , o , o , o , X , o , o ) );
103 table.Add( "menu" , Create( o , X , o , o , X , o , o ) );
104 table.Add( "meta" , Create( X , o , o , o , X , o , o ) );
105 table.Add( "noframes" , Create( o , o , o , o , X , o , o ) );
106 table.Add( "noscript" , Create( o , o , o , o , X , o , o ) );
107 table.Add( "object" , Create( o , X , X , o , o , o , o ) );
108 table.Add( "ol" , Create( o , X , o , o , X , o , o ) );
109 table.Add( "optgroup" , Create( o , X , o , o , X , o , o ) );
110 table.Add( "option" , Create( o , X , o , o , X , o , o ) );
111 table.Add( "p" , Create( o , o , o , o , X , o , o ) );
112 table.Add( "param" , Create( X , o , o , o , X , o , o ) );
113 table.Add( "pre" , Create( o , o , o , o , X , o , o ) );
114 table.Add( "q" , Create( o , o , X , o , o , o , o ) );
115 table.Add( "s" , Create( o , o , o , o , X , o , o ) );
116 table.Add( "script" , Create( o , X , X , X , o , o , o ) );
117 table.Add( "select" , Create( o , X , o , o , o , o , o ) );
118 table.Add( "strike" , Create( o , o , o , o , X , o , o ) );
119 table.Add( "style" , Create( o , o , o , X , X , o , o ) );
120 table.Add( "table" , Create( o , o , X , o , X , o , o ) );
121 table.Add( "tbody" , Create( o , o , o , o , X , o , o ) );
122 table.Add( "td" , Create( o , X , o , o , X , o , o ) );
123 table.Add( "textarea" , Create( o , X , o , o , o , o , o ) );
124 table.Add( "tfoot" , Create( o , o , o , o , X , o , o ) );
125 table.Add( "th" , Create( o , X , o , o , X , o , o ) );
126 table.Add( "thead" , Create( o , o , o , o , X , o , o ) );
127 table.Add( "title" , Create( o , o , o , o , X , o , o ) );
128 table.Add( "tr" , Create( o , o , o , o , X , o , o ) );
129 table.Add( "ul" , Create( o , X , o , o , X , o , o ) );
130 table.Add( "xmp" , Create( o , o , o , o , o , o , o ) );
136 internal class HtmlAttributeProps {
141 static public HtmlAttributeProps Create(bool abr, bool uri, bool name) {
142 HtmlAttributeProps props = new HtmlAttributeProps();
148 public bool Abr { get { return this.abr ; } }
149 public bool Uri { get { return this.uri ; } }
150 public bool Name { get { return this.name; } }
152 static private Hashtable s_table = CreatePropsTable();
153 // static private HtmlElementProps s_otherAttributes = Create(false, false, false);
155 static public HtmlAttributeProps GetProps(string name) {
156 HtmlAttributeProps result = (HtmlAttributeProps) s_table[name];
158 // We can do this but in case of Xml/Html mixed output this doesn't have big sence.
159 // return result != null ? result : s_otherElements;
162 static Hashtable CreatePropsTable() {
163 bool o = false, X = true;
164 Hashtable table = new Hashtable(26, StringComparer.OrdinalIgnoreCase); {
166 table.Add( "action" , Create( o , X , o ) );
167 table.Add( "checked" , Create( X , o , o ) );
168 table.Add( "cite" , Create( o , X , o ) );
169 table.Add( "classid" , Create( o , X , o ) );
170 table.Add( "codebase" , Create( o , X , o ) );
171 table.Add( "compact" , Create( X , o , o ) );
172 table.Add( "data" , Create( o , X , o ) );
173 table.Add( "datasrc" , Create( o , X , o ) );
174 table.Add( "declare" , Create( X , o , o ) );
175 table.Add( "defer" , Create( X , o , o ) );
176 table.Add( "disabled" , Create( X , o , o ) );
177 table.Add( "for" , Create( o , X , o ) );
178 table.Add( "href" , Create( o , X , o ) );
179 table.Add( "ismap" , Create( X , o , o ) );
180 table.Add( "longdesc" , Create( o , X , o ) );
181 table.Add( "multiple" , Create( X , o , o ) );
182 table.Add( "name" , Create( o , o , X ) );
183 table.Add( "nohref" , Create( X , o , o ) );
184 table.Add( "noresize" , Create( X , o , o ) );
185 table.Add( "noshade" , Create( X , o , o ) );
186 table.Add( "nowrap" , Create( X , o , o ) );
187 table.Add( "profile" , Create( o , X , o ) );
188 table.Add( "readonly" , Create( X , o , o ) );
189 table.Add( "selected" , Create( X , o , o ) );
190 table.Add( "src" , Create( o , X , o ) );
191 table.Add( "usemap" , Create( o , X , o ) );