|
//------------------------------------------------------------------------------
// <copyright file="HtmlProps.cs" company="Microsoft">
// Copyright (c) Microsoft Corporation. All rights reserved.
// </copyright>
// <owner current="true" primary="true">Microsoft</owner>
//------------------------------------------------------------------------------
namespace System.Xml.Xsl.XsltOld {
using Res = System.Xml.Utils.Res;
using System;
using System.Collections;
using System.Collections.Specialized;
using System.Diagnostics;
using System.Xml;
using System.Globalization;
internal class HtmlElementProps {
private bool empty;
private bool abrParent;
private bool uriParent;
private bool noEntities;
private bool blockWS;
private bool head;
private bool nameParent;
static public HtmlElementProps Create(bool empty, bool abrParent, bool uriParent, bool noEntities, bool blockWS, bool head, bool nameParent) {
HtmlElementProps props = new HtmlElementProps();
props.empty = empty ;
props.abrParent = abrParent ;
props.uriParent = uriParent ;
props.noEntities = noEntities;
props.blockWS = blockWS ;
props.head = head ;
props.nameParent = nameParent;
return props;
}
public bool Empty { get { return this.empty ; } }
public bool AbrParent { get { return this.abrParent ; } }
public bool UriParent { get { return this.uriParent ; } }
public bool NoEntities { get { return this.noEntities; } }
public bool BlockWS { get { return this.blockWS ; } }
public bool Head { get { return this.head ; } }
public bool NameParent { get { return this.nameParent; } }
static private Hashtable s_table = CreatePropsTable();
// static private HtmlElementProps s_otherElements = Create(false, false, false, false, false, false, false);
static public HtmlElementProps GetProps(string name) {
HtmlElementProps result = (HtmlElementProps) s_table[name];
return result;
// We can do this but in case of Xml/Html mixed output this doesn't have big sence.
// return result != null ? result : s_otherElements;
}
static Hashtable CreatePropsTable() {
bool o = false, X = true;
Hashtable table = new Hashtable(71, StringComparer.OrdinalIgnoreCase); {
// EMPTY ABR URI NO_ENT NO_WS HEAD NAME
table.Add( "a" , Create( o , o , X , o , o , o , X ) );
table.Add( "address" , Create( o , o , o , o , X , o , o ) );
table.Add( "applet" , Create( o , o , o , o , X , o , o ) );
table.Add( "area" , Create( X , X , X , o , X , o , o ) );
table.Add( "base" , Create( X , o , X , o , X , o , o ) );
table.Add( "basefont" , Create( X , o , o , o , X , o , o ) );
table.Add( "blockquote" , Create( o , o , X , o , X , o , o ) );
table.Add( "body" , Create( o , o , o , o , X , o , o ) );
table.Add( "br" , Create( X , o , o , o , o , o , o ) );
table.Add( "button" , Create( o , X , o , o , o , o , o ) );
table.Add( "caption" , Create( o , o , o , o , X , o , o ) );
table.Add( "center" , Create( o , o , o , o , X , o , o ) );
table.Add( "col" , Create( X , o , o , o , X , o , o ) );
table.Add( "colgroup" , Create( o , o , o , o , X , o , o ) );
table.Add( "dd" , Create( o , o , o , o , X , o , o ) );
table.Add( "del" , Create( o , o , X , o , X , o , o ) );
table.Add( "dir" , Create( o , X , o , o , X , o , o ) );
table.Add( "div" , Create( o , o , o , o , X , o , o ) );
table.Add( "dl" , Create( o , X , o , o , X , o , o ) );
table.Add( "dt" , Create( o , o , o , o , X , o , o ) );
table.Add( "fieldset" , Create( o , o , o , o , X , o , o ) );
table.Add( "font" , Create( o , o , o , o , X , o , o ) );
table.Add( "form" , Create( o , o , X , o , X , o , o ) );
table.Add( "frame" , Create( X , X , o , o , X , o , o ) );
table.Add( "frameset" , Create( o , o , o , o , X , o , o ) );
table.Add( "h1" , Create( o , o , o , o , X , o , o ) );
table.Add( "h2" , Create( o , o , o , o , X , o , o ) );
table.Add( "h3" , Create( o , o , o , o , X , o , o ) );
table.Add( "h4" , Create( o , o , o , o , X , o , o ) );
table.Add( "h5" , Create( o , o , o , o , X , o , o ) );
table.Add( "h6" , Create( o , o , o , o , X , o , o ) );
table.Add( "head" , Create( o , o , X , o , X , X , o ) );
table.Add( "hr" , Create( X , X , o , o , X , o , o ) );
table.Add( "html" , Create( o , o , o , o , X , o , o ) );
table.Add( "iframe" , Create( o , o , o , o , X , o , o ) );
table.Add( "img" , Create( X , X , X , o , o , o , o ) );
table.Add( "input" , Create( X , X , X , o , o , o , o ) );
table.Add( "ins" , Create( o , o , X , o , X , o , o ) );
table.Add( "isindex" , Create( X , o , o , o , X , o , o ) );
table.Add( "legend" , Create( o , o , o , o , X , o , o ) );
table.Add( "li" , Create( o , o , o , o , X , o , o ) );
table.Add( "link" , Create( X , o , X , o , X , o , o ) );
table.Add( "map" , Create( o , o , o , o , X , o , o ) );
table.Add( "menu" , Create( o , X , o , o , X , o , o ) );
table.Add( "meta" , Create( X , o , o , o , X , o , o ) );
table.Add( "noframes" , Create( o , o , o , o , X , o , o ) );
table.Add( "noscript" , Create( o , o , o , o , X , o , o ) );
table.Add( "object" , Create( o , X , X , o , o , o , o ) );
table.Add( "ol" , Create( o , X , o , o , X , o , o ) );
table.Add( "optgroup" , Create( o , X , o , o , X , o , o ) );
table.Add( "option" , Create( o , X , o , o , X , o , o ) );
table.Add( "p" , Create( o , o , o , o , X , o , o ) );
table.Add( "param" , Create( X , o , o , o , X , o , o ) );
table.Add( "pre" , Create( o , o , o , o , X , o , o ) );
table.Add( "q" , Create( o , o , X , o , o , o , o ) );
table.Add( "s" , Create( o , o , o , o , X , o , o ) );
table.Add( "script" , Create( o , X , X , X , o , o , o ) );
table.Add( "select" , Create( o , X , o , o , o , o , o ) );
table.Add( "strike" , Create( o , o , o , o , X , o , o ) );
table.Add( "style" , Create( o , o , o , X , X , o , o ) );
table.Add( "table" , Create( o , o , X , o , X , o , o ) );
table.Add( "tbody" , Create( o , o , o , o , X , o , o ) );
table.Add( "td" , Create( o , X , o , o , X , o , o ) );
table.Add( "textarea" , Create( o , X , o , o , o , o , o ) );
table.Add( "tfoot" , Create( o , o , o , o , X , o , o ) );
table.Add( "th" , Create( o , X , o , o , X , o , o ) );
table.Add( "thead" , Create( o , o , o , o , X , o , o ) );
table.Add( "title" , Create( o , o , o , o , X , o , o ) );
table.Add( "tr" , Create( o , o , o , o , X , o , o ) );
table.Add( "ul" , Create( o , X , o , o , X , o , o ) );
table.Add( "xmp" , Create( o , o , o , o , o , o , o ) );
}
return table;
}
}
internal class HtmlAttributeProps {
private bool abr;
private bool uri;
private bool name;
static public HtmlAttributeProps Create(bool abr, bool uri, bool name) {
HtmlAttributeProps props = new HtmlAttributeProps();
props.abr = abr;
props.uri = uri;
props.name = name;
return props;
}
public bool Abr { get { return this.abr ; } }
public bool Uri { get { return this.uri ; } }
public bool Name { get { return this.name; } }
static private Hashtable s_table = CreatePropsTable();
// static private HtmlElementProps s_otherAttributes = Create(false, false, false);
static public HtmlAttributeProps GetProps(string name) {
HtmlAttributeProps result = (HtmlAttributeProps) s_table[name];
return result;
// We can do this but in case of Xml/Html mixed output this doesn't have big sence.
// return result != null ? result : s_otherElements;
}
static Hashtable CreatePropsTable() {
bool o = false, X = true;
Hashtable table = new Hashtable(26, StringComparer.OrdinalIgnoreCase); {
// ABR URI NAME
table.Add( "action" , Create( o , X , o ) );
table.Add( "checked" , Create( X , o , o ) );
table.Add( "cite" , Create( o , X , o ) );
table.Add( "classid" , Create( o , X , o ) );
table.Add( "codebase" , Create( o , X , o ) );
table.Add( "compact" , Create( X , o , o ) );
table.Add( "data" , Create( o , X , o ) );
table.Add( "datasrc" , Create( o , X , o ) );
table.Add( "declare" , Create( X , o , o ) );
table.Add( "defer" , Create( X , o , o ) );
table.Add( "disabled" , Create( X , o , o ) );
table.Add( "for" , Create( o , X , o ) );
table.Add( "href" , Create( o , X , o ) );
table.Add( "ismap" , Create( X , o , o ) );
table.Add( "longdesc" , Create( o , X , o ) );
table.Add( "multiple" , Create( X , o , o ) );
table.Add( "name" , Create( o , o , X ) );
table.Add( "nohref" , Create( X , o , o ) );
table.Add( "noresize" , Create( X , o , o ) );
table.Add( "noshade" , Create( X , o , o ) );
table.Add( "nowrap" , Create( X , o , o ) );
table.Add( "profile" , Create( o , X , o ) );
table.Add( "readonly" , Create( X , o , o ) );
table.Add( "selected" , Create( X , o , o ) );
table.Add( "src" , Create( o , X , o ) );
table.Add( "usemap" , Create( o , X , o ) );
}
return table;
}
}
}
|