Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / DEVDIV / depot / DevDiv / releases / whidbey / QFE / ndp / fx / src / xsp / System / Web / UI / XhtmlTextWriter.cs / 2 / XhtmlTextWriter.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI { using System; using System.Collections; using System.Collections.Specialized; using System.IO; using System.Text; using System.Globalization; using System.Security.Permissions; [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)] public class XhtmlTextWriter : HtmlTextWriter { private Hashtable _commonAttributes = new Hashtable(); // For _elementSpecificAttributes, each hashtable value is a hashtable. If an attribute name appears as a key // in the hashtable corresponding to an element, the attribute is passed through. private Hashtable _elementSpecificAttributes = new Hashtable(StringComparer.CurrentCultureIgnoreCase); private Hashtable _suppressCommonAttributes = new Hashtable(StringComparer.CurrentCultureIgnoreCase); private XhtmlMobileDocType _docType; internal override bool RenderDivAroundHiddenInputs { get { return false; } } public XhtmlTextWriter(TextWriter writer) : this(writer, DefaultTabString) { } public XhtmlTextWriter(TextWriter writer, string tabString) : base(writer, tabString) { // Common attributes are defined in the xhtml modularization spec. They are allowed by the writer unless // _suppressCommonAttribues["elementName"] is nonnull. _commonAttributes.Add("class", true); _commonAttributes.Add("id", true); _commonAttributes.Add("title", true); _commonAttributes.Add("xml:lang", true); // Note: "Dir" attribute is included in I18N if the bidirectional text module is included. Since // this is not the case in XHTML-MP, omit the dir attribute. // See http://www.wapforum.org/tech/documents/WAP-277-XHTMLMP-20011029-a.pdf and // http://www.w3.org/TR/xhtml-modularization/abstract_modules.html. // See also // Note: style attribute is added in SetDocType in case doctype is XHTML-MP or WML20. In XHTML Basic, it is disallowed. // Initialize dictionary lookup of attributes by element. // Structure Module // body elt has only common attributes. AddRecognizedAttributes("head", "xml:lang"); _suppressCommonAttributes["head"] = true; // common attributes are disallowed for this elt. AddRecognizedAttributes("html", "xml:lang", "version", "xmlns"); _suppressCommonAttributes["html"] = true; // common attributes are disallowed for this elt. AddRecognizedAttributes("title", "xml:lang"); _suppressCommonAttributes["title"] = true; // common attributes are disallowed for this elt. // Text module // abbr, acronym, address have only common attributes. AddRecognizedAttributes("blockquote", "cite"); AddRecognizedAttributes("br", "class", "id", "title"); // br allows only core attributes. _suppressCommonAttributes["br"] = true; // cite, code, dfn, div, em, h1-h6, kbd, p have only common attributes. AddRecognizedAttributes("pre", "xml:space"); AddRecognizedAttributes("q", "cite"); // samp, span, strong, var have only common attributes. // Hypertext module AddRecognizedAttributes("a", "accesskey", "charset", "href", "hreflang", "rel", "rev", "tabindex", "type", "title"); // List module // dl, dt, dd, ol, ul, li have only common attributes. // Basic Forms module AddRecognizedAttributes("form", "action", "method", "enctype"); AddRecognizedAttributes("input", "accesskey", "checked", "maxlength", "name", "size", "src", "tabindex", "type", "value", "title", "disabled"); AddRecognizedAttributes("label", "accesskey"); AddRecognizedAttributes("label", "for"); AddRecognizedAttributes("select", "multiple", "name", "size", "tabindex", "disabled"); AddRecognizedAttributes("option", "selected", "value"); AddRecognizedAttributes("textarea", "accesskey", "cols", "name", "rows", "tabindex"); // Basic Tables module // caption has only common attributes. AddRecognizedAttributes("table", "summary", "width"); AddRecognizedAttributes("td", "abbr", "align", "axis", "colspan", "headers", "rowspan", "scope", "valign"); AddRecognizedAttributes("th", "abbr", "align", "axis", "colspan", "headers", "rowspan", "scope", "valign"); AddRecognizedAttributes("tr", "align", "valign"); // Image module AddRecognizedAttributes("img", "alt", "height", "longdesc", "src", "width"); // Object module AddRecognizedAttributes("object", "archive", "classid", "codebase", "codetype", "data", "declare", "height", "name", "standby", "tabindex", "type", "width"); AddRecognizedAttributes("param", "id", "name", "type", "value", "valuetype"); // Metainformation module AddRecognizedAttributes("meta", "xml:lang", "content", "http-equiv", "name", "scheme"); _suppressCommonAttributes["meta"] = true; // common attributes are disallowed for this elt. // Link module AddRecognizedAttributes("link", "charset", "href", "hreflang", "media", "rel", "rev", "type"); // Base module AddRecognizedAttributes("base", "href"); _suppressCommonAttributes["base"] = true; // common attributes are disallowed for this elt. // Partial Forms module // fieldset has only common attributes. AddRecognizedAttributes("optgroup", "disabled", "label"); // Partial Legacy module AddRecognizedAttributes("ol", "start"); AddRecognizedAttributes("li", "value"); // Partial Presentation module // b, big, hr, i, small have only common attributes // Style module AddRecognizedAttributes("style", "xml:lang", "media", "title", "type", "xml:space"); _suppressCommonAttributes["style"] = true; // common attributes are disallowed for this elt. } ////// public virtual void AddRecognizedAttribute(string elementName, string attributeName) { AddRecognizedAttributes(elementName, attributeName); } private void AddRecognizedAttributes(string elementName, params string[] attributes) { Hashtable eltAttributes = (Hashtable) _elementSpecificAttributes[elementName]; if (eltAttributes == null) { eltAttributes = new Hashtable(StringComparer.CurrentCultureIgnoreCase); _elementSpecificAttributes[elementName] = eltAttributes; } foreach(string attribute in attributes) { eltAttributes.Add(attribute, true); } } ///[To be supplied.] ////// public override bool IsValidFormAttribute(string attributeName) { Hashtable formAttributes = (Hashtable)_elementSpecificAttributes["form"]; return (formAttributes != null) && (formAttributes[attributeName] != null); } ///[To be supplied.] ////// protected override bool OnAttributeRender(string name, string value, HtmlTextWriterAttribute key) { if (_commonAttributes[name] != null && _suppressCommonAttributes[TagName] == null) { return true; } // TagName is valid when OnAttributeRender is called. return _elementSpecificAttributes[TagName] != null && ((Hashtable)_elementSpecificAttributes[TagName])[name] != null; } ///[To be supplied.] ////// protected override bool OnStyleAttributeRender(string name,string value, HtmlTextWriterStyle key) { if (_docType == XhtmlMobileDocType.XhtmlBasic) { return false; } if (TagName.ToLower(CultureInfo.InvariantCulture).Equals("div") && name.ToLower(CultureInfo.InvariantCulture).Equals("border-collapse")) { return false; } return true; } ///[To be supplied.] ////// public virtual void RemoveRecognizedAttribute(string elementName, string attributeName) { Hashtable eltAttributes = (Hashtable) _elementSpecificAttributes[elementName]; if (eltAttributes == null) { eltAttributes = new Hashtable(StringComparer.CurrentCultureIgnoreCase); _elementSpecificAttributes[elementName] = eltAttributes; } if (_commonAttributes[attributeName] == null || _suppressCommonAttributes[elementName] != null) { // Note: Hashtable::Remove silently continues if the key does not exist. eltAttributes.Remove(attributeName); return; } // (...else) This is an edge case. The call removes a common attribute, so we need to add each common attribute and remove the // except the specified one. _suppressCommonAttributes[elementName] = true; foreach(string key in _commonAttributes.Keys) { if (key != attributeName) { eltAttributes.Add(attributeName, true); } } } ///[To be supplied.] ////// public virtual void SetDocType(XhtmlMobileDocType docType) { _docType = docType; if (docType != XhtmlMobileDocType.XhtmlBasic && _commonAttributes["style"] == null) { _commonAttributes.Add("style", true); } } ///[To be supplied.] ////// public override void WriteBreak() { WriteFullBeginTag("br/"); } protected Hashtable CommonAttributes { get { return _commonAttributes; } } protected Hashtable ElementSpecificAttributes { get { return _elementSpecificAttributes; } } protected Hashtable SuppressCommonAttributes { get { return _suppressCommonAttributes; } } } ///[To be supplied.] ////// public enum XhtmlMobileDocType { XhtmlBasic, XhtmlMobileProfile, Wml20 } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //------------------------------------------------------------------------------ //[To be supplied.] ///// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI { using System; using System.Collections; using System.Collections.Specialized; using System.IO; using System.Text; using System.Globalization; using System.Security.Permissions; [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)] public class XhtmlTextWriter : HtmlTextWriter { private Hashtable _commonAttributes = new Hashtable(); // For _elementSpecificAttributes, each hashtable value is a hashtable. If an attribute name appears as a key // in the hashtable corresponding to an element, the attribute is passed through. private Hashtable _elementSpecificAttributes = new Hashtable(StringComparer.CurrentCultureIgnoreCase); private Hashtable _suppressCommonAttributes = new Hashtable(StringComparer.CurrentCultureIgnoreCase); private XhtmlMobileDocType _docType; internal override bool RenderDivAroundHiddenInputs { get { return false; } } public XhtmlTextWriter(TextWriter writer) : this(writer, DefaultTabString) { } public XhtmlTextWriter(TextWriter writer, string tabString) : base(writer, tabString) { // Common attributes are defined in the xhtml modularization spec. They are allowed by the writer unless // _suppressCommonAttribues["elementName"] is nonnull. _commonAttributes.Add("class", true); _commonAttributes.Add("id", true); _commonAttributes.Add("title", true); _commonAttributes.Add("xml:lang", true); // Note: "Dir" attribute is included in I18N if the bidirectional text module is included. Since // this is not the case in XHTML-MP, omit the dir attribute. // See http://www.wapforum.org/tech/documents/WAP-277-XHTMLMP-20011029-a.pdf and // http://www.w3.org/TR/xhtml-modularization/abstract_modules.html. // See also // Note: style attribute is added in SetDocType in case doctype is XHTML-MP or WML20. In XHTML Basic, it is disallowed. // Initialize dictionary lookup of attributes by element. // Structure Module // body elt has only common attributes. AddRecognizedAttributes("head", "xml:lang"); _suppressCommonAttributes["head"] = true; // common attributes are disallowed for this elt. AddRecognizedAttributes("html", "xml:lang", "version", "xmlns"); _suppressCommonAttributes["html"] = true; // common attributes are disallowed for this elt. AddRecognizedAttributes("title", "xml:lang"); _suppressCommonAttributes["title"] = true; // common attributes are disallowed for this elt. // Text module // abbr, acronym, address have only common attributes. AddRecognizedAttributes("blockquote", "cite"); AddRecognizedAttributes("br", "class", "id", "title"); // br allows only core attributes. _suppressCommonAttributes["br"] = true; // cite, code, dfn, div, em, h1-h6, kbd, p have only common attributes. AddRecognizedAttributes("pre", "xml:space"); AddRecognizedAttributes("q", "cite"); // samp, span, strong, var have only common attributes. // Hypertext module AddRecognizedAttributes("a", "accesskey", "charset", "href", "hreflang", "rel", "rev", "tabindex", "type", "title"); // List module // dl, dt, dd, ol, ul, li have only common attributes. // Basic Forms module AddRecognizedAttributes("form", "action", "method", "enctype"); AddRecognizedAttributes("input", "accesskey", "checked", "maxlength", "name", "size", "src", "tabindex", "type", "value", "title", "disabled"); AddRecognizedAttributes("label", "accesskey"); AddRecognizedAttributes("label", "for"); AddRecognizedAttributes("select", "multiple", "name", "size", "tabindex", "disabled"); AddRecognizedAttributes("option", "selected", "value"); AddRecognizedAttributes("textarea", "accesskey", "cols", "name", "rows", "tabindex"); // Basic Tables module // caption has only common attributes. AddRecognizedAttributes("table", "summary", "width"); AddRecognizedAttributes("td", "abbr", "align", "axis", "colspan", "headers", "rowspan", "scope", "valign"); AddRecognizedAttributes("th", "abbr", "align", "axis", "colspan", "headers", "rowspan", "scope", "valign"); AddRecognizedAttributes("tr", "align", "valign"); // Image module AddRecognizedAttributes("img", "alt", "height", "longdesc", "src", "width"); // Object module AddRecognizedAttributes("object", "archive", "classid", "codebase", "codetype", "data", "declare", "height", "name", "standby", "tabindex", "type", "width"); AddRecognizedAttributes("param", "id", "name", "type", "value", "valuetype"); // Metainformation module AddRecognizedAttributes("meta", "xml:lang", "content", "http-equiv", "name", "scheme"); _suppressCommonAttributes["meta"] = true; // common attributes are disallowed for this elt. // Link module AddRecognizedAttributes("link", "charset", "href", "hreflang", "media", "rel", "rev", "type"); // Base module AddRecognizedAttributes("base", "href"); _suppressCommonAttributes["base"] = true; // common attributes are disallowed for this elt. // Partial Forms module // fieldset has only common attributes. AddRecognizedAttributes("optgroup", "disabled", "label"); // Partial Legacy module AddRecognizedAttributes("ol", "start"); AddRecognizedAttributes("li", "value"); // Partial Presentation module // b, big, hr, i, small have only common attributes // Style module AddRecognizedAttributes("style", "xml:lang", "media", "title", "type", "xml:space"); _suppressCommonAttributes["style"] = true; // common attributes are disallowed for this elt. } ////// public virtual void AddRecognizedAttribute(string elementName, string attributeName) { AddRecognizedAttributes(elementName, attributeName); } private void AddRecognizedAttributes(string elementName, params string[] attributes) { Hashtable eltAttributes = (Hashtable) _elementSpecificAttributes[elementName]; if (eltAttributes == null) { eltAttributes = new Hashtable(StringComparer.CurrentCultureIgnoreCase); _elementSpecificAttributes[elementName] = eltAttributes; } foreach(string attribute in attributes) { eltAttributes.Add(attribute, true); } } ///[To be supplied.] ////// public override bool IsValidFormAttribute(string attributeName) { Hashtable formAttributes = (Hashtable)_elementSpecificAttributes["form"]; return (formAttributes != null) && (formAttributes[attributeName] != null); } ///[To be supplied.] ////// protected override bool OnAttributeRender(string name, string value, HtmlTextWriterAttribute key) { if (_commonAttributes[name] != null && _suppressCommonAttributes[TagName] == null) { return true; } // TagName is valid when OnAttributeRender is called. return _elementSpecificAttributes[TagName] != null && ((Hashtable)_elementSpecificAttributes[TagName])[name] != null; } ///[To be supplied.] ////// protected override bool OnStyleAttributeRender(string name,string value, HtmlTextWriterStyle key) { if (_docType == XhtmlMobileDocType.XhtmlBasic) { return false; } if (TagName.ToLower(CultureInfo.InvariantCulture).Equals("div") && name.ToLower(CultureInfo.InvariantCulture).Equals("border-collapse")) { return false; } return true; } ///[To be supplied.] ////// public virtual void RemoveRecognizedAttribute(string elementName, string attributeName) { Hashtable eltAttributes = (Hashtable) _elementSpecificAttributes[elementName]; if (eltAttributes == null) { eltAttributes = new Hashtable(StringComparer.CurrentCultureIgnoreCase); _elementSpecificAttributes[elementName] = eltAttributes; } if (_commonAttributes[attributeName] == null || _suppressCommonAttributes[elementName] != null) { // Note: Hashtable::Remove silently continues if the key does not exist. eltAttributes.Remove(attributeName); return; } // (...else) This is an edge case. The call removes a common attribute, so we need to add each common attribute and remove the // except the specified one. _suppressCommonAttributes[elementName] = true; foreach(string key in _commonAttributes.Keys) { if (key != attributeName) { eltAttributes.Add(attributeName, true); } } } ///[To be supplied.] ////// public virtual void SetDocType(XhtmlMobileDocType docType) { _docType = docType; if (docType != XhtmlMobileDocType.XhtmlBasic && _commonAttributes["style"] == null) { _commonAttributes.Add("style", true); } } ///[To be supplied.] ////// public override void WriteBreak() { WriteFullBeginTag("br/"); } protected Hashtable CommonAttributes { get { return _commonAttributes; } } protected Hashtable ElementSpecificAttributes { get { return _elementSpecificAttributes; } } protected Hashtable SuppressCommonAttributes { get { return _suppressCommonAttributes; } } } ///[To be supplied.] ////// public enum XhtmlMobileDocType { XhtmlBasic, XhtmlMobileProfile, Wml20 } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.[To be supplied.] ///
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DBSchemaRow.cs
- ContentOperations.cs
- Bits.cs
- SqlProcedureAttribute.cs
- ProxyWebPart.cs
- MsmqTransportSecurityElement.cs
- HeaderUtility.cs
- InitializationEventAttribute.cs
- _HeaderInfo.cs
- SqlStream.cs
- AddToCollection.cs
- GridItemCollection.cs
- StylusPointProperty.cs
- BamlRecordReader.cs
- DictionaryMarkupSerializer.cs
- cache.cs
- IpcServerChannel.cs
- RawContentTypeMapper.cs
- ComAdminInterfaces.cs
- TableMethodGenerator.cs
- Pair.cs
- TiffBitmapDecoder.cs
- ContentPlaceHolder.cs
- SQLMoney.cs
- TraceInternal.cs
- ListViewAutomationPeer.cs
- BitmapInitialize.cs
- DataGridRow.cs
- HostingEnvironmentWrapper.cs
- CharAnimationBase.cs
- HtmlSelect.cs
- PaginationProgressEventArgs.cs
- MobileControlBuilder.cs
- WindowsRebar.cs
- ParallelTimeline.cs
- HttpPostedFile.cs
- EventHandlerList.cs
- RepeaterCommandEventArgs.cs
- OleDbReferenceCollection.cs
- SpecialTypeDataContract.cs
- ObjectIDGenerator.cs
- Point.cs
- StringReader.cs
- CodePageUtils.cs
- DataGridViewCellValueEventArgs.cs
- XmlDataSource.cs
- StickyNote.cs
- TextBoxBase.cs
- addressfiltermode.cs
- COM2Enum.cs
- WebHttpSecurity.cs
- Helper.cs
- TableLayoutStyleCollection.cs
- DiagnosticTrace.cs
- DrawingContextWalker.cs
- SystemIPInterfaceProperties.cs
- ObjectDataSourceMethodEditor.cs
- ScriptServiceAttribute.cs
- SystemWebSectionGroup.cs
- TogglePattern.cs
- HitTestFilterBehavior.cs
- StaticTextPointer.cs
- SerializationFieldInfo.cs
- ApplicationServiceHelper.cs
- ProtectedConfigurationProviderCollection.cs
- PropertyDescriptorGridEntry.cs
- RegisteredExpandoAttribute.cs
- MTConfigUtil.cs
- ArraySegment.cs
- RSAPKCS1KeyExchangeFormatter.cs
- CanonicalFormWriter.cs
- TimerElapsedEvenArgs.cs
- EventLogInternal.cs
- WebPartsPersonalizationAuthorization.cs
- ArrayTypeMismatchException.cs
- DocumentXmlWriter.cs
- Rotation3DAnimationUsingKeyFrames.cs
- DataColumnChangeEvent.cs
- ForeignKeyConstraint.cs
- ListBindingConverter.cs
- Pen.cs
- AuthenticationService.cs
- sqlser.cs
- ContentPlaceHolderDesigner.cs
- InputLanguageEventArgs.cs
- SingleResultAttribute.cs
- IPPacketInformation.cs
- RelationshipDetailsRow.cs
- FeatureSupport.cs
- TCEAdapterGenerator.cs
- WorkflowOperationAsyncResult.cs
- DoubleAverageAggregationOperator.cs
- DataStreams.cs
- FilterElement.cs
- QueueProcessor.cs
- IdnMapping.cs
- LocalIdCollection.cs
- QueuePropertyVariants.cs
- SmiEventSink_Default.cs
- SiteMapDataSource.cs