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
- TimeZone.cs
- QilXmlWriter.cs
- PropertyCollection.cs
- KeyFrames.cs
- XmlILTrace.cs
- HandleRef.cs
- ObjectQuery_EntitySqlExtensions.cs
- ScrollProviderWrapper.cs
- ErrorsHelper.cs
- InputLanguage.cs
- Cursors.cs
- DbXmlEnabledProviderManifest.cs
- MultiDataTrigger.cs
- GridViewColumnCollectionChangedEventArgs.cs
- WebEventCodes.cs
- HtmlInputImage.cs
- DefaultAsyncDataDispatcher.cs
- HashMembershipCondition.cs
- TimeSpanFormat.cs
- RequestDescription.cs
- DataTableReader.cs
- SqlDataReaderSmi.cs
- CompilerState.cs
- OutputCacheSettingsSection.cs
- Fx.cs
- DirectoryInfo.cs
- BaseTemplateBuildProvider.cs
- SolidColorBrush.cs
- Effect.cs
- WizardForm.cs
- HtmlGenericControl.cs
- IgnoreFlushAndCloseStream.cs
- Point4DConverter.cs
- DateTimePicker.cs
- JsonXmlDataContract.cs
- ServiceCredentialsElement.cs
- VirtualDirectoryMappingCollection.cs
- XsdDuration.cs
- CollectionChangedEventManager.cs
- MissingSatelliteAssemblyException.cs
- WorkflowServiceHost.cs
- TabControlCancelEvent.cs
- SymLanguageType.cs
- PerformanceCounterPermissionEntry.cs
- ExpandoClass.cs
- FilteredReadOnlyMetadataCollection.cs
- TypeHelper.cs
- MailDefinition.cs
- RowCache.cs
- ResourceProperty.cs
- Span.cs
- OperationResponse.cs
- DataServiceContext.cs
- ApplicationServicesHostFactory.cs
- EventLogLink.cs
- UserControlAutomationPeer.cs
- SqlRowUpdatedEvent.cs
- Translator.cs
- RawStylusInputCustomDataList.cs
- RSAPKCS1SignatureFormatter.cs
- InProcStateClientManager.cs
- UpdateException.cs
- RegularExpressionValidator.cs
- DnsPermission.cs
- StateFinalizationDesigner.cs
- ColumnMapProcessor.cs
- RegexReplacement.cs
- HttpResponseHeader.cs
- Vertex.cs
- SchemaRegistration.cs
- OracleParameterCollection.cs
- UnmanagedMemoryStreamWrapper.cs
- PeerCollaborationPermission.cs
- EditorPartCollection.cs
- EventLogRecord.cs
- UnsettableComboBox.cs
- PathParser.cs
- MouseEvent.cs
- AttachedPropertyBrowsableForChildrenAttribute.cs
- PathFigure.cs
- TextEmbeddedObject.cs
- IIS7UserPrincipal.cs
- Rotation3DKeyFrameCollection.cs
- DesignerTextBoxAdapter.cs
- FunctionImportMapping.cs
- DocumentOutline.cs
- ColorConvertedBitmapExtension.cs
- PerformanceCountersBase.cs
- ServicesUtilities.cs
- DrawTreeNodeEventArgs.cs
- MonthCalendar.cs
- DigestTraceRecordHelper.cs
- StreamUpdate.cs
- HandlerMappingMemo.cs
- WebAdminConfigurationHelper.cs
- UrlPath.cs
- TableLayoutStyleCollection.cs
- RuntimeConfigLKG.cs
- SystemBrushes.cs
- Baml2006ReaderSettings.cs