Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / xsp / System / Web / UI / XhtmlTextWriter.cs / 1 / 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 VSWhidbey 228858. // _commonAttributes.Add("dir", true); // 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. //------------------------------------------------------------------------------ //[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 VSWhidbey 228858. // _commonAttributes.Add("dir", true); // 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.[To be supplied.] ///
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- RecognizedAudio.cs
- KeyPressEvent.cs
- LocalizationCodeDomSerializer.cs
- SymmetricKeyWrap.cs
- MulticastDelegate.cs
- SqlWriter.cs
- GridViewSortEventArgs.cs
- StandardOleMarshalObject.cs
- RectangleHotSpot.cs
- TypeSystem.cs
- XmlSerializerVersionAttribute.cs
- ListViewGroupConverter.cs
- Calendar.cs
- FtpWebRequest.cs
- SharedPerformanceCounter.cs
- ActivityCodeDomSerializationManager.cs
- Soap.cs
- PointIndependentAnimationStorage.cs
- WebPartActionVerb.cs
- ObjectCache.cs
- DocumentGridContextMenu.cs
- DigitalSignatureProvider.cs
- NavigationWindowAutomationPeer.cs
- HwndHost.cs
- GorillaCodec.cs
- ResourceManagerWrapper.cs
- EncodingConverter.cs
- TagNameToTypeMapper.cs
- PackagingUtilities.cs
- WebPartAddingEventArgs.cs
- ReachBasicContext.cs
- OneToOneMappingSerializer.cs
- ArrowControl.xaml.cs
- LogExtentCollection.cs
- HMACSHA256.cs
- SchemaAttDef.cs
- ByteStream.cs
- EtwTrace.cs
- ProfileBuildProvider.cs
- WsdlBuildProvider.cs
- COM2EnumConverter.cs
- UnsafeNativeMethods.cs
- Roles.cs
- OpenTypeCommon.cs
- EmptyQuery.cs
- OdbcDataReader.cs
- ZipIORawDataFileBlock.cs
- ApplicationFileCodeDomTreeGenerator.cs
- Rect3DValueSerializer.cs
- ErrorFormatterPage.cs
- FixUp.cs
- ExtentKey.cs
- SecurityUtils.cs
- WorkflowItemPresenter.cs
- ComponentResourceManager.cs
- CodeExpressionStatement.cs
- IPEndPointCollection.cs
- NullToBooleanConverter.cs
- DefaultTextStore.cs
- TokenBasedSetEnumerator.cs
- HashRepartitionStream.cs
- RegexCompilationInfo.cs
- RegistrySecurity.cs
- PersonalizationStateInfoCollection.cs
- SvcMapFileLoader.cs
- ParallelTimeline.cs
- TypeResolvingOptions.cs
- CompoundFileStorageReference.cs
- SHA256.cs
- StatusStrip.cs
- ReadOnlyDataSourceView.cs
- OleServicesContext.cs
- SplitContainer.cs
- NamespaceEmitter.cs
- ReversePositionQuery.cs
- AsymmetricSignatureFormatter.cs
- TakeQueryOptionExpression.cs
- XhtmlCssHandler.cs
- ListDictionary.cs
- AsynchronousChannelMergeEnumerator.cs
- StructuredType.cs
- PrivilegeNotHeldException.cs
- DoubleStorage.cs
- SQLGuidStorage.cs
- SafeBuffer.cs
- InfoCardSymmetricAlgorithm.cs
- RectAnimationClockResource.cs
- PointHitTestResult.cs
- IndentedTextWriter.cs
- ContextDataSourceView.cs
- TableColumnCollection.cs
- CookieProtection.cs
- SoapElementAttribute.cs
- Permission.cs
- CombinedGeometry.cs
- EncryptedKeyIdentifierClause.cs
- CancelEventArgs.cs
- PageThemeParser.cs
- EntityDataSourceViewSchema.cs
- RelatedPropertyManager.cs