Updates referencesource to .NET 4.7
[mono.git] / mcs / class / referencesource / System.Data.SqlXml / System / Xml / Xsl / XsltOld / HtmlProps.cs
1 //------------------------------------------------------------------------------
2 // <copyright file="HtmlProps.cs" company="Microsoft">
3 //     Copyright (c) Microsoft Corporation.  All rights reserved.
4 // </copyright>                                                                
5 // <owner current="true" primary="true">Microsoft</owner>
6 //------------------------------------------------------------------------------
7
8 namespace System.Xml.Xsl.XsltOld {
9     using Res = System.Xml.Utils.Res;
10     using System;
11     using System.Collections;
12     using System.Collections.Specialized;
13     using System.Diagnostics;
14     using System.Xml;
15     using System.Globalization;
16
17     internal class HtmlElementProps {
18         private bool   empty;
19         private bool   abrParent;
20         private bool   uriParent;
21         private bool   noEntities;
22         private bool   blockWS;
23         private bool   head;
24         private bool   nameParent;
25
26         static public HtmlElementProps Create(bool empty, bool abrParent, bool uriParent, bool noEntities, bool blockWS, bool head, bool nameParent) {
27             HtmlElementProps props = new HtmlElementProps();
28             props.empty      = empty     ;
29             props.abrParent  = abrParent ;
30             props.uriParent  = uriParent ;
31             props.noEntities = noEntities;
32             props.blockWS    = blockWS   ;
33             props.head       = head      ;
34             props.nameParent = nameParent;
35             return props;
36         }
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; } }
44
45
46         static private Hashtable         s_table = CreatePropsTable();
47 //        static private HtmlElementProps  s_otherElements = Create(false, false, false, false, false, false, false);
48
49         static public  HtmlElementProps GetProps(string name) {
50             HtmlElementProps result = (HtmlElementProps) s_table[name];
51             return result;
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;            
54         }
55
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   ) );
131             }
132             return table;
133         }
134     }
135
136     internal class HtmlAttributeProps {
137         private bool   abr;
138         private bool   uri;
139         private bool   name;
140
141         static public HtmlAttributeProps Create(bool abr, bool uri, bool name) {
142             HtmlAttributeProps props = new HtmlAttributeProps();
143             props.abr  = abr;
144             props.uri  = uri;
145             props.name = name;
146             return props;
147         }
148         public bool   Abr  { get { return this.abr ; } }
149         public bool   Uri  { get { return this.uri ; } }
150         public bool   Name { get { return this.name; } }
151
152         static private Hashtable         s_table = CreatePropsTable();
153 //      static private HtmlElementProps  s_otherAttributes = Create(false, false, false);
154
155         static public  HtmlAttributeProps GetProps(string name) {
156             HtmlAttributeProps result = (HtmlAttributeProps) s_table[name];
157             return result;
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;            
160         }
161
162         static Hashtable CreatePropsTable() {
163             bool o = false, X = true;
164             Hashtable table = new Hashtable(26, StringComparer.OrdinalIgnoreCase); {
165                 //                               ABR     URI    NAME 
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   ) );
192             }
193             return table;
194         }
195     }
196 }