1.1 --- a/languages.html/src/org/netbeans/modules/languages/html/HTML.java Wed Nov 22 13:39:38 2006 +0000
1.2 +++ b/languages.html/src/org/netbeans/modules/languages/html/HTML.java Fri Nov 24 13:53:28 2006 +0000
1.3 @@ -9,29 +9,15 @@
1.4
1.5 package org.netbeans.modules.languages.html;
1.6
1.7 -import java.io.BufferedReader;
1.8 -import java.io.File;
1.9 -import java.io.FileWriter;
1.10 -import java.io.InputStream;
1.11 -import java.io.InputStreamReader;
1.12 -import java.net.MalformedURLException;
1.13 -import java.net.URL;
1.14 import java.util.ArrayList;
1.15 -import java.util.HashMap;
1.16 import java.util.Iterator;
1.17 import java.util.List;
1.18 -import java.util.Map;
1.19 import java.util.Stack;
1.20 -import org.netbeans.modules.languages.Language;
1.21 -import org.netbeans.modules.languages.LanguagesManager;
1.22 import org.netbeans.modules.languages.fold.DatabaseManager;
1.23 +import org.netbeans.modules.languages.LibrarySupport;
1.24 import org.netbeans.modules.languages.parser.ASTNode;
1.25 -import org.netbeans.modules.languages.parser.Input;
1.26 +import org.netbeans.modules.languages.parser.PTPath;
1.27 import org.netbeans.modules.languages.parser.SToken;
1.28 -import org.netbeans.modules.languages.parser.TokenInput;
1.29 -import org.openide.ErrorManager;
1.30 -import org.openide.filesystems.FileUtil;
1.31 -import org.openide.modules.InstalledFileLocator;
1.32 import org.openide.text.Line;
1.33
1.34 /**
1.35 @@ -40,10 +26,12 @@
1.36 */
1.37 public class HTML {
1.38
1.39 - private static final String HTML40DOC = "modules/ext/html40.zip";
1.40 +// private static final String HTML40DOC = "modules/ext/html40.zip";
1.41 + private static final String HTML401 = "org/netbeans/modules/languages/html/HTML401.xml";
1.42
1.43
1.44 - public static Runnable hyperlink (SToken t) {
1.45 + public static Runnable hyperlink (PTPath path) {
1.46 + SToken t = (SToken) path.getLeaf ();
1.47 String s = t.getIdentifier ();
1.48 s = s.substring (1, s.length () - 1).trim ();
1.49 if (!s.endsWith (")")) return null;
1.50 @@ -60,96 +48,150 @@
1.51 return null;
1.52 }
1.53
1.54 - public static boolean isDeprecatedTag (SToken t) {
1.55 - Map tags = getTags ();
1.56 + public static boolean isDeprecatedTag (PTPath path) {
1.57 + SToken t = (SToken) path.getLeaf ();
1.58 String tagName = t.getIdentifier ().toLowerCase ();
1.59 - Map m = (Map) tags.get (tagName);
1.60 - if (m == null) return false;
1.61 - return "D".equals (m.get ("Depr."));
1.62 + return "true".equals (getLibrary ().getProperty ("TAG", tagName, "deprecated"));
1.63 +// Map tags = getTags ();
1.64 +// Map m = (Map) tags.get (tagName);
1.65 +// if (m == null) return false;
1.66 +// return "D".equals (m.get ("Depr."));
1.67 }
1.68
1.69 - public static boolean isEndTagRequired (SToken t) {
1.70 + public static boolean isEndTagRequired (PTPath path) {
1.71 + SToken t = (SToken) path.getLeaf ();
1.72 return isEndTagRequired (t.getIdentifier ().toLowerCase ());
1.73 }
1.74
1.75 static boolean isEndTagRequired (String tagName) {
1.76 - Map tags = getTags ();
1.77 - Map m = (Map) tags.get (tagName);
1.78 - if (m == null) return false;
1.79 - return !"O".equals (m.get ("End Tag")) &&
1.80 - !"F".equals (m.get ("End Tag"));
1.81 + String v = getLibrary ().getProperty ("TAG", tagName, "endTag");
1.82 + return !"O".equals (v) && !"F".equals (v);
1.83 +// Map tags = getTags ();
1.84 +// Map m = (Map) tags.get (tagName);
1.85 +// if (m == null) return false;
1.86 +// return !"O".equals (m.get ("End Tag")) &&
1.87 +// !"F".equals (m.get ("End Tag"));
1.88 }
1.89
1.90 - private static List tags = null;
1.91 +// private static List tags = null;
1.92
1.93 - public static List tags (SToken t) {
1.94 - Map m = getTags ();
1.95 - if (tags == null)
1.96 - tags = new ArrayList (m.keySet ());
1.97 - return tags;
1.98 + public static List tags (PTPath path) {
1.99 + return getLibrary ().getItems ("TAG");
1.100 +// Map m = getTags ();
1.101 +// if (tags == null)
1.102 +// tags = new ArrayList (m.keySet ());
1.103 +// return tags;
1.104 }
1.105
1.106 private static List tagDescriptions = null;
1.107
1.108 - public static List tagDescriptions (SToken t) {
1.109 - Map tags = getTags ();
1.110 + public static List tagDescriptions (PTPath path) {
1.111 if (tagDescriptions == null) {
1.112 + List tags = getLibrary ().getItems ("TAG");
1.113 tagDescriptions = new ArrayList (tags.size ());
1.114 - Iterator it = tags.keySet ().iterator ();
1.115 + Iterator it = tags.iterator ();
1.116 while (it.hasNext ()) {
1.117 - String name = (String) it.next ();
1.118 - Map properties = (Map) tags.get (name);
1.119 - String description = (String) properties.get ("Description");
1.120 + String tag = (String) it.next ();
1.121 + String description = getLibrary ().getProperty
1.122 + ("TAG", tag, "description");
1.123 tagDescriptions.add (
1.124 - "<html><b><font color=blue>" + name.toUpperCase () +
1.125 - ": </font></b><font color=#aaaaaa> " +
1.126 + "<html><b><font color=blue>" + tag.toUpperCase () +
1.127 + ": </font></b><font color=black> " +
1.128 description + "</font></html>"
1.129 );
1.130 }
1.131 - }
1.132 + }
1.133 return tagDescriptions;
1.134 +// Map tags = getTags ();
1.135 +// if (tagDescriptions == null) {
1.136 +// tagDescriptions = new ArrayList (tags.size ());
1.137 +// Iterator it = tags.keySet ().iterator ();
1.138 +// while (it.hasNext ()) {
1.139 +// String name = (String) it.next ();
1.140 +// Map properties = (Map) tags.get (name);
1.141 +// String description = (String) properties.get ("Description");
1.142 +// tagDescriptions.add (
1.143 +// "<html><b><font color=blue>" + name.toUpperCase () +
1.144 +// ": </font></b><font color=#aaaaaa> " +
1.145 +// description + "</font></html>"
1.146 +// );
1.147 +// }
1.148 +// }
1.149 +// return tagDescriptions;
1.150 }
1.151
1.152 - private static List attributes = null;
1.153 +// private static List attributes = null;
1.154
1.155 - public static List attributes (SToken t) {
1.156 - Map m = getAttributes ();
1.157 - if (attributes == null)
1.158 - attributes = new ArrayList (m.keySet ());
1.159 - return attributes;
1.160 + public static List attributes (PTPath path) {
1.161 + ASTNode n = (ASTNode) path.get (path.size () - 2);
1.162 + n = n.getParent ("startTag");
1.163 + List r = getLibrary ().getItems (n.getTokenTypeIdentifier ("html-element_name"));
1.164 + System.out.println("attributes " + r);
1.165 + return r;
1.166 +// Map m = getAttributes ();
1.167 +// if (attributes == null)
1.168 +// attributes = new ArrayList (m.keySet ());
1.169 +// return attributes;
1.170 }
1.171
1.172 - private static List attributeDescriptions = null;
1.173 + //private static List attributeDescriptions = null;
1.174
1.175 - public static List attributeDescriptions (SToken t) {
1.176 - Map attribs = getAttributes ();
1.177 - if (attributeDescriptions == null) {
1.178 - attributeDescriptions = new ArrayList (attribs.size ());
1.179 - Iterator it = attribs.keySet ().iterator ();
1.180 - while (it.hasNext ()) {
1.181 - String name = (String) it.next ();
1.182 - Map properties = (Map) attribs.get (name);
1.183 - String description = (String) properties.get ("Comment");
1.184 - attributeDescriptions.add (
1.185 - "<html><b><font color=blue>" + name.toUpperCase () +
1.186 - ": </font></b><font color=#aaaaaa> " +
1.187 - description + "</font></html>"
1.188 - );
1.189 - }
1.190 - }
1.191 + public static List attributeDescriptions (PTPath path) {
1.192 + ASTNode n = (ASTNode) path.get (path.size () - 2);
1.193 + n = n.getParent ("startTag");
1.194 + String tagName = n.getTokenTypeIdentifier ("html-element_name");
1.195 + List as = getLibrary ().getItems (tagName);
1.196 + List attributeDescriptions = new ArrayList (as.size ());
1.197 + Iterator it = as.iterator ();
1.198 + while (it.hasNext ()) {
1.199 + String tag = (String) it.next ();
1.200 + String description = getLibrary ().getProperty
1.201 + (tagName, tag, "description");
1.202 + attributeDescriptions.add (
1.203 + "<html><b><font color=blue>" + tag.toUpperCase () +
1.204 + ": </font></b><font color=black> " +
1.205 + description + "</font></html>"
1.206 + );
1.207 + }
1.208 + System.out.println("attributeDescriptions " + attributeDescriptions);
1.209 return attributeDescriptions;
1.210 +// Map attribs = getAttributes ();
1.211 +// if (attributeDescriptions == null) {
1.212 +// attributeDescriptions = new ArrayList (attribs.size ());
1.213 +// Iterator it = attribs.keySet ().iterator ();
1.214 +// while (it.hasNext ()) {
1.215 +// String name = (String) it.next ();
1.216 +// Map properties = (Map) attribs.get (name);
1.217 +// String description = (String) properties.get ("Comment");
1.218 +// attributeDescriptions.add (
1.219 +// "<html><b><font color=blue>" + name.toUpperCase () +
1.220 +// ": </font></b><font color=#aaaaaa> " +
1.221 +// description + "</font></html>"
1.222 +// );
1.223 +// }
1.224 +// }
1.225 +// return attributeDescriptions;
1.226 }
1.227
1.228
1.229 - public static boolean isDeprecatedAttribute (SToken t) {
1.230 - Map tags = getAttributes ();
1.231 - String tagName = t.getIdentifier ().toLowerCase ();
1.232 - Map m = (Map) tags.get (tagName);
1.233 - if (m == null) return false;
1.234 - return "D".equals (m.get ("Depr."));
1.235 + public static boolean isDeprecatedAttribute (PTPath path) {
1.236 + ASTNode n = (ASTNode) path.get (path.size () - 2);
1.237 + ASTNode nn = n.getParent ("startTag");
1.238 + String tagName = nn.getTokenTypeIdentifier ("html-element_name");
1.239 + SToken t = (SToken) path.getLeaf ();
1.240 + String attribName = n.getTokenTypeIdentifier ("html-attribute-name");
1.241 + if (attribName == null) return false;
1.242 + attribName = attribName.toLowerCase ();
1.243 + return "true".equals (getLibrary ().getProperty (tagName, attribName, "deprecated"));
1.244 +// Map tags = getAttributes ();
1.245 +// String tagName = t.getIdentifier ().toLowerCase ();
1.246 +// Map m = (Map) tags.get (tagName);
1.247 +// if (m == null) return false;
1.248 +// return "D".equals (m.get ("Depr."));
1.249 }
1.250
1.251 - public static ASTNode process (ASTNode n) {
1.252 + public static ASTNode process (PTPath path) {
1.253 + ASTNode n = (ASTNode) path.getRoot ();
1.254 List l = new ArrayList ();
1.255 resolve (n, new Stack (), l, true);
1.256 return ASTNode.create (n.getMimeType (), n.getNT (), n.getRule (), n.getParent (), l, n.getOffset ());
1.257 @@ -158,6 +200,14 @@
1.258
1.259 // private methods .........................................................
1.260
1.261 + private static LibrarySupport library;
1.262 +
1.263 + private static LibrarySupport getLibrary () {
1.264 + if (library == null)
1.265 + library = LibrarySupport.create (HTML401);
1.266 + return library;
1.267 + }
1.268 +
1.269 private static ASTNode create (ASTNode n, String nt) {
1.270 return ASTNode.create (n.getMimeType (), nt, n.getRule (), n.getParent (), n.getChildren (), n.getOffset ());
1.271 }
1.272 @@ -225,246 +275,268 @@
1.273 }
1.274 }
1.275
1.276 - private static Map tagsMap = null;
1.277 -
1.278 - private static Map getTags () {
1.279 - if (tagsMap == null) {
1.280 - ASTNode n = parseHTML ("index/elements.html");
1.281 - if (n != null)
1.282 - tagsMap = readTags (n);
1.283 - else
1.284 - tagsMap = new HashMap ();
1.285 - }
1.286 - return tagsMap;
1.287 - }
1.288 -
1.289 - private static ASTNode parseHTML (String resourceName) {
1.290 - long start = System.currentTimeMillis ();
1.291 - try {
1.292 - File f = InstalledFileLocator.getDefault().locate
1.293 - (HTML40DOC, null, false); //NoI18N
1.294 - if (f == null) {
1.295 - System.out.println("File " + HTML40DOC + " not found!");
1.296 - return null;
1.297 - }
1.298 - InputStream in = null;
1.299 - try {
1.300 - URL url = f.toURL ();
1.301 - url = FileUtil.getArchiveRoot (url);
1.302 - url = new URL (url.toString () + resourceName);
1.303 - in = url.openStream ();
1.304 - } catch (MalformedURLException e){
1.305 - ErrorManager.getDefault().notify(ErrorManager.EXCEPTION, e);
1.306 - return null;
1.307 - }
1.308 - InputStreamReader r = new InputStreamReader (in);
1.309 - BufferedReader br = new BufferedReader (r);
1.310 - StringBuilder sb = new StringBuilder ();
1.311 - String ln = br.readLine ();
1.312 - while (ln != null) {
1.313 - sb.append (ln).append ('\n');
1.314 - ln = br.readLine ();
1.315 - }
1.316 - Language l = LanguagesManager.getDefault ().getLanguage ("text/html2");
1.317 - TokenInput ti = TokenInput.create (
1.318 - l.getParser (),
1.319 - Input.create (sb.toString (), resourceName),
1.320 - l.getSkipTokenTypes ()
1.321 - );
1.322 - ASTNode node = l.getAnalyser ().read (ti, false);
1.323 - List rl = new ArrayList ();
1.324 - resolve (node, new Stack (), rl, false);
1.325 - node = ASTNode.create (
1.326 - node.getMimeType (),
1.327 - node.getNT (),
1.328 - node.getRule (),
1.329 - node.getParent (),
1.330 - rl,
1.331 - node.getOffset ()
1.332 - );
1.333 - in.close ();
1.334 - System.out.println("parse " + resourceName + " " + (System.currentTimeMillis () - start));
1.335 - return node;
1.336 - } catch (Exception ex) {
1.337 - System.out.println("parse-error " + resourceName + " " + (System.currentTimeMillis () - start));
1.338 - ErrorManager.getDefault ().notify (ex);
1.339 - return null;
1.340 - }
1.341 - }
1.342 -
1.343 - private static Map readTags (ASTNode node) {
1.344 - Map result = new HashMap ();
1.345 - node = getFirstTag (node, "html");
1.346 - node = getFirstTag (node, "body");
1.347 - node = getFirstTag (node, "table");
1.348 - Iterator it = getTags (node, "tr").iterator ();
1.349 - while (it.hasNext ()) {
1.350 - ASTNode tr = (ASTNode) it.next ();
1.351 - String name = null;
1.352 - Map params = new HashMap ();
1.353 - Iterator it2 = getTags (tr, "td").iterator ();
1.354 - while (it2.hasNext ()) {
1.355 - ASTNode td = (ASTNode) it2.next ();
1.356 - String title = getAttributeValue (td, "title");
1.357 - String url = getAttributeValue (
1.358 - td.getNode ("tag"),
1.359 - "href"
1.360 - ), value = null;
1.361 - if (url != null) {
1.362 - value = td.getNode ("tag").getNode ("etext").
1.363 - getTokenType ("html-text").getIdentifier ().toLowerCase ();
1.364 - params.put (title + "_URL", url);
1.365 - } else
1.366 - value = td.getNode ("etext").getAsText ();
1.367 - if (value.equals (" "))
1.368 - value = "";
1.369 - params.put (title, value);
1.370 - if (title.equals ("Name")) {
1.371 - name = value;
1.372 - result.put (name, params);
1.373 - }
1.374 - }
1.375 - }
1.376 - try {
1.377 - FileWriter fw = new FileWriter ("c:\\tags.xml");
1.378 - it = result.keySet ().iterator ();
1.379 - while (it.hasNext ()) {
1.380 - String tagName = (String) it.next ();
1.381 - Map params = (Map) result.get (tagName);
1.382 - boolean deprecated = "D".equals (params.get ("Depr."));
1.383 - String description = (String) params.get ("Description");
1.384 - String endTag = (String) params.get ("End Tag");
1.385 - fw.write ("\t<node key = \"" + tagName + "\"\tcontext = \"TAG\"\tdeprecated = \"" + deprecated + "\"\tendTag = \"" + endTag + "\"\tdescription = \"" + description + "\"/>\n");
1.386 - }
1.387 - fw.close ();
1.388 - } catch (Exception ex) {
1.389 - ex.printStackTrace();
1.390 - }
1.391 - return result;
1.392 - }
1.393 -
1.394 - private static Map attributesMap = null;
1.395 -
1.396 - private static Map getAttributes () {
1.397 - if (attributesMap == null) {
1.398 - ASTNode n = parseHTML ("index/attributes.html");
1.399 - if (n != null)
1.400 - attributesMap = readAttributes (n);
1.401 - else
1.402 - attributesMap = new HashMap ();
1.403 - }
1.404 - return attributesMap;
1.405 - }
1.406 -
1.407 - private static Map readAttributes (ASTNode node) {
1.408 - Map result = new HashMap ();
1.409 - node = getFirstTag (node, "html");
1.410 - node = getFirstTag (node, "body");
1.411 - node = getFirstTag (node, "table");
1.412 - Iterator it = getTags (node, "tr").iterator ();
1.413 - while (it.hasNext ()) {
1.414 - ASTNode tr = (ASTNode) it.next ();
1.415 - String name = null;
1.416 - Map params = new HashMap ();
1.417 - Iterator it2 = getTags (tr, "td").iterator ();
1.418 - while (it2.hasNext ()) {
1.419 - ASTNode td = (ASTNode) it2.next ();
1.420 - String title = getAttributeValue (td, "title");
1.421 - String url = getAttributeValue (
1.422 - td.getNode ("tag"),
1.423 - "href"
1.424 - ), value = null;
1.425 - if (!title.equals ("Related Elements")) {
1.426 - if (url != null) {
1.427 - value = td.getNode ("tag").getNode ("etext").
1.428 - getTokenType ("html-text").getIdentifier ().toLowerCase ();
1.429 - params.put (title + "_URL", url);
1.430 - } else
1.431 - value = td.getNode ("etext").getAsText ();
1.432 - if (value.equals (" "))
1.433 - value = "";
1.434 - } else {
1.435 - List l = td.getChildren ();
1.436 - Iterator ii = l.iterator ();
1.437 - while (ii.hasNext ()) {
1.438 - Object elem = ii.next ();
1.439 - if (!(elem instanceof ASTNode)) continue;
1.440 - if (!((ASTNode) elem).getNT ().equals ("tag")) continue;
1.441 - if (value == null)
1.442 - value = ((ASTNode) elem).getNode ("etext").getAsText ();
1.443 - else
1.444 - value += "," + ((ASTNode) elem).getNode ("etext").getAsText ();
1.445 - }
1.446 - }
1.447 - params.put (title, value);
1.448 - if (title.equals ("Name")) {
1.449 - name = value;
1.450 - result.put (name, params);
1.451 - }
1.452 - }
1.453 - //System.out.println(name + " : " + params);
1.454 - }
1.455 -
1.456 - try {
1.457 - FileWriter fw = new FileWriter ("c:\\attribs.xml");
1.458 - it = result.keySet ().iterator ();
1.459 - while (it.hasNext ()) {
1.460 - String tagName = (String) it.next ();
1.461 - Map params = (Map) result.get (tagName);
1.462 - boolean deprecated = "D".equals (params.get ("Depr."));
1.463 - String description = (String) params.get ("Comment");
1.464 - String endTag = (String) params.get ("End Tag");
1.465 - String context = (String) params.get ("Related Elements");
1.466 - fw.write ("\t<node key = \"" + tagName + "\"\tcontext = \"" + context + "\"\tdeprecated = \"" + deprecated + "\"\tdescription = \"" + description + "\"/>\n");
1.467 - }
1.468 - fw.close ();
1.469 - } catch (Exception ex) {
1.470 - ex.printStackTrace();
1.471 - }
1.472 - return result;
1.473 - }
1.474 -
1.475 - private static String getAttributeValue (ASTNode node, String attributeName) {
1.476 - if (node == null) return null;
1.477 - List path = node.getNode ("startTag").findToken
1.478 - ("html-attribute-name", attributeName);
1.479 - if (path == null) return null;
1.480 - ASTNode attributes = (ASTNode) path.get (1);
1.481 - List path2 = attributes.findToken ("html-attribute-value", null);
1.482 - String value = ((SToken) path2.get (0)).getIdentifier ();
1.483 - if (value.startsWith ("\"")) value = value.substring (1, value.length () - 1);
1.484 - return value;
1.485 - }
1.486 -
1.487 - private static List getTags (ASTNode node, String tagName) {
1.488 - List result = new ArrayList ();
1.489 - Iterator it = node.getChildren ().iterator ();
1.490 - while (it.hasNext ()) {
1.491 - Object e = it.next ();
1.492 - if (e instanceof SToken) continue;
1.493 - ASTNode n = (ASTNode) e;
1.494 - if (n.getNT ().equals ("tag")) {
1.495 - ASTNode startTag = n.getNode ("startTag");
1.496 - String tn = startTag.getTokenTypeIdentifier ("html-element_name");
1.497 - if (tn.equals (tagName)) result.add (n);
1.498 - }
1.499 - }
1.500 - return result;
1.501 - }
1.502 -
1.503 - private static ASTNode getFirstTag (ASTNode node, String tagName) {
1.504 - Iterator it = node.getChildren ().iterator ();
1.505 - while (it.hasNext ()) {
1.506 - Object e = it.next ();
1.507 - if (e instanceof SToken) continue;
1.508 - ASTNode n = (ASTNode) e;
1.509 - if (n.getNT ().equals ("tag")) {
1.510 - ASTNode startTag = n.getNode ("startTag");
1.511 - String tn = startTag.getTokenTypeIdentifier ("html-element_name");
1.512 - if (tn.equals (tagName)) return n;
1.513 - }
1.514 - }
1.515 - return null;
1.516 - }
1.517 +// private static Map tagsMap = null;
1.518 +//
1.519 +// private static Map getTags () {
1.520 +// if (tagsMap == null) {
1.521 +// ASTNode n = parseHTML ("index/elements.html");
1.522 +// if (n != null)
1.523 +// tagsMap = readTags (n);
1.524 +// else
1.525 +// tagsMap = new HashMap ();
1.526 +// }
1.527 +// return tagsMap;
1.528 +// }
1.529 +//
1.530 +// private static ASTNode parseHTML (String resourceName) {
1.531 +// long start = System.currentTimeMillis ();
1.532 +// try {
1.533 +// File f = InstalledFileLocator.getDefault().locate
1.534 +// (HTML40DOC, null, false); //NoI18N
1.535 +// if (f == null) {
1.536 +// System.out.println("File " + HTML40DOC + " not found!");
1.537 +// return null;
1.538 +// }
1.539 +// InputStream in = null;
1.540 +// try {
1.541 +// URL url = f.toURL ();
1.542 +// url = FileUtil.getArchiveRoot (url);
1.543 +// url = new URL (url.toString () + resourceName);
1.544 +// in = url.openStream ();
1.545 +// } catch (MalformedURLException e){
1.546 +// ErrorManager.getDefault().notify(ErrorManager.EXCEPTION, e);
1.547 +// return null;
1.548 +// }
1.549 +// InputStreamReader r = new InputStreamReader (in);
1.550 +// BufferedReader br = new BufferedReader (r);
1.551 +// StringBuilder sb = new StringBuilder ();
1.552 +// String ln = br.readLine ();
1.553 +// while (ln != null) {
1.554 +// sb.append (ln).append ('\n');
1.555 +// ln = br.readLine ();
1.556 +// }
1.557 +// Language l = LanguagesManager.getDefault ().getLanguage ("text/html2");
1.558 +// TokenInput ti = TokenInput.create (
1.559 +// l.getParser (),
1.560 +// Input.create (sb.toString (), resourceName),
1.561 +// Collections.EMPTY_SET// l.getSkipTokenTypes ()
1.562 +// );
1.563 +// ASTNode node = l.getAnalyser ().read (ti, false);
1.564 +// List rl = new ArrayList ();
1.565 +// resolve (node, new Stack (), rl, false);
1.566 +// node = ASTNode.create (
1.567 +// node.getMimeType (),
1.568 +// node.getNT (),
1.569 +// node.getRule (),
1.570 +// node.getParent (),
1.571 +// rl,
1.572 +// node.getOffset ()
1.573 +// );
1.574 +// in.close ();
1.575 +// System.out.println("parse " + resourceName + " " + (System.currentTimeMillis () - start));
1.576 +// return node;
1.577 +// } catch (Exception ex) {
1.578 +// System.out.println("parse-error " + resourceName + " " + (System.currentTimeMillis () - start));
1.579 +// ErrorManager.getDefault ().notify (ex);
1.580 +// return null;
1.581 +// }
1.582 +// }
1.583 +//
1.584 +// private static Map readTags (ASTNode node) {
1.585 +// Map result = new HashMap ();
1.586 +// List result2 = new ArrayList ();
1.587 +// node = getFirstTag (node, "html");
1.588 +// node = getFirstTag (node, "body");
1.589 +// node = getFirstTag (node, "table");
1.590 +// Iterator it = getTags (node, "tr").iterator ();
1.591 +// while (it.hasNext ()) {
1.592 +// ASTNode tr = (ASTNode) it.next ();
1.593 +// String name = null;
1.594 +// Map params = new HashMap ();
1.595 +// Iterator it2 = getTags (tr, "td").iterator ();
1.596 +// while (it2.hasNext ()) {
1.597 +// ASTNode td = (ASTNode) it2.next ();
1.598 +// String title = getAttributeValue (td, "title");
1.599 +// String url = getAttributeValue (
1.600 +// td.getNode ("tag"),
1.601 +// "href"
1.602 +// ), value = null;
1.603 +// if (url != null) {
1.604 +// value = td.getNode ("tag").getNode ("etext").
1.605 +// getTokenType ("html-text").getIdentifier ().toLowerCase ();
1.606 +// params.put (title + "_URL", url);
1.607 +// } else
1.608 +// value = td.getNode ("etext").getAsText ();
1.609 +// if (value.equals (" "))
1.610 +// value = "";
1.611 +// params.put (title, value);
1.612 +// if (title.equals ("Name")) {
1.613 +// name = value;
1.614 +// result.put (name, params);
1.615 +// result2.add (params);
1.616 +// }
1.617 +// }
1.618 +// }
1.619 +// try {
1.620 +// FileWriter fw = new FileWriter ("c:\\tags.xml");
1.621 +// it = result2.iterator ();
1.622 +// while (it.hasNext ()) {
1.623 +// Map params = (Map) it.next ();
1.624 +// String tagName = (String) params.get ("Name");
1.625 +// boolean deprecated = "D".equals (params.get ("Depr."));
1.626 +// String description = (String) params.get ("Description");
1.627 +// String endTag = (String) params.get ("End Tag");
1.628 +// fw.write ("\t<node key = \"" + tagName + "\"\tcontext = \"TAG\"\tdeprecated = \"" + deprecated + "\"\tendTag = \"" + endTag + "\"\tdescription = \"" + description + "\"/>\n");
1.629 +// }
1.630 +// fw.close ();
1.631 +// } catch (Exception ex) {
1.632 +// ex.printStackTrace();
1.633 +// }
1.634 +// return result;
1.635 +// }
1.636 +//
1.637 +// private static Map attributesMap = null;
1.638 +//
1.639 +// private static Map getAttributes () {
1.640 +// if (attributesMap == null) {
1.641 +// ASTNode n = parseHTML ("index/attributes.html");
1.642 +// if (n != null)
1.643 +// attributesMap = readAttributes (n);
1.644 +// else
1.645 +// attributesMap = new HashMap ();
1.646 +// }
1.647 +// return attributesMap;
1.648 +// }
1.649 +//
1.650 +// private static Map readAttributes (ASTNode node) {
1.651 +// Map result = new HashMap ();
1.652 +// List result2 = new ArrayList ();
1.653 +// Set tags = getTags ().keySet();
1.654 +// node = getFirstTag (node, "html");
1.655 +// node = getFirstTag (node, "body");
1.656 +// node = getFirstTag (node, "table");
1.657 +// Iterator it = getTags (node, "tr").iterator ();
1.658 +// while (it.hasNext ()) {
1.659 +// ASTNode tr = (ASTNode) it.next ();
1.660 +// String name = null;
1.661 +// Map params = new HashMap ();
1.662 +// Iterator it2 = getTags (tr, "td").iterator ();
1.663 +// while (it2.hasNext ()) {
1.664 +// ASTNode td = (ASTNode) it2.next ();
1.665 +// String title = getAttributeValue (td, "title");
1.666 +// String url = getAttributeValue (
1.667 +// td.getNode ("tag"),
1.668 +// "href"
1.669 +// ), value = null;
1.670 +// if (!title.equals ("Related Elements")) {
1.671 +// if (url != null) {
1.672 +// value = td.getNode ("tag").getNode ("etext").
1.673 +// getTokenType ("html-text").getIdentifier ().toLowerCase ();
1.674 +// params.put (title + "_URL", url);
1.675 +// } else
1.676 +// value = td.getNode ("etext").getAsText ();
1.677 +// if (value.equals (" "))
1.678 +// value = "";
1.679 +// } else {
1.680 +// List l = td.getChildren ();
1.681 +// Set neg = null;
1.682 +// Iterator ii = l.iterator ();
1.683 +// while (ii.hasNext ()) {
1.684 +// Object elem = ii.next ();
1.685 +// if (!(elem instanceof ASTNode)) continue;
1.686 +// if (!((ASTNode) elem).getNT ().equals ("tag")) continue;
1.687 +// if (neg != null)
1.688 +// neg.remove (((ASTNode) elem).getNode ("etext").getAsText ().toLowerCase ());
1.689 +// else
1.690 +// if (value == null) {
1.691 +// value = ((ASTNode) elem).getNode ("etext").getAsText ().toLowerCase ();
1.692 +// if (value.equals ("all elements"))
1.693 +// neg = new HashSet (tags);
1.694 +// } else
1.695 +// value += "," + ((ASTNode) elem).getNode ("etext").getAsText ().toLowerCase ();
1.696 +// }
1.697 +// if (neg != null) {
1.698 +// value = null;
1.699 +// ii = neg.iterator ();
1.700 +// while (ii.hasNext ()) {
1.701 +// String t = (String) ii.next ();
1.702 +// if (value == null)
1.703 +// value = t;
1.704 +// else
1.705 +// value += "," + t;
1.706 +// }
1.707 +// }
1.708 +// }
1.709 +// params.put (title, value);
1.710 +// if (title.equals ("Name")) {
1.711 +// name = value;
1.712 +// result.put (name, params);
1.713 +// result2.add (params);
1.714 +// }
1.715 +// }
1.716 +// //System.out.println(name + " : " + params);
1.717 +// }
1.718 +//
1.719 +// try {
1.720 +// FileWriter fw = new FileWriter ("c:\\attribs.xml");
1.721 +// it = result2.iterator ();
1.722 +// while (it.hasNext ()) {
1.723 +// Map params = (Map) it.next ();
1.724 +// String tagName = (String) params.get ("Name");
1.725 +// boolean deprecated = "D".equals (params.get ("Depr."));
1.726 +// String description = (String) params.get ("Comment");
1.727 +// String endTag = (String) params.get ("End Tag");
1.728 +// String context = (String) params.get ("Related Elements");
1.729 +// fw.write ("\t<node key = \"" + tagName + "\"\tcontext = \"" + context + "\"\tdeprecated = \"" + deprecated + "\"\tdescription = \"" + description + "\"/>\n");
1.730 +// }
1.731 +// fw.close ();
1.732 +// } catch (Exception ex) {
1.733 +// ex.printStackTrace();
1.734 +// }
1.735 +// return result;
1.736 +// }
1.737 +//
1.738 +// private static String getAttributeValue (ASTNode node, String attributeName) {
1.739 +// if (node == null) return null;
1.740 +// List path = node.getNode ("startTag").findToken
1.741 +// ("html-attribute-name", attributeName);
1.742 +// if (path == null) return null;
1.743 +// ASTNode attributes = (ASTNode) path.get (1);
1.744 +// List path2 = attributes.findToken ("html-attribute-value", null);
1.745 +// String value = ((SToken) path2.get (0)).getIdentifier ();
1.746 +// if (value.startsWith ("\"")) value = value.substring (1, value.length () - 1);
1.747 +// return value;
1.748 +// }
1.749 +//
1.750 +// private static List getTags (ASTNode node, String tagName) {
1.751 +// List result = new ArrayList ();
1.752 +// Iterator it = node.getChildren ().iterator ();
1.753 +// while (it.hasNext ()) {
1.754 +// Object e = it.next ();
1.755 +// if (e instanceof SToken) continue;
1.756 +// ASTNode n = (ASTNode) e;
1.757 +// if (n.getNT ().equals ("tag")) {
1.758 +// ASTNode startTag = n.getNode ("startTag");
1.759 +// String tn = startTag.getTokenTypeIdentifier ("html-element_name");
1.760 +// if (tn.equals (tagName)) result.add (n);
1.761 +// }
1.762 +// }
1.763 +// return result;
1.764 +// }
1.765 +//
1.766 +// private static ASTNode getFirstTag (ASTNode node, String tagName) {
1.767 +// Iterator it = node.getChildren ().iterator ();
1.768 +// while (it.hasNext ()) {
1.769 +// Object e = it.next ();
1.770 +// if (e instanceof SToken) continue;
1.771 +// ASTNode n = (ASTNode) e;
1.772 +// if (n.getNT ().equals ("tag")) {
1.773 +// ASTNode startTag = n.getNode ("startTag");
1.774 +// String tn = startTag.getTokenTypeIdentifier ("html-element_name");
1.775 +// if (tn.equals (tagName)) return n;
1.776 +// }
1.777 +// }
1.778 +// return null;
1.779 +// }
1.780 }
1.781
2.1 --- a/languages.html/src/org/netbeans/modules/languages/html/HTML.nbs Wed Nov 22 13:39:38 2006 +0000
2.2 +++ b/languages.html/src/org/netbeans/modules/languages/html/HTML.nbs Fri Nov 24 13:53:28 2006 +0000
2.3 @@ -172,6 +172,10 @@
2.4 COLOR:html-attribute-value {
2.5 default-coloring:"string";
2.6 }
2.7 +COLOR:attribute {
2.8 + strike-through-color:"black";
2.9 + condition:org.netbeans.modules.languages.html.HTML.isDeprecatedAttribute;
2.10 +}
2.11
2.12
2.13 ########### code folding #######################################################
3.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
3.2 +++ b/languages.html/src/org/netbeans/modules/languages/html/HTML401.xml Fri Nov 24 13:53:28 2006 +0000
3.3 @@ -0,0 +1,291 @@
3.4 +<?xml version="1.0" encoding="UTF-8"?>
3.5 +<documentation>
3.6 + <node key = "a" context = "TAG" deprecated = "false" endTag = "" description = "anchor"/>
3.7 + <node key = "abbr" context = "TAG" deprecated = "false" endTag = "" description = "abbreviated form (e.g., WWW, HTTP,
3.8 +etc.)"/>
3.9 + <node key = "acronym" context = "TAG" deprecated = "false" endTag = "" description = ""/>
3.10 + <node key = "address" context = "TAG" deprecated = "false" endTag = "" description = "information on author"/>
3.11 + <node key = "applet" context = "TAG" deprecated = "true" endTag = "" description = "Java applet"/>
3.12 + <node key = "area" context = "TAG" deprecated = "false" endTag = "F" description = "client-side image map area"/>
3.13 + <node key = "b" context = "TAG" deprecated = "false" endTag = "" description = "bold text style"/>
3.14 + <node key = "base" context = "TAG" deprecated = "false" endTag = "F" description = "document base URI"/>
3.15 + <node key = "basefont" context = "TAG" deprecated = "true" endTag = "F" description = "base font size"/>
3.16 + <node key = "bdo" context = "TAG" deprecated = "false" endTag = "" description = "I18N BiDi over-ride"/>
3.17 + <node key = "big" context = "TAG" deprecated = "false" endTag = "" description = "large text style"/>
3.18 + <node key = "blockquote" context = "TAG" deprecated = "false" endTag = "" description = "long quotation"/>
3.19 + <node key = "body" context = "TAG" deprecated = "false" endTag = "O" description = "document body"/>
3.20 + <node key = "br" context = "TAG" deprecated = "false" endTag = "F" description = "forced line break"/>
3.21 + <node key = "button" context = "TAG" deprecated = "false" endTag = "" description = "push button"/>
3.22 + <node key = "caption" context = "TAG" deprecated = "false" endTag = "" description = "table caption"/>
3.23 + <node key = "center" context = "TAG" deprecated = "true" endTag = "" description = "shorthand for DIV align=center"/>
3.24 + <node key = "cite" context = "TAG" deprecated = "false" endTag = "" description = "citation"/>
3.25 + <node key = "code" context = "TAG" deprecated = "false" endTag = "" description = "computer code fragment"/>
3.26 + <node key = "col" context = "TAG" deprecated = "false" endTag = "F" description = "table column"/>
3.27 + <node key = "colgroup" context = "TAG" deprecated = "false" endTag = "O" description = "table column group"/>
3.28 + <node key = "dd" context = "TAG" deprecated = "false" endTag = "O" description = "definition description"/>
3.29 + <node key = "del" context = "TAG" deprecated = "false" endTag = "" description = "deleted text"/>
3.30 + <node key = "dfn" context = "TAG" deprecated = "false" endTag = "" description = "instance definition"/>
3.31 + <node key = "dir" context = "TAG" deprecated = "true" endTag = "" description = "directory list"/>
3.32 + <node key = "div" context = "TAG" deprecated = "false" endTag = "" description = "generic language/style container"/>
3.33 + <node key = "dl" context = "TAG" deprecated = "false" endTag = "" description = "definition list"/>
3.34 + <node key = "dt" context = "TAG" deprecated = "false" endTag = "O" description = "definition term"/>
3.35 + <node key = "em" context = "TAG" deprecated = "false" endTag = "" description = "emphasis"/>
3.36 + <node key = "fieldset" context = "TAG" deprecated = "false" endTag = "" description = "form control group"/>
3.37 + <node key = "font" context = "TAG" deprecated = "true" endTag = "" description = "local change to font"/>
3.38 + <node key = "form" context = "TAG" deprecated = "false" endTag = "" description = "interactive form"/>
3.39 + <node key = "frame" context = "TAG" deprecated = "false" endTag = "F" description = "subwindow"/>
3.40 + <node key = "frameset" context = "TAG" deprecated = "false" endTag = "" description = "window subdivision"/>
3.41 + <node key = "h1" context = "TAG" deprecated = "false" endTag = "" description = "heading"/>
3.42 + <node key = "h2" context = "TAG" deprecated = "false" endTag = "" description = "heading"/>
3.43 + <node key = "h3" context = "TAG" deprecated = "false" endTag = "" description = "heading"/>
3.44 + <node key = "h4" context = "TAG" deprecated = "false" endTag = "" description = "heading"/>
3.45 + <node key = "h5" context = "TAG" deprecated = "false" endTag = "" description = "heading"/>
3.46 + <node key = "h6" context = "TAG" deprecated = "false" endTag = "" description = "heading"/>
3.47 + <node key = "head" context = "TAG" deprecated = "false" endTag = "O" description = "document head"/>
3.48 + <node key = "hr" context = "TAG" deprecated = "false" endTag = "F" description = "horizontal rule"/>
3.49 + <node key = "html" context = "TAG" deprecated = "false" endTag = "O" description = "document root element"/>
3.50 + <node key = "i" context = "TAG" deprecated = "false" endTag = "" description = "italic text style"/>
3.51 + <node key = "iframe" context = "TAG" deprecated = "false" endTag = "" description = "inline subwindow"/>
3.52 + <node key = "img" context = "TAG" deprecated = "false" endTag = "F" description = "Embedded image"/>
3.53 + <node key = "input" context = "TAG" deprecated = "false" endTag = "F" description = "form control"/>
3.54 + <node key = "ins" context = "TAG" deprecated = "false" endTag = "" description = "inserted text"/>
3.55 + <node key = "isindex" context = "TAG" deprecated = "true" endTag = "F" description = "single line prompt"/>
3.56 + <node key = "kbd" context = "TAG" deprecated = "false" endTag = "" description = "text to be entered by the user"/>
3.57 + <node key = "label" context = "TAG" deprecated = "false" endTag = "" description = "form field label text"/>
3.58 + <node key = "legend" context = "TAG" deprecated = "false" endTag = "" description = "fieldset legend"/>
3.59 + <node key = "li" context = "TAG" deprecated = "false" endTag = "O" description = "list item"/>
3.60 + <node key = "link" context = "TAG" deprecated = "false" endTag = "F" description = "a media-independent link"/>
3.61 + <node key = "map" context = "TAG" deprecated = "false" endTag = "" description = "client-side image map"/>
3.62 + <node key = "menu" context = "TAG" deprecated = "true" endTag = "" description = "menu list"/>
3.63 + <node key = "meta" context = "TAG" deprecated = "false" endTag = "F" description = "generic metainformation"/>
3.64 + <node key = "noframes" context = "TAG" deprecated = "false" endTag = "" description = "alternate content container for non
3.65 +frame-based rendering"/>
3.66 + <node key = "noscript" context = "TAG" deprecated = "false" endTag = "" description = "alternate content container for non
3.67 +script-based rendering"/>
3.68 + <node key = "object" context = "TAG" deprecated = "false" endTag = "" description = "generic embedded object"/>
3.69 + <node key = "ol" context = "TAG" deprecated = "false" endTag = "" description = "ordered list"/>
3.70 + <node key = "optgroup" context = "TAG" deprecated = "false" endTag = "" description = "option group"/>
3.71 + <node key = "option" context = "TAG" deprecated = "false" endTag = "O" description = "selectable choice"/>
3.72 + <node key = "p" context = "TAG" deprecated = "false" endTag = "O" description = "paragraph"/>
3.73 + <node key = "param" context = "TAG" deprecated = "false" endTag = "F" description = "named property value"/>
3.74 + <node key = "pre" context = "TAG" deprecated = "false" endTag = "" description = "preformatted text"/>
3.75 + <node key = "q" context = "TAG" deprecated = "false" endTag = "" description = "short inline quotation"/>
3.76 + <node key = "s" context = "TAG" deprecated = "true" endTag = "" description = "strike-through text style"/>
3.77 + <node key = "samp" context = "TAG" deprecated = "false" endTag = "" description = "sample program output, scripts,
3.78 +etc."/>
3.79 + <node key = "script" context = "TAG" deprecated = "false" endTag = "" description = "script statements"/>
3.80 + <node key = "select" context = "TAG" deprecated = "false" endTag = "" description = "option selector"/>
3.81 + <node key = "small" context = "TAG" deprecated = "false" endTag = "" description = "small text style"/>
3.82 + <node key = "span" context = "TAG" deprecated = "false" endTag = "" description = "generic language/style container"/>
3.83 + <node key = "strike" context = "TAG" deprecated = "true" endTag = "" description = "strike-through text"/>
3.84 + <node key = "strong" context = "TAG" deprecated = "false" endTag = "" description = "strong emphasis"/>
3.85 + <node key = "style" context = "TAG" deprecated = "false" endTag = "" description = "style info"/>
3.86 + <node key = "sub" context = "TAG" deprecated = "false" endTag = "" description = "subscript"/>
3.87 + <node key = "sup" context = "TAG" deprecated = "false" endTag = "" description = "superscript"/>
3.88 + <node key = "table" context = "TAG" deprecated = "false" endTag = "" description = ""/>
3.89 + <node key = "tbody" context = "TAG" deprecated = "false" endTag = "O" description = "table body"/>
3.90 + <node key = "td" context = "TAG" deprecated = "false" endTag = "O" description = "table data cell"/>
3.91 + <node key = "textarea" context = "TAG" deprecated = "false" endTag = "" description = "multi-line text field"/>
3.92 + <node key = "tfoot" context = "TAG" deprecated = "false" endTag = "O" description = "table footer"/>
3.93 + <node key = "th" context = "TAG" deprecated = "false" endTag = "O" description = "table header cell"/>
3.94 + <node key = "thead" context = "TAG" deprecated = "false" endTag = "O" description = "table header"/>
3.95 + <node key = "title" context = "TAG" deprecated = "false" endTag = "" description = "document title"/>
3.96 + <node key = "tr" context = "TAG" deprecated = "false" endTag = "O" description = "table row"/>
3.97 + <node key = "tt" context = "TAG" deprecated = "false" endTag = "" description = "teletype or monospaced text style"/>
3.98 + <node key = "u" context = "TAG" deprecated = "true" endTag = "" description = "underlined text style"/>
3.99 + <node key = "ul" context = "TAG" deprecated = "false" endTag = "" description = "unordered list"/>
3.100 + <node key = "var" context = "TAG" deprecated = "false" endTag = "" description = "instance of a variable or program
3.101 +argument"/>
3.102 +
3.103 + <node key = "abbr" context = "td,th" deprecated = "false" description = "abbreviation for header cell"/>
3.104 + <node key = "accept-charset" context = "form" deprecated = "false" description = "list of supported charsets"/>
3.105 + <node key = "accept" context = "input" deprecated = "false" description = "list of MIME types for file upload"/>
3.106 + <node key = "accesskey" context = "a,area,button,input,label,legend,textarea" deprecated = "false" description = "accessibility key character"/>
3.107 + <node key = "action" context = "form" deprecated = "false" description = "server-side form handler"/>
3.108 + <node key = "align" context = "caption" deprecated = "true" description = "relative to table"/>
3.109 + <node key = "align" context = "applet,iframe,img,input,object" deprecated = "true" description = "vertical or horizontal alignment"/>
3.110 + <node key = "align" context = "legend" deprecated = "true" description = "relative to fieldset"/>
3.111 + <node key = "align" context = "table" deprecated = "true" description = "table position relative to window"/>
3.112 + <node key = "align" context = "hr" deprecated = "true" description = ""/>
3.113 + <node key = "align" context = "div,h1,h2,h3,h4,h5,h6,p" deprecated = "true" description = "align, text alignment"/>
3.114 + <node key = "align" context = "col,colgroup,tbody,td,tfoot,th,thead,tr" deprecated = "false" description = ""/>
3.115 + <node key = "alink" context = "body" deprecated = "true" description = "color of selected links"/>
3.116 + <node key = "alt" context = "applet" deprecated = "true" description = "short description"/>
3.117 + <node key = "alt" context = "area,img" deprecated = "false" description = "short description"/>
3.118 + <node key = "alt" context = "input" deprecated = "false" description = "short description"/>
3.119 + <node key = "archive" context = "object" deprecated = "false" description = "space separated archive list"/>
3.120 + <node key = "archive" context = "applet" deprecated = "true" description = "comma separated archive list"/>
3.121 + <node key = "axis" context = "td,th" deprecated = "false" description = "names groups of related headers"/>
3.122 + <node key = "background" context = "body" deprecated = "true" description = "texture tile for document background"/>
3.123 + <node key = "bgcolor" context = "table" deprecated = "true" description = "background color for cells"/>
3.124 + <node key = "bgcolor" context = "tr" deprecated = "true" description = "background color for row"/>
3.125 + <node key = "bgcolor" context = "td,th" deprecated = "true" description = "cell background color"/>
3.126 + <node key = "bgcolor" context = "body" deprecated = "true" description = "document background color"/>
3.127 + <node key = "border" context = "table" deprecated = "false" description = "controls frame width around table"/>
3.128 + <node key = "border" context = "img,object" deprecated = "true" description = "link border width"/>
3.129 + <node key = "cellpadding" context = "table" deprecated = "false" description = "spacing within cells"/>
3.130 + <node key = "cellspacing" context = "table" deprecated = "false" description = "spacing between cells"/>
3.131 + <node key = "char" context = "col,colgroup,tbody,td,tfoot,th,thead,tr" deprecated = "false" description = "alignment char, e.g. char=':'"/>
3.132 + <node key = "charoff" context = "col,colgroup,tbody,td,tfoot,th,thead,tr" deprecated = "false" description = "offset for alignment char"/>
3.133 + <node key = "charset" context = "a,link,script" deprecated = "false" description = "char encoding of linked resource"/>
3.134 + <node key = "checked" context = "input" deprecated = "false" description = "for radio buttons and check boxes"/>
3.135 + <node key = "cite" context = "blockquote,q" deprecated = "false" description = "URI for source document or msg"/>
3.136 + <node key = "cite" context = "del,ins" deprecated = "false" description = "info on reason for change"/>
3.137 + <node key = "class" context = "colgroup,table,frameset,kbd,p,isindex,caption,col,q,tr,button,dir,tfoot,th,font,small,ins,code,td,fieldset,object,a,option,optgroup,u,abbr,noframes,hr,h4,menu,body,pre,var,iframe,b,em,select,legend,strong,big,applet,dt,map,del,thead,input,h5,form,sub,address,h6,blockquote,h2,i,div,ul,img,tt,center,s,tbody,textarea,dd,sup,h1,link,noscript,cite,dl,frame,label,dfn,strike,br,li,samp,h3,area,ol,span,bdo,acronym" deprecated = "false" description = "space separated list of classes"/>
3.138 + <node key = "classid" context = "object" deprecated = "false" description = "identifies an implementation"/>
3.139 + <node key = "clear" context = "br" deprecated = "true" description = "control of text flow"/>
3.140 + <node key = "code" context = "applet" deprecated = "true" description = "applet class file"/>
3.141 + <node key = "codebase" context = "object" deprecated = "false" description = "base URI for classid, data, archive"/>
3.142 + <node key = "codebase" context = "applet" deprecated = "true" description = "optional base URI for applet"/>
3.143 + <node key = "codetype" context = "object" deprecated = "false" description = "content type for code"/>
3.144 + <node key = "color" context = "basefont,font" deprecated = "true" description = "text color"/>
3.145 + <node key = "cols" context = "frameset" deprecated = "false" description = "list of lengths, default: 100% (1 col)"/>
3.146 + <node key = "cols" context = "textarea" deprecated = "false" description = ""/>
3.147 + <node key = "colspan" context = "td,th" deprecated = "false" description = "number of cols spanned by cell"/>
3.148 + <node key = "compact" context = "dir,dl,menu,ol,ul" deprecated = "true" description = "reduced interitem spacing"/>
3.149 + <node key = "content" context = "meta" deprecated = "false" description = "associated information"/>
3.150 + <node key = "coords" context = "area" deprecated = "false" description = "comma separated list of lengths"/>
3.151 + <node key = "coords" context = "a" deprecated = "false" description = "for use with client-side image maps"/>
3.152 + <node key = "data" context = "object" deprecated = "false" description = "reference to object's data"/>
3.153 + <node key = "datetime" context = "del,ins" deprecated = "false" description = "date and time of change"/>
3.154 + <node key = "declare" context = "object" deprecated = "false" description = "declare but don't instantiate flag"/>
3.155 + <node key = "defer" context = "script" deprecated = "false" description = "UA may defer execution of script"/>
3.156 + <node key = "dir" context = "colgroup,table,kbd,html,p,isindex,caption,col,q,tr,button,dir,meta,tfoot,th,font,small,ins,code,td,fieldset,object,a,option,optgroup,u,abbr,style,noframes,hr,h4,menu,body,pre,var,b,em,select,legend,strong,big,dt,map,del,thead,input,h5,form,title,sub,address,h6,blockquote,h2,i,div,ul,img,tt,center,s,tbody,textarea,dd,sup,h1,link,noscript,cite,dl,label,dfn,strike,head,li,samp,h3,area,ol,span,acronym" deprecated = "false" description = "direction for weak/neutral text"/>
3.157 + <node key = "dir" context = "bdo" deprecated = "false" description = "directionality"/>
3.158 + <node key = "disabled" context = "button,input,optgroup,option,select,textarea" deprecated = "false" description = "unavailable in this context"/>
3.159 + <node key = "enctype" context = "form" deprecated = "false" description = ""/>
3.160 + <node key = "face" context = "basefont,font" deprecated = "true" description = "comma separated list of font names"/>
3.161 + <node key = "for" context = "label" deprecated = "false" description = "matches field ID value"/>
3.162 + <node key = "frame" context = "table" deprecated = "false" description = "which parts of frame to render"/>
3.163 + <node key = "frameborder" context = "frame,iframe" deprecated = "false" description = "request frame borders?"/>
3.164 + <node key = "headers" context = "td,th" deprecated = "false" description = "list of id's for header cells"/>
3.165 + <node key = "height" context = "iframe" deprecated = "false" description = "frame height"/>
3.166 + <node key = "height" context = "img,object" deprecated = "false" description = "override height"/>
3.167 + <node key = "height" context = "applet" deprecated = "true" description = "initial height"/>
3.168 + <node key = "height" context = "td,th" deprecated = "true" description = "height for cell"/>
3.169 + <node key = "href" context = "a,area,link" deprecated = "false" description = "URI for linked resource"/>
3.170 + <node key = "href" context = "base" deprecated = "false" description = "URI that acts as base URI"/>
3.171 + <node key = "hreflang" context = "a,link" deprecated = "false" description = "language code"/>
3.172 + <node key = "hspace" context = "applet,img,object" deprecated = "true" description = "horizontal gutter"/>
3.173 + <node key = "http-equiv" context = "meta" deprecated = "false" description = "HTTP response header name"/>
3.174 + <node key = "id" context = "colgroup,table,frameset,kbd,p,isindex,caption,col,q,tr,button,dir,tfoot,th,font,small,ins,code,td,fieldset,object,a,option,optgroup,u,abbr,noframes,hr,h4,menu,body,pre,var,iframe,b,em,select,legend,strong,big,applet,dt,map,del,thead,input,h5,form,sub,basefont,address,h6,blockquote,h2,i,div,ul,img,tt,center,s,tbody,textarea,dd,sup,h1,link,noscript,cite,dl,frame,label,dfn,strike,br,li,param,samp,h3,area,ol,span,bdo,acronym" deprecated = "false" description = "document-wide unique id"/>
3.175 + <node key = "ismap" context = "img,input" deprecated = "false" description = "use server-side image map"/>
3.176 + <node key = "label" context = "option" deprecated = "false" description = "for use in hierarchical menus"/>
3.177 + <node key = "label" context = "optgroup" deprecated = "false" description = "for use in hierarchical menus"/>
3.178 + <node key = "lang" context = "colgroup,table,kbd,html,p,isindex,caption,col,q,tr,button,dir,meta,tfoot,th,font,small,ins,code,td,fieldset,object,a,option,optgroup,u,abbr,style,noframes,hr,h4,menu,body,pre,var,b,em,select,legend,strong,big,dt,map,del,thead,input,h5,form,title,sub,address,h6,blockquote,h2,i,div,ul,img,tt,center,s,tbody,textarea,dd,sup,h1,link,noscript,cite,dl,label,dfn,strike,head,li,samp,h3,area,ol,span,bdo,acronym" deprecated = "false" description = "language code"/>
3.179 + <node key = "language" context = "script" deprecated = "true" description = "predefined script language name"/>
3.180 + <node key = "link" context = "body" deprecated = "true" description = "color of links"/>
3.181 + <node key = "longdesc" context = "img" deprecated = "false" description = "link to long description (complements
3.182 +alt)"/>
3.183 + <node key = "longdesc" context = "frame,iframe" deprecated = "false" description = "link to long description (complements
3.184 +title)"/>
3.185 + <node key = "marginheight" context = "frame,iframe" deprecated = "false" description = "margin height in pixels"/>
3.186 + <node key = "marginwidth" context = "frame,iframe" deprecated = "false" description = "margin widths in pixels"/>
3.187 + <node key = "maxlength" context = "input" deprecated = "false" description = "max chars for text fields"/>
3.188 + <node key = "media" context = "style" deprecated = "false" description = "designed for use with these media"/>
3.189 + <node key = "media" context = "link" deprecated = "false" description = "for rendering on these media"/>
3.190 + <node key = "method" context = "form" deprecated = "false" description = "HTTP method used to submit the form"/>
3.191 + <node key = "multiple" context = "select" deprecated = "false" description = "default is single selection"/>
3.192 + <node key = "name" context = "button,textarea" deprecated = "false" description = ""/>
3.193 + <node key = "name" context = "applet" deprecated = "true" description = "allows applets to find each other"/>
3.194 + <node key = "name" context = "select" deprecated = "false" description = "field name"/>
3.195 + <node key = "name" context = "form" deprecated = "false" description = "name of form for scripting"/>
3.196 + <node key = "name" context = "frame,iframe" deprecated = "false" description = "name of frame for targetting"/>
3.197 + <node key = "name" context = "img" deprecated = "false" description = "name of image for scripting"/>
3.198 + <node key = "name" context = "a" deprecated = "false" description = "named link end"/>
3.199 + <node key = "name" context = "input,object" deprecated = "false" description = "submit as part of form"/>
3.200 + <node key = "name" context = "map" deprecated = "false" description = "for reference by usemap"/>
3.201 + <node key = "name" context = "param" deprecated = "false" description = "property name"/>
3.202 + <node key = "name" context = "meta" deprecated = "false" description = "metainformation name"/>
3.203 + <node key = "nohref" context = "area" deprecated = "false" description = "this region has no action"/>
3.204 + <node key = "noresize" context = "frame" deprecated = "false" description = "allow users to resize frames?"/>
3.205 + <node key = "noshade" context = "hr" deprecated = "true" description = ""/>
3.206 + <node key = "nowrap" context = "td,th" deprecated = "true" description = "suppress word wrap"/>
3.207 + <node key = "object" context = "applet" deprecated = "true" description = "serialized applet file"/>
3.208 + <node key = "onblur" context = "a,area,button,input,label,select,textarea" deprecated = "false" description = "the element lost the focus"/>
3.209 + <node key = "onchange" context = "input,select,textarea" deprecated = "false" description = "the element value was changed"/>
3.210 + <node key = "onclick" context = "colgroup,table,kbd,p,caption,col,q,tr,button,dir,tfoot,th,small,ins,code,td,fieldset,object,a,option,optgroup,u,abbr,noframes,hr,h4,menu,body,pre,var,b,em,select,legend,strong,big,dt,map,del,thead,input,h5,form,sub,address,h6,blockquote,h2,i,div,ul,img,tt,center,s,tbody,textarea,dd,sup,h1,link,noscript,cite,dl,label,dfn,strike,li,samp,h3,area,ol,span,acronym" deprecated = "false" description = "a pointer button was clicked"/>
3.211 + <node key = "ondblclick" context = "colgroup,table,kbd,p,caption,col,q,tr,button,dir,tfoot,th,small,ins,code,td,fieldset,object,a,option,optgroup,u,abbr,noframes,hr,h4,menu,body,pre,var,b,em,select,legend,strong,big,dt,map,del,thead,input,h5,form,sub,address,h6,blockquote,h2,i,div,ul,img,tt,center,s,tbody,textarea,dd,sup,h1,link,noscript,cite,dl,label,dfn,strike,li,samp,h3,area,ol,span,acronym" deprecated = "false" description = "a pointer button was double clicked"/>
3.212 + <node key = "onfocus" context = "a,area,button,input,label,select,textarea" deprecated = "false" description = "the element got the focus"/>
3.213 + <node key = "onkeydown" context = "colgroup,table,kbd,p,caption,col,q,tr,button,dir,tfoot,th,small,ins,code,td,fieldset,object,a,option,optgroup,u,abbr,noframes,hr,h4,menu,body,pre,var,b,em,select,legend,strong,big,dt,map,del,thead,input,h5,form,sub,address,h6,blockquote,h2,i,div,ul,img,tt,center,s,tbody,textarea,dd,sup,h1,link,noscript,cite,dl,label,dfn,strike,li,samp,h3,area,ol,span,acronym" deprecated = "false" description = "a key was pressed down"/>
3.214 + <node key = "onkeypress" context = "colgroup,table,kbd,p,caption,col,q,tr,button,dir,tfoot,th,small,ins,code,td,fieldset,object,a,option,optgroup,u,abbr,noframes,hr,h4,menu,body,pre,var,b,em,select,legend,strong,big,dt,map,del,thead,input,h5,form,sub,address,h6,blockquote,h2,i,div,ul,img,tt,center,s,tbody,textarea,dd,sup,h1,link,noscript,cite,dl,label,dfn,strike,li,samp,h3,area,ol,span,acronym" deprecated = "false" description = "a key was pressed and released"/>
3.215 + <node key = "onkeyup" context = "colgroup,table,kbd,p,caption,col,q,tr,button,dir,tfoot,th,small,ins,code,td,fieldset,object,a,option,optgroup,u,abbr,noframes,hr,h4,menu,body,pre,var,b,em,select,legend,strong,big,dt,map,del,thead,input,h5,form,sub,address,h6,blockquote,h2,i,div,ul,img,tt,center,s,tbody,textarea,dd,sup,h1,link,noscript,cite,dl,label,dfn,strike,li,samp,h3,area,ol,span,acronym" deprecated = "false" description = "a key was released"/>
3.216 + <node key = "onload" context = "frameset" deprecated = "false" description = "all the frames have been loaded"/>
3.217 + <node key = "onload" context = "body" deprecated = "false" description = "the document has been loaded"/>
3.218 + <node key = "onmousedown" context = "colgroup,table,kbd,p,caption,col,q,tr,button,dir,tfoot,th,small,ins,code,td,fieldset,object,a,option,optgroup,u,abbr,noframes,hr,h4,menu,body,pre,var,b,em,select,legend,strong,big,dt,map,del,thead,input,h5,form,sub,address,h6,blockquote,h2,i,div,ul,img,tt,center,s,tbody,textarea,dd,sup,h1,link,noscript,cite,dl,label,dfn,strike,li,samp,h3,area,ol,span,acronym" deprecated = "false" description = "a pointer button was pressed down"/>
3.219 + <node key = "onmousemove" context = "colgroup,table,kbd,p,caption,col,q,tr,button,dir,tfoot,th,small,ins,code,td,fieldset,object,a,option,optgroup,u,abbr,noframes,hr,h4,menu,body,pre,var,b,em,select,legend,strong,big,dt,map,del,thead,input,h5,form,sub,address,h6,blockquote,h2,i,div,ul,img,tt,center,s,tbody,textarea,dd,sup,h1,link,noscript,cite,dl,label,dfn,strike,li,samp,h3,area,ol,span,acronym" deprecated = "false" description = "a pointer was moved within"/>
3.220 + <node key = "onmouseout" context = "colgroup,table,kbd,p,caption,col,q,tr,button,dir,tfoot,th,small,ins,code,td,fieldset,object,a,option,optgroup,u,abbr,noframes,hr,h4,menu,body,pre,var,b,em,select,legend,strong,big,dt,map,del,thead,input,h5,form,sub,address,h6,blockquote,h2,i,div,ul,img,tt,center,s,tbody,textarea,dd,sup,h1,link,noscript,cite,dl,label,dfn,strike,li,samp,h3,area,ol,span,acronym" deprecated = "false" description = "a pointer was moved away"/>
3.221 + <node key = "onmouseover" context = "colgroup,table,kbd,p,caption,col,q,tr,button,dir,tfoot,th,small,ins,code,td,fieldset,object,a,option,optgroup,u,abbr,noframes,hr,h4,menu,body,pre,var,b,em,select,legend,strong,big,dt,map,del,thead,input,h5,form,sub,address,h6,blockquote,h2,i,div,ul,img,tt,center,s,tbody,textarea,dd,sup,h1,link,noscript,cite,dl,label,dfn,strike,li,samp,h3,area,ol,span,acronym" deprecated = "false" description = "a pointer was moved onto"/>
3.222 + <node key = "onmouseup" context = "colgroup,table,kbd,p,caption,col,q,tr,button,dir,tfoot,th,small,ins,code,td,fieldset,object,a,option,optgroup,u,abbr,noframes,hr,h4,menu,body,pre,var,b,em,select,legend,strong,big,dt,map,del,thead,input,h5,form,sub,address,h6,blockquote,h2,i,div,ul,img,tt,center,s,tbody,textarea,dd,sup,h1,link,noscript,cite,dl,label,dfn,strike,li,samp,h3,area,ol,span,acronym" deprecated = "false" description = "a pointer button was released"/>
3.223 + <node key = "onreset" context = "form" deprecated = "false" description = "the form was reset"/>
3.224 + <node key = "onselect" context = "input,textarea" deprecated = "false" description = "some text was selected"/>
3.225 + <node key = "onsubmit" context = "form" deprecated = "false" description = "the form was submitted"/>
3.226 + <node key = "onunload" context = "frameset" deprecated = "false" description = "all the frames have been removed"/>
3.227 + <node key = "onunload" context = "body" deprecated = "false" description = "the document has been removed"/>
3.228 + <node key = "profile" context = "head" deprecated = "false" description = "named dictionary of meta info"/>
3.229 + <node key = "prompt" context = "isindex" deprecated = "true" description = "prompt message"/>
3.230 + <node key = "readonly" context = "textarea" deprecated = "false" description = ""/>
3.231 + <node key = "readonly" context = "input" deprecated = "false" description = "for text and passwd"/>
3.232 + <node key = "rel" context = "a,link" deprecated = "false" description = "forward link types"/>
3.233 + <node key = "rev" context = "a,link" deprecated = "false" description = "reverse link types"/>
3.234 + <node key = "rows" context = "frameset" deprecated = "false" description = "list of lengths, default: 100% (1 row)"/>
3.235 + <node key = "rows" context = "textarea" deprecated = "false" description = ""/>
3.236 + <node key = "rowspan" context = "td,th" deprecated = "false" description = "number of rows spanned by cell"/>
3.237 + <node key = "rules" context = "table" deprecated = "false" description = "rulings between rows and cols"/>
3.238 + <node key = "scheme" context = "meta" deprecated = "false" description = "select form of content"/>
3.239 + <node key = "scope" context = "td,th" deprecated = "false" description = "scope covered by header cells"/>
3.240 + <node key = "scrolling" context = "frame,iframe" deprecated = "false" description = "scrollbar or none"/>
3.241 + <node key = "selected" context = "option" deprecated = "false" description = ""/>
3.242 + <node key = "shape" context = "area" deprecated = "false" description = "controls interpretation of coords"/>
3.243 + <node key = "shape" context = "a" deprecated = "false" description = "for use with client-side image maps"/>
3.244 + <node key = "size" context = "hr" deprecated = "true" description = ""/>
3.245 + <node key = "size" context = "font" deprecated = "true" description = "[+|-]nn e.g. size=+1, size=4"/>
3.246 + <node key = "size" context = "input" deprecated = "false" description = "specific to each type of field"/>
3.247 + <node key = "size" context = "basefont" deprecated = "true" description = "base font size for FONT elements"/>
3.248 + <node key = "size" context = "select" deprecated = "false" description = "rows visible"/>
3.249 + <node key = "span" context = "col" deprecated = "false" description = "COL attributes affect N columns"/>
3.250 + <node key = "span" context = "colgroup" deprecated = "false" description = "default number of columns in group"/>
3.251 + <node key = "src" context = "script" deprecated = "false" description = "URI for an external script"/>
3.252 + <node key = "src" context = "input" deprecated = "false" description = "for fields with images"/>
3.253 + <node key = "src" context = "frame,iframe" deprecated = "false" description = "source of frame content"/>
3.254 + <node key = "src" context = "img" deprecated = "false" description = "URI of image to embed"/>
3.255 + <node key = "standby" context = "object" deprecated = "false" description = "message to show while loading"/>
3.256 + <node key = "start" context = "ol" deprecated = "true" description = "starting sequence number"/>
3.257 + <node key = "style" context = "colgroup,table,frameset,kbd,p,isindex,caption,col,q,tr,button,dir,tfoot,th,font,small,ins,code,td,fieldset,object,a,option,optgroup,u,abbr,noframes,hr,h4,menu,body,pre,var,iframe,b,em,select,legend,strong,big,applet,dt,map,del,thead,input,h5,form,sub,address,h6,blockquote,h2,i,div,ul,img,tt,center,s,tbody,textarea,dd,sup,h1,link,noscript,cite,dl,frame,label,dfn,strike,br,li,samp,h3,area,ol,span,bdo,acronym" deprecated = "false" description = "associated style info"/>
3.258 + <node key = "summary" context = "table" deprecated = "false" description = "purpose/structure for speech output"/>
3.259 + <node key = "tabindex" context = "a,area,button,input,object,select,textarea" deprecated = "false" description = "position in tabbing order"/>
3.260 + <node key = "target" context = "a,area,base,form,link" deprecated = "false" description = "render in this frame"/>
3.261 + <node key = "text" context = "body" deprecated = "true" description = "document text color"/>
3.262 + <node key = "title" context = "colgroup,table,frameset,kbd,p,isindex,caption,col,q,tr,button,dir,tfoot,th,font,small,ins,code,td,fieldset,object,a,option,optgroup,u,abbr,style,noframes,hr,h4,menu,body,pre,var,iframe,b,em,select,legend,strong,big,applet,dt,map,del,thead,input,h5,form,sub,address,h6,blockquote,h2,i,div,ul,img,tt,center,s,tbody,textarea,dd,sup,h1,link,noscript,cite,dl,frame,label,dfn,strike,br,li,samp,h3,area,ol,span,bdo,acronym" deprecated = "false" description = "advisory title"/>
3.263 + <node key = "type" context = "a,link" deprecated = "false" description = "advisory content type"/>
3.264 + <node key = "type" context = "object" deprecated = "false" description = "content type for data"/>
3.265 + <node key = "type" context = "param" deprecated = "false" description = "content type for value when
3.266 +valuetype=ref"/>
3.267 + <node key = "type" context = "script" deprecated = "false" description = "content type of script language"/>
3.268 + <node key = "type" context = "style" deprecated = "false" description = "content type of style language"/>
3.269 + <node key = "type" context = "input" deprecated = "false" description = "what kind of widget is needed"/>
3.270 + <node key = "type" context = "li" deprecated = "true" description = "list item style"/>
3.271 + <node key = "type" context = "ol" deprecated = "true" description = "numbering style"/>
3.272 + <node key = "type" context = "ul" deprecated = "true" description = "bullet style"/>
3.273 + <node key = "type" context = "button" deprecated = "false" description = "for use as form button"/>
3.274 + <node key = "usemap" context = "img,input,object" deprecated = "false" description = "use client-side image map"/>
3.275 + <node key = "valign" context = "col,colgroup,tbody,td,tfoot,th,thead,tr" deprecated = "false" description = "vertical alignment in cells"/>
3.276 + <node key = "value" context = "option" deprecated = "false" description = "defaults to element content"/>
3.277 + <node key = "value" context = "param" deprecated = "false" description = "property value"/>
3.278 + <node key = "value" context = "input" deprecated = "false" description = "required for radio and checkboxes"/>
3.279 + <node key = "value" context = "button" deprecated = "false" description = "sent to server when submitted"/>
3.280 + <node key = "value" context = "li" deprecated = "true" description = "reset sequence number"/>
3.281 + <node key = "valuetype" context = "param" deprecated = "false" description = "How to interpret value"/>
3.282 + <node key = "version" context = "html" deprecated = "true" description = "Constant"/>
3.283 + <node key = "vlink" context = "body" deprecated = "true" description = "color of visited links"/>
3.284 + <node key = "vspace" context = "applet,img,object" deprecated = "true" description = "vertical gutter"/>
3.285 + <node key = "width" context = "hr" deprecated = "true" description = ""/>
3.286 + <node key = "width" context = "iframe" deprecated = "false" description = "frame width"/>
3.287 + <node key = "width" context = "img,object" deprecated = "false" description = "override width"/>
3.288 + <node key = "width" context = "table" deprecated = "false" description = "table width"/>
3.289 + <node key = "width" context = "applet" deprecated = "true" description = "initial width"/>
3.290 + <node key = "width" context = "col" deprecated = "false" description = "column width specification"/>
3.291 + <node key = "width" context = "colgroup" deprecated = "false" description = "default width for enclosed COLs"/>
3.292 + <node key = "width" context = "td,th" deprecated = "true" description = "width for cell"/>
3.293 + <node key = "width" context = "pre" deprecated = "true" description = ""/>
3.294 +</documentation>