public virtual void Check(Lexer lexer, Node node) { if (node.GetAttrByName("src") != null) { Report.AttrError(lexer, node, "src", Report.PROPRIETARY_ATTR_VALUE); } }
public virtual void Check(Lexer lexer, Node node, AttVal attval) { string val = attval.Val; if (val == null) { Report.AttrError(lexer, node, attval.Attribute, Report.MISSING_ATTR_VALUE); } else if (String.Compare(val, "top") == 0 || String.Compare(val, "middle") == 0 || String.Compare(val, "bottom") == 0 || String.Compare(val, "baseline") == 0) { /* all is fine */ } else if (String.Compare(val, "left") == 0 || String.Compare(val, "right") == 0) { if (!(node.Tag != null && ((node.Tag.Model & ContentModel.Img) != 0))) { Report.AttrError(lexer, node, val, Report.BAD_ATTRIBUTE_VALUE); } } else if (String.Compare(val, "texttop") == 0 || String.Compare(val, "absmiddle") == 0 || String.Compare(val, "absbottom") == 0 || String.Compare(val, "textbottom") == 0) { lexer.versions &= HtmlVersion.Proprietary; Report.AttrError(lexer, node, val, Report.PROPRIETARY_ATTR_VALUE); } else { Report.AttrError(lexer, node, val, Report.BAD_ATTRIBUTE_VALUE); } }
public virtual void Check(Lexer lexer, Node node) { AttVal attval; string val = null; node.CheckUniqueAttributes(lexer); for (attval = node.Attributes; attval != null; attval = attval.Next) { if (String.Compare(attval.Attribute, "align") == 0) { val = attval.Val; break; } } if (val != null) { if (String.Compare(val, "left") == 0 || String.Compare(val, "right") == 0) { lexer.versions &= HtmlVersion.Html40Loose | HtmlVersion.Frames; } else if (String.Compare(val, "top") == 0 || String.Compare(val, "bottom") == 0) { lexer.versions &= HtmlVersion.From32; } else { Report.AttrError(lexer, node, val, Report.BAD_ATTRIBUTE_VALUE); } } }
public virtual void Check(Lexer lexer, Node node) { node.CheckUniqueAttributes(lexer); AttVal lang = node.GetAttrByName("language"); AttVal type = node.GetAttrByName("type"); if (type == null) { Report.AttrError(lexer, node, "type", Report.MISSING_ATTRIBUTE); /* check for javascript */ if (lang != null) { string str = lang.Val; if (str.Length > 10) { str = str.Substring(0, 10); } if ((String.Compare(str, "javascript") == 0) || (String.Compare(str, "jscript") == 0)) { node.AddAttribute("type", "text/javascript"); } } else { node.AddAttribute("type", "text/javascript"); } } }
public virtual void Check(Lexer lexer, Node node) { AttVal attval; Attribute attribute; bool hasAlt = false; bool hasHref = false; node.CheckUniqueAttributes(lexer); for (attval = node.Attributes; attval != null; attval = attval.Next) { attribute = attval.CheckAttribute(lexer, node); if (attribute == AttributeTable.AttrAlt) { hasAlt = true; } else if (attribute == AttributeTable.AttrHref) { hasHref = true; } } if (!hasAlt) { lexer.badAccess |= Report.MISSING_LINK_ALT; Report.AttrError(lexer, node, "alt", Report.MISSING_ATTRIBUTE); } if (!hasHref) { Report.AttrError(lexer, node, "href", Report.MISSING_ATTRIBUTE); } }
public virtual void Check(Lexer lexer, Node node, AttVal attval) { if (attval.Val == null) { Report.AttrError(lexer, node, attval.Attribute, Report.MISSING_ATTR_VALUE); } else if (lexer.Options.FixBackslash) { attval.Val = attval.Val.Replace('\\', '/'); } }
public virtual void Check(Lexer lexer, Node node) { AttVal type = node.GetAttrByName("type"); node.CheckUniqueAttributes(lexer); if (type == null) { Report.AttrError(lexer, node, "type", Report.MISSING_ATTRIBUTE); node.AddAttribute("type", "text/css"); } }
/* * the same attribute name can't be used * more than once in each element */ public virtual void CheckUniqueAttribute(Lexer lexer, Node node) { AttVal attr; int count = 0; for (attr = Next; attr != null; attr = attr.Next) { if (Attribute != null && attr.Attribute != null && attr.Asp == null && attr.Php == null && String.Compare(Attribute, attr.Attribute) == 0) { ++count; } } if (count > 0) { Report.AttrError(lexer, node, Attribute, Report.REPEATED_ATTRIBUTE); } }
public virtual void Check(Lexer lexer, Node node) { AttVal rel = node.GetAttrByName("rel"); node.CheckUniqueAttributes(lexer); if (rel != null && rel.Val != null && rel.Val.Equals("stylesheet")) { AttVal type = node.GetAttrByName("type"); if (type == null) { Report.AttrError(lexer, node, "type", Report.MISSING_ATTRIBUTE); node.AddAttribute("type", "text/css"); } } }
/* ignore unknown attributes for proprietary elements */ public virtual Attribute CheckAttribute(Lexer lexer, Node node) { TagTable tt = lexer.Options.tt; if (Asp == null && Php == null) { CheckUniqueAttribute(lexer, node); } Attribute attribute = Dict; if (attribute != null) { /* title is vers 2.0 for A and LINK otherwise vers 4.0 */ if (attribute == AttributeTable.AttrTitle && (node.Tag == tt.TagA || node.Tag == tt.TagLink)) { lexer.versions &= HtmlVersion.All; } else if ((attribute.Versions & HtmlVersion.Xml) != 0) { if (!(lexer.Options.XmlTags || lexer.Options.XmlOut)) { Report.AttrError(lexer, node, Attribute, Report.XML_ATTRIBUTE_VALUE); } } else { lexer.versions &= attribute.Versions; } if (attribute.AttrCheck != null) { attribute.AttrCheck.Check(lexer, node, this); } } else if (!lexer.Options.XmlTags && !(node.Tag == null) && _asp == null && !(node.Tag != null && ((node.Tag.Versions & HtmlVersion.Proprietary) != HtmlVersion.Unknown))) { Report.AttrError(lexer, node, Attribute, Report.UNKNOWN_ATTRIBUTE); } return(attribute); }
public virtual void Check(Lexer lexer, Node node, AttVal attval) { string val; /* IMG, OBJECT, APPLET and EMBED use align for vertical position */ if (node.Tag != null && ((node.Tag.Model & ContentModel.Img) != 0)) { TidyNet.AttrCheckImpl.CheckValign.Check(lexer, node, attval); return; } val = attval.Val; if (val == null) { Report.AttrError(lexer, node, attval.Attribute, Report.MISSING_ATTR_VALUE); } else if (!(String.Compare(val, "left") == 0 || String.Compare(val, "center") == 0 || String.Compare(val, "right") == 0 || String.Compare(val, "justify") == 0)) { Report.AttrError(lexer, node, attval.Val, Report.BAD_ATTRIBUTE_VALUE); } }
public virtual void Check(Lexer lexer, Node node) { AttVal attval; Attribute attribute; bool hasSummary = false; node.CheckUniqueAttributes(lexer); for (attval = node.Attributes; attval != null; attval = attval.Next) { attribute = attval.CheckAttribute(lexer, node); if (attribute == AttributeTable.AttrSummary) { hasSummary = true; } } /* suppress warning for missing summary for HTML 2.0 and HTML 3.2 */ if (!hasSummary && lexer.doctype != HtmlVersion.Html20 && lexer.doctype != HtmlVersion.Html32) { lexer.badAccess |= Report.MISSING_SUMMARY; Report.AttrError(lexer, node, "summary", Report.MISSING_ATTRIBUTE); } /* convert <table border> to <table border="1"> */ if (lexer.Options.XmlOut) { attval = node.GetAttrByName("border"); if (attval != null) { if (attval.Val == null) { attval.Val = "1"; } } } }
public virtual void Check(Lexer lexer, Node node) { AttVal attval; Attribute attribute; bool hasAlt = false; bool hasSrc = false; bool hasUseMap = false; bool hasIsMap = false; bool hasDataFld = false; node.CheckUniqueAttributes(lexer); for (attval = node.Attributes; attval != null; attval = attval.Next) { attribute = attval.CheckAttribute(lexer, node); if (attribute == AttributeTable.AttrAlt) { hasAlt = true; } else if (attribute == AttributeTable.AttrSrc) { hasSrc = true; } else if (attribute == AttributeTable.AttrUsemap) { hasUseMap = true; } else if (attribute == AttributeTable.AttrIsmap) { hasIsMap = true; } else if (attribute == AttributeTable.AttrDatafld) { hasDataFld = true; } else if (attribute == AttributeTable.AttrWidth || attribute == AttributeTable.AttrHeight) { lexer.versions &= ~HtmlVersion.Html20; } } if (!hasAlt) { lexer.badAccess |= Report.MISSING_IMAGE_ALT; Report.AttrError(lexer, node, "alt", Report.MISSING_ATTRIBUTE); if (lexer.Options.AltText != null) { node.AddAttribute("alt", lexer.Options.AltText); } } if (!hasSrc && !hasDataFld) { Report.AttrError(lexer, node, "src", Report.MISSING_ATTRIBUTE); } if (hasIsMap && !hasUseMap) { Report.AttrError(lexer, node, "ismap", Report.MISSING_IMAGEMAP); } }