[292415] [content model] Add html5 support to HTML component
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/HTMLCoreMessages.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/HTMLCoreMessages.java
index 7673a86..f2f93b1 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/HTMLCoreMessages.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/HTMLCoreMessages.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -51,6 +51,8 @@
public static String HTMLContentPropertiesManager_Updating;
public static String HTMLContentPropertiesManager_Problems_Updating;
public static String _ERROR_Resource_not_found_0;
+ public static String Obsolete_attribute_name___ERROR_;
+ public static String Obsolete_tag___ERROR_;
static {
// load message values from bundle file
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/HTMLCorePluginResources.properties b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/HTMLCorePluginResources.properties
index d26f16c..7301451 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/HTMLCorePluginResources.properties
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/HTMLCorePluginResources.properties
@@ -1,5 +1,5 @@
###############################################################################
-# Copyright (c) 2004, 2006 IBM Corporation and others.
+# Copyright (c) 2004, 2010 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
@@ -40,4 +40,6 @@
#
HTMLContentPropertiesManager_Updating=Updating Web Content Settings
HTMLContentPropertiesManager_Problems_Updating=Problem saving Web Content Settings for {0}
-_ERROR_Resource_not_found_0=Resource not found: {0}
\ No newline at end of file
+_ERROR_Resource_not_found_0=Resource not found: {0}
+Obsolete_attribute_name___ERROR_=Attribute ({0}) is obsolete. Its use is discouraged in HTML5 documents.
+Obsolete_tag___ERROR_=Element ({0}) is obsolete. Its use is discouraged in HTML5 documents.
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/AttributeCollection.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/AttributeCollection.java
index ab2a71c..fa77f0e 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/AttributeCollection.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/AttributeCollection.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -23,10 +23,10 @@
/**
* Factory for attribute declarations.
*/
-final class AttributeCollection extends CMNamedNodeMapImpl implements HTML40Namespace {
+class AttributeCollection extends CMNamedNodeMapImpl implements HTML40Namespace {
/** bodycolors. */
- private static final String[] BODYCOLORS = {ATTR_NAME_BGCOLOR, ATTR_NAME_TEXT, ATTR_NAME_LINK, ATTR_NAME_VLINK, HTML40Namespace.ATTR_NAME_ALINK};
+ private static final String[] BODYCOLORS = {ATTR_NAME_BGCOLOR, ATTR_NAME_TEXT, ATTR_NAME_LINK, ATTR_NAME_VLINK, ATTR_NAME_ALINK};
/** coreattrs. */
private static final String[] CORE = {ATTR_NAME_ID, ATTR_NAME_CLASS, ATTR_NAME_STYLE, ATTR_NAME_TITLE};
/** events. */
@@ -49,7 +49,7 @@
* @param attrName
* java.lang.String
*/
- private HTMLAttrDeclImpl create(String attrName) {
+ protected HTMLAttrDeclImpl create(String attrName) {
HTMLAttrDeclImpl attr = null;
HTMLCMDataTypeImpl atype = null;
@@ -1209,7 +1209,7 @@
atype.setEnumValues(values);
HTMLAttrDeclImpl attr = new HTMLAttrDeclImpl(ATTR_NAME_ALIGN, atype, CMAttributeDeclaration.OPTIONAL);
- declarations.putNamedItem(HTML40Namespace.ATTR_NAME_ALIGN, attr);
+ declarations.putNamedItem(ATTR_NAME_ALIGN, attr);
// the rest.
Iterator names = Arrays.asList(CELLHALIGN).iterator();
@@ -1221,9 +1221,9 @@
* (top|middle|bottom|baseline) #IMPLIED)
*/
public void getCellvalign(CMNamedNodeMapImpl declarations) {
- HTMLAttributeDeclaration dec = getDeclaration(HTML40Namespace.ATTR_NAME_VALIGN);
+ HTMLAttributeDeclaration dec = getDeclaration(ATTR_NAME_VALIGN);
if (dec != null)
- declarations.putNamedItem(HTML40Namespace.ATTR_NAME_VALIGN, dec);
+ declarations.putNamedItem(ATTR_NAME_VALIGN, dec);
}
/**
@@ -1282,4 +1282,410 @@
Iterator names = Arrays.asList(I18N).iterator();
getDeclarations(declarations, names);
}
+
+ /**
+ * create declarations.
+ */
+ public void createAttributeDeclarations(String elementName, CMNamedNodeMapImpl attributes) {
+ /* (type %InputType; TEXT) ... should be defined locally.
+ * (name CDATA #IMPLIED)
+ * (value CDATA #IMPLIED)
+ * (checked (checked) #IMPLIED)
+ * (disabled (disabled) #IMPLIED)
+ * (readonly (readonly) #IMPLIED)
+ * (size CDATA #IMPLIED) ... should be defined locally.
+ * (maxlength NUMBER #IMPLIED)
+ * (src %URI; #IMPLIED)
+ * (alt CDATA #IMPLIED) ... should be defined locally.
+ * (usemap %URI; #IMPLIED)
+ * (ismap (ismap) #IMPLIED)
+ * (tabindex NUMBER #IMPLIED)
+ * (accesskey %Character; #IMPLIED)
+ * (onfocus %Script; #IMPLIED)
+ * (onblur %Script; #IMPLIED)
+ * (onselect %Script; #IMPLIED)
+ * (onchange %Script; #IMPLIED)
+ * (accept %ContentTypes; #IMPLIED)
+ * (align %IAlign; #IMPLIED) ... should be defined locally.
+ * (istyle CDATA #IMPLIED)
+ * <<D215684
+ * (width CDATA; #IMPLIED)
+ * (height CDATA; #IMPLIED)
+ * (border CDATA; #IMPLIED)
+ * D215684
+ */
+ if (elementName.equals(HTML40Namespace.ElementName.INPUT)){
+ HTMLCMDataTypeImpl atype = null;
+ HTMLAttrDeclImpl attr = null;
+ // (type %InputType; TEXT) ... should be defined locally.
+ // NOTE: %InputType is ENUM;
+ // (text | password | checkbox | radio | submit | reset |
+ // file | hidden | image | button)
+ atype = new HTMLCMDataTypeImpl(CMDataType.ENUM);
+ String[] values = {ATTR_VALUE_TEXT, ATTR_VALUE_PASSWORD, ATTR_VALUE_CHECKBOX, ATTR_VALUE_RADIO, ATTR_VALUE_SUBMIT, ATTR_VALUE_RESET, ATTR_VALUE_FILE, ATTR_VALUE_HIDDEN, ATTR_VALUE_IMAGE, ATTR_VALUE_BUTTON};
+ atype.setEnumValues(values);
+ atype.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, ATTR_VALUE_TEXT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_TYPE, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_TYPE, attr);
+
+ // (size CDATA #IMPLIED) ... should be defined locally.
+ atype = new HTMLCMDataTypeImpl(CMDataType.CDATA);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_SIZE, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_SIZE, attr);
+
+ // (alt CDATA #IMPLIED) ... should be defined locally.
+ atype = new HTMLCMDataTypeImpl(CMDataType.CDATA);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ALT, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_ALT, attr);
+
+ // (align %IAlign; #IMPLIED) ... should be defined locally.
+ attr = AttributeCollection.createAlignForImage();
+ attributes.putNamedItem(ATTR_NAME_ALIGN, attr);
+
+ // the rest.
+ String[] names = {ATTR_NAME_NAME, ATTR_NAME_VALUE, ATTR_NAME_CHECKED, ATTR_NAME_DISABLED, ATTR_NAME_READONLY, ATTR_NAME_SIZE, ATTR_NAME_MAXLENGTH, ATTR_NAME_SRC, ATTR_NAME_ALT, ATTR_NAME_USEMAP, ATTR_NAME_ISMAP, ATTR_NAME_TABINDEX, ATTR_NAME_ACCESSKEY, ATTR_NAME_ONFOCUS, ATTR_NAME_ONBLUR, ATTR_NAME_ONSELECT, ATTR_NAME_ONCHANGE, ATTR_NAME_ACCEPT, ATTR_NAME_ALIGN, ATTR_NAME_ISTYLE,
+ //<<D215684
+ ATTR_NAME_WIDTH, ATTR_NAME_HEIGHT, ATTR_NAME_BORDER
+ //<D215684
+ };
+ getDeclarations(attributes, Arrays.asList(names).iterator());
+ }
+ /* (charset %Charset; #IMPLIED)
+ * (href %URI; #IMPLIED)
+ * (hreflang %LanguageCode; #IMPLIED)
+ * (type %ContentType; #IMPLIED): should be defined locally.
+ * (rel %LinkTypes; #IMPLIED)
+ * (rev %LinkTypes; #IMPLIED)
+ * (media %MediaDesc; #IMPLIED)
+ * (target %FrameTarget; #IMPLIED)
+ */
+ else if (elementName.equals(HTML40Namespace.ElementName.LINK)){
+ String[] names = {ATTR_NAME_CHARSET, ATTR_NAME_HREF, ATTR_NAME_HREFLANG, ATTR_NAME_REL, ATTR_NAME_REV, ATTR_NAME_MEDIA, ATTR_NAME_TARGET};
+ getDeclarations(attributes, Arrays.asList(names).iterator());
+
+ // (type %ContentType; #IMPLIED)
+ HTMLCMDataTypeImpl atype = new HTMLCMDataTypeImpl(HTMLCMDataType.CONTENT_TYPE);
+ HTMLAttrDeclImpl attr = new HTMLAttrDeclImpl(ATTR_NAME_TYPE, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_TYPE, attr);
+
+ }
+ /* (charset %Charset; #IMPLIED)
+ * (type %ContentType; #IMPLIED)
+ * (name CDATA #IMPLIED)
+ * (href %URI; #IMPLIED)
+ * (hreflang %LanguageCode; #IMPLIED)
+ * (target %FrameTarget; #IMPLIED)
+ * (rel %LinkTypes; #IMPLIED)
+ * (rev %LinkTypes; #IMPLIED)
+ * (accesskey %Character; #IMPLIED)
+ * (directkey %Character; #IMPLIED)
+ * (shape %Shape; rect)
+ * (coords %Coords; #IMPLIED)
+ * (tabindex NUMBER #IMPLIED)
+ * (onfocus %Script; #IMPLIED)
+ * (onblur %Script; #IMPLIED)
+ */
+ else if (elementName.equals(HTML40Namespace.ElementName.A)){
+ String[] names = {ATTR_NAME_CHARSET, ATTR_NAME_TYPE, ATTR_NAME_NAME, ATTR_NAME_HREF, ATTR_NAME_HREFLANG, ATTR_NAME_TARGET, ATTR_NAME_REL, ATTR_NAME_REV, ATTR_NAME_ACCESSKEY, ATTR_NAME_DIRECTKEY, ATTR_NAME_SHAPE, ATTR_NAME_COORDS, ATTR_NAME_TABINDEX, ATTR_NAME_ONFOCUS, ATTR_NAME_ONBLUR};
+ getDeclarations(attributes, Arrays.asList(names).iterator());
+
+ }
+ /*
+ * (shape %Shape; rect)
+ * (coords %Coords; #IMPLIED)
+ * (href %URI; #IMPLIED)
+ * (target %FrameTarget; #IMPLIED)
+ * (nohref (nohref) #IMPLIED)
+ * (alt %Text; #REQUIRED)
+ * (tabindex NUMBER #IMPLIED)
+ * (accesskey %Character; #IMPLIED)
+ * (onfocus %Script; #IMPLIED)
+ * (onblur %Script; #IMPLIED)
+ */
+ else if (elementName.equals(HTML40Namespace.ElementName.AREA)){
+ String[] names = {ATTR_NAME_SHAPE, ATTR_NAME_COORDS, ATTR_NAME_HREF, ATTR_NAME_TARGET, ATTR_NAME_NOHREF, ATTR_NAME_ALT, ATTR_NAME_TABINDEX, ATTR_NAME_ACCESSKEY, ATTR_NAME_ONFOCUS, ATTR_NAME_ONBLUR};
+ getDeclarations(attributes, Arrays.asList(names).iterator());
+ }
+ /*
+ * %i18n;
+ * (http-equiv NAME #IMPLIED)
+ * (name NAME #IMPLIED) ... should be defined locally.
+ * (content CDATA #REQUIRED)
+ * (scheme CDATA #IMPLIED)
+ */
+ else if (elementName.equals(HTML40Namespace.ElementName.META)){
+ // %i18n;
+ getI18n(attributes);
+
+ // (name NAME #IMPLIED) ... should be defined locally.
+ HTMLCMDataTypeImpl atype = new HTMLCMDataTypeImpl(HTMLCMDataType.NAME);
+ HTMLAttrDeclImpl attr = new HTMLAttrDeclImpl(ATTR_NAME_NAME, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_NAME, attr);
+
+ String[] names = {ATTR_NAME_HTTP_EQUIV, ATTR_NAME_CONTENT, ATTR_NAME_SCHEME};
+ getDeclarations(attributes, Arrays.asList(names).iterator());
+ }
+ /*
+ * (src %URI; #REQUIRED): should be defined locally.
+ * (alt %Text; #REQUIRED)
+ * (longdesc %URI; #IMPLIED)
+ * (name CDATA #IMPLIED)
+ * (height %Length; #IMPLIED)
+ * (width %Length; #IMPLIED)
+ * (usemap %URI; #IMPLIED)
+ * (ismap (ismap) #IMPLIED)
+ * (align %IAlign; #IMPLIED): should be defined locally.
+ * (border %Pixels; #IMPLIED)
+ * (hspace %Pixels; #IMPLIED)
+ * (vspace %Pixels; #IMPLIED)
+ * (mapfile %URI; #IMPLIED)
+
+ */
+ else if (elementName.equals(HTML40Namespace.ElementName.IMG)){
+ // (src %URI; #REQUIRED): should be defined locally.
+ HTMLCMDataTypeImpl atype = null;
+ HTMLAttrDeclImpl attr = null;
+ atype = new HTMLCMDataTypeImpl(CMDataType.URI);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_SRC, atype, CMAttributeDeclaration.REQUIRED);
+ attributes.putNamedItem(ATTR_NAME_SRC, attr);
+
+ String[] names = {ATTR_NAME_ALT, ATTR_NAME_LONGDESC, ATTR_NAME_NAME, ATTR_NAME_HEIGHT, ATTR_NAME_WIDTH, ATTR_NAME_USEMAP, ATTR_NAME_ISMAP, ATTR_NAME_BORDER, ATTR_NAME_HSPACE, ATTR_NAME_VSPACE, ATTR_NAME_MAPFILE};
+ getDeclarations(attributes, Arrays.asList(names).iterator());
+
+ // align (local); should be defined locally.
+ attr = AttributeCollection.createAlignForImage();
+ attributes.putNamedItem(ATTR_NAME_ALIGN, attr);
+
+ }
+ /*
+ * (id ID #IMPLIED)
+ * (name CDATA #REQUIRED) ... should be defined locally.
+ * (value CDATA #IMPLIED)
+ * (valuetype (DATA|REF|OBJECT) DATA)
+ * (type %ContentType; #IMPLIED)
+ */
+ else if (elementName.equals(HTML40Namespace.ElementName.PARAM)){
+ String[] names = {ATTR_NAME_ID, ATTR_NAME_VALUE, ATTR_NAME_VALUETYPE, ATTR_NAME_TYPE};
+ getDeclarations(attributes, Arrays.asList(names).iterator());
+
+ // (name CDATA #REQUIRED) ... should be defined locally.
+ HTMLCMDataTypeImpl atype = new HTMLCMDataTypeImpl(CMDataType.CDATA);
+ HTMLAttrDeclImpl attr = new HTMLAttrDeclImpl(ATTR_NAME_NAME, atype, CMAttributeDeclaration.REQUIRED);
+ attributes.putNamedItem(ATTR_NAME_NAME, attr);
+ }
+ /*
+ * %reserved; ... empty
+ * (name CDATA #IMPLIED)
+ * (rows NUMBER #REQUIRED)
+ * (cols NUMBER #REQUIRED)
+ * (disabled (disabled) #IMPLIED)
+ * (readonly (readonly) #IMPLIED)
+ * (tabindex NUMBER #IMPLIED)
+ * (accesskey %Character; #IMPLIED)
+ * (onfocus %Script; #IMPLIED)
+ * (onblur %Script; #IMPLIED)
+ * (onselect %Script; #IMPLIED)
+ * (onchange %Script; #IMPLIED)
+ * (istyle CDATA #IMPLIED)
+ */
+ else if (elementName.equals(HTML40Namespace.ElementName.TEXTAREA)){
+ String[] names = {ATTR_NAME_NAME, ATTR_NAME_ROWS, ATTR_NAME_COLS, ATTR_NAME_DISABLED, ATTR_NAME_READONLY, ATTR_NAME_TABINDEX, ATTR_NAME_ACCESSKEY, ATTR_NAME_ONFOCUS, ATTR_NAME_ONBLUR, ATTR_NAME_ONSELECT, ATTR_NAME_ONCHANGE, ATTR_NAME_ISTYLE};
+ getDeclarations(attributes, Arrays.asList(names).iterator());
+ }
+ /*
+ * (charset %Charset; #IMPLIED)
+ * (type %ContentType; #REQUIRED) ... should be defined locally.
+ * (language CDATA #IMPLIED)
+ * (src %URI; #IMPLIED)
+ * (defer (defer) #IMPLIED)
+ * (event CDATA #IMPLIED)
+ * (for %URI; #IMPLIED)
+ */
+ else if (elementName.equals(HTML40Namespace.ElementName.SCRIPT)){
+ String[] names = {ATTR_NAME_CHARSET, ATTR_NAME_LANGUAGE, ATTR_NAME_SRC, ATTR_NAME_DEFER, ATTR_NAME_EVENT, ATTR_NAME_FOR};
+ getDeclarations(attributes, Arrays.asList(names).iterator());
+
+ // (type %ContentType; #REQUIRED) ... should be defined locally.
+ HTMLCMDataTypeImpl atype = new HTMLCMDataTypeImpl(HTMLCMDataType.CONTENT_TYPE);
+ atype.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, "text/javascript"); //$NON-NLS-1$
+ HTMLAttrDeclImpl attr = new HTMLAttrDeclImpl(ATTR_NAME_TYPE, atype, CMAttributeDeclaration.REQUIRED);
+ attributes.putNamedItem(ATTR_NAME_TYPE, attr);
+
+ }
+ /*
+ * %i18n;
+ * (type %ContentType; #REQUIRED) ... should be defined locally.
+ * (media %MediaDesc; #IMPLIED)
+ * (title %Text; #IMPLIED)
+ */
+ else if (elementName.equals(HTML40Namespace.ElementName.STYLE)){
+ // %i18n;
+ getI18n(attributes);
+
+ String[] names = {ATTR_NAME_MEDIA, ATTR_NAME_TITLE};
+ getDeclarations(attributes, Arrays.asList(names).iterator());
+ // (type %ContentType; #REQUIRED) ... should be defined locally.
+ HTMLCMDataTypeImpl atype = new HTMLCMDataTypeImpl(HTMLCMDataType.CONTENT_TYPE);
+ atype.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, "text/css"); //$NON-NLS-1$
+ HTMLAttrDeclImpl attr = new HTMLAttrDeclImpl(ATTR_NAME_TYPE, atype, CMAttributeDeclaration.REQUIRED);
+ attributes.putNamedItem(ATTR_NAME_TYPE, attr);
+
+ }
+ /*
+ * %reserved;
+ * (name CDATA #IMPLIED)
+ * (size NUMBER #IMPLIED) ... should be defined locally.
+ * (multiple (multiple) #IMPLIED)
+ * (disabled (disabled) #IMPLIED)
+ * (tabindex NUMBER #IMPLIED)
+ * (onfocus %Script; #IMPLIED)
+ * (onblur %Script; #IMPLIED)
+ * (onchange %Script; #IMPLIED)
+ */
+ else if (elementName.equals(HTML40Namespace.ElementName.SELECT)){
+ // (size NUMBER #IMPLIED) ... should be defined locally.
+ HTMLCMDataTypeImpl atype = new HTMLCMDataTypeImpl(CMDataType.NUMBER);
+ HTMLAttrDeclImpl attr = new HTMLAttrDeclImpl(ATTR_NAME_SIZE, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_SIZE, attr);
+
+ String[] names = {ATTR_NAME_NAME, ATTR_NAME_MULTIPLE, ATTR_NAME_DISABLED, ATTR_NAME_TABINDEX, ATTR_NAME_ONFOCUS, ATTR_NAME_ONBLUR, ATTR_NAME_ONCHANGE};
+ getDeclarations(attributes, Arrays.asList(names).iterator());
+
+ }
+ /*
+ * (type %LIStyle; #IMPLIED) ... should be defined locally.
+ * (value NUMBER #IMPLIED) ... should be defined locally.
+ */
+ else if (elementName.equals(HTML40Namespace.ElementName.LI)){
+ // (type %LIStyle; #IMPLIED) ... should be defined locally.
+ HTMLCMDataTypeImpl atype = new HTMLCMDataTypeImpl(HTMLCMDataType.LI_STYLE);
+ HTMLAttrDeclImpl attr = new HTMLAttrDeclImpl(ATTR_NAME_TYPE, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_TYPE, attr);
+
+ // (value NUMBER #IMPLIED) ... should be defined locally.
+ atype = new HTMLCMDataTypeImpl(CMDataType.NUMBER);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_VALUE, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_VALUE, attr);
+
+ }
+ /*
+ * (type %OLStyle; #IMPLIED) ... should be defined locally.
+ * (compact (compact) #IMPLIED)
+ * (start NUMBER #IMPLIED)
+ */
+ else if (elementName.equals(HTML40Namespace.ElementName.OL)){
+ // (type %OLStyle; #IMPLIED) ... should be defined locally.
+ HTMLCMDataTypeImpl atype = new HTMLCMDataTypeImpl(HTMLCMDataType.OL_STYLE);
+ HTMLAttrDeclImpl attr = new HTMLAttrDeclImpl(ATTR_NAME_TYPE, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_TYPE, attr);
+
+ // the rest.
+ String[] names = {ATTR_NAME_COMPACT, ATTR_NAME_START};
+ getDeclarations(attributes, Arrays.asList(names).iterator());
+
+ }
+ /**
+ * %coreattrs;
+ * (longdesc %URI; #IMPLIED)
+ * (name CDATA #IMPLIED)
+ * (src %URI; #IMPLIED)
+ * (frameborder (1|0) 1)
+ * (marginwidth %Pixels; #IMPLIED)
+ * (marginheight %Pixels; #IMPLIED)
+ * (scrolling (yes|no|auto) auto)
+ * (align %IAlign; #IMPLIED) ... should be defined locally.
+ * (height %Length; #IMPLIED)
+ * (width %Length; #IMPLIED)
+ */
+ else if (elementName.equals(HTML40Namespace.ElementName.IFRAME)){
+ // %coreattrs;
+ getCore(attributes);
+
+ String[] names = {ATTR_NAME_LONGDESC, ATTR_NAME_NAME, ATTR_NAME_SRC, ATTR_NAME_FRAMEBORDER, ATTR_NAME_MARGINWIDTH, ATTR_NAME_MARGINHEIGHT, ATTR_NAME_SCROLLING, ATTR_NAME_HEIGHT, ATTR_NAME_WIDTH};
+ getDeclarations(attributes, Arrays.asList(names).iterator());
+
+ // align
+ HTMLAttrDeclImpl attr = AttributeCollection.createAlignForImage();
+ if (attr != null)
+ attributes.putNamedItem(ATTR_NAME_ALIGN, attr);
+
+ }
+ /*
+ * %i18n attrs
+ * %version
+ */
+ else if (elementName.equals(HTML40Namespace.ElementName.HTML)){
+ // %i18n;
+ getI18n(attributes);
+ // version
+ HTMLAttributeDeclaration adec = getDeclaration(ATTR_NAME_VERSION);
+ if (adec != null)
+ attributes.putNamedItem(ATTR_NAME_VERSION, adec);
+
+ }
+ /*
+ * (compact (compact) #IMPLIED)
+ */
+ else if (elementName.equals(HTML40Namespace.ElementName.MENU)){
+ String[] names = {ATTR_NAME_COMPACT};
+ getDeclarations(attributes, Arrays.asList(names).iterator());
+
+ }
+ /*
+ * %reserved; ... empty.
+ * (name CDATA #IMPLIED)
+ * (value CDATA #IMPLIED)
+ * (type (button|submit|reset) submit) ... should be defined locally.
+ * (disabled (disabled) #IMPLIED)
+ * (tabindex NUMBER #IMPLIED)
+ * (accesskey %Character; #IMPLIED)
+ * (onfocus %Script; #IMPLIED)
+ * (onblur %Script; #IMPLIED)
+ */
+ else if (elementName.equals(HTML40Namespace.ElementName.BUTTON)){
+ String[] names = {ATTR_NAME_NAME, ATTR_NAME_VALUE, ATTR_NAME_DISABLED, ATTR_NAME_TABINDEX, ATTR_NAME_ACCESSKEY, ATTR_NAME_ONFOCUS, ATTR_NAME_ONBLUR};
+ getDeclarations(attributes, Arrays.asList(names).iterator());
+
+ // (type (button|submit|reset) submit) ... should be defined locally.
+ HTMLCMDataTypeImpl atype = new HTMLCMDataTypeImpl(CMDataType.ENUM);
+ String[] values = {ATTR_VALUE_BUTTON, ATTR_VALUE_SUBMIT, ATTR_VALUE_RESET};
+ atype.setEnumValues(values);
+
+ HTMLAttrDeclImpl attr = new HTMLAttrDeclImpl(ATTR_NAME_TYPE, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_TYPE, attr);
+
+ }
+ /*
+ * %reserved;
+ * (summary %Text; #IMPLIED)
+ * (width %Length; #IMPLIED)
+ * (border %Pixels; #IMPLIED)
+ * (frame %TFrame; #IMPLIED)
+ * (rules %TRules; #IMPLIED)
+ * (cellspacing %Length; #IMPLIED)
+ * (cellpadding %Length; #IMPLIED)
+ * (align %TAlign; #IMPLIED)
+ * (bgcolor %Color; #IMPLIED)
+ * (datapagesize CDATA #IMPLIED)
+ * (height %Pixels; #IMPLIED)
+ * (background %URI; #IMPLIED)
+ * (bordercolor %Color #IMPLIED) ... D205514
+ */
+ else if (elementName.equals(HTML40Namespace.ElementName.TABLE)){
+ // %reserved;
+ // ... %reserved; is empty in the current DTD.
+
+ String[] names = {ATTR_NAME_SUMMARY, ATTR_NAME_WIDTH, ATTR_NAME_BORDER, ATTR_NAME_FRAME, ATTR_NAME_RULES, ATTR_NAME_CELLSPACING, ATTR_NAME_CELLPADDING, ATTR_NAME_BGCOLOR, ATTR_NAME_DATAPAGESIZE, ATTR_NAME_HEIGHT, ATTR_NAME_BACKGROUND, ATTR_NAME_BORDERCOLOR // D205514
+ };
+ getDeclarations(attributes, Arrays.asList(names).iterator());
+
+ // align (local)
+ HTMLCMDataTypeImpl atype = new HTMLCMDataTypeImpl(CMDataType.ENUM);
+ String[] alignValues = {ATTR_VALUE_LEFT, ATTR_VALUE_CENTER, ATTR_VALUE_RIGHT};
+ atype.setEnumValues(alignValues);
+ HTMLAttrDeclImpl adec = new HTMLAttrDeclImpl(ATTR_NAME_ALIGN, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_ALIGN, adec);
+
+ }
+ }
}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/ComplexTypeDefinitionFactory.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/ComplexTypeDefinitionFactory.java
index 9a38d53..51d693d 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/ComplexTypeDefinitionFactory.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/ComplexTypeDefinitionFactory.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -28,6 +28,8 @@
public final static String CTYPE_COLUMN_GROUP = "CTYPE_COLUMN_GROUP";//$NON-NLS-1$
/** for DL. */
public final static String CTYPE_DEFINITION_LIST = "CTYPE_DEFINITION_LIST";//$NON-NLS-1$
+ /** for DETAILS */
+ public final static String CTYPE_DETAILS_CONTAINER = "CTYPE_DETAILS_CONTAINER";//$NON-NLS-1$
/** for EMBED. */
public final static String CTYPE_EMBED = "CTYPE_EMBED";//$NON-NLS-1$
/** empty content. No ComplexTypeDefinition instance should be created. */
@@ -64,7 +66,17 @@
public final static String CTYPE_TCELL_CONTAINER = "CTYPE_TCELL_CONTAINER";//$NON-NLS-1$
/** table record container. (TR)+ */
public final static String CTYPE_TR_CONTAINER = "CTYPE_TR_CONTAINER";//$NON-NLS-1$
-
+ /** heading group container. (H1|h2|H3|H4|H5|H6)+ */
+ public final static String CTYPE_HEADING_CONTAINER = "CTYPE_HGROUP_CONTAINER"; //$NON-NLS-1$
+ /** media content. (AUDIO|VIDEO) */
+ public final static String CTYPE_MEDIA_ELEMENT = "CTYPE_MEDIA";//$NON-NLS-1$
+ /** for DATALIST. */
+ public final static String CTYPE_DATALIST = "CTYPE_DATALIST";//$NON-NLS-1$
+ /** for FIGURE. */
+ public final static String CTYPE_FIGURE = "CTYPE_FIGURE";//$NON-NLS-1$
+ /** for RUBY. */
+ public final static String CTYPE_RUBY = "CTYPE_RUBY";//$NON-NLS-1$
+
/**
* ComplexTypeDefinitionFactory constructor comment.
*/
@@ -81,8 +93,17 @@
* @param elementCollection ElementCollection
*/
public ComplexTypeDefinition createTypeDefinition(String definitionName, ElementCollection elementCollection) {
+ ComplexTypeDefinition[] defs = null;
if (definitions.containsKey(definitionName)) {
- return (ComplexTypeDefinition) definitions.get(definitionName);
+ defs = (ComplexTypeDefinition[]) definitions.get(definitionName);
+ for (int i = 0; i < defs.length; i++) {
+ if (defs[i].collection == elementCollection)
+ return defs[i];
+ }
+ }
+ else {
+ // initialize a new definition
+ defs = new ComplexTypeDefinition[0];
}
ComplexTypeDefinition def = null;
@@ -94,10 +115,17 @@
def = new CtdColumnGroup(elementCollection);
}
+ else if (definitionName == CTYPE_DATALIST) {
+ def = new CtdDatalist(elementCollection);
+
+ }
else if (definitionName == CTYPE_DEFINITION_LIST) {
def = new CtdDl(elementCollection);
}
+ else if (definitionName == CTYPE_DETAILS_CONTAINER) {
+ def = new CtdDetails(elementCollection);
+ }
else if (definitionName == CTYPE_EMBED) {
def = new CtdEmbed(elementCollection);
@@ -106,6 +134,10 @@
def = new CtdFieldset(elementCollection);
}
+ else if (definitionName == CTYPE_FIGURE) {
+ def = new CtdFigure(elementCollection);
+
+ }
else if (definitionName == CTYPE_FLOW_CONTAINER) {
def = new CtdFlowContainer(elementCollection);
@@ -118,6 +150,9 @@
def = new CtdHead(elementCollection);
}
+ else if (definitionName == CTYPE_HEADING_CONTAINER) {
+ def = new CtdHeadingContainer(elementCollection);
+ }
else if (definitionName == CTYPE_HTML) {
def = new CtdHtml(elementCollection);
@@ -134,6 +169,10 @@
def = new CtdMap(elementCollection);
}
+ else if (definitionName == CTYPE_MEDIA_ELEMENT) {
+ def = new CtdMediaElement(elementCollection);
+
+ }
else if (definitionName == CTYPE_NOFRAMES_CONTENT) {
def = new CtdNoframesContent(elementCollection);
@@ -146,6 +185,10 @@
def = new CtdParamContainer(elementCollection);
}
+ else if (definitionName == CTYPE_RUBY) {
+ def = new CtdRuby(elementCollection);
+
+ }
else if (definitionName == CTYPE_SELECT) {
def = new CtdSelect(elementCollection);
@@ -167,7 +210,11 @@
}
if (def == null)
return null; // fail to create.
- definitions.put(definitionName, def);
+ ComplexTypeDefinition[] temp = defs;
+ defs = new ComplexTypeDefinition[defs.length + 1];
+ System.arraycopy(temp, 0, defs, 0, temp.length);
+ defs[temp.length] = def;
+ definitions.put(definitionName, defs);
return def;
}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/CtdDatalist.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/CtdDatalist.java
new file mode 100644
index 0000000..457debf
--- /dev/null
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/CtdDatalist.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.html.core.internal.contentmodel;
+
+
+
+import org.eclipse.wst.html.core.internal.provisional.HTML40Namespace;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMElementDeclaration;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMGroup;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMNode;
+
+/**
+ * for DATALIST.
+ */
+final class CtdDatalist extends ComplexTypeDefinition {
+
+ /**
+ * @param elementCollection ElementCollection
+ */
+ public CtdDatalist(ElementCollection elementCollection) {
+ super(elementCollection);
+ primaryCandidateName = HTML40Namespace.ElementName.OPTION;
+ }
+
+ /**
+ * (OPTION)+.
+ */
+ protected void createContent() {
+ if (content != null)
+ return; // already created.
+ if (collection == null)
+ return;
+
+
+ content = new CMGroupImpl(CMGroup.CHOICE, 1, CMContentImpl.UNBOUNDED);
+ // OPTION
+ CMNode dec = collection.getNamedItem(HTML40Namespace.ElementName.OPTION);
+ if (dec != null)
+ content.appendChild(dec);
+ }
+
+ /**
+ * (OPTION)+.
+ * @return int; Should be one of ANY, EMPTY, ELEMENT, MIXED, PCDATA, CDATA,
+ * those are defined in CMElementDeclaration.
+ */
+ public int getContentType() {
+ return CMElementDeclaration.ELEMENT;
+ }
+
+ /**
+ * @return java.lang.String
+ */
+ public String getTypeName() {
+ return ComplexTypeDefinitionFactory.CTYPE_DATALIST;
+ }
+}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/CtdDetails.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/CtdDetails.java
new file mode 100644
index 0000000..914d5db
--- /dev/null
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/CtdDetails.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.html.core.internal.contentmodel;
+
+import org.eclipse.wst.html.core.internal.provisional.HTML50Namespace;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMElementDeclaration;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMGroup;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMNode;
+
+public class CtdDetails extends ComplexTypeDefinition {
+
+ public CtdDetails(ElementCollection elementCollection) {
+ super(elementCollection);
+ primaryCandidateName = HTML50Namespace.ElementName.SUMMARY;
+ }
+
+ protected void createContent() {
+ if (content != null)
+ return; // already created.
+ if (collection == null)
+ return;
+
+ content = new CMGroupImpl(CMGroup.SEQUENCE, 1, 1);
+ // summary
+ CMNode dec = collection.getNamedItem(HTML50Namespace.ElementName.SUMMARY);
+ if (dec != null)
+ content.appendChild(dec);
+
+ CMGroupImpl group = new CMGroupImpl(CMGroup.CHOICE, 1, CMContentImpl.UNBOUNDED);
+ content.appendChild(group);
+ collection.getFlow(group);
+ }
+
+ public int getContentType() {
+ return CMElementDeclaration.ELEMENT;
+ }
+
+ public String getTypeName() {
+ return ComplexTypeDefinitionFactory.CTYPE_DETAILS_CONTAINER;
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/CtdFigure.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/CtdFigure.java
new file mode 100644
index 0000000..165054f
--- /dev/null
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/CtdFigure.java
@@ -0,0 +1,93 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.html.core.internal.contentmodel;
+
+
+
+import org.eclipse.wst.html.core.internal.provisional.HTML50Namespace;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMElementDeclaration;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMGroup;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMNode;
+
+/**
+ * for FIGURE.
+ */
+final class CtdFigure extends ComplexTypeDefinition {
+
+ /**
+ * @param elementCollection ElementCollection
+ */
+ public CtdFigure(ElementCollection elementCollection) {
+ super(elementCollection);
+ primaryCandidateName = HTML50Namespace.ElementName.FIGCAPTION;
+ }
+
+ /**
+ * (FIGCAPTION)+.
+ */
+ protected void createContent() {
+ if (content != null)
+ return; // already created.
+ if (collection == null)
+ return;
+
+ // ( | )+
+ content = new CMGroupImpl(CMGroup.CHOICE, 1, 1);
+
+ CMGroupImpl group1 = new CMGroupImpl(CMGroup.SEQUENCE, 1, 1);
+ if (group1 != null){
+ content.appendChild(group1);
+ }
+ // FIGCAPTION, FLOW
+ CMNode dec = collection.getNamedItem(HTML50Namespace.ElementName.FIGCAPTION);
+ if (dec != null)
+ group1.appendChild(dec);
+ CMGroupImpl flowgroup = new CMGroupImpl(CMGroup.SEQUENCE, 1, 1);
+ group1.appendChild(flowgroup);
+ collection.getFlow(flowgroup);
+
+ CMGroupImpl group2 = new CMGroupImpl(CMGroup.SEQUENCE, 1, 1);
+ if (group2 != null){
+ content.appendChild(group2);
+ }
+ // FLOW , FIGCAPTION
+ CMGroupImpl flowgroup2 = new CMGroupImpl(CMGroup.SEQUENCE, 1, 1);
+ group2.appendChild(flowgroup2);
+ collection.getFlow(flowgroup2);
+ CMNode dec1 = collection.getNamedItem(HTML50Namespace.ElementName.FIGCAPTION);
+ if (dec1 != null)
+ group2.appendChild(dec1);
+ //FLOW
+ CMGroupImpl group3 = new CMGroupImpl(CMGroup.SEQUENCE, 1, 1);
+ if (group3 != null){
+ content.appendChild(group3);
+
+ }
+ collection.getFlow(group3);
+
+ }
+
+ /**
+ * (FIGCAPTION)+.
+ * @return int; Should be one of ANY, EMPTY, ELEMENT, MIXED, PCDATA, CDATA,
+ * those are defined in CMElementDeclaration.
+ */
+ public int getContentType() {
+ return CMElementDeclaration.ELEMENT;
+ }
+
+ /**
+ * @return java.lang.String
+ */
+ public String getTypeName() {
+ return ComplexTypeDefinitionFactory.CTYPE_FIGURE;
+ }
+}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/CtdHeadingContainer.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/CtdHeadingContainer.java
new file mode 100644
index 0000000..e7fdba7
--- /dev/null
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/CtdHeadingContainer.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.wst.html.core.internal.contentmodel;
+
+import org.eclipse.wst.xml.core.internal.contentmodel.CMElementDeclaration;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMGroup;
+
+
+public class CtdHeadingContainer extends ComplexTypeDefinition {
+
+ /**
+ * @param elementCollection ElementCollection
+ */
+ public CtdHeadingContainer(ElementCollection elementCollection) {
+ super(elementCollection);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.wst.html.core.internal.contentmodel.ComplexTypeDefinition#createContent()
+ */
+ protected void createContent() {
+ if (content != null)
+ return; // already created.
+ if (collection == null)
+ return;
+ // ( )*
+ content = new CMGroupImpl(CMGroup.CHOICE, 1, CMContentImpl.UNBOUNDED);
+ // H1|H2|H3|H4|H5|H6
+ collection.getHeading(content);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.wst.html.core.internal.contentmodel.ComplexTypeDefinition#getContentType()
+ */
+ public int getContentType() {
+ return CMElementDeclaration.ELEMENT;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.wst.html.core.internal.contentmodel.ComplexTypeDefinition#getTypeName()
+ */
+ public String getTypeName() {
+ return ComplexTypeDefinitionFactory.CTYPE_HEADING_CONTAINER;
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/CtdHtml.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/CtdHtml.java
index d2396fc..ca7295b 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/CtdHtml.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/CtdHtml.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -15,6 +15,7 @@
import java.util.Arrays;
import org.eclipse.wst.html.core.internal.provisional.HTML40Namespace;
+import org.eclipse.wst.html.core.internal.provisional.HTML50Namespace;
import org.eclipse.wst.xml.core.internal.contentmodel.CMElementDeclaration;
import org.eclipse.wst.xml.core.internal.contentmodel.CMGroup;
import org.eclipse.wst.xml.core.internal.contentmodel.CMNode;
@@ -319,6 +320,53 @@
edec = collection.getNamedItem(HTML40Namespace.ElementName.STRONG);
if (edec != null)
content.appendChild(edec);
+ edec = collection.getNamedItem(HTML50Namespace.ElementName.ARTICLE);
+ if (edec != null)
+ content.appendChild(edec);
+
+ edec = collection.getNamedItem(HTML50Namespace.ElementName.ASIDE);
+ if (edec != null)
+ content.appendChild(edec);
+ edec = collection.getNamedItem(HTML50Namespace.ElementName.NAV);
+ if (edec != null)
+ content.appendChild(edec);
+
+ edec = collection.getNamedItem(HTML50Namespace.ElementName.SECTION);
+ if (edec != null)
+ content.appendChild(edec);
+ edec = collection.getNamedItem(HTML50Namespace.ElementName.AUDIO);
+ if (edec != null)
+ content.appendChild(edec);
+
+ edec = collection.getNamedItem(HTML50Namespace.ElementName.VIDEO);
+ if (edec != null)
+ content.appendChild(edec);
+ edec = collection.getNamedItem(HTML50Namespace.ElementName.CANVAS);
+ if (edec != null)
+ content.appendChild(edec);
+
+ edec = collection.getNamedItem(HTML50Namespace.ElementName.COMMAND);
+ if (edec != null)
+ content.appendChild(edec);
+
+ edec = collection.getNamedItem(HTML50Namespace.ElementName.HEADER);
+ if (edec != null)
+ content.appendChild(edec);
+
+ edec = collection.getNamedItem(HTML50Namespace.ElementName.FOOTER);
+ if (edec != null)
+ content.appendChild(edec);
+
+ edec = collection.getNamedItem(HTML50Namespace.ElementName.MARK);
+ if (edec != null)
+ content.appendChild(edec);
+
+ edec = collection.getNamedItem(HTML50Namespace.ElementName.FIGURE);
+ if (edec != null)
+ content.appendChild(edec);
+ edec = collection.getNamedItem(HTML50Namespace.ElementName.RUBY);
+ if (edec != null)
+ content.appendChild(edec);
}
/**
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/CtdMediaElement.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/CtdMediaElement.java
new file mode 100644
index 0000000..95cb598
--- /dev/null
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/CtdMediaElement.java
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.html.core.internal.contentmodel;
+
+import org.eclipse.wst.html.core.internal.provisional.HTML50Namespace;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMElementDeclaration;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMGroup;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMNode;
+
+
+public class CtdMediaElement extends ComplexTypeDefinition {
+
+ /**
+ * @param elementCollection ElementCollection
+ */
+ public CtdMediaElement(ElementCollection elementCollection) {
+ super(elementCollection);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.wst.html.core.internal.contentmodel.ComplexTypeDefinition#createContent()
+ */
+ protected void createContent() {
+ if (content != null)
+ return; // already created.
+ if (collection == null)
+ return;
+ // ( )*
+ content = new CMGroupImpl(CMGroup.SEQUENCE,0, 1);
+ //source
+ CMNode source = collection.getNamedItem(HTML50Namespace.ElementName.SOURCE);
+ if (source != null)
+ content.appendChild(source);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.wst.html.core.internal.contentmodel.ComplexTypeDefinition#getContentType()
+ */
+ public int getContentType() {
+ return CMElementDeclaration.ELEMENT;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.wst.html.core.internal.contentmodel.ComplexTypeDefinition#getTypeName()
+ */
+ public String getTypeName() {
+ return ComplexTypeDefinitionFactory.CTYPE_MEDIA_ELEMENT;
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/CtdRuby.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/CtdRuby.java
new file mode 100644
index 0000000..9ec37d0
--- /dev/null
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/CtdRuby.java
@@ -0,0 +1,94 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.html.core.internal.contentmodel;
+
+
+
+import org.eclipse.wst.html.core.internal.provisional.HTML50Namespace;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMElementDeclaration;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMGroup;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMNode;
+
+/**
+ * for RUBY.
+ */
+final class CtdRuby extends ComplexTypeDefinition {
+
+ /**
+ * @param elementCollection ElementCollection
+ */
+ public CtdRuby(ElementCollection elementCollection) {
+ super(elementCollection);
+ primaryCandidateName = HTML50Namespace.ElementName.RT;
+ }
+
+ /**
+ * (RT)+.
+ */
+ protected void createContent() {
+ if (content != null)
+ return; // already created.
+ if (collection == null)
+ return;
+
+
+ content = new CMGroupImpl(CMGroup.SEQUENCE, 1, CMContentImpl.UNBOUNDED);
+
+ CMGroupImpl phraseGroup = new CMGroupImpl(CMGroup.CHOICE, 0, CMContentImpl.UNBOUNDED);
+ if (phraseGroup == null)
+ return;
+ content.appendChild(phraseGroup);
+ collection.getPhrase(phraseGroup);
+
+ CMGroupImpl rtrpgroup = new CMGroupImpl(CMGroup.CHOICE, 1, 1);
+ if (rtrpgroup == null)
+ return;
+ content.appendChild(rtrpgroup);
+
+ //RT
+ CMNode dec = collection.getNamedItem(HTML50Namespace.ElementName.RT);
+ if (dec != null)
+ rtrpgroup.appendChild(dec);
+
+ CMGroupImpl rpgroup = new CMGroupImpl(CMGroup.SEQUENCE, 1, 1);
+ if (rpgroup == null)
+ return;
+ rtrpgroup.appendChild(rpgroup);
+
+ // RP
+ dec = collection.getNamedItem(HTML50Namespace.ElementName.RP);
+ if (dec != null)
+ rpgroup.appendChild(dec);
+ // RT
+ dec = collection.getNamedItem(HTML50Namespace.ElementName.RT);
+ if (dec != null)
+ rpgroup.appendChild(dec);
+ dec = collection.getNamedItem(HTML50Namespace.ElementName.RP);
+ if (dec != null)
+ rpgroup.appendChild(dec);
+ }
+
+ /**
+ * (RT)+.
+ * @return int; Should be one of ANY, EMPTY, ELEMENT, MIXED, PCDATA, CDATA,
+ * those are defined in CMElementDeclaration.
+ */
+ public int getContentType() {
+ return CMElementDeclaration.ELEMENT;
+ }
+
+ /**
+ * @return java.lang.String
+ */
+ public String getTypeName() {
+ return ComplexTypeDefinitionFactory.CTYPE_RUBY;
+ }
+}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/ElementCollection.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/ElementCollection.java
index 8349964..92ddfdf 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/ElementCollection.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/ElementCollection.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -22,11 +22,11 @@
/**
* Factory for element declarations.
*/
-final class ElementCollection extends DeclCollection implements org.eclipse.wst.html.core.internal.provisional.HTML40Namespace.ElementName {
+class ElementCollection extends DeclCollection implements org.eclipse.wst.html.core.internal.provisional.HTML40Namespace.ElementName {
// Element IDs
- private static class Ids {
+ protected static class Ids {
public static final int ID_A = 0;
public static final int ID_ABBR = 1;
public static final int ID_ACRONYM = 2;
@@ -183,123 +183,18 @@
private static final String[] LIST = {UL, OL, DIR, MENU};
/** %preformatted;. PRE */
private static final String[] PREFORMATTED = {PRE};
- private AttributeCollection attributeCollection = null;
+ protected AttributeCollection attributeCollection = null;
private static String[] fNames = null;
- static {
- fNames = new String[Ids.getNumOfIds()];
- fNames[Ids.ID_A] = A;
- fNames[Ids.ID_ABBR] = ABBR;
- fNames[Ids.ID_ACRONYM] = ACRONYM;
- fNames[Ids.ID_ADDRESS] = ADDRESS;
- fNames[Ids.ID_APPLET] = APPLET;
- fNames[Ids.ID_AREA] = AREA;
- fNames[Ids.ID_B] = B;
- fNames[Ids.ID_BASE] = BASE;
- fNames[Ids.ID_BASEFONT] = BASEFONT;
- fNames[Ids.ID_BDO] = BDO;
- fNames[Ids.ID_BIG] = BIG;
- fNames[Ids.ID_BLINK] = BLINK;
- fNames[Ids.ID_BLOCKQUOTE] = BLOCKQUOTE;
- fNames[Ids.ID_BODY] = BODY;
- fNames[Ids.ID_BR] = BR;
- fNames[Ids.ID_BUTTON] = BUTTON;
- fNames[Ids.ID_CAPTION] = CAPTION;
- fNames[Ids.ID_CENTER] = CENTER;
- fNames[Ids.ID_CITE] = CITE;
- fNames[Ids.ID_CODE] = CODE;
- fNames[Ids.ID_COL] = COL;
- fNames[Ids.ID_COLGROUP] = COLGROUP;
- fNames[Ids.ID_DD] = DD;
- fNames[Ids.ID_DEL] = DEL;
- fNames[Ids.ID_DFN] = DFN;
- fNames[Ids.ID_DIR] = DIR;
- fNames[Ids.ID_DIV] = DIV;
- fNames[Ids.ID_DL] = DL;
- fNames[Ids.ID_DT] = DT;
- fNames[Ids.ID_EM] = EM;
- fNames[Ids.ID_EMBED] = EMBED;
- fNames[Ids.ID_FIELDSET] = FIELDSET;
- fNames[Ids.ID_FONT] = FONT;
- fNames[Ids.ID_FORM] = FORM;
- fNames[Ids.ID_FRAME] = FRAME;
- fNames[Ids.ID_FRAMESET] = FRAMESET;
- fNames[Ids.ID_H1] = H1;
- fNames[Ids.ID_H2] = H2;
- fNames[Ids.ID_H3] = H3;
- fNames[Ids.ID_H4] = H4;
- fNames[Ids.ID_H5] = H5;
- fNames[Ids.ID_H6] = H6;
- fNames[Ids.ID_HEAD] = HEAD;
- fNames[Ids.ID_HR] = HR;
- fNames[Ids.ID_HTML] = HTML;
- fNames[Ids.ID_I] = I;
- fNames[Ids.ID_IFRAME] = IFRAME;
- fNames[Ids.ID_IMG] = IMG;
- fNames[Ids.ID_INPUT] = INPUT;
- fNames[Ids.ID_INS] = INS;
- fNames[Ids.ID_ISINDEX] = ISINDEX;
- fNames[Ids.ID_KBD] = KBD;
- fNames[Ids.ID_LABEL] = LABEL;
- fNames[Ids.ID_LEGEND] = LEGEND;
- fNames[Ids.ID_LI] = LI;
- fNames[Ids.ID_LINK] = LINK;
- fNames[Ids.ID_MAP] = MAP;
- fNames[Ids.ID_MENU] = MENU;
- fNames[Ids.ID_META] = META;
- fNames[Ids.ID_NOEMBED] = NOEMBED;
- fNames[Ids.ID_NOFRAMES] = NOFRAMES;
- fNames[Ids.ID_NOSCRIPT] = NOSCRIPT;
- fNames[Ids.ID_OBJECT] = OBJECT;
- fNames[Ids.ID_OL] = OL;
- fNames[Ids.ID_OPTGROUP] = OPTGROUP;
- fNames[Ids.ID_OPTION] = OPTION;
- fNames[Ids.ID_P] = P;
- fNames[Ids.ID_PARAM] = PARAM;
- fNames[Ids.ID_PRE] = PRE;
- fNames[Ids.ID_Q] = Q;
- fNames[Ids.ID_S] = S;
- fNames[Ids.ID_SAMP] = SAMP;
- fNames[Ids.ID_SCRIPT] = SCRIPT;
- fNames[Ids.ID_SELECT] = SELECT;
- fNames[Ids.ID_SMALL] = SMALL;
- fNames[Ids.ID_SPAN] = SPAN;
- fNames[Ids.ID_STRIKE] = STRIKE;
- fNames[Ids.ID_STRONG] = STRONG;
- fNames[Ids.ID_STYLE] = STYLE;
- fNames[Ids.ID_SUB] = SUB;
- fNames[Ids.ID_SUP] = SUP;
- fNames[Ids.ID_TABLE] = TABLE;
- fNames[Ids.ID_TBODY] = TBODY;
- fNames[Ids.ID_TD] = TD;
- fNames[Ids.ID_TEXTAREA] = TEXTAREA;
- fNames[Ids.ID_TFOOT] = TFOOT;
- fNames[Ids.ID_TH] = TH;
- fNames[Ids.ID_THEAD] = THEAD;
- fNames[Ids.ID_TITLE] = TITLE;
- fNames[Ids.ID_TR] = TR;
- fNames[Ids.ID_TT] = TT;
- fNames[Ids.ID_U] = U;
- fNames[Ids.ID_UL] = UL;
- fNames[Ids.ID_VAR] = VAR;
- fNames[Ids.ID_MARQUEE] = MARQUEE;
- fNames[Ids.ID_SSI_CONFIG] = SSI_CONFIG;
- fNames[Ids.ID_SSI_ECHO] = SSI_ECHO;
- fNames[Ids.ID_SSI_EXEC] = SSI_EXEC;
- fNames[Ids.ID_SSI_FSIZE] = SSI_FSIZE;
- fNames[Ids.ID_SSI_FLASTMOD] = SSI_FLASTMOD;
- fNames[Ids.ID_SSI_INCLUDE] = SSI_INCLUDE;
- fNames[Ids.ID_SSI_PRINTENV] = SSI_PRINTENV;
- fNames[Ids.ID_SSI_SET] = SSI_SET;
- fNames[Ids.ID_BGSOUND] = BGSOUND;
- fNames[Ids.ID_NOBR] = NOBR;
- fNames[Ids.ID_WBR] = WBR;
- }
-
/**
*/
public ElementCollection(AttributeCollection collection) {
- super(fNames, TOLERANT_CASE);
+ super(getNames(), TOLERANT_CASE);
+ attributeCollection = collection;
+ }
+
+ public ElementCollection(String[] names, AttributeCollection collection) {
+ super(names, TOLERANT_CASE);
attributeCollection = collection;
}
@@ -747,7 +642,7 @@
return attributeCollection;
}
- public final Collection getNamesOfBlock() {
+ public Collection getNamesOfBlock() {
// P, DL, DIV, CENTER, NOSCRIPT, NOFRAMES, BLOCKQUOTE, FORM, ISINDEX, HR,
// TABLE, FIELDSET, ADDRESS
String[] blockMisc = {P, DL, DIV, CENTER, NOSCRIPT, NOFRAMES, BLOCKQUOTE, FORM, ISINDEX, HR, TABLE, FIELDSET, ADDRESS};
@@ -781,7 +676,7 @@
* into a <code>CMGroupImpl</code> instance.
* @param group CMGroupImpl Return values.
*/
- public final void getFlow(CMGroupImpl group) {
+ public void getFlow(CMGroupImpl group) {
if (group == null)
return;
getBlock(group);
@@ -793,7 +688,7 @@
* instance.<br>
* @param group CMGroupImpl Return values.
*/
- public final void getFontstyle(CMGroupImpl group) {
+ public void getFontstyle(CMGroupImpl group) {
if (group == null)
return;
getDeclarations(group, Arrays.asList(FONTSTYLE).iterator());
@@ -804,7 +699,7 @@
* instance.<br>
* @param group CMGroupImpl Return values.
*/
- public final void getFormctrl(CMGroupImpl group) {
+ public void getFormctrl(CMGroupImpl group) {
if (group == null)
return;
getDeclarations(group, Arrays.asList(FORMCTL).iterator());
@@ -814,7 +709,7 @@
* %heading;.
* @param group CMGroupImpl Return values.
*/
- public final void getHeading(CMGroupImpl group) {
+ public void getHeading(CMGroupImpl group) {
if (group == null)
return;
@@ -826,7 +721,7 @@
* into a <code>CMGroupImpl</code> instance.
* @param group CMGroupImpl Return values.
*/
- public final void getInline(CMGroupImpl group) {
+ public void getInline(CMGroupImpl group) {
if (group == null)
return;
getFontstyle(group);
@@ -839,7 +734,7 @@
* %list;.
* @param group CMGroupImpl Return values.
*/
- public final void getList(CMGroupImpl group) {
+ public void getList(CMGroupImpl group) {
if (group == null)
return;
@@ -851,7 +746,7 @@
* instance.<br>
* @param group CMGroupImpl Return values.
*/
- public final void getPhrase(CMGroupImpl group) {
+ public void getPhrase(CMGroupImpl group) {
if (group == null)
return;
getDeclarations(group, Arrays.asList(PHRASE).iterator());
@@ -861,7 +756,7 @@
* %preformatted;
* @param group CMGroupImpl Return values.
*/
- public final void getPreformatted(CMGroupImpl group) {
+ public void getPreformatted(CMGroupImpl group) {
if (group == null)
return;
@@ -873,9 +768,122 @@
* instance.<br>
* @param group CMGroupImpl Return values.
*/
- public final void getSpecial(CMGroupImpl group) {
+ public void getSpecial(CMGroupImpl group) {
if (group == null)
return;
getDeclarations(group, Arrays.asList(SPECIAL).iterator());
}
+
+ private static String[] getNames() {
+ if (fNames == null) {
+ fNames = new String[Ids.getNumOfIds()];
+ fNames[Ids.ID_A] = A;
+ fNames[Ids.ID_ABBR] = ABBR;
+ fNames[Ids.ID_ACRONYM] = ACRONYM;
+ fNames[Ids.ID_ADDRESS] = ADDRESS;
+ fNames[Ids.ID_APPLET] = APPLET;
+ fNames[Ids.ID_AREA] = AREA;
+ fNames[Ids.ID_B] = B;
+ fNames[Ids.ID_BASE] = BASE;
+ fNames[Ids.ID_BASEFONT] = BASEFONT;
+ fNames[Ids.ID_BDO] = BDO;
+ fNames[Ids.ID_BIG] = BIG;
+ fNames[Ids.ID_BLINK] = BLINK;
+ fNames[Ids.ID_BLOCKQUOTE] = BLOCKQUOTE;
+ fNames[Ids.ID_BODY] = BODY;
+ fNames[Ids.ID_BR] = BR;
+ fNames[Ids.ID_BUTTON] = BUTTON;
+ fNames[Ids.ID_CAPTION] = CAPTION;
+ fNames[Ids.ID_CENTER] = CENTER;
+ fNames[Ids.ID_CITE] = CITE;
+ fNames[Ids.ID_CODE] = CODE;
+ fNames[Ids.ID_COL] = COL;
+ fNames[Ids.ID_COLGROUP] = COLGROUP;
+ fNames[Ids.ID_DD] = DD;
+ fNames[Ids.ID_DEL] = DEL;
+ fNames[Ids.ID_DFN] = DFN;
+ fNames[Ids.ID_DIR] = DIR;
+ fNames[Ids.ID_DIV] = DIV;
+ fNames[Ids.ID_DL] = DL;
+ fNames[Ids.ID_DT] = DT;
+ fNames[Ids.ID_EM] = EM;
+ fNames[Ids.ID_EMBED] = EMBED;
+ fNames[Ids.ID_FIELDSET] = FIELDSET;
+ fNames[Ids.ID_FONT] = FONT;
+ fNames[Ids.ID_FORM] = FORM;
+ fNames[Ids.ID_FRAME] = FRAME;
+ fNames[Ids.ID_FRAMESET] = FRAMESET;
+ fNames[Ids.ID_H1] = H1;
+ fNames[Ids.ID_H2] = H2;
+ fNames[Ids.ID_H3] = H3;
+ fNames[Ids.ID_H4] = H4;
+ fNames[Ids.ID_H5] = H5;
+ fNames[Ids.ID_H6] = H6;
+ fNames[Ids.ID_HEAD] = HEAD;
+ fNames[Ids.ID_HR] = HR;
+ fNames[Ids.ID_HTML] = HTML;
+ fNames[Ids.ID_I] = I;
+ fNames[Ids.ID_IFRAME] = IFRAME;
+ fNames[Ids.ID_IMG] = IMG;
+ fNames[Ids.ID_INPUT] = INPUT;
+ fNames[Ids.ID_INS] = INS;
+ fNames[Ids.ID_ISINDEX] = ISINDEX;
+ fNames[Ids.ID_KBD] = KBD;
+ fNames[Ids.ID_LABEL] = LABEL;
+ fNames[Ids.ID_LEGEND] = LEGEND;
+ fNames[Ids.ID_LI] = LI;
+ fNames[Ids.ID_LINK] = LINK;
+ fNames[Ids.ID_MAP] = MAP;
+ fNames[Ids.ID_MENU] = MENU;
+ fNames[Ids.ID_META] = META;
+ fNames[Ids.ID_NOEMBED] = NOEMBED;
+ fNames[Ids.ID_NOFRAMES] = NOFRAMES;
+ fNames[Ids.ID_NOSCRIPT] = NOSCRIPT;
+ fNames[Ids.ID_OBJECT] = OBJECT;
+ fNames[Ids.ID_OL] = OL;
+ fNames[Ids.ID_OPTGROUP] = OPTGROUP;
+ fNames[Ids.ID_OPTION] = OPTION;
+ fNames[Ids.ID_P] = P;
+ fNames[Ids.ID_PARAM] = PARAM;
+ fNames[Ids.ID_PRE] = PRE;
+ fNames[Ids.ID_Q] = Q;
+ fNames[Ids.ID_S] = S;
+ fNames[Ids.ID_SAMP] = SAMP;
+ fNames[Ids.ID_SCRIPT] = SCRIPT;
+ fNames[Ids.ID_SELECT] = SELECT;
+ fNames[Ids.ID_SMALL] = SMALL;
+ fNames[Ids.ID_SPAN] = SPAN;
+ fNames[Ids.ID_STRIKE] = STRIKE;
+ fNames[Ids.ID_STRONG] = STRONG;
+ fNames[Ids.ID_STYLE] = STYLE;
+ fNames[Ids.ID_SUB] = SUB;
+ fNames[Ids.ID_SUP] = SUP;
+ fNames[Ids.ID_TABLE] = TABLE;
+ fNames[Ids.ID_TBODY] = TBODY;
+ fNames[Ids.ID_TD] = TD;
+ fNames[Ids.ID_TEXTAREA] = TEXTAREA;
+ fNames[Ids.ID_TFOOT] = TFOOT;
+ fNames[Ids.ID_TH] = TH;
+ fNames[Ids.ID_THEAD] = THEAD;
+ fNames[Ids.ID_TITLE] = TITLE;
+ fNames[Ids.ID_TR] = TR;
+ fNames[Ids.ID_TT] = TT;
+ fNames[Ids.ID_U] = U;
+ fNames[Ids.ID_UL] = UL;
+ fNames[Ids.ID_VAR] = VAR;
+ fNames[Ids.ID_MARQUEE] = MARQUEE;
+ fNames[Ids.ID_SSI_CONFIG] = SSI_CONFIG;
+ fNames[Ids.ID_SSI_ECHO] = SSI_ECHO;
+ fNames[Ids.ID_SSI_EXEC] = SSI_EXEC;
+ fNames[Ids.ID_SSI_FSIZE] = SSI_FSIZE;
+ fNames[Ids.ID_SSI_FLASTMOD] = SSI_FLASTMOD;
+ fNames[Ids.ID_SSI_INCLUDE] = SSI_INCLUDE;
+ fNames[Ids.ID_SSI_PRINTENV] = SSI_PRINTENV;
+ fNames[Ids.ID_SSI_SET] = SSI_SET;
+ fNames[Ids.ID_BGSOUND] = BGSOUND;
+ fNames[Ids.ID_NOBR] = NOBR;
+ fNames[Ids.ID_WBR] = WBR;
+ }
+ return fNames;
+ }
}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/H5CMDocImpl.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/H5CMDocImpl.java
new file mode 100644
index 0000000..e16c9dd
--- /dev/null
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/H5CMDocImpl.java
@@ -0,0 +1,84 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.html.core.internal.contentmodel;
+
+
+
+import org.eclipse.wst.xml.core.internal.contentmodel.CMNamedNodeMap;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMNamespace;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMNode;
+
+/**
+ * CMDocument implementation for the HTML.
+ */
+class H5CMDocImpl extends CMNodeImpl implements HTMLCMDocument {
+
+ /** Namespace for all names of elements, entities and attributes. */
+ private CMNamespaceImpl namespace = null;
+ private HTML5ElementCollection elements = null;
+ private EntityCollection entities = null;
+ private AttributeCollection attributes = null;
+
+ /**
+ */
+ public H5CMDocImpl(String docTypeName, CMNamespaceImpl targetNamespace) {
+ super(docTypeName);
+ namespace = targetNamespace;
+
+ attributes = new HTML5AttributeCollection();
+ elements = new HTML5ElementCollection(attributes);
+ entities = new EntityCollection();
+ }
+
+ AttributeCollection getAttributes() {
+ return attributes;
+ }
+
+ public HTMLElementDeclaration getElementDeclaration(String elementName) {
+ if (elements == null)
+ return null;
+ return (HTMLElementDeclaration) elements.getNamedItem(elementName);
+ }
+
+ /**
+ * @see org.eclipse.wst.xml.core.internal.contentmodel.CMDocument
+ */
+ public CMNamedNodeMap getElements() {
+ return elements;
+ }
+
+ /**
+ * @see org.eclipse.wst.xml.core.internal.contentmodel.CMDocument
+ */
+ public CMNamedNodeMap getEntities() {
+ return entities;
+ }
+
+ public HTMLEntityDeclaration getEntityDeclaration(String entityName) {
+ if (entities == null)
+ return null;
+ return (HTMLEntityDeclaration) entities.getNamedItem(entityName);
+ }
+
+ /**
+ * @see org.eclipse.wst.xml.core.internal.contentmodel.CMDocument
+ */
+ public CMNamespace getNamespace() {
+ return namespace;
+ }
+
+ /**
+ * @see CMNode
+ */
+ public int getNodeType() {
+ return CMNode.DOCUMENT;
+ }
+}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HTML5AttributeCollection.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HTML5AttributeCollection.java
new file mode 100644
index 0000000..9622122
--- /dev/null
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HTML5AttributeCollection.java
@@ -0,0 +1,1332 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.html.core.internal.contentmodel;
+
+import java.util.Arrays;
+import java.util.Iterator;
+
+import org.eclipse.wst.html.core.internal.provisional.HTML40Namespace;
+import org.eclipse.wst.html.core.internal.provisional.HTML50Namespace;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMAttributeDeclaration;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMDataType;
+
+public class HTML5AttributeCollection extends AttributeCollection implements HTML50Namespace {
+ /** html5 core attribs */
+ private static final String[] CORE = {ATTR_NAME_ACCESSKEY, ATTR_NAME_CLASS, ATTR_NAME_CONTENT_EDITABLE, ATTR_NAME_CONTEXT_MENU, ATTR_NAME_DIR, ATTR_NAME_DRAGGABLE, ATTR_NAME_HIDDEN, ATTR_NAME_ID, ATTR_NAME_LANG, ATTR_NAME_SPELLCHECK,ATTR_NAME_STYLE, ATTR_NAME_TABINDEX, ATTR_NAME_TITLE};
+ /** events for HTML5. */
+ private static final String[] EVENTS = {ATTR_NAME_ONABORT, ATTR_NAME_ONBLUR, ATTR_NAME_ONCAN_PLAY, ATTR_NAME_ONCAN_PLAY_THROUGH, ATTR_NAME_ONCHANGE, ATTR_NAME_ONCLICK, ATTR_NAME_ONCONTEXT_MENU, ATTR_NAME_ONDBLCLICK, ATTR_NAME_ONDRAG, ATTR_NAME_ONDRAG_END, ATTR_NAME_ONDRAG_ENTER, ATTR_NAME_ONDRAG_LEAVE,
+ ATTR_NAME_ONDRAG_OVER, ATTR_NAME_ONDRAG_START, ATTR_NAME_ONDROP, ATTR_NAME_ONDURATION_CHANGE, ATTR_NAME_ONEMPTIED, ATTR_NAME_ONENDED, ATTR_NAME_ONERROR, ATTR_NAME_ONFOCUS, ATTR_NAME_ONFORM_CHANGE, ATTR_NAME_ONFORM_INPUT, ATTR_NAME_ONINVALID,ATTR_NAME_ONKEYPRESS, ATTR_NAME_ONKEYDOWN, ATTR_NAME_ONKEYUP,
+ ATTR_NAME_ONLOAD, ATTR_NAME_ONLOAD_START, ATTR_NAME_ONLOADED_DATA, ATTR_NAME_ONLOADED_METADATA, ATTR_NAME_ONMOUSEDOWN, ATTR_NAME_ONMOUSEUP, ATTR_NAME_ONMOUSEOVER, ATTR_NAME_ONMOUSEMOVE, ATTR_NAME_ONMOUSEOUT, ATTR_NAME_ONMOUSE_WHEEL, ATTR_NAME_ONPAUSE, ATTR_NAME_ONPLAY, ATTR_NAME_ONPLAYING, ATTR_NAME_ONPROGRESS,
+ ATTR_NAME_ONRATE_CHANGE, ATTR_NAME_ONREADY_STATE_CHANGE, ATTR_NAME_ONSCROLL, ATTR_NAME_ONSEEKED, ATTR_NAME_ONSEEKING, ATTR_NAME_ONSELECT, ATTR_NAME_ONSHOW, ATTR_NAME_ONSTALLED, ATTR_NAME_ONSUBMIT, ATTR_NAME_ONSUSPEND, ATTR_NAME_ONTIME_UPDATE, ATTR_NAME_ONVOLUME_UPDATE, ATTR_NAME_ONWAITING};
+
+ protected HTMLAttrDeclImpl create(String attrName) {
+ HTMLAttrDeclImpl attr = null;
+ HTMLCMDataTypeImpl atype = null;
+ if (attrName.equalsIgnoreCase(ATTR_NAME_AUTOFOCUS)) {
+ // (disabled (disabled) #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(CMDataType.ENUM);
+ // boolean attribute must have the same value as its name.
+ String[] values = {ATTR_NAME_AUTOFOCUS};
+ atype.setEnumValues(values);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_AUTOFOCUS, atype, CMAttributeDeclaration.OPTIONAL);
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_CONTENT_EDITABLE)) {
+ // (contenteditable (EMPTY|TRUE|FALSE|INHERIT) TRUE)
+ atype = new HTMLCMDataTypeImpl(CMDataType.ENUM);
+ String[] values = {ATTR_VALUE_EMPTY, ATTR_VALUE_TRUE, ATTR_VALUE_FALSE, ATTR_VALUE_INHERIT};
+ atype.setEnumValues(values);
+ atype.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, ATTR_VALUE_TRUE);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_CONTENT_EDITABLE, atype, CMAttributeDeclaration.OPTIONAL);
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_CHALLENGE)) {
+ // (challenge CDATA; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(CMDataType.CDATA);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_CHALLENGE, atype, CMAttributeDeclaration.OPTIONAL);
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_CONTEXT_MENU)) {
+ // (contextmenu, CDATA, IMPLIED)
+ atype = new HTMLCMDataTypeImpl(CMDataType.CDATA);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_CONTEXT_MENU, atype, CMAttributeDeclaration.OPTIONAL);
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_DRAGGABLE)) {
+ // (draggable (TRUE|FALSE|AUTO) TRUE)
+ atype = new HTMLCMDataTypeImpl(CMDataType.ENUM);
+ String[] values = {ATTR_VALUE_TRUE, ATTR_VALUE_FALSE, ATTR_VALUE_AUTO};
+ atype.setEnumValues(values);
+ atype.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, ATTR_VALUE_FALSE);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_DRAGGABLE, atype, CMAttributeDeclaration.OPTIONAL);
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_FORM)) {
+ // (form CDATA; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(CMDataType.CDATA);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_FORM, atype, CMAttributeDeclaration.OPTIONAL);
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_KEYTYPE)) {
+ // (keytype CDATA; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(CMDataType.CDATA);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_KEYTYPE, atype, CMAttributeDeclaration.OPTIONAL);
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_LOW)) {
+ atype = new HTMLCMDataTypeImpl(CMDataType.NUMBER);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_LOW, atype, CMAttributeDeclaration.OPTIONAL);
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_HIGH)) {
+ atype = new HTMLCMDataTypeImpl(CMDataType.NUMBER);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_HIGH, atype, CMAttributeDeclaration.OPTIONAL);
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_OPTIMUM)) {
+ atype = new HTMLCMDataTypeImpl(CMDataType.NUMBER);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_OPTIMUM, atype, CMAttributeDeclaration.OPTIONAL);
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_MIN)) {
+ atype = new HTMLCMDataTypeImpl(CMDataType.NUMBER);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_MIN, atype, CMAttributeDeclaration.OPTIONAL);
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_MAX)) {
+ atype = new HTMLCMDataTypeImpl(CMDataType.NUMBER);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_MAX, atype, CMAttributeDeclaration.OPTIONAL);
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_OPEN)) {
+ atype = new HTMLCMDataTypeImpl(CMDataType.ENUM);
+ atype.setEnumValues(new String[] { ATTR_NAME_OPEN });
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_OPEN, atype, CMAttributeDeclaration.OPTIONAL);
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_PUBDATE)) {
+ atype = new HTMLCMDataTypeImpl(CMDataType.ENUM);
+ atype.setEnumValues(new String[] { ATTR_NAME_PUBDATE });
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_PUBDATE, atype, CMAttributeDeclaration.OPTIONAL);
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_SPELLCHECK)) {
+ // (spellcheck (EMPTY|TRUE|FALSE) TRUE)
+ atype = new HTMLCMDataTypeImpl(CMDataType.ENUM);
+ String[] values = {ATTR_VALUE_EMPTY, ATTR_VALUE_TRUE, ATTR_VALUE_FALSE};
+ atype.setEnumValues(values);
+ atype.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, ATTR_VALUE_FALSE);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_SPELLCHECK, atype, CMAttributeDeclaration.OPTIONAL);
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_ONABORT)) {
+ // (onabort %Script; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.SCRIPT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ONABORT, atype, CMAttributeDeclaration.OPTIONAL);
+
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_ONCAN_PLAY)) {
+ // (oncanplay %Script; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.SCRIPT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ONCAN_PLAY, atype, CMAttributeDeclaration.OPTIONAL);
+
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_ONCAN_PLAY_THROUGH)) {
+ // (oncanplaythrough %Script; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.SCRIPT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ONCAN_PLAY_THROUGH, atype, CMAttributeDeclaration.OPTIONAL);
+
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_ONCHANGE)) {
+ // (onchange %Script; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.SCRIPT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ONCHANGE, atype, CMAttributeDeclaration.OPTIONAL);
+
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_ONCONTEXT_MENU)) {
+ // (onacontextmenu %Script; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.SCRIPT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ONCONTEXT_MENU, atype, CMAttributeDeclaration.OPTIONAL);
+
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_ONDRAG)) {
+ // (onadrag %Script; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.SCRIPT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ONDRAG, atype, CMAttributeDeclaration.OPTIONAL);
+
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_ONDRAG_END)) {
+ // (ondragend %Script; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.SCRIPT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ONDRAG_END, atype, CMAttributeDeclaration.OPTIONAL);
+
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_ONDRAG_ENTER)) {
+ // (ondragenter %Script; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.SCRIPT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ONDRAG_ENTER, atype, CMAttributeDeclaration.OPTIONAL);
+
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_ONDRAG_LEAVE)) {
+ // (ondragleave %Script; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.SCRIPT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ONDRAG_LEAVE, atype, CMAttributeDeclaration.OPTIONAL);
+
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_ONDRAG_OVER)) {
+ // (ondragover %Script; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.SCRIPT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ONDRAG_OVER, atype, CMAttributeDeclaration.OPTIONAL);
+
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_ONDRAG_START)) {
+ // (ondragstart %Script; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.SCRIPT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ONDRAG_START, atype, CMAttributeDeclaration.OPTIONAL);
+
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_ONDROP)) {
+ // (ondrop %Script; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.SCRIPT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ONDROP, atype, CMAttributeDeclaration.OPTIONAL);
+
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_ONDURATION_CHANGE)) {
+ // (ondurationchange %Script; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.SCRIPT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ONDURATION_CHANGE, atype, CMAttributeDeclaration.OPTIONAL);
+
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_ONEMPTIED)) {
+ // (onemptied %Script; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.SCRIPT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ONEMPTIED, atype, CMAttributeDeclaration.OPTIONAL);
+
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_ONENDED)) {
+ // (onended %Script; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.SCRIPT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ONENDED, atype, CMAttributeDeclaration.OPTIONAL);
+
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_ONERROR)) {
+ // (onerror %Script; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.SCRIPT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ONERROR, atype, CMAttributeDeclaration.OPTIONAL);
+
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_ONFOCUS)) {
+ // (onfocus %Script; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.SCRIPT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ONFOCUS, atype, CMAttributeDeclaration.OPTIONAL);
+
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_ONFORM_CHANGE)) {
+ // (onformchange %Script; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.SCRIPT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ONFORM_CHANGE, atype, CMAttributeDeclaration.OPTIONAL);
+
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_ONFORM_INPUT)) {
+ // (onforminput %Script; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.SCRIPT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ONFORM_INPUT, atype, CMAttributeDeclaration.OPTIONAL);
+
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_ONINPUT)) {
+ // (oninput %Script; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.SCRIPT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ONINPUT, atype, CMAttributeDeclaration.OPTIONAL);
+
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_ONINVALID)) {
+ // (oninvalid %Script; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.SCRIPT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ONINVALID, atype, CMAttributeDeclaration.OPTIONAL);
+
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_ONLOAD)) {
+ // (onload %Script; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.SCRIPT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ONLOAD, atype, CMAttributeDeclaration.OPTIONAL);
+
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_ONLOAD_START)) {
+ // (onloadstart %Script; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.SCRIPT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ONLOAD_START, atype, CMAttributeDeclaration.OPTIONAL);
+
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_ONLOADED_DATA)) {
+ // (onloadeddata %Script; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.SCRIPT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ONLOADED_DATA, atype, CMAttributeDeclaration.OPTIONAL);
+
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_ONLOADED_METADATA)) {
+ // (onloadedmetadata %Script; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.SCRIPT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ONLOADED_METADATA, atype, CMAttributeDeclaration.OPTIONAL);
+
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_ONMOUSE_WHEEL)) {
+ // (onmousewheel %Script; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.SCRIPT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ONMOUSE_WHEEL, atype, CMAttributeDeclaration.OPTIONAL);
+
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_ONPLAY)) {
+ // (onplay %Script; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.SCRIPT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ONPLAY, atype, CMAttributeDeclaration.OPTIONAL);
+
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_ONPLAYING)) {
+ // (onplaying %Script; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.SCRIPT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ONPLAYING, atype, CMAttributeDeclaration.OPTIONAL);
+
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_ONPAUSE)) {
+ // (onpause %Script; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.SCRIPT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ONPAUSE, atype, CMAttributeDeclaration.OPTIONAL);
+
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_ONPROGRESS)) {
+ // (onprogress %Script; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.SCRIPT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ONPROGRESS, atype, CMAttributeDeclaration.OPTIONAL);
+
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_ONRATE_CHANGE)) {
+ // (onratechange %Script; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.SCRIPT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ONRATE_CHANGE, atype, CMAttributeDeclaration.OPTIONAL);
+
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_ONREADY_STATE_CHANGE)) {
+ // (onreadystatechange %Script; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.SCRIPT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ONREADY_STATE_CHANGE, atype, CMAttributeDeclaration.OPTIONAL);
+
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_ONSCROLL)) {
+ // (onscroll %Script; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.SCRIPT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ONSCROLL, atype, CMAttributeDeclaration.OPTIONAL);
+
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_ONSEEKED)) {
+ // (onseeked %Script; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.SCRIPT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ONSEEKED, atype, CMAttributeDeclaration.OPTIONAL);
+
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_ONSEEKING)) {
+ // (onseeking %Script; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.SCRIPT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ONSEEKING, atype, CMAttributeDeclaration.OPTIONAL);
+
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_ONSELECT)) {
+ // (onselect %Script; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.SCRIPT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ONSELECT, atype, CMAttributeDeclaration.OPTIONAL);
+
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_ONSHOW)) {
+ // (onshow %Script; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.SCRIPT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ONSHOW, atype, CMAttributeDeclaration.OPTIONAL);
+
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_ONSTALLED)) {
+ // (onstalled %Script; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.SCRIPT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ONSTALLED, atype, CMAttributeDeclaration.OPTIONAL);
+
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_ONSUBMIT)) {
+ // (onsubmit %Script; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.SCRIPT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ONSUBMIT, atype, CMAttributeDeclaration.OPTIONAL);
+
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_ONSUSPEND)) {
+ // (onsuspend %Script; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.SCRIPT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ONSUSPEND, atype, CMAttributeDeclaration.OPTIONAL);
+
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_ONTIME_UPDATE)) {
+ // (ontimeupdate %Script; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.SCRIPT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ONTIME_UPDATE, atype, CMAttributeDeclaration.OPTIONAL);
+
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_ONVOLUME_UPDATE)) {
+ // (onvolumeupdate %Script; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.SCRIPT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ONVOLUME_UPDATE, atype, CMAttributeDeclaration.OPTIONAL);
+
+ }
+ else if (attrName.equalsIgnoreCase(ATTR_NAME_ONWAITING)) {
+ // (onwaiting %Script; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.SCRIPT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ONWAITING, atype, CMAttributeDeclaration.OPTIONAL);
+ }
+ else {
+ attr = super.create(attrName);
+ }
+ return attr;
+ }
+
+ public void getAttrs(CMNamedNodeMapImpl declarations) {
+ // %coreattrs;
+ getCore(declarations);
+ // %events;
+ getEvents(declarations);
+ }
+
+ public void getCore(CMNamedNodeMapImpl declarations) {
+ Iterator names = Arrays.asList(CORE).iterator();
+ getDeclarations(declarations, names);
+ }
+
+ public void getEvents(CMNamedNodeMapImpl declarations) {
+ Iterator names = Arrays.asList(EVENTS).iterator();
+ getDeclarations(declarations, names);
+ }
+
+ public void createAttributeDeclarations(String elementName, CMNamedNodeMapImpl attributes) {
+ /* (type %InputType; TEXT) ... should be defined locally.
+ * (name CDATA #IMPLIED)
+ * (value CDATA #IMPLIED)
+ * (checked (checked) #IMPLIED)
+ * (disabled (disabled) #IMPLIED)
+ * (readonly (readonly) #IMPLIED)
+ * (size CDATA #IMPLIED) ... should be defined locally.
+ * (maxlength NUMBER #IMPLIED)
+ * (src %URI; #IMPLIED)
+ * (alt CDATA #IMPLIED) ... should be defined locally.
+ * (accept %ContentTypes; #IMPLIED)
+ * (width CDATA; #IMPLIED)
+ * (height CDATA; #IMPLIED)
+ * (autocomplete Boolean; #IMPLIED)
+ * (autofocus Boolean; #IMPLIED)
+ * (form CDATA; #IMPLIED)
+ * (formaction)
+ * (formenctype)
+ * (formmethod)
+ * (formnovalidate)
+ * (formtarget)
+ * (list)
+ * (max)
+ * (min)
+ * (multiple)
+ * (pattern)
+ * (placeholder CDATA #IMPLIED)
+ * (required)
+ * (step)
+ * discouraged tags :-
+ * (usemap %URI; #IMPLIED)
+ * (ismap (ismap) #IMPLIED)
+ */
+ if (elementName.equals(HTML40Namespace.ElementName.INPUT)){
+ HTMLCMDataTypeImpl atype = null;
+ HTMLAttrDeclImpl attr = null;
+ // (type %InputType; TEXT) ... should be defined locally.
+ // NOTE: %InputType is ENUM;
+ // (text | password | checkbox | radio | submit | reset |
+ // file | hidden | image | button
+ // color| date | time | datetime | datetime-local | month | week| email|
+ // number | range | search | tel)
+ atype = new HTMLCMDataTypeImpl(CMDataType.ENUM);
+ String[] values = {ATTR_VALUE_TEXT, ATTR_VALUE_PASSWORD, ATTR_VALUE_CHECKBOX, ATTR_VALUE_RADIO, ATTR_VALUE_SUBMIT, ATTR_VALUE_RESET, ATTR_VALUE_FILE, ATTR_VALUE_HIDDEN, ATTR_VALUE_IMAGE, ATTR_VALUE_BUTTON,
+ ATTR_VALUE_COLOR, ATTR_VALUE_DATE, ATTR_VALUE_DATETIME, ATTR_VALUE_DATETIME_LOCAL, ATTR_VALUE_EMAIL, ATTR_VALUE_MONTH, ATTR_VALUE_NUMBER, ATTR_VALUE_RANGE, ATTR_VALUE_SEARCH, ATTR_VALUE_TEL, ATTR_VALUE_TIME};
+ atype.setEnumValues(values);
+ atype.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, ATTR_VALUE_TEXT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_TYPE, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_TYPE, attr);
+
+ // (size CDATA #IMPLIED) ... should be defined locally.
+ atype = new HTMLCMDataTypeImpl(CMDataType.CDATA);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_SIZE, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_SIZE, attr);
+
+ // (alt CDATA #IMPLIED) ... should be defined locally.
+ atype = new HTMLCMDataTypeImpl(CMDataType.CDATA);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ALT, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_ALT, attr);
+
+
+ // (type %autocomeplete; ) ... should be defined locally.
+ // NOTE: %autocomeplete is ENUM;
+ // (on | off)
+ atype = new HTMLCMDataTypeImpl(CMDataType.ENUM);
+ String[] autoCompleteValues = {ATTR_VALUE_ON, ATTR_VALUE_OFF};
+ atype.setEnumValues(autoCompleteValues);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_AUTOCOMPLETE, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_AUTOCOMPLETE, attr);
+
+
+ // (form CDATA #IMPLIED) ... should be defined locally.
+ atype = new HTMLCMDataTypeImpl(CMDataType.CDATA);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_FORM, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_FORM, attr);
+
+
+ // (formaction URI #IMPLIED) ... should be defined locally.
+ atype = new HTMLCMDataTypeImpl(CMDataType.URI);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_FORMACTION, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_FORMACTION, attr);
+
+
+ // (type %formmethod; GET) ... should be defined locally.
+ // NOTE: %formmethod is ENUM;
+ // (GET|POST|PUT|DELETE)
+ atype = new HTMLCMDataTypeImpl(CMDataType.ENUM);
+ String[] formMethodValues = {ATTR_VALUE_GET, ATTR_VALUE_POST, ATTR_VALUE_PUT, ATTR_VALUE_DELETE};
+ atype.setEnumValues(formMethodValues);
+ atype.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, ATTR_VALUE_GET);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_FORMMETHOD, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_FORMMETHOD, attr);
+
+ // (type %formenctype; GET) ... should be defined locally.
+ // NOTE: %formenctype is ENUM;
+ // (application/x-www-form-urlencoded| multipart/form-data| text/plain)
+ atype = new HTMLCMDataTypeImpl(CMDataType.ENUM);
+ String[] formEncTypeValues = {ATTR_VALUE_WWW_FORM_URLENCODED, ATTR_VALUE_FORM_DATA, ATTR_VALUE_PLAIN};
+ atype.setEnumValues(formEncTypeValues);
+ atype.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, ATTR_VALUE_WWW_FORM_URLENCODED);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_FORMENCTYPE, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_FORMENCTYPE, attr);
+
+ // (formtarget BROWSEING CONTEXT #IMPLIED) ... should be defined locally.
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.BROWSING_CONTEXT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_FORMTARGET, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_FORMTARGET, attr);
+
+ // (formtnovalidate #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(CMDataType.ENUM);
+ // boolean attribute must have the same value as its name.
+ String[] formNoValidateValues = {ATTR_NAME_FORMNOVALIDATE};
+ atype.setEnumValues(formNoValidateValues);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_FORMNOVALIDATE, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_FORMNOVALIDATE, attr);
+
+
+ // (list ID #IMPLIED) ... should be defined locally.
+ atype = new HTMLCMDataTypeImpl(CMDataType.ID);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_LIST, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_LIST, attr);
+
+ // (min CDATA #IMPLIED) ... should be defined locally.
+ atype = new HTMLCMDataTypeImpl(CMDataType.CDATA);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_MIN, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_MIN, attr);
+
+ // (max CDATA #IMPLIED) ... should be defined locally.
+ atype = new HTMLCMDataTypeImpl(CMDataType.CDATA);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_MAX, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_MAX, attr);
+
+ // (maxlength NUMBER #IMPLIED) ... should be defined locally.
+ atype = new HTMLCMDataTypeImpl(CMDataType.NUMBER);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_MAXLENGTH, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_MAXLENGTH, attr);
+
+ // (multiple #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(CMDataType.ENUM);
+ // boolean attribute must have the same value as its name.
+ String[] multipleValues = {ATTR_NAME_MULTIPLE};
+ atype.setEnumValues(multipleValues);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_MULTIPLE, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_MULTIPLE, attr);
+
+
+ // (step CDATA #IMPLIED) ... should be defined locally.
+ atype = new HTMLCMDataTypeImpl(CMDataType.CDATA);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_STEP, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_STEP, attr);
+
+ // (placeholder CDATA #IMPLIED) ... should be defined locally.
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.TEXT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_PLACEHOLDER, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_PLACEHOLDER, attr);
+
+ // (pattern CDATA #IMPLIED) ... should be defined locally.
+ atype = new HTMLCMDataTypeImpl(CMDataType.CDATA);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_PATTERN, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_PATTERN, attr);
+
+ // (required #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(CMDataType.ENUM);
+ // boolean attribute must have the same value as its name.
+ String[] requiredValues = {ATTR_NAME_REQUIRED};
+ atype.setEnumValues(requiredValues);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_REQUIRED, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_REQUIRED, attr);
+
+ String[] names = {ATTR_NAME_NAME, ATTR_NAME_VALUE, ATTR_NAME_CHECKED, ATTR_NAME_DISABLED, ATTR_NAME_READONLY, ATTR_NAME_SIZE, ATTR_NAME_MAXLENGTH, ATTR_NAME_SRC, ATTR_NAME_ALT, ATTR_NAME_ACCEPT, //<<D215684
+ ATTR_NAME_WIDTH, ATTR_NAME_HEIGHT, //<D215684
+ //html5
+ ATTR_NAME_AUTOFOCUS
+ };
+ getDeclarations(attributes, Arrays.asList(names).iterator());
+ //discouraged
+ // (ismap (ismap) #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(CMDataType.ENUM);
+ String[] ismapValues = {ATTR_NAME_ISMAP};
+ atype.setEnumValues(ismapValues);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ISMAP, atype, CMAttributeDeclaration.OPTIONAL);
+ attr.obsolete(true);
+ attributes.putNamedItem(ATTR_NAME_ISMAP, attr);
+
+ // (usemap %URI; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(CMDataType.URI);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_USEMAP, atype, CMAttributeDeclaration.OPTIONAL);
+ attr.obsolete(true);
+ attributes.putNamedItem(ATTR_NAME_USEMAP, attr);
+
+
+ getDeclarations(attributes, Arrays.asList(names).iterator());
+ }
+ /* (href %URI; #IMPLIED)
+ * (hreflang %LanguageCode; #IMPLIED)
+ * (type %ContentType; #IMPLIED): should be defined locally.
+ * (rel %LinkTypes; #IMPLIED)
+ * (media %MediaDesc; #IMPLIED)
+ * // discouraged
+ * (charset %Charset; #IMPLIED)
+ * (rev %LinkTypes; #IMPLIED)
+ * (target %FrameTarget; #IMPLIED)
+ */
+ else if (elementName.equals(HTML40Namespace.ElementName.LINK)){
+ String[] names = { ATTR_NAME_TYPE, ATTR_NAME_HREF, ATTR_NAME_HREFLANG, ATTR_NAME_REL, ATTR_NAME_MEDIA};
+ getDeclarations(attributes, Arrays.asList(names).iterator());
+
+ // (sizes %Pixels; #IMPLIED)
+ HTMLCMDataTypeImpl atype = new HTMLCMDataTypeImpl(HTMLCMDataType.PIXELS);
+ HTMLAttrDeclImpl attr = new HTMLAttrDeclImpl(ATTR_NAME_SIZES, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_SIZES, attr);
+
+ //discouraged
+ // (charset %Charset; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.CHARSET);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_CHARSET, atype, CMAttributeDeclaration.OPTIONAL);
+ attr.obsolete(true);
+ attributes.putNamedItem(ATTR_NAME_CHARSET, attr);
+
+ // (rev %LinkTypes; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.LINK_TYPES);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_REV, atype, CMAttributeDeclaration.OPTIONAL);
+ attr.obsolete(true);
+ attributes.putNamedItem(ATTR_NAME_REV, attr);
+
+ // (target %FrameTarget; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.FRAME_TARGET);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_TARGET, atype, CMAttributeDeclaration.OPTIONAL);
+ attr.obsolete(true);
+ attributes.putNamedItem(ATTR_NAME_TARGET, attr);
+
+ }
+ /* (type %ContentType; #IMPLIED)
+ * (href %URI; #IMPLIED)
+ * (hreflang %LanguageCode; #IMPLIED)
+ * (target %FrameTarget; #IMPLIED)
+ * (rel %LinkTypes; #IMPLIED)
+ * (media %media_desc; #IMPLIED
+ * //discouraged
+ * (charset %Charset; #IMPLIED)
+ * (name CDATA #IMPLIED)
+ * (rev %LinkTypes; #IMPLIED)
+ * (directkey %Character; #IMPLIED)
+ * (shape %Shape; rect)
+ * (coords %Coords; #IMPLIED)
+ */
+ else if (elementName.equals(HTML40Namespace.ElementName.A)){
+ String[] names = { ATTR_NAME_MEDIA, ATTR_NAME_TYPE, ATTR_NAME_HREF, ATTR_NAME_HREFLANG, ATTR_NAME_REL};
+ getDeclarations(attributes, Arrays.asList(names).iterator());
+
+
+ //discouraged
+ // (charset %Charset; #IMPLIED)
+ HTMLCMDataTypeImpl atype = new HTMLCMDataTypeImpl(HTMLCMDataType.CHARSET);
+ HTMLAttrDeclImpl attr = new HTMLAttrDeclImpl(ATTR_NAME_CHARSET, atype, CMAttributeDeclaration.OPTIONAL);
+ attr.obsolete(true);
+ attributes.putNamedItem(ATTR_NAME_CHARSET, attr);
+
+ // (rev %LinkTypes; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.LINK_TYPES);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_REV, atype, CMAttributeDeclaration.OPTIONAL);
+ attr.obsolete(true);
+ attributes.putNamedItem(ATTR_NAME_REV, attr);
+
+ // (target %FrameTarget; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.FRAME_TARGET);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_TARGET, atype, CMAttributeDeclaration.OPTIONAL);
+ attr.obsolete(true);
+ attributes.putNamedItem(ATTR_NAME_TARGET, attr);
+
+ // (directkey %Character; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.CHARACTER);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_DIRECTKEY, atype, CMAttributeDeclaration.OPTIONAL);
+ attr.obsolete(true);
+ attributes.putNamedItem(ATTR_NAME_DIRECTKEY, attr);
+
+ // (shape %Shape; rect): %Shape; is (rect|circle|poly|default).
+ atype = new HTMLCMDataTypeImpl(CMDataType.ENUM);
+ String[] values = {ATTR_VALUE_RECT, ATTR_VALUE_CIRCLE, ATTR_VALUE_POLY, ATTR_VALUE_DEFAULT};
+ atype.setEnumValues(values);
+ atype.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, ATTR_VALUE_RECT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_SHAPE, atype, CMAttributeDeclaration.OPTIONAL);
+ attr.obsolete(true);
+ attributes.putNamedItem(ATTR_NAME_SHAPE, attr);
+
+ // (coords %Coords; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.COORDS);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_COORDS, atype, CMAttributeDeclaration.OPTIONAL);
+ attr.obsolete(true);
+ attributes.putNamedItem(ATTR_NAME_COORDS, attr);
+
+ // (name CDATA #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(CMDataType.CDATA);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_NAME, atype, CMAttributeDeclaration.OPTIONAL);
+ attr.obsolete(true);
+ attributes.putNamedItem(ATTR_NAME_NAME, attr);
+
+ }
+ /*
+ * (shape %Shape; rect)
+ * (coords %Coords; #IMPLIED)
+ * (href %URI; #IMPLIED)
+ * (target %FrameTarget; #IMPLIED)
+ * (alt %Text; #REQUIRED)
+ * (media %media_desc; #IMPLIED)
+ * (rel %LinkTypes; #IMPLIED)
+ * (type %ContentType; #IMPLIED)
+ * //disocuraged
+ * (nohref (nohref) #IMPLIED)
+ */
+ else if (elementName.equals(HTML40Namespace.ElementName.AREA)){
+ // (media %MediaDesc; #IMPLIED)
+ String[] names = {ATTR_NAME_TYPE, ATTR_NAME_MEDIA, ATTR_NAME_SHAPE, ATTR_NAME_COORDS, ATTR_NAME_HREF, ATTR_NAME_HREFLANG, ATTR_NAME_TARGET, ATTR_NAME_ALT, ATTR_NAME_REL};
+ getDeclarations(attributes, Arrays.asList(names).iterator());
+
+ // (nohref (nohref) #IMPLIED)
+ HTMLCMDataTypeImpl atype = new HTMLCMDataTypeImpl(CMDataType.ENUM);
+ String[] values = {ATTR_NAME_NOHREF};
+ atype.setEnumValues(values);
+ HTMLAttrDeclImpl attr = new HTMLAttrDeclImpl(ATTR_NAME_NOHREF, atype, CMAttributeDeclaration.OPTIONAL);
+ attr.obsolete(true);
+ attributes.putNamedItem(ATTR_NAME_NOHREF, attr);
+
+ }
+ /*
+ * %globalattrs;
+ * (http-equiv NAME #IMPLIED)
+ * (name NAME #IMPLIED) ... should be defined locally.
+ * (content CDATA #REQUIRED)
+ * (charset %Charset; #IMPLIED)
+ * //discouraged
+ * (scheme CDATA #IMPLIED)
+ */
+ else if (elementName.equals(HTML40Namespace.ElementName.META)){
+ // globalattrs;
+ getAttrs(attributes);
+
+ // (name NAME #IMPLIED) ... should be defined locally.
+ HTMLCMDataTypeImpl atype = new HTMLCMDataTypeImpl(HTMLCMDataType.NAME);
+ HTMLAttrDeclImpl attr = new HTMLAttrDeclImpl(ATTR_NAME_NAME, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_NAME, attr);
+
+ // (content CDATA #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(CMDataType.CDATA);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_CONTENT, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_CONTENT, attr);
+
+ String[] names = {ATTR_NAME_HTTP_EQUIV, ATTR_NAME_CHARSET};
+ getDeclarations(attributes, Arrays.asList(names).iterator());
+
+ // discouraged
+ // (scheme CDATA #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(CMDataType.CDATA);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_SCHEME, atype, CMAttributeDeclaration.OPTIONAL);
+ attr.obsolete(true);
+ attributes.putNamedItem(ATTR_NAME_SCHEME, attr);
+
+ }
+ /*
+ * (src %URI; #REQUIRED): should be defined locally.
+ * (alt %Text; #REQUIRED)
+ * (usemap %URI; #IMPLIED)
+ * (ismap (ismap) #IMPLIED)
+ * // discouraged
+ * (longdesc %URI; #IMPLIED)
+ * (name CDATA #IMPLIED)
+ * (height %Length; #IMPLIED)
+ * (width %Length; #IMPLIED)
+ * (align %IAlign; #IMPLIED): should be defined locally.
+ * (border %Pixels; #IMPLIED)
+ * (hspace %Pixels; #IMPLIED)
+ * (vspace %Pixels; #IMPLIED)
+ * (mapfile %URI; #IMPLIED)
+
+ */
+ else if (elementName.equals(HTML40Namespace.ElementName.IMG)){
+ // (src %URI; #REQUIRED): should be defined locally.
+ HTMLCMDataTypeImpl atype = null;
+ HTMLAttrDeclImpl attr = null;
+ atype = new HTMLCMDataTypeImpl(CMDataType.URI);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_SRC, atype, CMAttributeDeclaration.REQUIRED);
+ attributes.putNamedItem(ATTR_NAME_SRC, attr);
+
+ String[] names = {ATTR_NAME_ALT, ATTR_NAME_LONGDESC, ATTR_NAME_NAME, ATTR_NAME_HEIGHT, ATTR_NAME_WIDTH, ATTR_NAME_USEMAP, ATTR_NAME_ISMAP, ATTR_NAME_BORDER, ATTR_NAME_HSPACE, ATTR_NAME_VSPACE, ATTR_NAME_MAPFILE};
+ getDeclarations(attributes, Arrays.asList(names).iterator());
+
+ // align (local); should be defined locally.
+ attr = AttributeCollection.createAlignForImage();
+ attributes.putNamedItem(ATTR_NAME_ALIGN, attr);
+
+ }
+ /*
+ * (name CDATA #REQUIRED) ... should be defined locally.
+ * (value CDATA #IMPLIED)
+ * global attributes
+ */
+ else if (elementName.equals(HTML40Namespace.ElementName.PARAM)){
+
+ // (name CDATA #REQUIRED) ... should be defined locally.
+ HTMLCMDataTypeImpl atype = new HTMLCMDataTypeImpl(CMDataType.CDATA);
+ HTMLAttrDeclImpl attr = new HTMLAttrDeclImpl(ATTR_NAME_NAME, atype, CMAttributeDeclaration.REQUIRED);
+ attributes.putNamedItem(ATTR_NAME_NAME, attr);
+
+ // (value CDATA #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(CMDataType.CDATA);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_VALUE, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_VALUE, attr);
+
+ // gloabl attrs
+ getAttrs(attributes);
+ }
+ /*
+ * (autofocus Boolean; #IMPLIED)
+ * (form CDATA; #IMPLIED)
+ * (placeholder CDATA #IMPLIED)
+ * (name CDATA #IMPLIED)
+ * (rows NUMBER #REQUIRED)
+ * (cols NUMBER #REQUIRED)
+ * (disabled (disabled) #IMPLIED)
+ * (readonly (readonly) #IMPLIED)
+ * (maxlength NUMBER; #IMPLIED)
+ * (wrap ENUM; #IMPLIED)
+ * //discouraged
+ * (istyle CDATA #IMPLIED)
+ */
+ else if (elementName.equals(HTML40Namespace.ElementName.TEXTAREA)){
+ String[] names = {ATTR_NAME_MAXLENGTH, ATTR_NAME_FORM, ATTR_NAME_AUTOFOCUS, ATTR_NAME_NAME, ATTR_NAME_ROWS, ATTR_NAME_COLS, ATTR_NAME_DISABLED, ATTR_NAME_READONLY};
+ getDeclarations(attributes, Arrays.asList(names).iterator());
+
+ // (placeholder CDATA #IMPLIED) ... should be defined locally.
+ HTMLCMDataTypeImpl atype = new HTMLCMDataTypeImpl(HTMLCMDataType.TEXT);
+ HTMLAttrDeclImpl attr = new HTMLAttrDeclImpl(ATTR_NAME_PLACEHOLDER, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_PLACEHOLDER, attr);
+
+ atype = new HTMLCMDataTypeImpl(CMDataType.ENUM);
+ String[] values = {ATTR_VALUE_SOFT, ATTR_VALUE_HARD};
+ atype.setEnumValues(values);
+ atype.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, ATTR_VALUE_SOFT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_WRAP, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_WRAP, attr);
+
+ // discouraged
+ atype = new HTMLCMDataTypeImpl(CMDataType.CDATA);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ISTYLE, atype, CMAttributeDeclaration.OPTIONAL);
+ attr.obsolete(true);
+ attributes.putNamedItem(ATTR_NAME_ISTYLE, attr);
+ }
+ /*
+ * (charset %Charset; #IMPLIED)
+ * (type %ContentType; #REQUIRED) ... should be defined locally.
+ * (asynch boolean #IMPLIED)
+ * (src %URI; #IMPLIED)
+ * (defer (defer) #IMPLIED)
+ * // discouraged
+ * (language CDATA #IMPLIED)
+ * (event CDATA #IMPLIED)
+ * (for %URI; #IMPLIED)
+ */
+ else if (elementName.equals(HTML40Namespace.ElementName.TEXTAREA)){
+ String[] names = {ATTR_NAME_CHARSET, ATTR_NAME_SRC, ATTR_NAME_DEFER};
+ getDeclarations(attributes, Arrays.asList(names).iterator());
+
+ // (type %ContentType; #REQUIRED) ... should be defined locally.
+ HTMLCMDataTypeImpl atype = new HTMLCMDataTypeImpl(HTMLCMDataType.CONTENT_TYPE);
+ atype.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, "text/javascript"); //$NON-NLS-1$
+ HTMLAttrDeclImpl attr = new HTMLAttrDeclImpl(ATTR_NAME_TYPE, atype, CMAttributeDeclaration.REQUIRED);
+ attributes.putNamedItem(ATTR_NAME_TYPE, attr);
+
+ atype = new HTMLCMDataTypeImpl(CMDataType.ENUM);
+ String[] values = {ATTR_NAME_ASYNC};
+ atype.setEnumValues(values);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_ASYNC, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_ASYNC, attr);
+
+
+ // discouraged
+ // (language %CDATA; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(CMDataType.CDATA);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_LANGUAGE, atype, CMAttributeDeclaration.OPTIONAL);
+ attr.obsolete(true);
+ attributes.putNamedItem(ATTR_NAME_LANGUAGE, attr);
+
+ // (event CDATA #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(CMDataType.CDATA);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_EVENT, atype, CMAttributeDeclaration.OPTIONAL);
+ attr.obsolete(true);
+ attributes.putNamedItem(ATTR_NAME_EVENT, attr);
+
+ // (for %URI; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(CMDataType.URI);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_FOR, atype, CMAttributeDeclaration.OPTIONAL);
+ attr.obsolete(true);
+ attributes.putNamedItem(ATTR_NAME_FOR, attr);
+
+ }
+ /*
+ * %attrs;
+ * (type %ContentType; #REQUIRED) ... should be defined locally.
+ * (media %MediaDesc; #IMPLIED)
+ * (scoped boolean; #implied)
+ */
+ else if (elementName.equals(HTML40Namespace.ElementName.STYLE)){
+ // %i18n;
+ getAttrs(attributes);
+
+ String[] names = {ATTR_NAME_MEDIA};
+ getDeclarations(attributes, Arrays.asList(names).iterator());
+ // (type %ContentType; #REQUIRED) ... should be defined locally.
+ HTMLCMDataTypeImpl atype = new HTMLCMDataTypeImpl(HTMLCMDataType.CONTENT_TYPE);
+ atype.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, "text/css"); //$NON-NLS-1$
+ HTMLAttrDeclImpl attr = new HTMLAttrDeclImpl(ATTR_NAME_TYPE, atype, CMAttributeDeclaration.REQUIRED);
+ attributes.putNamedItem(ATTR_NAME_TYPE, attr);
+
+ atype = new HTMLCMDataTypeImpl(CMDataType.ENUM);
+ String[] values = {ATTR_NAME_SCOPED};
+ atype.setEnumValues(values);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_SCOPED, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_SCOPED, attr);
+ }
+ /*
+ * %reserved;
+ * (name CDATA #IMPLIED)
+ * (size NUMBER #IMPLIED) ... should be defined locally.
+ * (multiple (multiple) #IMPLIED)
+ * (disabled (disabled) #IMPLIED)
+ * (autofocus Boolean; #IMPLIED)
+ * (form CDATA; #IMPLIED)
+ */
+ else if (elementName.equals(HTML40Namespace.ElementName.SELECT)){
+ // (size NUMBER #IMPLIED) ... should be defined locally.
+ HTMLCMDataTypeImpl atype = new HTMLCMDataTypeImpl(CMDataType.NUMBER);
+ HTMLAttrDeclImpl attr = new HTMLAttrDeclImpl(ATTR_NAME_SIZE, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_SIZE, attr);
+
+ String[] names = {ATTR_NAME_FORM, ATTR_NAME_AUTOFOCUS,ATTR_NAME_NAME, ATTR_NAME_MULTIPLE, ATTR_NAME_DISABLED, ATTR_NAME_TABINDEX, ATTR_NAME_ONFOCUS, ATTR_NAME_ONBLUR, ATTR_NAME_ONCHANGE};
+ getDeclarations(attributes, Arrays.asList(names).iterator());
+
+ }
+ /*
+ * (value NUMBER #IMPLIED) ... should be defined locally.
+ * //discouraged
+ * (type %LIStyle; #IMPLIED) ... should be defined locally.
+ */
+ else if (elementName.equals(HTML40Namespace.ElementName.LI)){
+ // (type %LIStyle; #IMPLIED) ... should be defined locally.
+ HTMLCMDataTypeImpl atype = new HTMLCMDataTypeImpl(HTMLCMDataType.LI_STYLE);
+ HTMLAttrDeclImpl attr = new HTMLAttrDeclImpl(ATTR_NAME_TYPE, atype, CMAttributeDeclaration.OPTIONAL);
+ attr.obsolete(true);
+ attributes.putNamedItem(ATTR_NAME_TYPE, attr);
+
+ // (value NUMBER #IMPLIED) ... should be defined locally.
+ atype = new HTMLCMDataTypeImpl(CMDataType.NUMBER);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_VALUE, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_VALUE, attr);
+
+ }
+ /*
+ * (start NUMBER #IMPLIED)
+ * (reversed BOOLEAN; IMPLIED)
+ * //discouraged
+ * (type %OLStyle; #IMPLIED) ... should be defined locally.
+ * (compact (compact) #IMPLIED)
+ */
+ else if (elementName.equals(HTML40Namespace.ElementName.OL)){
+
+ String[] names = { ATTR_NAME_START};
+ getDeclarations(attributes, Arrays.asList(names).iterator());
+
+ HTMLCMDataTypeImpl atype = new HTMLCMDataTypeImpl(CMDataType.ENUM);
+ String[] values = {ATTR_NAME_REVERSED};
+ atype.setEnumValues(values);
+ HTMLAttrDeclImpl attr = new HTMLAttrDeclImpl(ATTR_NAME_REVERSED, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_REVERSED, attr);
+
+ //discouraged
+ // (type %OLStyle; #IMPLIED) ... should be defined locally.
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.OL_STYLE);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_TYPE, atype, CMAttributeDeclaration.OPTIONAL);
+ attr.obsolete(true);
+ attributes.putNamedItem(ATTR_NAME_TYPE, attr);
+
+ // (compact (compact) #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(CMDataType.ENUM);
+ String[] compactValues = {ATTR_NAME_COMPACT};
+ atype.setEnumValues(compactValues);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_COMPACT, atype, CMAttributeDeclaration.OPTIONAL);
+ attr.obsolete(true);
+ attributes.putNamedItem(ATTR_NAME_COMPACT, attr);
+ }
+ /**
+ * %attrs;
+ * (src %URI; #IMPLIED)
+ * (srcdoc %CONTENT_TYPE; #IMPLIED)
+ * (seamless BOOLEAN; #IMPLIED)
+ * (sandbox CDATA; #IMPLED)
+ * (height %Length; #IMPLIED)
+ * (width %Length; #IMPLIED)
+ * (name CDATA #IMPLIED)
+ * //discouraged
+ * (longdesc %URI; #IMPLIED)
+ * (frameborder (1|0) 1)
+ * (marginwidth %Pixels; #IMPLIED)
+ * (marginheight %Pixels; #IMPLIED)
+ * (scrolling (yes|no|auto) auto)
+ * (align %IAlign; #IMPLIED) ... should be defined locally.
+ */
+ else if (elementName.equals(HTML40Namespace.ElementName.IFRAME)){
+ // %attrs;
+ getAttrs(attributes);
+
+ //srcdoc
+ HTMLCMDataTypeImpl atype = new HTMLCMDataTypeImpl(HTMLCMDataType.CONTENT_TYPE);
+ HTMLAttrDeclImpl attr = new HTMLAttrDeclImpl(ATTR_NAME_SRCDOC, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_SRCDOC, attr);
+
+ // (seamless (seamless) #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(CMDataType.ENUM);
+ String[] compactValues = {ATTR_NAME_SEAMLESS};
+ atype.setEnumValues(compactValues);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_SEAMLESS, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_SEAMLESS, attr);
+
+ //sandbox
+ atype = new HTMLCMDataTypeImpl(CMDataType.CDATA);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_SANDBOX, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_SANDBOX, attr);
+
+
+ String[] names = { ATTR_NAME_NAME, ATTR_NAME_SRC, ATTR_NAME_HEIGHT, ATTR_NAME_WIDTH};
+ getDeclarations(attributes, Arrays.asList(names).iterator());
+
+ //discouraged
+ // (marginwidth %Pixels; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.PIXELS);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_MARGINWIDTH, atype, CMAttributeDeclaration.OPTIONAL);
+ attr.obsolete(true);
+ attributes.putNamedItem(ATTR_NAME_MARGINWIDTH, attr);
+
+ // (marginheight %Pixels; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.PIXELS);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_MARGINHEIGHT, atype, CMAttributeDeclaration.OPTIONAL);
+ attr.obsolete(true);
+ attributes.putNamedItem(ATTR_NAME_MARGINHEIGHT, attr);
+
+ // (scrolling (yes|no|auto) auto)
+ atype = new HTMLCMDataTypeImpl(CMDataType.ENUM);
+ String[] values = {ATTR_VALUE_YES, ATTR_VALUE_NO, ATTR_VALUE_AUTO};
+ atype.setEnumValues(values);
+ atype.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, ATTR_VALUE_AUTO);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_SCROLLING, atype, CMAttributeDeclaration.OPTIONAL);
+ attr.obsolete(true);
+ attributes.putNamedItem(ATTR_NAME_SCROLLING, attr);
+
+ // (frameborder (1|0) 1)
+ atype = new HTMLCMDataTypeImpl(CMDataType.ENUM);
+ String[] frameValues = {ATTR_VALUE_1, ATTR_VALUE_0};
+ atype.setEnumValues(frameValues);
+ atype.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, ATTR_VALUE_1);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_FRAMEBORDER, atype, CMAttributeDeclaration.OPTIONAL);
+ attr.obsolete(true);
+ attributes.putNamedItem(ATTR_NAME_FRAMEBORDER, attr);
+
+ // (longdesc %URI; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(CMDataType.URI);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_LONGDESC, atype, CMAttributeDeclaration.OPTIONAL);
+ attr.obsolete(true);
+ attributes.putNamedItem(ATTR_NAME_LONGDESC, attr);
+
+
+ // align
+ attr = AttributeCollection.createAlignForImage();
+ if (attr != null)
+ attr.obsolete(true);
+ attributes.putNamedItem(ATTR_NAME_ALIGN, attr);
+ }
+ /*
+ * (%attrs)
+ * (manisfest %URI; #IMPLIED)
+ * (xmlns %URI; #IMPLIED)
+ * //discouraged
+ * (version CDATA #FIXED '%HTML.Version;)
+ */
+ else if (elementName.equals(HTML40Namespace.ElementName.HTML)){
+ // %attrs;
+ getAttrs(attributes);
+ // (manisfest %URI; #IMPLIED)
+ HTMLCMDataTypeImpl atype = new HTMLCMDataTypeImpl(CMDataType.URI);
+ HTMLAttrDeclImpl attr = new HTMLAttrDeclImpl(ATTR_NAME_MANIFEST, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_MANIFEST, attr);
+
+ // (version CDATA #FIXED '%HTML.Version;)
+ atype = new HTMLCMDataTypeImpl(CMDataType.CDATA);
+ atype.setImpliedValue(CMDataType.IMPLIED_VALUE_FIXED, ATTR_VALUE_VERSION_TRANSITIONAL);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_VERSION, atype, CMAttributeDeclaration.FIXED);
+ attr.obsolete(true);
+ attributes.putNamedItem(ATTR_NAME_VERSION, attr);
+
+ // (xmlns CDATA #FIXED '%xmlns;)
+ atype = new HTMLCMDataTypeImpl(CMDataType.URI);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_XMLNS, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_XMLNS, attr);
+ }
+ /*
+ * (type enum; (context | toolbar | list))
+ * (label %Text; #IMPLIED)
+ * //discouraged
+ * (compact (compact) #IMPLIED)
+ */
+ else if (elementName.equals(HTML40Namespace.ElementName.MENU)){
+ // (type %menuType; list) ... should be defined locally is ENUM.
+ // (context | toolbar | list)
+ HTMLCMDataTypeImpl atype = new HTMLCMDataTypeImpl(CMDataType.ENUM);
+ String[] values = {ATTR_VALUE_CONTEXT, ATTR_VALUE_TOOLBAR, ATTR_VALUE_LIST};
+ atype.setEnumValues(values);
+ atype.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, ATTR_VALUE_LIST);
+ HTMLAttrDeclImpl attr = new HTMLAttrDeclImpl(ATTR_NAME_TYPE, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_TYPE, attr);
+
+ // (label %Text; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.TEXT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_LABEL, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_LABEL, attr);
+
+ // (compact (compact) #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(CMDataType.ENUM);
+ String[] compactValues = {ATTR_NAME_COMPACT};
+ atype.setEnumValues(compactValues);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_COMPACT, atype, CMAttributeDeclaration.OPTIONAL);
+ attr.obsolete(true);
+ attributes.putNamedItem(ATTR_NAME_COMPACT, attr);
+ }
+ /*
+ * (type %button; TEXT) ... should be defined locally.
+ * (name CDATA #IMPLIED)
+ * (value CDATA #IMPLIED)
+ * (disabled (disabled) #IMPLIED)
+ * (autofocus Boolean; #IMPLIED)
+ * (form CDATA; #IMPLIED)
+ * (formaction)
+ * (formenctype)
+ * (formmethod)
+ * (formnovalidate)
+ * (formtarget)
+ */
+ else if (elementName.equals(HTML40Namespace.ElementName.BUTTON)){
+ // (type (button|submit|reset) submit) ... should be defined locally.
+ HTMLCMDataTypeImpl atype = new HTMLCMDataTypeImpl(CMDataType.ENUM);
+ String[] values = {ATTR_VALUE_BUTTON, ATTR_VALUE_SUBMIT, ATTR_VALUE_RESET};
+ atype.setEnumValues(values);
+ HTMLAttrDeclImpl attr = new HTMLAttrDeclImpl(ATTR_NAME_TYPE, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_TYPE, attr);
+
+
+ String[] names = {ATTR_NAME_NAME, ATTR_NAME_VALUE, ATTR_NAME_DISABLED,
+ //html5
+ ATTR_NAME_AUTOFOCUS
+ };
+ getDeclarations(attributes, Arrays.asList(names).iterator());
+
+ // (form CDATA #IMPLIED) ... should be defined locally.
+ atype = new HTMLCMDataTypeImpl(CMDataType.CDATA);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_FORM, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_FORM, attr);
+
+
+ // (formaction URI #IMPLIED) ... should be defined locally.
+ atype = new HTMLCMDataTypeImpl(CMDataType.URI);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_FORMACTION, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_FORMACTION, attr);
+
+
+ // (type %formmethod; GET) ... should be defined locally.
+ // NOTE: %formmethod is ENUM;
+ // (GET|POST|PUT|DELETE)
+ atype = new HTMLCMDataTypeImpl(CMDataType.ENUM);
+ String[] formMethodValues = {ATTR_VALUE_GET, ATTR_VALUE_POST, ATTR_VALUE_PUT, ATTR_VALUE_DELETE};
+ atype.setEnumValues(formMethodValues);
+ atype.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, ATTR_VALUE_GET);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_FORMMETHOD, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_FORMMETHOD, attr);
+
+ // (type %formenctype; GET) ... should be defined locally.
+ // NOTE: %formenctype is ENUM;
+ // (application/x-www-form-urlencoded| multipart/form-data| text/plain)
+ atype = new HTMLCMDataTypeImpl(CMDataType.ENUM);
+ String[] formEncTypeValues = {ATTR_VALUE_WWW_FORM_URLENCODED, ATTR_VALUE_FORM_DATA, ATTR_VALUE_PLAIN};
+ atype.setEnumValues(formEncTypeValues);
+ atype.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, ATTR_VALUE_WWW_FORM_URLENCODED);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_FORMENCTYPE, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_FORMENCTYPE, attr);
+
+ // (formtarget BROWSEING CONTEXT #IMPLIED) ... should be defined locally.
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.BROWSING_CONTEXT);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_FORMTARGET, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_FORMTARGET, attr);
+
+ // (formtnovalidate #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(CMDataType.ENUM);
+ // boolean attribute must have the same value as its name.
+ String[] formNoValidateValues = {ATTR_NAME_FORMNOVALIDATE};
+ atype.setEnumValues(formNoValidateValues);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_FORMNOVALIDATE, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_FORMNOVALIDATE, attr);
+
+ }
+ /*
+ * (name CDATA #IMPLIED)
+ * (disabled (disabled) #IMPLIED)
+ * (form CDATA; #IMPLIED)
+ */
+ else if (elementName.equals(HTML40Namespace.ElementName.FIELDSET)){
+ // (form CDATA #IMPLIED) ... should be defined locally.
+ HTMLCMDataTypeImpl atype = new HTMLCMDataTypeImpl(CMDataType.CDATA);
+ HTMLAttrDeclImpl attr = new HTMLAttrDeclImpl(ATTR_NAME_FORM, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(ATTR_NAME_FORM, attr);
+
+ String[] names = {ATTR_NAME_NAME, ATTR_NAME_DISABLED };
+ getDeclarations(attributes, Arrays.asList(names).iterator());
+
+ }
+ /*
+ * (summary %Text; #IMPLIED)
+ * //discouraged
+ * %reserved;
+ * (width %Length; #IMPLIED)
+ * (border %Pixels; #IMPLIED)
+ * (frame %TFrame; #IMPLIED)
+ * (rules %TRules; #IMPLIED)
+ * (cellspacing %Length; #IMPLIED)
+ * (cellpadding %Length; #IMPLIED)
+ * (align %TAlign; #IMPLIED)
+ * (bgcolor %Color; #IMPLIED)
+ * (datapagesize CDATA #IMPLIED)
+ * (height %Pixels; #IMPLIED)
+ * (background %URI; #IMPLIED)
+ * (bordercolor %Color #IMPLIED) ... D205514
+ */
+ else if (elementName.equals(HTML40Namespace.ElementName.TABLE)){
+ // %reserved;
+ // ... %reserved; is empty in the current DTD.
+
+ String[] names = {ATTR_NAME_SUMMARY};
+ getDeclarations(attributes, Arrays.asList(names).iterator());
+
+ // align (local)
+ HTMLCMDataTypeImpl atype = new HTMLCMDataTypeImpl(CMDataType.ENUM);
+ String[] alignValues = {ATTR_VALUE_LEFT, ATTR_VALUE_CENTER, ATTR_VALUE_RIGHT};
+ atype.setEnumValues(alignValues);
+ HTMLAttrDeclImpl attr = new HTMLAttrDeclImpl(ATTR_NAME_ALIGN, atype, CMAttributeDeclaration.OPTIONAL);
+ attr.obsolete(true);
+ attributes.putNamedItem(ATTR_NAME_ALIGN, attr);
+
+ // (width %Length; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.LENGTH);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_WIDTH, atype, CMAttributeDeclaration.OPTIONAL);
+ attr.obsolete(true);
+ attributes.putNamedItem(ATTR_NAME_WIDTH, attr);
+
+ // (border %Pixels; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.PIXELS);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_BORDER, atype, CMAttributeDeclaration.OPTIONAL);
+ attr.obsolete(true);
+ attributes.putNamedItem(ATTR_NAME_BORDER, attr);
+
+ // (frame %TFrame; #IMPLIED)
+ // %TFrame; is
+ // (void|above|below|hsides|lhs|rhs|vsides|box|border).
+ atype = new HTMLCMDataTypeImpl(CMDataType.ENUM);
+ String[] values = {ATTR_VALUE_VOID, ATTR_VALUE_ABOVE, ATTR_VALUE_BELOW, ATTR_VALUE_HSIDES, ATTR_VALUE_LHS, ATTR_VALUE_RHS, ATTR_VALUE_VSIDES, ATTR_VALUE_BOX, ATTR_VALUE_BORDER};
+ atype.setEnumValues(values);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_FRAME, atype, CMAttributeDeclaration.OPTIONAL);
+ attr.obsolete(true);
+ attributes.putNamedItem(ATTR_NAME_FRAME, attr);
+
+ // (rules %TRules; #IMPLIED)
+ // %TRules; is (none | groups | rows | cols | all).
+ atype = new HTMLCMDataTypeImpl(CMDataType.ENUM);
+ String[] ruleValues = {ATTR_VALUE_NONE, ATTR_VALUE_GROUPS, ATTR_VALUE_ROWS, ATTR_VALUE_COLS, ATTR_VALUE_ALL};
+ atype.setEnumValues(ruleValues);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_RULES, atype, CMAttributeDeclaration.OPTIONAL);
+ attr.obsolete(true);
+ attributes.putNamedItem(ATTR_NAME_RULES, attr);
+
+ // (cellspacing %Length; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.LENGTH);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_CELLSPACING, atype, CMAttributeDeclaration.OPTIONAL);
+ attr.obsolete(true);
+ attributes.putNamedItem(ATTR_NAME_CELLSPACING, attr);
+
+ // (cellpadding %Length; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.LENGTH);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_CELLPADDING, atype, CMAttributeDeclaration.OPTIONAL);
+ attr.obsolete(true);
+ attributes.putNamedItem(ATTR_NAME_CELLPADDING, attr);
+
+ // (bgcolor %Color; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.COLOR);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_BGCOLOR, atype, CMAttributeDeclaration.OPTIONAL);
+ attr.obsolete(true);
+ attributes.putNamedItem(ATTR_NAME_BGCOLOR, attr);
+
+ // (datapagesize CDATA #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(CMDataType.CDATA);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_DATAPAGESIZE, atype, CMAttributeDeclaration.OPTIONAL);
+ attr.obsolete(true);
+ attributes.putNamedItem(ATTR_NAME_DATAPAGESIZE, attr);
+
+ // (height %Length; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.LENGTH);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_HEIGHT, atype, CMAttributeDeclaration.OPTIONAL);
+ attr.obsolete(true);
+ attributes.putNamedItem(ATTR_NAME_HEIGHT, attr);
+
+ // (background %URI; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(CMDataType.URI);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_BACKGROUND, atype, CMAttributeDeclaration.OPTIONAL);
+ attr.obsolete(true);
+ attributes.putNamedItem(ATTR_NAME_BACKGROUND, attr);
+
+ // (bordercolor, %Color; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.COLOR);
+ attr = new HTMLAttrDeclImpl(ATTR_NAME_BORDERCOLOR, atype, CMAttributeDeclaration.OPTIONAL);
+ attr.obsolete(true);
+ attributes.putNamedItem(ATTR_NAME_BORDERCOLOR, attr);
+
+
+ }
+ }
+
+ public static String[] getGlobalAttributeList(){
+ return CORE;
+ }
+
+ public static String[] getGlobalEventList(){
+ return EVENTS;
+ }
+}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HTML5ElementCollection.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HTML5ElementCollection.java
new file mode 100644
index 0000000..9e2d4b8
--- /dev/null
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HTML5ElementCollection.java
@@ -0,0 +1,577 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.html.core.internal.contentmodel;
+
+
+
+import java.lang.reflect.Field;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Vector;
+
+import org.eclipse.wst.html.core.internal.provisional.HTML50Namespace;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMNode;
+
+/**
+ * Factory for element declarations.
+ */
+class HTML5ElementCollection extends ElementCollection implements org.eclipse.wst.html.core.internal.provisional.HTML50Namespace.ElementName {
+
+
+ // Element IDs
+ private static class Ids50 extends Ids {
+ // <<D205513
+
+ public static final int ID_ARTICLE =106;
+ public static final int ID_ASIDE =107;
+ public static final int ID_AUDIO =108;
+ public static final int ID_CANVAS =109;
+ public static final int ID_COMMAND =110;
+ public static final int ID_DATALIST =111;
+ public static final int ID_DETAILS = 112;
+ public static final int ID_FIGURE =113;
+ public static final int ID_FIGCAPTION = 114;
+ public static final int ID_FOOTER =115;
+ public static final int ID_HEADER = 116;
+ public static final int ID_HGROUP =117;
+ public static final int ID_KEYGEN =118;
+ public static final int ID_MARK =119;
+ public static final int ID_MATH =120;
+ public static final int ID_METER =121;
+ public static final int ID_NAV =122;
+ public static final int ID_OUTPUT =123;
+ public static final int ID_PROGRESS =124;
+ public static final int ID_RP = 125;
+ public static final int ID_RT = 126;
+ public static final int ID_RUBY =127;
+ public static final int ID_SECTION =128;
+ public static final int ID_SOURCE = 129;
+ public static final int ID_SUMMARY = 130;
+ public static final int ID_SVG =131;
+ public static final int ID_TIME =132;
+ public static final int ID_VIDEO =133;
+
+ // D205513
+
+ public static int getNumOfIds() {
+ if (numofids != -1)
+ return numofids;
+
+ // NOTE: If the reflection is too slow, this method should
+ // just return the literal value, like 105.
+ // -- 5/25/2001
+ Class clazz = Ids50.class;
+ Field[] fields = clazz.getFields();
+ numofids = 0;
+ for (int i = 0; i < fields.length; i++) {
+ String name = fields[i].getName();
+ if (name.startsWith("ID_"))//$NON-NLS-1$
+ numofids++;
+ }
+ return numofids;
+ }
+
+ // chache the result of the reflection.
+ private static int numofids = -1;
+ }
+
+ /** %fontstyle;. TT | I | B | U | S | STRIKE | BIG | SMALL | BLINK */
+ private static final String[] FONTSTYLE = {TT, I, B, U, S, STRIKE, BIG, SMALL, BLINK};
+ /** %formctl;. INPUT | SELECT | TEXTAREA | LABEL | BUTTON */
+ private static final String[] FORMCTL = {INPUT, SELECT, TEXTAREA, LABEL, BUTTON, DATALIST};
+ /** %phrase;.
+ * EM | STRONG | DFN | CODE | SAMP | KBD | VAR | CITE | ABBR | ACRONYM | MARK
+ */ private static final String[] PHRASE = {KEYGEN, EM, STRONG, DFN, CODE, SAMP, KBD, VAR, CITE, ABBR, ACRONYM, MARK};
+ /** %special;.
+ * A | IMG | APPLET | OBJECT | FONT | BASEFONT | BR | SCRIPT |
+ * MAP | Q | SUB | SUP | SPAN | BDO | IFRAME | EMBED | MARQUEE |
+ * D2W | SUBMIT
+ * WBR | NOBR | BGSOUND
+ */
+ private static final String[] SPECIAL = {A, IMG, APPLET, OBJECT, FONT, BASEFONT, BR, WBR, // D205513
+ SCRIPT, MAP, Q, SUB, SUP, SPAN, BDO, IFRAME, EMBED, BGSOUND, // D205513
+ MARQUEE, NOBR, // D205513
+ OUTPUT, TIME, METER, PROGRESS,
+ COMMAND
+ };
+ /** %heading;. H[1-6] */
+ private static final String[] HEADING = {H1, H2, H3, H4, H5, H6};
+ /** %list;. UL | OL | DIR | MENU */
+ private static final String[] LIST = {UL, OL, DIR, MENU};
+ /** %preformatted;. PRE */
+ private static final String[] PREFORMATTED = {PRE};
+ /** %sectioning;. ARTICLE | ASIDE | NAV | SECTION */
+ private static final String[] SECTIONING = { ARTICLE, ASIDE, NAV, SECTION };
+
+ /** %embedded;. AUDIO|CANVAS|EMBED|IFRAME|IMG|MATH|OBJECT|SVG|VIDEO */
+ private static final String[] EMBEDDED = { AUDIO, CANVAS, EMBED, IFRAME, IMG, MATH, OBJECT, SVG, VIDEO};
+
+ private static String[] fNames = null;
+
+ /**
+ */
+ public HTML5ElementCollection(AttributeCollection collection) {
+ super(getNames(), collection);
+ attributeCollection = collection;
+ }
+
+ /**
+ * Actually creates HTMLElementDeclaration instance.
+ * @return HTMLElementDeclaration
+ */
+ protected CMNode create(String elementName) {
+ CMNode edec = null;
+
+ if (elementName.equalsIgnoreCase(ACRONYM)) {
+ edec = new HedPhrase(ACRONYM, this);
+ ((HTMLElemDeclImpl) edec).obsolete(true);
+ }
+ else if (elementName.equalsIgnoreCase(APPLET)) {
+ edec = new HedAPPLET(this);
+ ((HTMLElemDeclImpl) edec).obsolete(true);
+ }
+ else if (elementName.equalsIgnoreCase(ARTICLE)) {
+ edec = new HedSectioning(ARTICLE, this);
+
+ }
+ else if (elementName.equalsIgnoreCase(ASIDE)) {
+ edec = new HedSectioning(ASIDE, this);
+
+ }
+ else if (elementName.equalsIgnoreCase(AUDIO)) {
+ edec = new HedMediaElement(AUDIO, this);
+
+ }
+ else if (elementName.equalsIgnoreCase(BASEFONT)) {
+ edec = new HedBASEFONT(this);
+ ((HTMLElemDeclImpl) edec).obsolete(true);
+ }
+ else if (elementName.equalsIgnoreCase(BIG)) {
+ edec = new HedFontStyle(BIG, this);
+ ((HTMLElemDeclImpl) edec).obsolete(true);
+ }
+ else if (elementName.equalsIgnoreCase(CANVAS)) {
+ edec = new HedCANVAS(this);
+
+ }
+ else if (elementName.equalsIgnoreCase(CENTER)) {
+ edec = new HedCENTER(this);
+ ((HTMLElemDeclImpl) edec).obsolete(true);
+ }
+ else if (elementName.equalsIgnoreCase(COMMAND)) {
+ edec = new HedCOMMAND(this);
+
+ }
+ else if (elementName.equalsIgnoreCase(DATALIST)) {
+ edec = new HedDATALIST(this);
+
+ }
+ else if (elementName.equalsIgnoreCase(DETAILS)) {
+ edec = new HedDETAILS(this);
+
+ }
+ else if (elementName.equalsIgnoreCase(DIR)) {
+ edec = new HedMENU(DIR, this);
+ ((HTMLElemDeclImpl) edec).obsolete(true);
+ }
+ else if (elementName.equalsIgnoreCase(FIGCAPTION)) {
+ edec = new HedFIGCAPTION(this);
+
+ }
+ else if (elementName.equalsIgnoreCase(FIGURE)) {
+ edec = new HedFIGURE(this);
+
+ }
+ else if (elementName.equalsIgnoreCase(FOOTER)) {
+ edec = new HedHEADER(HTML50Namespace.ElementName.FOOTER ,this);
+
+ }
+ else if (elementName.equalsIgnoreCase(FRAME)) {
+ edec = new HedFRAME(this);
+ ((HTMLElemDeclImpl) edec).obsolete(true);
+ }
+ else if (elementName.equalsIgnoreCase(FRAMESET)) {
+ edec = new HedFRAMESET(this);
+ ((HTMLElemDeclImpl) edec).obsolete(true);
+ }
+ else if (elementName.equalsIgnoreCase(HEADER)) {
+ edec = new HedHEADER(HTML50Namespace.ElementName.HEADER ,this);
+ }
+ else if (elementName.equalsIgnoreCase(HGROUP)) {
+ edec = new HedHGROUP(this);
+
+ }
+ else if (elementName.equalsIgnoreCase(ISINDEX)) {
+ edec = new HedISINDEX(this);
+ ((HTMLElemDeclImpl) edec).obsolete(true);
+ }
+ else if (elementName.equalsIgnoreCase(KEYGEN)) {
+ edec = new HedKEYGEN(this);
+
+ }
+ else if (elementName.equalsIgnoreCase(MARK)) {
+ edec = new HedPhrase(HTML50Namespace.ElementName.MARK,this);
+
+ }
+ else if (elementName.equalsIgnoreCase(MATH)) {
+ edec = new HedMath(this);
+
+ }
+ else if (elementName.equalsIgnoreCase(METER)) {
+ edec = new HedMETER(this);
+ }
+ else if (elementName.equalsIgnoreCase(NAV)) {
+ edec = new HedSectioning(NAV, this);
+ }
+ else if (elementName.equalsIgnoreCase(NOFRAMES)) {
+ edec = new HedNOFRAMES(this);
+ ((HTMLElemDeclImpl) edec).obsolete(true);
+ }
+ else if (elementName.equalsIgnoreCase(OUTPUT)) {
+ edec = new HedOUTPUT(this);
+
+ }
+ else if (elementName.equalsIgnoreCase(PROGRESS)) {
+ edec = new HedPROGRESS(this);
+
+ }
+ else if (elementName.equalsIgnoreCase(RP)) {
+ edec = new HedRP(this);
+
+ }
+ else if (elementName.equalsIgnoreCase(RT)) {
+ edec = new HedRT(this);
+
+ }
+ else if (elementName.equalsIgnoreCase(RUBY)) {
+ edec = new HedRUBY(this);
+
+ }
+ else if (elementName.equalsIgnoreCase(S)) {
+ edec = new HedFontStyle(S, this);
+ ((HTMLElemDeclImpl) edec).obsolete(true);
+ }
+ else if (elementName.equalsIgnoreCase(SECTION)) {
+ edec = new HedSectioning(SECTION, this);
+
+ }
+ else if (elementName.equalsIgnoreCase(SOURCE)) {
+ edec = new HedSOURCE(this);
+
+ }
+ else if (elementName.equalsIgnoreCase(STRIKE)) {
+ edec = new HedFontStyle(STRIKE, this);
+ ((HTMLElemDeclImpl) edec).obsolete(true);
+ }
+ else if (elementName.equalsIgnoreCase(SUMMARY)) {
+ edec = new HedSUMMARY(this);
+ }
+ else if (elementName.equalsIgnoreCase(SVG)) {
+ edec = new HedSVG(this);
+ }
+ else if (elementName.equalsIgnoreCase(TIME)) {
+ edec = new HedTIME(this);
+ }
+ else if (elementName.equalsIgnoreCase(TT)) {
+ edec = new HedFontStyle(TT, this);
+ ((HTMLElemDeclImpl) edec).obsolete(true);
+ }
+ else if (elementName.equalsIgnoreCase(U)) {
+ edec = new HedFontStyle(U, this);
+ ((HTMLElemDeclImpl) edec).obsolete(true);
+ }
+ else if (elementName.equalsIgnoreCase(VIDEO)) {
+ edec = new HedVIDEO(this);
+
+ }
+ // unknown
+ else {
+ // NOTE: We don't define the UNKNOWN element declaration.
+ // <code>null</code> for a declaration is a sign of
+ // the target element is unknown.
+ // -- 3/9/2001
+ edec = super.create(elementName);
+ }
+ return edec;
+ }
+
+ public AttributeCollection getAttributeCollection() {
+ return attributeCollection;
+ }
+
+ public final Collection getNamesOfBlock() {
+ // P, DL, DIV, CENTER, NOSCRIPT, NOFRAMES, BLOCKQUOTE, FORM, ISINDEX, HR,
+ // TABLE, FIELDSET, ADDRESS, RUBY, FIGURE
+ String[] blockMisc = {HEADER, FOOTER, HGROUP, P, DL, DIV, CENTER, NOSCRIPT, NOFRAMES, BLOCKQUOTE, FORM, ISINDEX, HR, TABLE, FIELDSET, ADDRESS, RUBY, FIGURE};
+ Vector names = new Vector(Arrays.asList(blockMisc));
+ // %heading;
+ names.addAll(Arrays.asList(HEADING));
+ // %list;
+ names.addAll(Arrays.asList(LIST));
+ // %preformatted;
+ names.addAll(Arrays.asList(PREFORMATTED));
+
+
+ return names;
+ }
+
+
+ public final void getSectioning(CMGroupImpl group) {
+ if (group == null)
+ return;
+ getDeclarations(group, Arrays.asList(SECTIONING).iterator());
+ }
+
+ public void getEmbedded(CMGroupImpl group) {
+ if (group == null)
+ return;
+ getDeclarations(group, Arrays.asList(EMBEDDED).iterator());
+ }
+
+ public void getFlow(CMGroupImpl group) {
+ if (group == null)
+ return;
+ super.getFlow(group);
+ getSectioning(group);
+ CMNode node = getNamedItem(DETAILS);
+ if (node != null) {
+ group.appendChild(node);
+ }
+ }
+
+ public void getInline(CMGroupImpl group) {
+ if (group == null)
+ return;
+ super.getInline(group);
+ getEmbedded(group);
+ }
+
+ /**
+ * Create element declarations and store them into a <code>CMGroupImpl</code>
+ * instance.<br>
+ * @param group CMGroupImpl Return values.
+ */
+ public final void getFontstyle(CMGroupImpl group) {
+ if (group == null)
+ return;
+ getDeclarations(group, Arrays.asList(FONTSTYLE).iterator());
+ }
+
+ /**
+ * Create element declarations and store them into a <code>CMGroupImpl</code>
+ * instance.<br>
+ * @param group CMGroupImpl Return values.
+ */
+ public final void getFormctrl(CMGroupImpl group) {
+ if (group == null)
+ return;
+ getDeclarations(group, Arrays.asList(FORMCTL).iterator());
+ }
+
+ /**
+ * %heading;.
+ * @param group CMGroupImpl Return values.
+ */
+ public final void getHeading(CMGroupImpl group) {
+ if (group == null)
+ return;
+
+ getDeclarations(group, Arrays.asList(HEADING).iterator());
+ }
+
+
+
+ /**
+ * %list;.
+ * @param group CMGroupImpl Return values.
+ */
+ public final void getList(CMGroupImpl group) {
+ if (group == null)
+ return;
+
+ getDeclarations(group, Arrays.asList(LIST).iterator());
+ }
+
+ /**
+ * Create element declarations and store them into a <code>CMGroupImpl</code>
+ * instance.<br>
+ * @param group CMGroupImpl Return values.
+ */
+ public final void getPhrase(CMGroupImpl group) {
+ if (group == null)
+ return;
+ getDeclarations(group, Arrays.asList(PHRASE).iterator());
+ }
+
+ /**
+ * %preformatted;
+ * @param group CMGroupImpl Return values.
+ */
+ public final void getPreformatted(CMGroupImpl group) {
+ if (group == null)
+ return;
+
+ getDeclarations(group, Arrays.asList(PREFORMATTED).iterator());
+ }
+
+ /**
+ * Create element declarations and store them into a <code>CMGroupImpl</code>
+ * instance.<br>
+ * @param group CMGroupImpl Return values.
+ */
+ public final void getSpecial(CMGroupImpl group) {
+ if (group == null)
+ return;
+ getDeclarations(group, Arrays.asList(SPECIAL).iterator());
+ }
+
+ private static String[] getNames() {
+ if (fNames == null) {
+ fNames = new String[Ids50.getNumOfIds()];
+ fNames[Ids.ID_A] = A;
+ fNames[Ids.ID_ABBR] = ABBR;
+ fNames[Ids.ID_ACRONYM] = ACRONYM;
+ fNames[Ids.ID_ADDRESS] = ADDRESS;
+ fNames[Ids.ID_APPLET] = APPLET;
+ fNames[Ids.ID_AREA] = AREA;
+ fNames[Ids50.ID_ARTICLE] = ARTICLE;
+ fNames[Ids50.ID_ASIDE] = ASIDE;
+ fNames[Ids50.ID_AUDIO] = AUDIO;
+ fNames[Ids.ID_B] = B;
+ fNames[Ids.ID_BASE] = BASE;
+ fNames[Ids.ID_BASEFONT] = BASEFONT;
+ fNames[Ids.ID_BDO] = BDO;
+ fNames[Ids.ID_BIG] = BIG;
+ fNames[Ids.ID_BLINK] = BLINK;
+ fNames[Ids.ID_BLOCKQUOTE] = BLOCKQUOTE;
+ fNames[Ids.ID_BODY] = BODY;
+ fNames[Ids.ID_BR] = BR;
+ fNames[Ids.ID_BUTTON] = BUTTON;
+ fNames[Ids.ID_CAPTION] = CAPTION;
+ fNames[Ids50.ID_CANVAS] = CANVAS;
+ fNames[Ids.ID_CENTER] = CENTER;
+ fNames[Ids.ID_CITE] = CITE;
+ fNames[Ids.ID_CODE] = CODE;
+ fNames[Ids.ID_COL] = COL;
+ fNames[Ids.ID_COLGROUP] = COLGROUP;
+ fNames[Ids50.ID_COMMAND] = COMMAND;
+ fNames[Ids50.ID_DATALIST] = DATALIST;
+ fNames[Ids50.ID_DETAILS] = DETAILS;
+ fNames[Ids.ID_DD] = DD;
+ fNames[Ids.ID_DEL] = DEL;
+ fNames[Ids.ID_DFN] = DFN;
+ fNames[Ids.ID_DIR] = DIR;
+ fNames[Ids.ID_DIV] = DIV;
+ fNames[Ids.ID_DL] = DL;
+ fNames[Ids.ID_DT] = DT;
+ fNames[Ids.ID_EM] = EM;
+ fNames[Ids.ID_EMBED] = EMBED;
+ fNames[Ids.ID_FIELDSET] = FIELDSET;
+ fNames[Ids50.ID_FIGURE] = FIGURE;
+ fNames[Ids50.ID_FIGCAPTION] = FIGCAPTION;
+ fNames[Ids.ID_FONT] = FONT;
+ fNames[Ids.ID_FORM] = FORM;
+ fNames[Ids50.ID_FOOTER] = FOOTER;
+ fNames[Ids.ID_FRAME] = FRAME;
+ fNames[Ids.ID_FRAMESET] = FRAMESET;
+ fNames[Ids.ID_H1] = H1;
+ fNames[Ids.ID_H2] = H2;
+ fNames[Ids.ID_H3] = H3;
+ fNames[Ids.ID_H4] = H4;
+ fNames[Ids.ID_H5] = H5;
+ fNames[Ids.ID_H6] = H6;
+ fNames[Ids.ID_HEAD] = HEAD;
+ fNames[Ids50.ID_HEADER] = HEADER;
+ fNames[Ids50.ID_HGROUP] = HGROUP;
+ fNames[Ids.ID_HR] = HR;
+ fNames[Ids.ID_HTML] = HTML;
+ fNames[Ids.ID_I] = I;
+ fNames[Ids.ID_IFRAME] = IFRAME;
+ fNames[Ids.ID_IMG] = IMG;
+ fNames[Ids.ID_INPUT] = INPUT;
+ fNames[Ids.ID_INS] = INS;
+ fNames[Ids.ID_ISINDEX] = ISINDEX;
+ fNames[Ids.ID_KBD] = KBD;
+ fNames[Ids50.ID_KEYGEN] = KEYGEN;
+ fNames[Ids.ID_LABEL] = LABEL;
+ fNames[Ids.ID_LEGEND] = LEGEND;
+ fNames[Ids.ID_LI] = LI;
+ fNames[Ids.ID_LINK] = LINK;
+ fNames[Ids.ID_MAP] = MAP;
+ fNames[Ids50.ID_MARK] = MARK;
+ fNames[Ids.ID_MARQUEE] = MARQUEE;
+ fNames[Ids50.ID_MATH] = MATH;
+ fNames[Ids.ID_MENU] = MENU;
+ fNames[Ids.ID_META] = META;
+ fNames[Ids50.ID_METER] = METER;
+ fNames[Ids50.ID_NAV] = NAV;
+ fNames[Ids.ID_NOEMBED] = NOEMBED;
+ fNames[Ids.ID_NOFRAMES] = NOFRAMES;
+ fNames[Ids.ID_NOSCRIPT] = NOSCRIPT;
+ fNames[Ids.ID_OBJECT] = OBJECT;
+ fNames[Ids.ID_OL] = OL;
+ fNames[Ids.ID_OPTGROUP] = OPTGROUP;
+ fNames[Ids.ID_OPTION] = OPTION;
+ fNames[Ids50.ID_OUTPUT] = OUTPUT;
+ fNames[Ids.ID_P] = P;
+ fNames[Ids.ID_PARAM] = PARAM;
+ fNames[Ids.ID_PRE] = PRE;
+ fNames[Ids50.ID_PROGRESS] = PROGRESS;
+ fNames[Ids.ID_Q] = Q;
+ fNames[Ids50.ID_RP] = RP;
+ fNames[Ids50.ID_RT] = RT;
+ fNames[Ids50.ID_RUBY] = RUBY;
+ fNames[Ids.ID_S] = S;
+ fNames[Ids.ID_SAMP] = SAMP;
+ fNames[Ids.ID_SCRIPT] = SCRIPT;
+ fNames[Ids50.ID_SECTION] = SECTION;
+ fNames[Ids.ID_SELECT] = SELECT;
+ fNames[Ids.ID_SMALL] = SMALL;
+ fNames[Ids50.ID_SOURCE] = SOURCE;
+ fNames[Ids.ID_SPAN] = SPAN;
+ fNames[Ids.ID_STRIKE] = STRIKE;
+ fNames[Ids.ID_STRONG] = STRONG;
+ fNames[Ids.ID_STYLE] = STYLE;
+ fNames[Ids50.ID_SUMMARY] = SUMMARY;
+ fNames[Ids.ID_SUB] = SUB;
+ fNames[Ids.ID_SUP] = SUP;
+ fNames[Ids50.ID_SVG] = SVG;
+ fNames[Ids.ID_TABLE] = TABLE;
+ fNames[Ids.ID_TBODY] = TBODY;
+ fNames[Ids.ID_TD] = TD;
+ fNames[Ids.ID_TEXTAREA] = TEXTAREA;
+ fNames[Ids.ID_TFOOT] = TFOOT;
+ fNames[Ids.ID_TH] = TH;
+ fNames[Ids.ID_THEAD] = THEAD;
+ fNames[Ids50.ID_TIME] = TIME;
+ fNames[Ids.ID_TITLE] = TITLE;
+ fNames[Ids.ID_TR] = TR;
+ fNames[Ids.ID_TT] = TT;
+ fNames[Ids.ID_U] = U;
+ fNames[Ids.ID_UL] = UL;
+ fNames[Ids.ID_VAR] = VAR;
+ fNames[Ids50.ID_VIDEO] = VIDEO;
+ fNames[Ids.ID_WBR] = WBR;
+ fNames[Ids.ID_SSI_CONFIG] = SSI_CONFIG;
+ fNames[Ids.ID_SSI_ECHO] = SSI_ECHO;
+ fNames[Ids.ID_SSI_EXEC] = SSI_EXEC;
+ fNames[Ids.ID_SSI_FSIZE] = SSI_FSIZE;
+ fNames[Ids.ID_SSI_FLASTMOD] = SSI_FLASTMOD;
+ fNames[Ids.ID_SSI_INCLUDE] = SSI_INCLUDE;
+ fNames[Ids.ID_SSI_PRINTENV] = SSI_PRINTENV;
+ fNames[Ids.ID_SSI_SET] = SSI_SET;
+ fNames[Ids.ID_BGSOUND] = BGSOUND;
+ fNames[Ids.ID_NOBR] = NOBR;
+ fNames[Ids.ID_WBR] = WBR;
+ }
+ return fNames;
+ }
+}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HTMLAttrDeclImpl.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HTMLAttrDeclImpl.java
index ce938e3..9c85e4a 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HTMLAttrDeclImpl.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HTMLAttrDeclImpl.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -27,6 +27,8 @@
private HTMLCMDataTypeImpl type = null;
private int usage = 0;
+ private boolean is_obsolete = false;
+
/**
*/
@@ -106,6 +108,9 @@
return true;
else if (propertyName.equals(HTMLCMProperties.IS_SCRIPTABLE))
return true;
+ else if (propertyName.equals(HTMLCMProperties.IS_OBSOLETE))
+ return is_obsolete;
+
return super.supports(propertyName);
}
@@ -117,6 +122,13 @@
else if (propertyName.equals(HTMLCMProperties.IS_SCRIPTABLE)) {
return getAttrType().getDataTypeName() == HTMLCMDataType.SCRIPT ? new Boolean(true) : new Boolean(false);
}
+ else if (propertyName.equals(HTMLCMProperties.IS_OBSOLETE))
+ return new Boolean(is_obsolete);
+
return super.getProperty(propertyName);
}
+
+ public void obsolete(boolean is_obsolete){
+ this.is_obsolete = is_obsolete;
+ }
}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HTMLCMDataType.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HTMLCMDataType.java
index fba0b86..3c94c47 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HTMLCMDataType.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HTMLCMDataType.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -63,4 +63,9 @@
public static final String STYLE_SHEET = CMDataType.CDATA;
/** %Text; == CDATA */
public static final String TEXT = CMDataType.CDATA;
+ /** %MediaType; == CDATA */
+ public static final String MEDIA_TYPE = CMDataType.CDATA;
+ /** %BrowsingContext; == CDATA */
+ public static final String BROWSING_CONTEXT = CMDataType.CDATA;
+
}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HTMLCMDocumentFactory.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HTMLCMDocumentFactory.java
index 7bf5249..7b9f634 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HTMLCMDocumentFactory.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HTMLCMDocumentFactory.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -18,6 +18,7 @@
import org.eclipse.wst.html.core.internal.contentmodel.chtml.CHCMDocImpl;
import org.eclipse.wst.html.core.internal.provisional.HTML40Namespace;
+import org.eclipse.wst.html.core.internal.provisional.HTML50Namespace;
import org.eclipse.wst.xml.core.internal.contentmodel.CMDocument;
import org.eclipse.wst.xml.core.internal.provisional.contentmodel.CMDocType;
@@ -27,7 +28,7 @@
public final class HTMLCMDocumentFactory {
private static Hashtable cmdocs = new Hashtable();
- private static List supportedCMtypes = Arrays.asList(new Object[]{CMDocType.HTML_DOC_TYPE, CMDocType.CHTML_DOC_TYPE, CMDocType.JSP11_DOC_TYPE, CMDocType.JSP12_DOC_TYPE, CMDocType.JSP20_DOC_TYPE, CMDocType.TAG20_DOC_TYPE, CMDocType.JSP21_DOC_TYPE});
+ private static List supportedCMtypes = Arrays.asList(new Object[]{CMDocType.HTML_DOC_TYPE, CMDocType.CHTML_DOC_TYPE, CMDocType.JSP11_DOC_TYPE, CMDocType.JSP12_DOC_TYPE, CMDocType.JSP20_DOC_TYPE, CMDocType.TAG20_DOC_TYPE, CMDocType.JSP21_DOC_TYPE, CMDocType.HTML5_DOC_TYPE});
private static JCMDocImpl jsp11doc = null;
@@ -62,6 +63,12 @@
return html40doc;
}
+ else if (CMDocType.HTML5_DOC_TYPE.equals(cmtype)) {
+ CMNamespaceImpl h50ns = new CMNamespaceImpl(HTML50Namespace.HTML50_URI, HTML50Namespace.HTML50_TAG_PREFIX);
+ H5CMDocImpl html50doc = new H5CMDocImpl(CMDocType.HTML5_DOC_TYPE, h50ns);
+ return html50doc;
+ }
+
else if (CMDocType.JSP20_DOC_TYPE.equals(cmtype)) {
CMNamespaceImpl j20ns = new CMNamespaceImpl(JSP20Namespace.JSP20_URI, JSP11Namespace.JSP_TAG_PREFIX);
JCM20DocImpl jsp20doc = new JCM20DocImpl(CMDocType.JSP20_DOC_TYPE, j20ns);
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HTMLElemDeclImpl.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HTMLElemDeclImpl.java
index f0b1471..3f5a9b7 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HTMLElemDeclImpl.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HTMLElemDeclImpl.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -43,6 +43,7 @@
protected boolean indentChild = false;
protected ElementCollection elementCollection = null;
protected AttributeCollection attributeCollection = null;
+ private boolean is_obsolete = false;
protected final static CMNamedNodeMap EMPTY_MAP = new CMNamedNodeMap() {
public int getLength() {
return 0;
@@ -282,6 +283,9 @@
ComplexTypeDefinition def = getComplexTypeDefinition();
return (def != null);
}
+ if (propertyName.equals(HTMLCMProperties.IS_OBSOLETE)) {
+ return is_obsolete;
+ }
else {
PropertyProvider pp = PropertyProviderFactory.getProvider(propertyName);
if (pp == null)
@@ -301,6 +305,9 @@
ComplexTypeDefinition def = getComplexTypeDefinition();
return (def != null) ? def.getPrimaryCandidate() : null;
}
+ else if (propertyName.equals(HTMLCMProperties.IS_OBSOLETE)){
+ return new Boolean(is_obsolete);
+ }
else {
PropertyProvider pp = PropertyProviderFactory.getProvider(propertyName);
if (pp == null)
@@ -363,4 +370,8 @@
}
return false;
}
+
+ public void obsolete(boolean is_obsolete){
+ this.is_obsolete = is_obsolete;
+ }
}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedA.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedA.java
index 92eb28e..270fc91 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedA.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedA.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -12,8 +12,6 @@
-import java.util.Arrays;
-
import org.eclipse.wst.html.core.internal.provisional.HTML40Namespace;
import org.eclipse.wst.xml.core.internal.contentmodel.CMContent;
import org.eclipse.wst.xml.core.internal.contentmodel.CMGroup;
@@ -35,21 +33,6 @@
/**
* %attrs;
- * (charset %Charset; #IMPLIED)
- * (type %ContentType; #IMPLIED)
- * (name CDATA #IMPLIED)
- * (href %URI; #IMPLIED)
- * (hreflang %LanguageCode; #IMPLIED)
- * (target %FrameTarget; #IMPLIED)
- * (rel %LinkTypes; #IMPLIED)
- * (rev %LinkTypes; #IMPLIED)
- * (accesskey %Character; #IMPLIED)
- * (directkey %Character; #IMPLIED)
- * (shape %Shape; rect)
- * (coords %Coords; #IMPLIED)
- * (tabindex NUMBER #IMPLIED)
- * (onfocus %Script; #IMPLIED)
- * (onblur %Script; #IMPLIED)
*/
protected void createAttributeDeclarations() {
if (attributes != null)
@@ -62,8 +45,9 @@
// %attrs;
attributeCollection.getAttrs(attributes);
- String[] names = {HTML40Namespace.ATTR_NAME_CHARSET, HTML40Namespace.ATTR_NAME_TYPE, HTML40Namespace.ATTR_NAME_NAME, HTML40Namespace.ATTR_NAME_HREF, HTML40Namespace.ATTR_NAME_HREFLANG, HTML40Namespace.ATTR_NAME_TARGET, HTML40Namespace.ATTR_NAME_REL, HTML40Namespace.ATTR_NAME_REV, HTML40Namespace.ATTR_NAME_ACCESSKEY, HTML40Namespace.ATTR_NAME_DIRECTKEY, HTML40Namespace.ATTR_NAME_SHAPE, HTML40Namespace.ATTR_NAME_COORDS, HTML40Namespace.ATTR_NAME_TABINDEX, HTML40Namespace.ATTR_NAME_ONFOCUS, HTML40Namespace.ATTR_NAME_ONBLUR};
- attributeCollection.getDeclarations(attributes, Arrays.asList(names).iterator());
+ //different sets of attributes for html 4 & 5
+ attributeCollection.createAttributeDeclarations(HTML40Namespace.ElementName.A, attributes);
+
}
/**
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedAREA.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedAREA.java
index 3afad06..322e65c 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedAREA.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedAREA.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -12,8 +12,6 @@
-import java.util.Arrays;
-
import org.eclipse.wst.html.core.internal.provisional.HTML40Namespace;
@@ -34,16 +32,6 @@
/**
* AREA.
* %attrs;
- * (shape %Shape; rect)
- * (coords %Coords; #IMPLIED)
- * (href %URI; #IMPLIED)
- * (target %FrameTarget; #IMPLIED)
- * (nohref (nohref) #IMPLIED)
- * (alt %Text; #REQUIRED)
- * (tabindex NUMBER #IMPLIED)
- * (accesskey %Character; #IMPLIED)
- * (onfocus %Script; #IMPLIED)
- * (onblur %Script; #IMPLIED)
*/
protected void createAttributeDeclarations() {
if (attributes != null)
@@ -55,7 +43,8 @@
// %attrs;
attributeCollection.getAttrs(attributes);
- String[] names = {HTML40Namespace.ATTR_NAME_SHAPE, HTML40Namespace.ATTR_NAME_COORDS, HTML40Namespace.ATTR_NAME_HREF, HTML40Namespace.ATTR_NAME_TARGET, HTML40Namespace.ATTR_NAME_NOHREF, HTML40Namespace.ATTR_NAME_ALT, HTML40Namespace.ATTR_NAME_TABINDEX, HTML40Namespace.ATTR_NAME_ACCESSKEY, HTML40Namespace.ATTR_NAME_ONFOCUS, HTML40Namespace.ATTR_NAME_ONBLUR};
- attributeCollection.getDeclarations(attributes, Arrays.asList(names).iterator());
+ //different sets of attributes for html 4 & 5
+ attributeCollection.createAttributeDeclarations(HTML40Namespace.ElementName.AREA, attributes);
+
}
}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedBUTTON.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedBUTTON.java
index 9754980..6ace2cb 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedBUTTON.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedBUTTON.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -15,9 +15,7 @@
import java.util.Arrays;
import org.eclipse.wst.html.core.internal.provisional.HTML40Namespace;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMAttributeDeclaration;
import org.eclipse.wst.xml.core.internal.contentmodel.CMContent;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMDataType;
import org.eclipse.wst.xml.core.internal.contentmodel.CMGroup;
import org.eclipse.wst.xml.core.internal.contentmodel.CMNamedNodeMap;
@@ -35,15 +33,6 @@
/**
* %attrs;
- * %reserved; ... empty.
- * (name CDATA #IMPLIED)
- * (value CDATA #IMPLIED)
- * (type (button|submit|reset) submit) ... should be defined locally.
- * (disabled (disabled) #IMPLIED)
- * (tabindex NUMBER #IMPLIED)
- * (accesskey %Character; #IMPLIED)
- * (onfocus %Script; #IMPLIED)
- * (onblur %Script; #IMPLIED)
*/
protected void createAttributeDeclarations() {
if (attributes != null)
@@ -55,17 +44,10 @@
// %attrs;
attributeCollection.getAttrs(attributes);
-
- String[] names = {HTML40Namespace.ATTR_NAME_NAME, HTML40Namespace.ATTR_NAME_VALUE, HTML40Namespace.ATTR_NAME_DISABLED, HTML40Namespace.ATTR_NAME_TABINDEX, HTML40Namespace.ATTR_NAME_ACCESSKEY, HTML40Namespace.ATTR_NAME_ONFOCUS, HTML40Namespace.ATTR_NAME_ONBLUR};
- attributeCollection.getDeclarations(attributes, Arrays.asList(names).iterator());
-
- // (type (button|submit|reset) submit) ... should be defined locally.
- HTMLCMDataTypeImpl atype = new HTMLCMDataTypeImpl(CMDataType.ENUM);
- String[] values = {HTML40Namespace.ATTR_VALUE_BUTTON, HTML40Namespace.ATTR_VALUE_SUBMIT, HTML40Namespace.ATTR_VALUE_RESET};
- atype.setEnumValues(values);
-
- HTMLAttrDeclImpl attr = new HTMLAttrDeclImpl(HTML40Namespace.ATTR_NAME_TYPE, atype, CMAttributeDeclaration.OPTIONAL);
- attributes.putNamedItem(HTML40Namespace.ATTR_NAME_TYPE, attr);
+
+ //different sets of attributes for html 4 & 5
+ attributeCollection.createAttributeDeclarations(HTML40Namespace.ElementName.BUTTON, attributes);
+
}
/**
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedCANVAS.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedCANVAS.java
new file mode 100644
index 0000000..453fb1c
--- /dev/null
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedCANVAS.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.html.core.internal.contentmodel;
+
+import java.util.Arrays;
+
+import org.eclipse.wst.html.core.internal.provisional.HTML40Namespace;
+import org.eclipse.wst.html.core.internal.provisional.HTML50Namespace;
+
+
+
+/**
+ * CANVAS.
+ */
+final class HedCANVAS extends HTMLElemDeclImpl {
+
+ /**
+ */
+ public HedCANVAS(ElementCollection collection) {
+ super(HTML50Namespace.ElementName.CANVAS, collection);
+ layoutType = LAYOUT_BLOCK;
+ }
+
+ /**
+ * %attrs;
+ * (height, width)
+ */
+ protected void createAttributeDeclarations() {
+ if (attributes != null)
+ return; // already created.
+ if (attributeCollection == null)
+ return; // fatal
+
+ attributes = new CMNamedNodeMapImpl();
+
+ // %attrs;
+ attributeCollection.getAttrs(attributes);
+
+
+ String[] names = { HTML40Namespace.ATTR_NAME_WIDTH, HTML40Namespace.ATTR_NAME_HEIGHT };
+ attributeCollection.getDeclarations(attributes, Arrays.asList(names).iterator());
+ }
+}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedCOMMAND.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedCOMMAND.java
new file mode 100644
index 0000000..3fc7c03
--- /dev/null
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedCOMMAND.java
@@ -0,0 +1,94 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.html.core.internal.contentmodel;
+
+
+
+import org.eclipse.wst.html.core.internal.provisional.HTML40Namespace;
+import org.eclipse.wst.html.core.internal.provisional.HTML50Namespace;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMAttributeDeclaration;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMDataType;
+
+/**
+ * COMMAND.
+ */
+final class HedCOMMAND extends HTMLElemDeclImpl {
+
+ /**
+ */
+ public HedCOMMAND(ElementCollection collection) {
+ super(HTML50Namespace.ElementName.COMMAND, collection);
+ layoutType = LAYOUT_OBJECT;
+ }
+
+ /**
+ * COMMAND.
+ * %attrs;
+ * // (type %CommandTYPE; command | checkbox|radio)
+ * // (label %CDATA; #REQUIRED)
+ * // (icon %URI; #OPTIONAL)
+ * // (disabled %BOOLEAN; #OPTIONAL)
+ * // (checked %BOOLEAN; #OPTIONAL)
+ * // (radiogroup %TEXT; #OPTIONAL)
+ */
+ protected void createAttributeDeclarations() {
+ if (attributes != null)
+ return; // already created.
+ if (attributeCollection == null)
+ return; // fatal
+
+ attributes = new CMNamedNodeMapImpl();
+
+ // %attrs;
+ attributeCollection.getAttrs(attributes);
+
+ HTMLCMDataTypeImpl atype = null;
+ HTMLAttrDeclImpl attr = null;
+ // (type %CommandTYPE; command | checkbox|radio)
+ // NOTE: %InputType is ENUM;
+ atype = new HTMLCMDataTypeImpl(CMDataType.ENUM);
+ String[] values = {HTML50Namespace.ATTR_VALUE_COMMAND, HTML40Namespace.ATTR_VALUE_CHECKBOX, HTML40Namespace.ATTR_VALUE_RADIO};
+ atype.setEnumValues(values);
+ atype.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, HTML50Namespace.ATTR_VALUE_COMMAND);
+ attr = new HTMLAttrDeclImpl(HTML40Namespace.ATTR_NAME_TYPE, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(HTML40Namespace.ATTR_NAME_TYPE, attr);
+
+ // (label %CDATA; #REQUIRED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.TEXT);
+ attr = new HTMLAttrDeclImpl(HTML40Namespace.ATTR_NAME_LABEL, atype, CMAttributeDeclaration.REQUIRED);
+ attributes.putNamedItem(HTML40Namespace.ATTR_NAME_LABEL, attr);
+
+ // (icon %URI; #OPTIONAL)
+ atype = new HTMLCMDataTypeImpl(CMDataType.URI);
+ attr = new HTMLAttrDeclImpl(HTML50Namespace.ATTR_NAME_ICON, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(HTML50Namespace.ATTR_NAME_ICON, attr);
+
+
+ // (disabled %BOOLEAN; #OPTIONAL)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.BOOLEAN);
+ atype.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, HTML40Namespace.ATTR_VALUE_FALSE);
+ attr = new HTMLAttrDeclImpl(HTML40Namespace.ATTR_NAME_DISABLED, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(HTML40Namespace.ATTR_NAME_DISABLED, attr);
+
+ // (checked %BOOLEAN; #OPTIONAL)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.BOOLEAN);
+ atype.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, HTML40Namespace.ATTR_VALUE_FALSE);
+ attr = new HTMLAttrDeclImpl(HTML40Namespace.ATTR_NAME_CHECKED, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(HTML40Namespace.ATTR_NAME_CHECKED, attr);
+
+ // (radiogroup %TEXT; #OPTIONAL)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.TEXT);
+ attr = new HTMLAttrDeclImpl(HTML50Namespace.ATTR_NAME_RADIOGROUP, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(HTML50Namespace.ATTR_NAME_RADIOGROUP, attr);
+
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedDATALIST.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedDATALIST.java
new file mode 100644
index 0000000..ba671c6
--- /dev/null
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedDATALIST.java
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.html.core.internal.contentmodel;
+
+
+
+import org.eclipse.wst.html.core.internal.provisional.HTML50Namespace;
+
+/**
+ * DATALIST.
+ */
+final class HedDATALIST extends HTMLElemDeclImpl {
+
+ /**
+ */
+ public HedDATALIST(ElementCollection collection) {
+ super(HTML50Namespace.ElementName.DATALIST, collection);
+ typeDefinitionName = ComplexTypeDefinitionFactory.CTYPE_DATALIST;
+ layoutType = LAYOUT_OBJECT;
+ indentChild = true;
+ }
+
+ /**
+ * %attrs;
+ */
+ protected void createAttributeDeclarations() {
+ if (attributes != null)
+ return; // already created.
+ if (attributeCollection == null)
+ return; // fatal
+
+ attributes = new CMNamedNodeMapImpl();
+
+ // %attrs;
+ attributeCollection.getAttrs(attributes);
+
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedDETAILS.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedDETAILS.java
new file mode 100644
index 0000000..a4e8f01
--- /dev/null
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedDETAILS.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.html.core.internal.contentmodel;
+
+import org.eclipse.wst.html.core.internal.provisional.HTML50Namespace;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMNode;
+
+public class HedDETAILS extends HTMLElemDeclImpl {
+
+ public HedDETAILS(ElementCollection collection) {
+ super(HTML50Namespace.ElementName.DETAILS, collection);
+ typeDefinitionName = ComplexTypeDefinitionFactory.CTYPE_DETAILS_CONTAINER;
+ }
+
+ protected void createAttributeDeclarations() {
+ if (attributes != null)
+ return; // already created.
+ if (attributeCollection == null)
+ return; // fatal
+ attributes = new CMNamedNodeMapImpl();
+
+ // %attrs;
+ attributeCollection.getAttrs(attributes);
+
+ CMNode node = attributeCollection.getDeclaration(HTML50Namespace.ATTR_NAME_OPEN);
+ if (node != null)
+ attributes.putNamedItem(HTML50Namespace.ATTR_NAME_OPEN, node);
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedFIELDSET.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedFIELDSET.java
index f47fbcb..3e0d7ff 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedFIELDSET.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedFIELDSET.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -41,6 +41,9 @@
// %attrs;
attributeCollection.getAttrs(attributes);
+ //different sets of attributes for html 4 & 5
+ attributeCollection.createAttributeDeclarations(HTML40Namespace.ElementName.FIELDSET, attributes);
+
}
/**
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedFIGCAPTION.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedFIGCAPTION.java
new file mode 100644
index 0000000..9b6162c
--- /dev/null
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedFIGCAPTION.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.html.core.internal.contentmodel;
+
+import org.eclipse.wst.html.core.internal.provisional.HTML50Namespace;
+
+public class HedFIGCAPTION extends HedFlowContainer {
+ public HedFIGCAPTION(ElementCollection collection) {
+ super(HTML50Namespace.ElementName.FIGCAPTION, collection);
+ layoutType = LAYOUT_HIDDEN;
+ }
+
+ /**
+ * Article.
+ * %attrs;
+ * Global attributes
+ */
+ protected void createAttributeDeclarations() {
+ if (attributes != null)
+ return; // already created.
+ if (attributeCollection == null)
+ return; // fatal
+
+ attributes = new CMNamedNodeMapImpl();
+
+ // %attrs;
+ attributeCollection.getAttrs(attributes);
+ }
+}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedFIGURE.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedFIGURE.java
new file mode 100644
index 0000000..87a4610
--- /dev/null
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedFIGURE.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.html.core.internal.contentmodel;
+
+
+
+import org.eclipse.wst.html.core.internal.provisional.HTML50Namespace;
+
+/**
+ * FIGURE.
+ */
+final class HedFIGURE extends HTMLElemDeclImpl {
+
+ /**
+ */
+ public HedFIGURE(ElementCollection collection) {
+ super(HTML50Namespace.ElementName.FIGURE, collection);
+ typeDefinitionName = ComplexTypeDefinitionFactory.CTYPE_FIGURE;
+ layoutType = LAYOUT_BLOCK;
+ indentChild = true;
+ }
+
+ /**
+ * %attrs;
+ */
+ protected void createAttributeDeclarations() {
+ if (attributes != null)
+ return; // already created.
+ if (attributeCollection == null)
+ return; // fatal
+
+ attributes = new CMNamedNodeMapImpl();
+
+ // %attrs;
+ attributeCollection.getAttrs(attributes);
+
+ }
+
+
+}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedHEADER.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedHEADER.java
new file mode 100644
index 0000000..5e72a35
--- /dev/null
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedHEADER.java
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.html.core.internal.contentmodel;
+
+import org.eclipse.wst.html.core.internal.provisional.HTML50Namespace;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMContent;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMGroup;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMNamedNodeMap;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMNode;
+
+public class HedHEADER extends HedFlowContainer {
+
+ public HedHEADER(String name, ElementCollection collection) {
+ super(name, collection);
+ }
+
+ protected void createAttributeDeclarations() {
+ if (attributes != null)
+ return; // already created.
+ if (attributeCollection == null)
+ return; // fatal
+
+ attributes = new CMNamedNodeMapImpl();
+
+ // %attrs;
+ attributeCollection.getAttrs(attributes);
+ }
+
+ /**
+ * Exclusion.
+ * <code>HEADER</code> has the exclusion.
+ * It is <code>HEADER</code> and <code>FOOTER</code>.
+ */
+ public CMContent getExclusion() {
+ if (exclusion != null)
+ return exclusion; // already created.
+ if (elementCollection == null)
+ return null; // fatal
+
+ exclusion = new CMGroupImpl(CMGroup.CHOICE, 1, 1);
+ CMNode node = elementCollection.getNamedItem(HTML50Namespace.ElementName.HEADER);
+ if (node != null)
+ exclusion.appendChild(node);
+ node = elementCollection.getNamedItem(HTML50Namespace.ElementName.FOOTER);
+ if (node != null)
+ exclusion.appendChild(node);
+
+ return exclusion;
+ }
+
+ /**
+ */
+ public CMNamedNodeMap getProhibitedAncestors() {
+ if (prohibitedAncestors != null)
+ return prohibitedAncestors;
+
+ String[] names = {HTML50Namespace.ElementName.HEADER, HTML50Namespace.ElementName.FOOTER};
+ prohibitedAncestors = elementCollection.getDeclarations(names);
+
+ return prohibitedAncestors;
+ }
+}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedHGROUP.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedHGROUP.java
new file mode 100644
index 0000000..3bb51a4
--- /dev/null
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedHGROUP.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.html.core.internal.contentmodel;
+
+import org.eclipse.wst.html.core.internal.provisional.HTML40Namespace;
+import org.eclipse.wst.html.core.internal.provisional.HTML50Namespace;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMNamedNodeMap;
+
+public class HedHGROUP extends HTMLElemDeclImpl {
+
+ public HedHGROUP(ElementCollection collection) {
+ super(HTML50Namespace.ElementName.HGROUP, collection);
+ typeDefinitionName = ComplexTypeDefinitionFactory.CTYPE_HEADING_CONTAINER;
+ correctionType = CORRECT_EMPTY;
+ layoutType = LAYOUT_BLOCK;
+ indentChild = true;
+ }
+
+ protected void createAttributeDeclarations() {
+ if (attributes != null)
+ return; // already created.
+ if (attributeCollection == null)
+ return; // fatal
+
+ attributes = new CMNamedNodeMapImpl();
+
+ // %attrs;
+ attributeCollection.getAttrs(attributes);
+ }
+
+ /**
+ */
+ public CMNamedNodeMap getProhibitedAncestors() {
+ if (prohibitedAncestors != null)
+ return prohibitedAncestors;
+
+ String[] names = {HTML40Namespace.ElementName.DIR, HTML40Namespace.ElementName.MENU};
+ prohibitedAncestors = elementCollection.getDeclarations(names);
+
+ return prohibitedAncestors;
+ }
+}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedHTML.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedHTML.java
index 99b6332..e393d04 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedHTML.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedHTML.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -62,13 +62,10 @@
attributes = new CMNamedNodeMapImpl();
- // %i18n;
- attributeCollection.getI18n(attributes);
- // version
- HTMLAttributeDeclaration adec = attributeCollection.getDeclaration(HTML40Namespace.ATTR_NAME_VERSION);
- if (adec != null)
- attributes.putNamedItem(HTML40Namespace.ATTR_NAME_VERSION, adec);
- }
+ //different sets of attributes for html 4 & 5
+ attributeCollection.createAttributeDeclarations(HTML40Namespace.ElementName.HTML, attributes);
+
+ }
/**
* HTML has terminators.
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedIFRAME.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedIFRAME.java
index 191615e..0e4c564 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedIFRAME.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedIFRAME.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -12,8 +12,6 @@
-import java.util.Arrays;
-
import org.eclipse.wst.html.core.internal.provisional.HTML40Namespace;
import org.eclipse.wst.xml.core.internal.contentmodel.CMNamedNodeMap;
@@ -29,19 +27,7 @@
layoutType = LAYOUT_OBJECT;
}
- /**
- * %coreattrs;
- * (longdesc %URI; #IMPLIED)
- * (name CDATA #IMPLIED)
- * (src %URI; #IMPLIED)
- * (frameborder (1|0) 1)
- * (marginwidth %Pixels; #IMPLIED)
- * (marginheight %Pixels; #IMPLIED)
- * (scrolling (yes|no|auto) auto)
- * (align %IAlign; #IMPLIED) ... should be defined locally.
- * (height %Length; #IMPLIED)
- * (width %Length; #IMPLIED)
- */
+
protected void createAttributeDeclarations() {
if (attributes != null)
return; // already created.
@@ -50,16 +36,9 @@
attributes = new CMNamedNodeMapImpl();
- // %coreattrs;
- attributeCollection.getCore(attributes);
-
- String[] names = {HTML40Namespace.ATTR_NAME_LONGDESC, HTML40Namespace.ATTR_NAME_NAME, HTML40Namespace.ATTR_NAME_SRC, HTML40Namespace.ATTR_NAME_FRAMEBORDER, HTML40Namespace.ATTR_NAME_MARGINWIDTH, HTML40Namespace.ATTR_NAME_MARGINHEIGHT, HTML40Namespace.ATTR_NAME_SCROLLING, HTML40Namespace.ATTR_NAME_HEIGHT, HTML40Namespace.ATTR_NAME_WIDTH};
- attributeCollection.getDeclarations(attributes, Arrays.asList(names).iterator());
-
- // align
- HTMLAttrDeclImpl attr = AttributeCollection.createAlignForImage();
- if (attr != null)
- attributes.putNamedItem(HTML40Namespace.ATTR_NAME_ALIGN, attr);
+ //different sets of attributes for html 4 & 5
+ attributeCollection.createAttributeDeclarations(HTML40Namespace.ElementName.IFRAME, attributes);
+
}
/**
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedIMG.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedIMG.java
index 1e1805e..b719416 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedIMG.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedIMG.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -12,11 +12,7 @@
-import java.util.Arrays;
-
import org.eclipse.wst.html.core.internal.provisional.HTML40Namespace;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMAttributeDeclaration;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMDataType;
import org.eclipse.wst.xml.core.internal.contentmodel.CMNamedNodeMap;
/**
@@ -34,19 +30,6 @@
/**
* IMG.
* %attrs;
- * (src %URI; #REQUIRED): should be defined locally.
- * (alt %Text; #REQUIRED)
- * (longdesc %URI; #IMPLIED)
- * (name CDATA #IMPLIED)
- * (height %Length; #IMPLIED)
- * (width %Length; #IMPLIED)
- * (usemap %URI; #IMPLIED)
- * (ismap (ismap) #IMPLIED)
- * (align %IAlign; #IMPLIED): should be defined locally.
- * (border %Pixels; #IMPLIED)
- * (hspace %Pixels; #IMPLIED)
- * (vspace %Pixels; #IMPLIED)
- * (mapfile %URI; #IMPLIED)
*/
protected void createAttributeDeclarations() {
if (attributes != null)
@@ -59,19 +42,9 @@
// %attrs;
attributeCollection.getAttrs(attributes);
- // (src %URI; #REQUIRED): should be defined locally.
- HTMLCMDataTypeImpl atype = null;
- HTMLAttrDeclImpl attr = null;
- atype = new HTMLCMDataTypeImpl(CMDataType.URI);
- attr = new HTMLAttrDeclImpl(HTML40Namespace.ATTR_NAME_SRC, atype, CMAttributeDeclaration.REQUIRED);
- attributes.putNamedItem(HTML40Namespace.ATTR_NAME_SRC, attr);
-
- String[] names = {HTML40Namespace.ATTR_NAME_ALT, HTML40Namespace.ATTR_NAME_LONGDESC, HTML40Namespace.ATTR_NAME_NAME, HTML40Namespace.ATTR_NAME_HEIGHT, HTML40Namespace.ATTR_NAME_WIDTH, HTML40Namespace.ATTR_NAME_USEMAP, HTML40Namespace.ATTR_NAME_ISMAP, HTML40Namespace.ATTR_NAME_BORDER, HTML40Namespace.ATTR_NAME_HSPACE, HTML40Namespace.ATTR_NAME_VSPACE, HTML40Namespace.ATTR_NAME_MAPFILE};
- attributeCollection.getDeclarations(attributes, Arrays.asList(names).iterator());
-
- // align (local); should be defined locally.
- attr = AttributeCollection.createAlignForImage();
- attributes.putNamedItem(HTML40Namespace.ATTR_NAME_ALIGN, attr);
+ //different sets of attributes for html 4 & 5
+ attributeCollection.createAttributeDeclarations(HTML40Namespace.ElementName.IMG, attributes);
+
}
/**
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedINPUT.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedINPUT.java
index 60b3049..9080201 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedINPUT.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedINPUT.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -12,11 +12,7 @@
-import java.util.Arrays;
-
import org.eclipse.wst.html.core.internal.provisional.HTML40Namespace;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMAttributeDeclaration;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMDataType;
import org.eclipse.wst.xml.core.internal.contentmodel.CMNamedNodeMap;
/**
@@ -34,32 +30,7 @@
/**
* INPUT.
* %attrs;
- * (type %InputType; TEXT) ... should be defined locally.
- * (name CDATA #IMPLIED)
- * (value CDATA #IMPLIED)
- * (checked (checked) #IMPLIED)
- * (disabled (disabled) #IMPLIED)
- * (readonly (readonly) #IMPLIED)
- * (size CDATA #IMPLIED) ... should be defined locally.
- * (maxlength NUMBER #IMPLIED)
- * (src %URI; #IMPLIED)
- * (alt CDATA #IMPLIED) ... should be defined locally.
- * (usemap %URI; #IMPLIED)
- * (ismap (ismap) #IMPLIED)
- * (tabindex NUMBER #IMPLIED)
- * (accesskey %Character; #IMPLIED)
- * (onfocus %Script; #IMPLIED)
- * (onblur %Script; #IMPLIED)
- * (onselect %Script; #IMPLIED)
- * (onchange %Script; #IMPLIED)
- * (accept %ContentTypes; #IMPLIED)
- * (align %IAlign; #IMPLIED) ... should be defined locally.
- * (istyle CDATA #IMPLIED)
- * <<D215684
- * (width CDATA; #IMPLIED)
- * (height CDATA; #IMPLIED)
- * (border CDATA; #IMPLIED)
- * D215684
+
*/
protected void createAttributeDeclarations() {
if (attributes != null)
@@ -72,40 +43,8 @@
// %attrs;
attributeCollection.getAttrs(attributes);
- HTMLCMDataTypeImpl atype = null;
- HTMLAttrDeclImpl attr = null;
- // (type %InputType; TEXT) ... should be defined locally.
- // NOTE: %InputType is ENUM;
- // (text | password | checkbox | radio | submit | reset |
- // file | hidden | image | button)
- atype = new HTMLCMDataTypeImpl(CMDataType.ENUM);
- String[] values = {HTML40Namespace.ATTR_VALUE_TEXT, HTML40Namespace.ATTR_VALUE_PASSWORD, HTML40Namespace.ATTR_VALUE_CHECKBOX, HTML40Namespace.ATTR_VALUE_RADIO, HTML40Namespace.ATTR_VALUE_SUBMIT, HTML40Namespace.ATTR_VALUE_RESET, HTML40Namespace.ATTR_VALUE_FILE, HTML40Namespace.ATTR_VALUE_HIDDEN, HTML40Namespace.ATTR_VALUE_IMAGE, HTML40Namespace.ATTR_VALUE_BUTTON};
- atype.setEnumValues(values);
- atype.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, HTML40Namespace.ATTR_VALUE_TEXT);
- attr = new HTMLAttrDeclImpl(HTML40Namespace.ATTR_NAME_TYPE, atype, CMAttributeDeclaration.OPTIONAL);
- attributes.putNamedItem(HTML40Namespace.ATTR_NAME_TYPE, attr);
-
- // (size CDATA #IMPLIED) ... should be defined locally.
- atype = new HTMLCMDataTypeImpl(CMDataType.CDATA);
- attr = new HTMLAttrDeclImpl(HTML40Namespace.ATTR_NAME_SIZE, atype, CMAttributeDeclaration.OPTIONAL);
- attributes.putNamedItem(HTML40Namespace.ATTR_NAME_SIZE, attr);
-
- // (alt CDATA #IMPLIED) ... should be defined locally.
- atype = new HTMLCMDataTypeImpl(CMDataType.CDATA);
- attr = new HTMLAttrDeclImpl(HTML40Namespace.ATTR_NAME_ALT, atype, CMAttributeDeclaration.OPTIONAL);
- attributes.putNamedItem(HTML40Namespace.ATTR_NAME_ALT, attr);
-
- // (align %IAlign; #IMPLIED) ... should be defined locally.
- attr = AttributeCollection.createAlignForImage();
- attributes.putNamedItem(HTML40Namespace.ATTR_NAME_ALIGN, attr);
-
- // the rest.
- String[] names = {HTML40Namespace.ATTR_NAME_NAME, HTML40Namespace.ATTR_NAME_VALUE, HTML40Namespace.ATTR_NAME_CHECKED, HTML40Namespace.ATTR_NAME_DISABLED, HTML40Namespace.ATTR_NAME_READONLY, HTML40Namespace.ATTR_NAME_SIZE, HTML40Namespace.ATTR_NAME_MAXLENGTH, HTML40Namespace.ATTR_NAME_SRC, HTML40Namespace.ATTR_NAME_ALT, HTML40Namespace.ATTR_NAME_USEMAP, HTML40Namespace.ATTR_NAME_ISMAP, HTML40Namespace.ATTR_NAME_TABINDEX, HTML40Namespace.ATTR_NAME_ACCESSKEY, HTML40Namespace.ATTR_NAME_ONFOCUS, HTML40Namespace.ATTR_NAME_ONBLUR, HTML40Namespace.ATTR_NAME_ONSELECT, HTML40Namespace.ATTR_NAME_ONCHANGE, HTML40Namespace.ATTR_NAME_ACCEPT, HTML40Namespace.ATTR_NAME_ALIGN, HTML40Namespace.ATTR_NAME_ISTYLE,
- //<<D215684
- HTML40Namespace.ATTR_NAME_WIDTH, HTML40Namespace.ATTR_NAME_HEIGHT, HTML40Namespace.ATTR_NAME_BORDER
- //<D215684
- };
- attributeCollection.getDeclarations(attributes, Arrays.asList(names).iterator());
+ //different sets of attributes for html 4 & 5
+ attributeCollection.createAttributeDeclarations(HTML40Namespace.ElementName.INPUT, attributes);
}
/**
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedKEYGEN.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedKEYGEN.java
new file mode 100644
index 0000000..c84b30a
--- /dev/null
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedKEYGEN.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.html.core.internal.contentmodel;
+
+import java.util.Arrays;
+
+import org.eclipse.wst.html.core.internal.provisional.HTML40Namespace;
+import org.eclipse.wst.html.core.internal.provisional.HTML50Namespace;
+
+public class HedKEYGEN extends HedEmpty {
+
+ public HedKEYGEN(ElementCollection collection) {
+ super(HTML50Namespace.ElementName.KEYGEN, collection);
+ layoutType = LAYOUT_OBJECT;
+ }
+ protected void createAttributeDeclarations() {
+ if (attributes != null)
+ return; // already created.
+ if (attributeCollection == null)
+ return; // fatal
+
+ attributes = new CMNamedNodeMapImpl();
+
+ attributeCollection.getAttrs(attributes);
+
+ String[] names = { HTML50Namespace.ATTR_NAME_AUTOFOCUS, HTML50Namespace.ATTR_NAME_CHALLENGE, HTML40Namespace.ATTR_NAME_DISABLED, HTML50Namespace.ATTR_NAME_FORM, HTML50Namespace.ATTR_NAME_KEYTYPE, HTML40Namespace.ATTR_NAME_NAME};
+ attributeCollection.getDeclarations(attributes, Arrays.asList(names).iterator());
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedLI.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedLI.java
index f43785e..a413193 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedLI.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedLI.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -16,8 +16,6 @@
import java.util.Iterator;
import org.eclipse.wst.html.core.internal.provisional.HTML40Namespace;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMAttributeDeclaration;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMDataType;
/**
* LI.
@@ -36,8 +34,6 @@
/**
* %attrs;
- * (type %LIStyle; #IMPLIED) ... should be defined locally.
- * (value NUMBER #IMPLIED) ... should be defined locally.
*/
protected void createAttributeDeclarations() {
if (attributes != null)
@@ -50,15 +46,9 @@
// %attrs;
attributeCollection.getAttrs(attributes);
- // (type %LIStyle; #IMPLIED) ... should be defined locally.
- HTMLCMDataTypeImpl atype = new HTMLCMDataTypeImpl(HTMLCMDataType.LI_STYLE);
- HTMLAttrDeclImpl attr = new HTMLAttrDeclImpl(HTML40Namespace.ATTR_NAME_TYPE, atype, CMAttributeDeclaration.OPTIONAL);
- attributes.putNamedItem(HTML40Namespace.ATTR_NAME_TYPE, attr);
-
- // (value NUMBER #IMPLIED) ... should be defined locally.
- atype = new HTMLCMDataTypeImpl(CMDataType.NUMBER);
- attr = new HTMLAttrDeclImpl(HTML40Namespace.ATTR_NAME_VALUE, atype, CMAttributeDeclaration.OPTIONAL);
- attributes.putNamedItem(HTML40Namespace.ATTR_NAME_VALUE, attr);
+ //different sets of attributes for html 4 & 5
+ attributeCollection.createAttributeDeclarations(HTML40Namespace.ElementName.LI, attributes);
+
}
/**
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedLINK.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedLINK.java
index bfe132c..4c28bbe 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedLINK.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedLINK.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -12,10 +12,7 @@
-import java.util.Arrays;
-
import org.eclipse.wst.html.core.internal.provisional.HTML40Namespace;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMAttributeDeclaration;
/**
* LINK.
@@ -32,14 +29,6 @@
/**
* LINK.
* %attrs;
- * (charset %Charset; #IMPLIED)
- * (href %URI; #IMPLIED)
- * (hreflang %LanguageCode; #IMPLIED)
- * (type %ContentType; #IMPLIED): should be defined locally.
- * (rel %LinkTypes; #IMPLIED)
- * (rev %LinkTypes; #IMPLIED)
- * (media %MediaDesc; #IMPLIED)
- * (target %FrameTarget; #IMPLIED)
*/
protected void createAttributeDeclarations() {
if (attributes != null)
@@ -52,12 +41,8 @@
// %attrs;
attributeCollection.getAttrs(attributes);
- String[] names = {HTML40Namespace.ATTR_NAME_CHARSET, HTML40Namespace.ATTR_NAME_HREF, HTML40Namespace.ATTR_NAME_HREFLANG, HTML40Namespace.ATTR_NAME_REL, HTML40Namespace.ATTR_NAME_REV, HTML40Namespace.ATTR_NAME_MEDIA, HTML40Namespace.ATTR_NAME_TARGET};
- attributeCollection.getDeclarations(attributes, Arrays.asList(names).iterator());
-
- // (type %ContentType; #IMPLIED)
- HTMLCMDataTypeImpl atype = new HTMLCMDataTypeImpl(HTMLCMDataType.CONTENT_TYPE);
- HTMLAttrDeclImpl attr = new HTMLAttrDeclImpl(HTML40Namespace.ATTR_NAME_TYPE, atype, CMAttributeDeclaration.OPTIONAL);
- attributes.putNamedItem(HTML40Namespace.ATTR_NAME_TYPE, attr);
+ // different sets of attributes for html 4 & 5
+ attributeCollection.createAttributeDeclarations(HTML40Namespace.ElementName.LINK, attributes);
+
}
}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedMENU.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedMENU.java
index 0142558..812af9b 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedMENU.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedMENU.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -32,8 +32,7 @@
/**
* MENU/DIR.
- * (compact (compact) #IMPLIED)
- */
+ */
protected void createAttributeDeclarations() {
if (attributes != null)
return; // already created.
@@ -45,8 +44,8 @@
// %attrs;
attributeCollection.getAttrs(attributes);
- String[] names = {HTML40Namespace.ATTR_NAME_COMPACT};
- attributeCollection.getDeclarations(attributes, Arrays.asList(names).iterator());
+ //different sets of attributes for html 4 & 5
+ attributeCollection.createAttributeDeclarations(HTML40Namespace.ElementName.MENU, attributes);
}
/**
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedMETA.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedMETA.java
index d5b232c..92554ea 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedMETA.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedMETA.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -12,10 +12,7 @@
-import java.util.Arrays;
-
import org.eclipse.wst.html.core.internal.provisional.HTML40Namespace;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMAttributeDeclaration;
/**
* META.
@@ -31,11 +28,7 @@
/**
* META.
- * %i18n;
- * (http-equiv NAME #IMPLIED)
- * (name NAME #IMPLIED) ... should be defined locally.
- * (content CDATA #REQUIRED)
- * (scheme CDATA #IMPLIED)
+
*/
protected void createAttributeDeclarations() {
if (attributes != null)
@@ -44,16 +37,9 @@
return; // fatal
attributes = new CMNamedNodeMapImpl();
-
- // %i18n;
- attributeCollection.getI18n(attributes);
-
- // (name NAME #IMPLIED) ... should be defined locally.
- HTMLCMDataTypeImpl atype = new HTMLCMDataTypeImpl(HTMLCMDataType.NAME);
- HTMLAttrDeclImpl attr = new HTMLAttrDeclImpl(HTML40Namespace.ATTR_NAME_NAME, atype, CMAttributeDeclaration.OPTIONAL);
- attributes.putNamedItem(HTML40Namespace.ATTR_NAME_NAME, attr);
-
- String[] names = {HTML40Namespace.ATTR_NAME_HTTP_EQUIV, HTML40Namespace.ATTR_NAME_CONTENT, HTML40Namespace.ATTR_NAME_SCHEME};
- attributeCollection.getDeclarations(attributes, Arrays.asList(names).iterator());
+
+ //different sets of attributes for html 4 & 5
+ attributeCollection.createAttributeDeclarations(HTML40Namespace.ElementName.META, attributes);
+
}
}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedMETER.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedMETER.java
new file mode 100644
index 0000000..c79e9e9
--- /dev/null
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedMETER.java
@@ -0,0 +1,74 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.html.core.internal.contentmodel;
+
+import java.util.Arrays;
+
+import org.eclipse.wst.html.core.internal.provisional.HTML40Namespace;
+import org.eclipse.wst.html.core.internal.provisional.HTML50Namespace;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMAttributeDeclaration;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMContent;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMDataType;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMGroup;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMNamedNodeMap;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMNode;
+
+public class HedMETER extends HedInlineContainer {
+
+ public HedMETER(ElementCollection collection) {
+ super(HTML50Namespace.ElementName.METER, collection);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.wst.html.core.internal.contentmodel.HTMLElemDeclImpl#createAttributeDeclarations()
+ */
+ protected void createAttributeDeclarations() {
+ if (attributes != null)
+ return; // already created.
+ if (attributeCollection == null)
+ return; // fatal
+
+ attributes = new CMNamedNodeMapImpl();
+ attributeCollection.getAttrs(attributes);
+
+ String[] names = { HTML50Namespace.ATTR_NAME_MIN, HTML50Namespace.ATTR_NAME_MAX, HTML50Namespace.ATTR_NAME_LOW, HTML50Namespace.ATTR_NAME_HIGH, HTML50Namespace.ATTR_NAME_OPTIMUM, HTML50Namespace.ATTR_NAME_FORM };
+ attributeCollection.getDeclarations(attributes, Arrays.asList(names).iterator());
+
+ HTMLCMDataTypeImpl atype = new HTMLCMDataTypeImpl(CMDataType.NUMBER);
+ HTMLAttrDeclImpl decl = new HTMLAttrDeclImpl(HTML40Namespace.ATTR_NAME_VALUE, atype, CMAttributeDeclaration.REQUIRED);
+ attributes.putNamedItem(HTML40Namespace.ATTR_NAME_VALUE, decl);
+ }
+
+ public CMContent getExclusion() {
+ if (exclusion != null)
+ return exclusion; // already created.
+ if (elementCollection == null)
+ return null;
+
+ exclusion = new CMGroupImpl(CMGroup.CHOICE, 1, 1);
+ CMNode meter = elementCollection.getNamedItem(HTML50Namespace.ElementName.METER);
+ if (meter != null)
+ exclusion.appendChild(meter);
+
+ return exclusion;
+ }
+
+ public CMNamedNodeMap getProhibitedAncestors() {
+ if (prohibitedAncestors != null)
+ return prohibitedAncestors;
+
+ String[] names = {HTML50Namespace.ElementName.METER};
+ prohibitedAncestors = elementCollection.getDeclarations(names);
+
+ return prohibitedAncestors;
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedMath.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedMath.java
new file mode 100644
index 0000000..154dbfa
--- /dev/null
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedMath.java
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.html.core.internal.contentmodel;
+
+
+
+import java.util.Arrays;
+import java.util.Iterator;
+
+import org.eclipse.wst.html.core.internal.provisional.HTML50Namespace;
+
+
+/**
+ * Math.
+ */
+final class HedMath extends HTMLElemDeclImpl {
+
+ private static String[] terminators = {HTML50Namespace.ElementName.MATH};
+
+ /**
+ */
+ public HedMath(ElementCollection collection) {
+ super(HTML50Namespace.ElementName.MATH, collection);
+ layoutType = LAYOUT_OBJECT;
+ }
+
+ /**
+ * Create all attribute declarations.
+ * MathML namespace
+ */
+ protected void createAttributeDeclarations() {
+ if (attributes != null)
+ return; // already created.
+ if (attributeCollection == null)
+ return; // fatal
+
+ attributes = new CMNamedNodeMapImpl();
+
+ // %attrs;
+ attributeCollection.getAttrs(attributes);
+ }
+
+ /**
+ * MATH has terminators.
+ * @return java.util.Iterator
+ */
+ protected Iterator getTerminators() {
+ return Arrays.asList(terminators).iterator();
+ }
+}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedMediaElement.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedMediaElement.java
new file mode 100644
index 0000000..dd23bd4
--- /dev/null
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedMediaElement.java
@@ -0,0 +1,97 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.html.core.internal.contentmodel;
+
+
+
+import org.eclipse.wst.html.core.internal.provisional.HTML40Namespace;
+import org.eclipse.wst.html.core.internal.provisional.HTML50Namespace;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMAttributeDeclaration;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMDataType;
+
+/**
+ * EMBED.
+ */
+class HedMediaElement extends HTMLElemDeclImpl {
+
+ /**
+ */
+ public HedMediaElement(String elementName, ElementCollection collection) {
+ super(elementName, collection);
+ typeDefinitionName = ComplexTypeDefinitionFactory.CTYPE_MEDIA_ELEMENT;
+ layoutType = LAYOUT_OBJECT;
+ indentChild = true;
+ }
+
+ /**
+ * MediaElement
+ * %attrs;
+ * (src %URI; #REQUIRED): should be defined locally.
+ * (preload %CDATA; #IMPLIED)
+ * (autoplay %ENUM; #IMPLIED)
+ * (loop %ENUM; #IMPLIED)
+ * (controls %MediaType; #IMPLIED)
+ * Global attributes
+ */
+ protected void createAttributeDeclarations() {
+ if (attributes != null)
+ return; // already created.
+ if (attributeCollection == null)
+ return; // fatal
+
+ attributes = new CMNamedNodeMapImpl();
+
+
+ // (src %URI; #REQUIRED): should be defined locally.
+ HTMLCMDataTypeImpl atype = null;
+ HTMLAttrDeclImpl attr = null;
+ atype = new HTMLCMDataTypeImpl(CMDataType.URI);
+ attr = new HTMLAttrDeclImpl(HTML40Namespace.ATTR_NAME_SRC, atype, CMAttributeDeclaration.REQUIRED);
+ attributes.putNamedItem(HTML40Namespace.ATTR_NAME_SRC, attr);
+
+ //(preload %CDATA; #IMPLIED) ENUM
+ // (none | metadata | auto)
+ atype = new HTMLCMDataTypeImpl(CMDataType.ENUM);
+ String[] values = {HTML40Namespace.ATTR_VALUE_NONE, HTML50Namespace.ATTR_VALUE_METADATA, HTML40Namespace.ATTR_VALUE_AUTO, HTML50Namespace.ATTR_VALUE_EMPTY};
+ atype.setEnumValues(values);
+ atype.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, HTML40Namespace.ATTR_VALUE_AUTO);
+ attr = new HTMLAttrDeclImpl(HTML50Namespace.ATTR_NAME_PRELOAD, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(HTML50Namespace.ATTR_NAME_PRELOAD, attr);
+
+ // (autoplay (boolean) #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(CMDataType.ENUM);
+ String[] autoPlayValues = {HTML50Namespace.ATTR_NAME_AUTOPLAY};
+ atype.setEnumValues(autoPlayValues);
+ attr = new HTMLAttrDeclImpl(HTML50Namespace.ATTR_NAME_AUTOPLAY, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(HTML50Namespace.ATTR_NAME_AUTOPLAY, attr);
+
+ // (loop (true|false) #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(CMDataType.ENUM);
+ String[] loopValues = {HTML40Namespace.ATTR_VALUE_TRUE, HTML40Namespace.ATTR_VALUE_FALSE};
+ atype.setEnumValues(loopValues);
+ atype.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, HTML40Namespace.ATTR_VALUE_FALSE);
+ attr = new HTMLAttrDeclImpl(HTML50Namespace.ATTR_NAME_LOOP, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(HTML50Namespace.ATTR_NAME_LOOP, attr);
+
+ // (controls (true|false) #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(CMDataType.ENUM);
+ String[] controlValues = {HTML40Namespace.ATTR_VALUE_TRUE, HTML40Namespace.ATTR_VALUE_FALSE};
+ atype.setEnumValues(controlValues);
+ atype.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, HTML40Namespace.ATTR_VALUE_FALSE);
+ attr = new HTMLAttrDeclImpl(HTML50Namespace.ATTR_NAME_CONTROLS, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(HTML50Namespace.ATTR_NAME_CONTROLS, attr);
+
+
+ // global attributes
+ attributeCollection.getAttrs(attributes);
+ }
+}
+
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedOL.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedOL.java
index 6668b90..6c6d50c 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedOL.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedOL.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -12,10 +12,7 @@
-import java.util.Arrays;
-
import org.eclipse.wst.html.core.internal.provisional.HTML40Namespace;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMAttributeDeclaration;
import org.eclipse.wst.xml.core.internal.contentmodel.CMNamedNodeMap;
/**
@@ -31,9 +28,6 @@
/**
* OL.
- * (type %OLStyle; #IMPLIED) ... should be defined locally.
- * (compact (compact) #IMPLIED)
- * (start NUMBER #IMPLIED)
*/
protected void createAttributeDeclarations() {
if (attributes != null)
@@ -46,14 +40,9 @@
// %attrs;
attributeCollection.getAttrs(attributes);
- // (type %OLStyle; #IMPLIED) ... should be defined locally.
- HTMLCMDataTypeImpl atype = new HTMLCMDataTypeImpl(HTMLCMDataType.OL_STYLE);
- HTMLAttrDeclImpl attr = new HTMLAttrDeclImpl(HTML40Namespace.ATTR_NAME_TYPE, atype, CMAttributeDeclaration.OPTIONAL);
- attributes.putNamedItem(HTML40Namespace.ATTR_NAME_TYPE, attr);
-
- // the rest.
- String[] names = {HTML40Namespace.ATTR_NAME_COMPACT, HTML40Namespace.ATTR_NAME_START};
- attributeCollection.getDeclarations(attributes, Arrays.asList(names).iterator());
+ //different sets of attributes for html 4 & 5
+ attributeCollection.createAttributeDeclarations(HTML40Namespace.ElementName.OL, attributes);
+
}
/**
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedOUTPUT.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedOUTPUT.java
new file mode 100644
index 0000000..fc172e1
--- /dev/null
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedOUTPUT.java
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.html.core.internal.contentmodel;
+
+import java.util.Arrays;
+
+import org.eclipse.wst.html.core.internal.provisional.HTML40Namespace;
+import org.eclipse.wst.html.core.internal.provisional.HTML50Namespace;
+
+public class HedOUTPUT extends HedInlineContainer {
+
+ public HedOUTPUT(ElementCollection collection) {
+ super(HTML50Namespace.ElementName.OUTPUT, collection);
+ }
+
+ protected void createAttributeDeclarations() {
+ if (attributes != null)
+ return; // already created.
+ if (attributeCollection == null)
+ return; // fatal
+
+ attributes = new CMNamedNodeMapImpl();
+
+ // %attrs;
+ attributeCollection.getAttrs(attributes);
+
+ String[] names = { HTML40Namespace.ATTR_NAME_FOR, HTML50Namespace.ATTR_NAME_FORM, HTML40Namespace.ATTR_NAME_NAME};
+ attributeCollection.getDeclarations(attributes, Arrays.asList(names).iterator());
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedPARAM.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedPARAM.java
index 5541a1f..1bcea7e 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedPARAM.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedPARAM.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -12,11 +12,7 @@
-import java.util.Arrays;
-
import org.eclipse.wst.html.core.internal.provisional.HTML40Namespace;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMAttributeDeclaration;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMDataType;
/**
* PARAM.
@@ -32,11 +28,6 @@
/**
* PARAM.
- * (id ID #IMPLIED)
- * (name CDATA #REQUIRED) ... should be defined locally.
- * (value CDATA #IMPLIED)
- * (valuetype (DATA|REF|OBJECT) DATA)
- * (type %ContentType; #IMPLIED)
*/
protected void createAttributeDeclarations() {
if (attributes != null)
@@ -46,12 +37,9 @@
attributes = new CMNamedNodeMapImpl();
- String[] names = {HTML40Namespace.ATTR_NAME_ID, HTML40Namespace.ATTR_NAME_VALUE, HTML40Namespace.ATTR_NAME_VALUETYPE, HTML40Namespace.ATTR_NAME_TYPE};
- attributeCollection.getDeclarations(attributes, Arrays.asList(names).iterator());
-
- // (name CDATA #REQUIRED) ... should be defined locally.
- HTMLCMDataTypeImpl atype = new HTMLCMDataTypeImpl(CMDataType.CDATA);
- HTMLAttrDeclImpl attr = new HTMLAttrDeclImpl(HTML40Namespace.ATTR_NAME_NAME, atype, CMAttributeDeclaration.REQUIRED);
- attributes.putNamedItem(HTML40Namespace.ATTR_NAME_NAME, attr);
+ //different sets of attributes for html 4 & 5
+ attributeCollection.createAttributeDeclarations(HTML40Namespace.ElementName.PARAM, attributes);
+
+
}
}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedPROGRESS.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedPROGRESS.java
new file mode 100644
index 0000000..223c129
--- /dev/null
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedPROGRESS.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.html.core.internal.contentmodel;
+
+import java.util.Arrays;
+
+import org.eclipse.wst.html.core.internal.provisional.HTML40Namespace;
+import org.eclipse.wst.html.core.internal.provisional.HTML50Namespace;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMContent;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMGroup;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMNamedNodeMap;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMNode;
+
+public class HedPROGRESS extends HedInlineContainer {
+
+ public HedPROGRESS(ElementCollection collection) {
+ super(HTML50Namespace.ElementName.PROGRESS, collection);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.wst.html.core.internal.contentmodel.HTMLElemDeclImpl#createAttributeDeclarations()
+ */
+ protected void createAttributeDeclarations() {
+ if (attributes != null)
+ return; // already created.
+ if (attributeCollection == null)
+ return; // fatal
+
+ attributes = new CMNamedNodeMapImpl();
+ attributeCollection.getAttrs(attributes);
+
+ String[] names = { HTML40Namespace.ATTR_NAME_VALUE, HTML50Namespace.ATTR_NAME_MAX, HTML50Namespace.ATTR_NAME_FORM };
+ attributeCollection.getDeclarations(attributes, Arrays.asList(names).iterator());
+ }
+
+ public CMContent getExclusion() {
+ if (exclusion != null)
+ return exclusion;
+ if (elementCollection == null)
+ return null;
+
+ exclusion = new CMGroupImpl(CMGroup.CHOICE, 1, 1);
+ CMNode progress = elementCollection.getNamedItem(HTML50Namespace.ElementName.PROGRESS);
+ if (progress != null) {
+ exclusion.appendChild(progress);
+ }
+ return exclusion;
+ }
+
+ public CMNamedNodeMap getProhibitedAncestors() {
+ if (prohibitedAncestors == null) {
+ String[] names = { HTML50Namespace.ElementName.PROGRESS };
+ prohibitedAncestors = elementCollection.getDeclarations(names);
+ }
+ return prohibitedAncestors;
+ }
+}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedRP.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedRP.java
new file mode 100644
index 0000000..e31a9bc
--- /dev/null
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedRP.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.html.core.internal.contentmodel;
+
+
+
+import java.util.Arrays;
+import java.util.Iterator;
+
+import org.eclipse.wst.html.core.internal.provisional.HTML50Namespace;
+
+
+/**
+ * RP.
+ */
+final class HedRP extends HedPcdata {
+
+ private static String[] terminators = {HTML50Namespace.ElementName.RP};
+
+ /**
+ */
+ public HedRP(ElementCollection collection) {
+ super(HTML50Namespace.ElementName.RP, collection);
+ layoutType = LAYOUT_HIDDEN;
+ }
+
+ /**
+ * OPTION.
+ * %attrs;
+ */
+ protected void createAttributeDeclarations() {
+ if (attributes != null)
+ return; // already created.
+ if (attributeCollection == null)
+ return; // fatal
+
+ attributes = new CMNamedNodeMapImpl();
+
+ // %attrs;
+ attributeCollection.getAttrs(attributes);
+
+ }
+
+ /**
+ * OPTION has terminators.
+ * @return java.util.Iterator
+ */
+ protected Iterator getTerminators() {
+ return Arrays.asList(terminators).iterator();
+ }
+}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedRT.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedRT.java
new file mode 100644
index 0000000..aba4a38
--- /dev/null
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedRT.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.html.core.internal.contentmodel;
+
+
+
+import java.util.Arrays;
+import java.util.Iterator;
+
+import org.eclipse.wst.html.core.internal.provisional.HTML50Namespace;
+
+
+/**
+ * RT.
+ */
+final class HedRT extends HedPcdata {
+
+ private static String[] terminators = {HTML50Namespace.ElementName.RT};
+
+ /**
+ */
+ public HedRT(ElementCollection collection) {
+ super(HTML50Namespace.ElementName.RT, collection);
+ layoutType = LAYOUT_BLOCK;
+
+ }
+
+ /**
+ * OPTION.
+ * %attrs;
+ */
+ protected void createAttributeDeclarations() {
+ if (attributes != null)
+ return; // already created.
+ if (attributeCollection == null)
+ return; // fatal
+
+ attributes = new CMNamedNodeMapImpl();
+
+ // %attrs;
+ attributeCollection.getAttrs(attributes);
+
+ }
+
+ /**
+ * OPTION has terminators.
+ * @return java.util.Iterator
+ */
+ protected Iterator getTerminators() {
+ return Arrays.asList(terminators).iterator();
+ }
+}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedRUBY.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedRUBY.java
new file mode 100644
index 0000000..6686a25
--- /dev/null
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedRUBY.java
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.html.core.internal.contentmodel;
+
+
+
+import org.eclipse.wst.html.core.internal.provisional.HTML50Namespace;
+
+/**
+ * RUBY.
+ */
+final class HedRUBY extends HTMLElemDeclImpl {
+
+ /**
+ */
+ public HedRUBY(ElementCollection collection) {
+ super(HTML50Namespace.ElementName.RUBY, collection);
+ typeDefinitionName = ComplexTypeDefinitionFactory.CTYPE_RUBY;
+ layoutType = LAYOUT_BLOCK;
+ indentChild = true;
+ }
+
+ /**
+ * %attrs;
+ */
+ protected void createAttributeDeclarations() {
+ if (attributes != null)
+ return; // already created.
+ if (attributeCollection == null)
+ return; // fatal
+
+ attributes = new CMNamedNodeMapImpl();
+
+ // %attrs;
+ attributeCollection.getAttrs(attributes);
+
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedSCRIPT.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedSCRIPT.java
index ae910b7..2af1317 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedSCRIPT.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedSCRIPT.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -12,12 +12,8 @@
-import java.util.Arrays;
-
import org.eclipse.wst.html.core.internal.provisional.HTML40Namespace;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMAttributeDeclaration;
import org.eclipse.wst.xml.core.internal.contentmodel.CMContent;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMDataType;
import org.eclipse.wst.xml.core.internal.contentmodel.CMElementDeclaration;
/**
@@ -35,13 +31,6 @@
/**
* SCRIPT.
- * (charset %Charset; #IMPLIED)
- * (type %ContentType; #REQUIRED) ... should be defined locally.
- * (language CDATA #IMPLIED)
- * (src %URI; #IMPLIED)
- * (defer (defer) #IMPLIED)
- * (event CDATA #IMPLIED)
- * (for %URI; #IMPLIED)
*/
protected void createAttributeDeclarations() {
if (attributes != null)
@@ -51,14 +40,9 @@
attributes = new CMNamedNodeMapImpl();
- String[] names = {HTML40Namespace.ATTR_NAME_CHARSET, HTML40Namespace.ATTR_NAME_LANGUAGE, HTML40Namespace.ATTR_NAME_SRC, HTML40Namespace.ATTR_NAME_DEFER, HTML40Namespace.ATTR_NAME_EVENT, HTML40Namespace.ATTR_NAME_FOR};
- attributeCollection.getDeclarations(attributes, Arrays.asList(names).iterator());
-
- // (type %ContentType; #REQUIRED) ... should be defined locally.
- HTMLCMDataTypeImpl atype = new HTMLCMDataTypeImpl(HTMLCMDataType.CONTENT_TYPE);
- atype.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, "text/javascript"); //$NON-NLS-1$
- HTMLAttrDeclImpl attr = new HTMLAttrDeclImpl(HTML40Namespace.ATTR_NAME_TYPE, atype, CMAttributeDeclaration.REQUIRED);
- attributes.putNamedItem(HTML40Namespace.ATTR_NAME_TYPE, attr);
+ //different sets of attributes for html 4 & 5
+ attributeCollection.createAttributeDeclarations(HTML40Namespace.ElementName.SCRIPT, attributes);
+
}
/**
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedSELECT.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedSELECT.java
index 78c3a08..a0de442 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedSELECT.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedSELECT.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
+ * Copyright (c) 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -12,11 +12,7 @@
-import java.util.Arrays;
-
import org.eclipse.wst.html.core.internal.provisional.HTML40Namespace;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMAttributeDeclaration;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMDataType;
import org.eclipse.wst.xml.core.internal.contentmodel.CMNamedNodeMap;
/**
@@ -35,15 +31,6 @@
/**
* %attrs;
- * %reserved;
- * (name CDATA #IMPLIED)
- * (size NUMBER #IMPLIED) ... should be defined locally.
- * (multiple (multiple) #IMPLIED)
- * (disabled (disabled) #IMPLIED)
- * (tabindex NUMBER #IMPLIED)
- * (onfocus %Script; #IMPLIED)
- * (onblur %Script; #IMPLIED)
- * (onchange %Script; #IMPLIED)
*/
protected void createAttributeDeclarations() {
if (attributes != null)
@@ -55,14 +42,11 @@
// %attrs;
attributeCollection.getAttrs(attributes);
+
+ //different sets of attributes for html 4 & 5
+ attributeCollection.createAttributeDeclarations(HTML40Namespace.ElementName.SELECT, attributes);
+
- // (size NUMBER #IMPLIED) ... should be defined locally.
- HTMLCMDataTypeImpl atype = new HTMLCMDataTypeImpl(CMDataType.NUMBER);
- HTMLAttrDeclImpl attr = new HTMLAttrDeclImpl(HTML40Namespace.ATTR_NAME_SIZE, atype, CMAttributeDeclaration.OPTIONAL);
- attributes.putNamedItem(HTML40Namespace.ATTR_NAME_SIZE, attr);
-
- String[] names = {HTML40Namespace.ATTR_NAME_NAME, HTML40Namespace.ATTR_NAME_MULTIPLE, HTML40Namespace.ATTR_NAME_DISABLED, HTML40Namespace.ATTR_NAME_TABINDEX, HTML40Namespace.ATTR_NAME_ONFOCUS, HTML40Namespace.ATTR_NAME_ONBLUR, HTML40Namespace.ATTR_NAME_ONCHANGE};
- attributeCollection.getDeclarations(attributes, Arrays.asList(names).iterator());
}
/**
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedSOURCE.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedSOURCE.java
new file mode 100644
index 0000000..647a9d4
--- /dev/null
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedSOURCE.java
@@ -0,0 +1,86 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.html.core.internal.contentmodel;
+
+
+
+import java.util.Arrays;
+import java.util.Iterator;
+
+import org.eclipse.wst.html.core.internal.provisional.HTML40Namespace;
+import org.eclipse.wst.html.core.internal.provisional.HTML50Namespace;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMAttributeDeclaration;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMDataType;
+
+/**
+ * SOURCE.
+ */
+final class HedSOURCE extends HTMLElemDeclImpl {
+
+ private static String[] terminators = {HTML50Namespace.ElementName.SOURCE};
+
+ /**
+ */
+ public HedSOURCE(ElementCollection collection) {
+ super(HTML50Namespace.ElementName.SOURCE, collection);
+ typeDefinitionName = ComplexTypeDefinitionFactory.CTYPE_CDATA;
+ layoutType = LAYOUT_HIDDEN;
+ }
+
+ /**
+ * SOURCE
+ * %attrs;
+ * (src %URI; #REQUIRED): should be defined locally.
+ * (type %ContentType; #IMPLIED)
+ * (media %MediaType; #IMPLIED)
+ * Global attributes
+ */
+ protected void createAttributeDeclarations() {
+ if (attributes != null)
+ return; // already created.
+ if (attributeCollection == null)
+ return; // fatal
+
+ attributes = new CMNamedNodeMapImpl();
+
+
+ // (src %URI; #REQUIRED): should be defined locally.
+ HTMLCMDataTypeImpl atype = null;
+ HTMLAttrDeclImpl attr = null;
+ atype = new HTMLCMDataTypeImpl(CMDataType.URI);
+ attr = new HTMLAttrDeclImpl(HTML40Namespace.ATTR_NAME_SRC, atype, CMAttributeDeclaration.REQUIRED);
+ attributes.putNamedItem(HTML40Namespace.ATTR_NAME_SRC, attr);
+
+ // (type %ContentType; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.CONTENT_TYPE);
+ attr = new HTMLAttrDeclImpl(HTML40Namespace.ATTR_NAME_TYPE, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(HTML40Namespace.ATTR_NAME_TYPE, attr);
+
+
+ // (media %MediaType; #IMPLIED)
+ atype = new HTMLCMDataTypeImpl(HTMLCMDataType.MEDIA_TYPE);
+ atype.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, HTML40Namespace.ATTR_VALUE_ALL);
+ attr = new HTMLAttrDeclImpl(HTML40Namespace.ATTR_NAME_MEDIA, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(HTML40Namespace.ATTR_NAME_MEDIA, attr);
+
+
+ // global attributes
+ attributeCollection.getAttrs(attributes);
+ }
+
+ /**
+ * SOURCE has terminators.
+ * @return java.util.Iterator
+ */
+ protected Iterator getTerminators() {
+ return Arrays.asList(terminators).iterator();
+ }
+}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedSTYLE.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedSTYLE.java
index 985b7fa..da0c3ed 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedSTYLE.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedSTYLE.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -12,12 +12,8 @@
-import java.util.Arrays;
-
import org.eclipse.wst.html.core.internal.provisional.HTML40Namespace;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMAttributeDeclaration;
import org.eclipse.wst.xml.core.internal.contentmodel.CMContent;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMDataType;
import org.eclipse.wst.xml.core.internal.contentmodel.CMElementDeclaration;
/**
@@ -35,11 +31,7 @@
/**
* STYLE
- * %i18n;
- * (type %ContentType; #REQUIRED) ... should be defined locally.
- * (media %MediaDesc; #IMPLIED)
- * (title %Text; #IMPLIED)
- */
+ */
protected void createAttributeDeclarations() {
if (attributes != null)
return; // already created.
@@ -47,17 +39,11 @@
return; // fatal
attributes = new CMNamedNodeMapImpl();
-
- // %i18n;
- attributeCollection.getI18n(attributes);
-
- String[] names = {HTML40Namespace.ATTR_NAME_MEDIA, HTML40Namespace.ATTR_NAME_TITLE};
- attributeCollection.getDeclarations(attributes, Arrays.asList(names).iterator());
- // (type %ContentType; #REQUIRED) ... should be defined locally.
- HTMLCMDataTypeImpl atype = new HTMLCMDataTypeImpl(HTMLCMDataType.CONTENT_TYPE);
- atype.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, "text/css"); //$NON-NLS-1$
- HTMLAttrDeclImpl attr = new HTMLAttrDeclImpl(HTML40Namespace.ATTR_NAME_TYPE, atype, CMAttributeDeclaration.REQUIRED);
- attributes.putNamedItem(HTML40Namespace.ATTR_NAME_TYPE, attr);
+
+ //different sets of attributes for html 4 & 5
+ attributeCollection.createAttributeDeclarations(HTML40Namespace.ElementName.STYLE, attributes);
+
+
}
/**
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedSUMMARY.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedSUMMARY.java
new file mode 100644
index 0000000..c2b3e82
--- /dev/null
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedSUMMARY.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.html.core.internal.contentmodel;
+
+import org.eclipse.wst.html.core.internal.provisional.HTML50Namespace;
+
+public class HedSUMMARY extends HedInlineContainer {
+
+ public HedSUMMARY(ElementCollection collection) {
+ super(HTML50Namespace.ElementName.SUMMARY, collection);
+ }
+
+ protected void createAttributeDeclarations() {
+ if (attributes != null)
+ return; // already created.
+ if (attributeCollection == null)
+ return; // fatal
+ attributes = new CMNamedNodeMapImpl();
+
+ // %attrs;
+ attributeCollection.getAttrs(attributes);
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedSVG.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedSVG.java
new file mode 100644
index 0000000..0515172
--- /dev/null
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedSVG.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.html.core.internal.contentmodel;
+
+
+
+import java.util.Arrays;
+import java.util.Iterator;
+
+import org.eclipse.wst.html.core.internal.provisional.HTML50Namespace;
+
+
+/**
+ * SVG.
+ */
+final class HedSVG extends HTMLElemDeclImpl {
+
+ private static String[] terminators = {HTML50Namespace.ElementName.SVG};
+
+ /**
+ */
+ public HedSVG(ElementCollection collection) {
+ super(HTML50Namespace.ElementName.SVG, collection);
+ layoutType = LAYOUT_OBJECT;
+ }
+
+ /**
+ * Create all attribute declarations.
+ * SVG namespace
+ */
+ protected void createAttributeDeclarations() {
+ if (attributes != null)
+ return; // already created.
+ if (attributeCollection == null)
+ return; // fatal
+
+ attributes = new CMNamedNodeMapImpl();
+
+ attributeCollection.getAttrs(attributes);
+ }
+
+ /**
+ * SVG has terminators.
+ * @return java.util.Iterator
+ */
+ protected Iterator getTerminators() {
+ return Arrays.asList(terminators).iterator();
+ }
+}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedSectioning.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedSectioning.java
new file mode 100644
index 0000000..07a7209
--- /dev/null
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedSectioning.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.html.core.internal.contentmodel;
+
+public class HedSectioning extends HedFlowContainer {
+ public HedSectioning(String elementName, ElementCollection collection) {
+ super(elementName, collection);
+ layoutType = LAYOUT_BLOCK;
+ correctionType = CORRECT_EMPTY;
+ }
+
+ /**
+ * Article.
+ * %attrs;
+ * Global attributes
+ */
+ protected void createAttributeDeclarations() {
+ if (attributes != null)
+ return; // already created.
+ if (attributeCollection == null)
+ return; // fatal
+
+ attributes = new CMNamedNodeMapImpl();
+
+ // %attrs;
+ attributeCollection.getAttrs(attributes);
+ }
+}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedTABLE.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedTABLE.java
index bed267c..426cd78 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedTABLE.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedTABLE.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -12,11 +12,7 @@
-import java.util.Arrays;
-
import org.eclipse.wst.html.core.internal.provisional.HTML40Namespace;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMAttributeDeclaration;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMDataType;
import org.eclipse.wst.xml.core.internal.contentmodel.CMNamedNodeMap;
/**
@@ -36,20 +32,6 @@
/**
* TABLE.
* %attrs;
- * %reserved;
- * (summary %Text; #IMPLIED)
- * (width %Length; #IMPLIED)
- * (border %Pixels; #IMPLIED)
- * (frame %TFrame; #IMPLIED)
- * (rules %TRules; #IMPLIED)
- * (cellspacing %Length; #IMPLIED)
- * (cellpadding %Length; #IMPLIED)
- * (align %TAlign; #IMPLIED)
- * (bgcolor %Color; #IMPLIED)
- * (datapagesize CDATA #IMPLIED)
- * (height %Pixels; #IMPLIED)
- * (background %URI; #IMPLIED)
- * (bordercolor %Color #IMPLIED) ... D205514
*/
protected void createAttributeDeclarations() {
if (attributes != null)
@@ -61,19 +43,10 @@
// %attrs;
attributeCollection.getAttrs(attributes);
- // %reserved;
- // ... %reserved; is empty in the current DTD.
-
- String[] names = {HTML40Namespace.ATTR_NAME_SUMMARY, HTML40Namespace.ATTR_NAME_WIDTH, HTML40Namespace.ATTR_NAME_BORDER, HTML40Namespace.ATTR_NAME_FRAME, HTML40Namespace.ATTR_NAME_RULES, HTML40Namespace.ATTR_NAME_CELLSPACING, HTML40Namespace.ATTR_NAME_CELLPADDING, HTML40Namespace.ATTR_NAME_BGCOLOR, HTML40Namespace.ATTR_NAME_DATAPAGESIZE, HTML40Namespace.ATTR_NAME_HEIGHT, HTML40Namespace.ATTR_NAME_BACKGROUND, HTML40Namespace.ATTR_NAME_BORDERCOLOR // D205514
- };
- attributeCollection.getDeclarations(attributes, Arrays.asList(names).iterator());
-
- // align (local)
- HTMLCMDataTypeImpl atype = new HTMLCMDataTypeImpl(CMDataType.ENUM);
- String[] alignValues = {HTML40Namespace.ATTR_VALUE_LEFT, HTML40Namespace.ATTR_VALUE_CENTER, HTML40Namespace.ATTR_VALUE_RIGHT};
- atype.setEnumValues(alignValues);
- HTMLAttrDeclImpl adec = new HTMLAttrDeclImpl(HTML40Namespace.ATTR_NAME_ALIGN, atype, CMAttributeDeclaration.OPTIONAL);
- attributes.putNamedItem(HTML40Namespace.ATTR_NAME_ALIGN, adec);
+
+ //different sets of attributes for html 4 & 5
+ attributeCollection.createAttributeDeclarations(HTML40Namespace.ElementName.TABLE, attributes);
+
}
/**
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedTEXTAREA.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedTEXTAREA.java
index f8a61c6..1b5ba41 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedTEXTAREA.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedTEXTAREA.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -12,8 +12,6 @@
-import java.util.Arrays;
-
import org.eclipse.wst.html.core.internal.provisional.HTML40Namespace;
import org.eclipse.wst.xml.core.internal.contentmodel.CMNamedNodeMap;
@@ -35,19 +33,6 @@
/**
* TEXTAREA.
* %attrs;
- * %reserved; ... empty
- * (name CDATA #IMPLIED)
- * (rows NUMBER #REQUIRED)
- * (cols NUMBER #REQUIRED)
- * (disabled (disabled) #IMPLIED)
- * (readonly (readonly) #IMPLIED)
- * (tabindex NUMBER #IMPLIED)
- * (accesskey %Character; #IMPLIED)
- * (onfocus %Script; #IMPLIED)
- * (onblur %Script; #IMPLIED)
- * (onselect %Script; #IMPLIED)
- * (onchange %Script; #IMPLIED)
- * (istyle CDATA #IMPLIED)
*/
protected void createAttributeDeclarations() {
if (attributes != null)
@@ -58,10 +43,10 @@
// %attrs;
attributeCollection.getAttrs(attributes);
-
- String[] names = {HTML40Namespace.ATTR_NAME_NAME, HTML40Namespace.ATTR_NAME_ROWS, HTML40Namespace.ATTR_NAME_COLS, HTML40Namespace.ATTR_NAME_DISABLED, HTML40Namespace.ATTR_NAME_READONLY, HTML40Namespace.ATTR_NAME_TABINDEX, HTML40Namespace.ATTR_NAME_ACCESSKEY, HTML40Namespace.ATTR_NAME_ONFOCUS, HTML40Namespace.ATTR_NAME_ONBLUR, HTML40Namespace.ATTR_NAME_ONSELECT, HTML40Namespace.ATTR_NAME_ONCHANGE, HTML40Namespace.ATTR_NAME_ISTYLE};
- attributeCollection.getDeclarations(attributes, Arrays.asList(names).iterator());
- }
+ //different sets of attributes for html 4 & 5
+ attributeCollection.createAttributeDeclarations(HTML40Namespace.ElementName.TEXTAREA, attributes);
+
+ }
/**
*/
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedTIME.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedTIME.java
new file mode 100644
index 0000000..ec8191c
--- /dev/null
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedTIME.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.html.core.internal.contentmodel;
+
+import java.util.Arrays;
+
+import org.eclipse.wst.html.core.internal.provisional.HTML40Namespace;
+import org.eclipse.wst.html.core.internal.provisional.HTML50Namespace;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMContent;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMGroup;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMNamedNodeMap;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMNode;
+
+public class HedTIME extends HedInlineContainer {
+
+ public HedTIME(ElementCollection collection) {
+ super(HTML50Namespace.ElementName.TIME, collection);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.wst.html.core.internal.contentmodel.HTMLElemDeclImpl#createAttributeDeclarations()
+ */
+ protected void createAttributeDeclarations() {
+ if (attributes != null)
+ return; // already created.
+ if (attributeCollection == null)
+ return; // fatal
+
+ attributes = new CMNamedNodeMapImpl();
+ attributeCollection.getAttrs(attributes);
+
+ String[] names = { HTML40Namespace.ATTR_NAME_DATETIME, HTML50Namespace.ATTR_NAME_PUBDATE };
+ attributeCollection.getDeclarations(attributes, Arrays.asList(names).iterator());
+
+ }
+
+ public CMContent getExclusion() {
+ if (exclusion != null)
+ return exclusion; // already created.
+ if (elementCollection == null)
+ return null;
+
+ exclusion = new CMGroupImpl(CMGroup.CHOICE, 1, 1);
+ CMNode time = elementCollection.getNamedItem(HTML50Namespace.ElementName.TIME);
+ if (time != null)
+ exclusion.appendChild(time);
+
+ return exclusion;
+ }
+
+ public CMNamedNodeMap getProhibitedAncestors() {
+ if (prohibitedAncestors != null)
+ return prohibitedAncestors;
+
+ String[] names = {HTML50Namespace.ElementName.TIME};
+ prohibitedAncestors = elementCollection.getDeclarations(names);
+ return prohibitedAncestors;
+ }
+}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedVIDEO.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedVIDEO.java
new file mode 100644
index 0000000..98eb444
--- /dev/null
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/HedVIDEO.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.html.core.internal.contentmodel;
+
+import java.util.Arrays;
+
+import org.eclipse.wst.html.core.internal.provisional.HTML40Namespace;
+import org.eclipse.wst.html.core.internal.provisional.HTML50Namespace;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMAttributeDeclaration;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMDataType;
+
+
+
+
+/**
+ * VIDEO.
+ */
+final class HedVIDEO extends HedMediaElement {
+
+
+ public HedVIDEO(ElementCollection collection) {
+ super(HTML50Namespace.ElementName.VIDEO, collection);
+ }
+
+ /**
+ * MediaElement
+ * %attrs;
+ * (src %URI; #REQUIRED): should be defined locally.
+ * (preload %CDATA; #IMPLIED)
+ * (autoplay %ENUM; #IMPLIED)
+ * (loop %ENUM; #IMPLIED)
+ * (controls %MediaType; #IMPLIED)
+ * (poster %URI; OPTIONAL)
+ * (height %Length; #IMPLIED)
+ * (width %Length; #IMPLIED)
+ * Global attributes
+ */
+ protected void createAttributeDeclarations() {
+ super.createAttributeDeclarations();
+
+ // (poster %URI; #optional): should be defined locally.
+
+ HTMLCMDataTypeImpl atype = null;
+ HTMLAttrDeclImpl attr = null;
+ atype = new HTMLCMDataTypeImpl(CMDataType.URI);
+ attr = new HTMLAttrDeclImpl(HTML50Namespace.ATTR_NAME_POSTER, atype, CMAttributeDeclaration.OPTIONAL);
+ attributes.putNamedItem(HTML50Namespace.ATTR_NAME_POSTER, attr);
+
+ // height , width
+ String[] names = {HTML40Namespace.ATTR_NAME_HEIGHT, HTML40Namespace.ATTR_NAME_WIDTH};
+ attributeCollection.getDeclarations(attributes, Arrays.asList(names).iterator());
+
+
+
+ }
+}
+
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contenttype/HTMLHeadTokenizer.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contenttype/HTMLHeadTokenizer.java
index 6f03350..ea727f8 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contenttype/HTMLHeadTokenizer.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contenttype/HTMLHeadTokenizer.java
@@ -1,7 +1,7 @@
-/* The following code was generated by JFlex 1.2.2 on 6/29/09 9:58 AM */
+/* The following code was generated by JFlex 1.2.2 on 8/17/10 3:37 PM */
/*******************************************************************************
- * Copyright (c) 2004, 2009 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -24,8 +24,8 @@
/**
* This class is a scanner generated by
* <a href="http://www.informatik.tu-muenchen.de/~kleing/jflex/">JFlex</a> 1.2.2
- * on 6/29/09 9:58 AM from the specification file
- * <tt>file:/D:/dev/workspaces/wtp3M/org.eclipse.wst.sse.core/DevTimeSupport/HeadParsers/HTMLHeadTokenizer/HTMLHeadTokenizer.jFlex</tt>
+ * on 8/17/10 3:37 PM from the specification file
+ * <tt>file:/D:/dev/workspaces/helios/org.eclipse.wst.sse.core/DevTimeSupport/HeadParsers/HTMLHeadTokenizer/HTMLHeadTokenizer.jFlex</tt>
*/
public class HTMLHeadTokenizer {
@@ -57,14 +57,14 @@
*/
final private static String yycmap_packed =
"\1\11\10\0\1\6\1\7\2\0\1\10\22\0\1\6\1\0\1\40"+
- "\2\0\1\44\1\0\1\43\5\0\1\34\1\0\1\42\13\0\1\45"+
+ "\2\0\1\46\1\0\1\45\5\0\1\34\1\0\1\44\13\0\1\47"+
"\1\13\1\12\1\31\1\14\1\0\1\22\1\0\1\24\1\26\1\20"+
"\1\0\1\30\1\32\1\27\2\0\1\17\1\16\1\23\1\25\1\33"+
- "\1\35\2\0\1\21\1\36\1\37\1\0\1\15\1\41\7\0\1\22"+
- "\1\0\1\24\1\26\1\20\1\0\1\30\1\32\1\27\2\0\1\17"+
- "\1\16\1\23\1\25\1\33\1\35\2\0\1\21\1\36\1\37\1\0"+
- "\1\15\1\41\101\0\1\4\3\0\1\5\17\0\1\3\16\0\1\1"+
- "\20\0\1\3\16\0\1\1\1\2\170\0\1\2\ufe87\0";
+ "\1\35\1\42\1\43\1\21\1\36\1\37\1\0\1\15\1\41\7\0"+
+ "\1\22\1\0\1\24\1\26\1\20\1\0\1\30\1\32\1\27\2\0"+
+ "\1\17\1\16\1\23\1\25\1\33\1\35\1\42\1\43\1\21\1\36"+
+ "\1\37\1\0\1\15\1\41\101\0\1\4\3\0\1\5\17\0\1\3"+
+ "\16\0\1\1\20\0\1\3\16\0\1\1\1\2\170\0\1\2\ufe87\0";
/**
* Translates characters to character classes
@@ -142,6 +142,7 @@
private boolean hasMore = true;
+ private boolean hasCharsetAttr = false;
private final static int MAX_TO_SCAN = 8000;
StringBuffer string = new StringBuffer();
// state stack for easier state handling
@@ -215,6 +216,7 @@
fStateStack.clear();
hasMore = true;
+ hasCharsetAttr = false;
// its a little wasteful to "throw away" first char array generated
// by class init (via auto generated code), but we really do want
@@ -255,6 +257,9 @@
fStateStack.push(yystate());
}
+ public final boolean hasCharsetAttr() {
+ return hasCharsetAttr;
+ }
private void popState() {
yybegin(fStateStack.pop());
@@ -296,7 +301,7 @@
char [] map = new char[0x10000];
int i = 0; /* index in packed string */
int j = 0; /* index in unpacked array */
- while (i < 176) {
+ while (i < 180) {
int count = packed.charAt(i++);
char value = packed.charAt(i++);
do map[j++] = value; while (--count > 0);
@@ -528,21 +533,22 @@
case 3:
switch (yy_input) {
case 9: yy_isFinal = true; yy_state = 21; break yy_forNext;
- case 25: yy_isFinal = true; yy_state = 22; break yy_forNext;
- case 26: yy_isFinal = true; yy_state = 23; break yy_forNext;
- case 34: yy_isFinal = true; yy_state = 24; break yy_forNext;
+ case 20: yy_isFinal = true; yy_state = 22; break yy_forNext;
+ case 25: yy_isFinal = true; yy_state = 23; break yy_forNext;
+ case 26: yy_isFinal = true; yy_state = 24; break yy_forNext;
+ case 36: yy_isFinal = true; yy_state = 25; break yy_forNext;
default: yy_isFinal = true; yy_noLookAhead = true; yy_state = 9; break yy_forNext;
}
case 4:
switch (yy_input) {
case 6:
- case 8: yy_isFinal = true; yy_state = 26; break yy_forNext;
- case 7: yy_isFinal = true; yy_state = 27; break yy_forNext;
- case 9: yy_isFinal = true; yy_state = 28; break yy_forNext;
- case 32: yy_isFinal = true; yy_state = 29; break yy_forNext;
- case 35: yy_isFinal = true; yy_state = 30; break yy_forNext;
- default: yy_isFinal = true; yy_noLookAhead = true; yy_state = 25; break yy_forNext;
+ case 8: yy_isFinal = true; yy_state = 27; break yy_forNext;
+ case 7: yy_isFinal = true; yy_state = 28; break yy_forNext;
+ case 9: yy_isFinal = true; yy_state = 29; break yy_forNext;
+ case 32: yy_isFinal = true; yy_state = 30; break yy_forNext;
+ case 37: yy_isFinal = true; yy_state = 31; break yy_forNext;
+ default: yy_isFinal = true; yy_noLookAhead = true; yy_state = 26; break yy_forNext;
}
case 5:
@@ -550,12 +556,12 @@
case 7:
case 8:
case 11:
- case 25: yy_isFinal = true; yy_state = 32; break yy_forNext;
- case 9: yy_isFinal = true; yy_state = 33; break yy_forNext;
+ case 25: yy_isFinal = true; yy_state = 33; break yy_forNext;
+ case 9: yy_isFinal = true; yy_state = 34; break yy_forNext;
case 12:
- case 34: yy_isFinal = true; yy_state = 34; break yy_forNext;
- case 32: yy_isFinal = true; yy_state = 35; break yy_forNext;
- default: yy_isFinal = true; yy_noLookAhead = true; yy_state = 31; break yy_forNext;
+ case 36: yy_isFinal = true; yy_state = 35; break yy_forNext;
+ case 32: yy_isFinal = true; yy_state = 36; break yy_forNext;
+ default: yy_isFinal = true; yy_noLookAhead = true; yy_state = 32; break yy_forNext;
}
case 6:
@@ -563,28 +569,28 @@
case 7:
case 8:
case 11:
- case 25: yy_isFinal = true; yy_state = 32; break yy_forNext;
- case 34: yy_isFinal = true; yy_state = 34; break yy_forNext;
- case 35: yy_isFinal = true; yy_state = 35; break yy_forNext;
- case 9: yy_isFinal = true; yy_state = 36; break yy_forNext;
- case 36: yy_isFinal = true; yy_state = 37; break yy_forNext;
- default: yy_isFinal = true; yy_noLookAhead = true; yy_state = 31; break yy_forNext;
+ case 25: yy_isFinal = true; yy_state = 33; break yy_forNext;
+ case 36: yy_isFinal = true; yy_state = 35; break yy_forNext;
+ case 37: yy_isFinal = true; yy_state = 36; break yy_forNext;
+ case 9: yy_isFinal = true; yy_state = 37; break yy_forNext;
+ case 38: yy_isFinal = true; yy_state = 38; break yy_forNext;
+ default: yy_isFinal = true; yy_noLookAhead = true; yy_state = 32; break yy_forNext;
}
case 7:
switch (yy_input) {
case 11:
- case 25: yy_isFinal = true; yy_state = 32; break yy_forNext;
- case 34: yy_isFinal = true; yy_state = 34; break yy_forNext;
- case 12: yy_isFinal = true; yy_state = 37; break yy_forNext;
+ case 25: yy_isFinal = true; yy_state = 33; break yy_forNext;
+ case 36: yy_isFinal = true; yy_state = 35; break yy_forNext;
+ case 12: yy_isFinal = true; yy_state = 38; break yy_forNext;
case 6:
case 7:
- case 8: yy_isFinal = true; yy_state = 38; break yy_forNext;
- case 9: yy_isFinal = true; yy_state = 39; break yy_forNext;
+ case 8: yy_isFinal = true; yy_state = 39; break yy_forNext;
+ case 9: yy_isFinal = true; yy_state = 40; break yy_forNext;
case 32:
- case 35: yy_isFinal = true; yy_state = 40; break yy_forNext;
- case 37: yy_isFinal = true; yy_pushbackPos = yy_currentPos; yy_pushback = true; yy_state = 41; break yy_forNext;
- default: yy_isFinal = true; yy_noLookAhead = true; yy_state = 31; break yy_forNext;
+ case 37: yy_isFinal = true; yy_state = 41; break yy_forNext;
+ case 39: yy_isFinal = true; yy_pushbackPos = yy_currentPos; yy_pushback = true; yy_state = 42; break yy_forNext;
+ default: yy_isFinal = true; yy_noLookAhead = true; yy_state = 32; break yy_forNext;
}
case 8:
@@ -592,38 +598,38 @@
case 9: yy_isFinal = true; yy_noLookAhead = true; yy_state = 9; break yy_forNext;
case 6:
case 7:
- case 8: yy_isFinal = true; yy_noLookAhead = true; yy_state = 31; break yy_forNext;
- default: yy_isFinal = true; yy_noLookAhead = true; yy_state = 42; break yy_forNext;
+ case 8: yy_isFinal = true; yy_noLookAhead = true; yy_state = 32; break yy_forNext;
+ default: yy_isFinal = true; yy_noLookAhead = true; yy_state = 43; break yy_forNext;
}
case 10:
switch (yy_input) {
- case 2: yy_isFinal = true; yy_noLookAhead = true; yy_state = 43; break yy_forNext;
+ case 2: yy_isFinal = true; yy_noLookAhead = true; yy_state = 44; break yy_forNext;
default: break yy_forAction;
}
case 11:
switch (yy_input) {
- case 1: yy_isFinal = true; yy_noLookAhead = true; yy_state = 44; break yy_forNext;
+ case 1: yy_isFinal = true; yy_noLookAhead = true; yy_state = 45; break yy_forNext;
default: break yy_forAction;
}
case 12:
switch (yy_input) {
- case 4: yy_state = 45; break yy_forNext;
+ case 4: yy_state = 46; break yy_forNext;
default: break yy_forAction;
}
case 13:
switch (yy_input) {
- case 11: yy_state = 46; break yy_forNext;
+ case 11: yy_state = 47; break yy_forNext;
default: break yy_forAction;
}
case 14:
switch (yy_input) {
- case 9: yy_state = 47; break yy_forNext;
- case 14: yy_state = 48; break yy_forNext;
+ case 9: yy_state = 48; break yy_forNext;
+ case 14: yy_state = 49; break yy_forNext;
default: break yy_forAction;
}
@@ -631,9 +637,9 @@
switch (yy_input) {
case 6:
case 7:
- case 8: yy_state = 49; break yy_forNext;
- case 9: yy_state = 50; break yy_forNext;
- case 11: yy_state = 51; break yy_forNext;
+ case 8: yy_state = 50; break yy_forNext;
+ case 9: yy_state = 51; break yy_forNext;
+ case 11: yy_state = 52; break yy_forNext;
default: break yy_forAction;
}
@@ -641,226 +647,224 @@
switch (yy_input) {
case 6:
case 7:
- case 8: yy_state = 49; break yy_forNext;
- case 11: yy_state = 52; break yy_forNext;
+ case 8: yy_state = 50; break yy_forNext;
+ case 11: yy_state = 53; break yy_forNext;
default: break yy_forAction;
}
case 17:
switch (yy_input) {
- case 14: yy_state = 48; break yy_forNext;
- case 9: yy_state = 53; break yy_forNext;
- case 12: yy_state = 54; break yy_forNext;
+ case 14: yy_state = 49; break yy_forNext;
+ case 9: yy_state = 54; break yy_forNext;
+ case 12: yy_state = 55; break yy_forNext;
default: break yy_forAction;
}
case 18:
switch (yy_input) {
- case 12: yy_state = 55; break yy_forNext;
- case 16: yy_state = 56; break yy_forNext;
+ case 12: yy_state = 56; break yy_forNext;
+ case 16: yy_state = 57; break yy_forNext;
default: break yy_forAction;
}
case 19:
switch (yy_input) {
- case 9: yy_state = 57; break yy_forNext;
- case 25: yy_isFinal = true; yy_state = 58; break yy_forNext;
+ case 9: yy_state = 58; break yy_forNext;
+ case 25: yy_isFinal = true; yy_state = 59; break yy_forNext;
default: break yy_forAction;
}
case 20:
switch (yy_input) {
- case 9: yy_state = 59; break yy_forNext;
- case 19: yy_state = 60; break yy_forNext;
+ case 9: yy_state = 60; break yy_forNext;
+ case 19: yy_state = 61; break yy_forNext;
default: break yy_forAction;
}
case 21:
switch (yy_input) {
- case 25: yy_isFinal = true; yy_state = 22; break yy_forNext;
- case 26: yy_state = 61; break yy_forNext;
- case 34: yy_state = 62; break yy_forNext;
+ case 25: yy_isFinal = true; yy_state = 23; break yy_forNext;
+ case 20: yy_state = 62; break yy_forNext;
+ case 26: yy_state = 63; break yy_forNext;
+ case 36: yy_state = 64; break yy_forNext;
default: break yy_forAction;
}
case 22:
switch (yy_input) {
- case 9: yy_isFinal = true; yy_noLookAhead = true; yy_state = 63; break yy_forNext;
+ case 9: yy_state = 65; break yy_forNext;
+ case 26: yy_state = 66; break yy_forNext;
default: break yy_forAction;
}
case 23:
switch (yy_input) {
- case 9: yy_state = 64; break yy_forNext;
- case 17: yy_state = 65; break yy_forNext;
+ case 9: yy_isFinal = true; yy_noLookAhead = true; yy_state = 67; break yy_forNext;
default: break yy_forAction;
}
case 24:
switch (yy_input) {
- case 9: yy_state = 66; break yy_forNext;
- case 25: yy_isFinal = true; yy_state = 67; break yy_forNext;
+ case 9: yy_state = 68; break yy_forNext;
+ case 17: yy_state = 69; break yy_forNext;
default: break yy_forAction;
}
- case 26:
+ case 25:
switch (yy_input) {
- case 6:
- case 8: yy_isFinal = true; yy_state = 26; break yy_forNext;
- case 7: yy_state = 68; break yy_forNext;
- case 9: yy_isFinal = true; yy_state = 69; break yy_forNext;
- default: yy_isFinal = true; yy_noLookAhead = true; yy_state = 25; break yy_forNext;
+ case 9: yy_state = 70; break yy_forNext;
+ case 25: yy_isFinal = true; yy_state = 71; break yy_forNext;
+ default: break yy_forAction;
}
case 27:
switch (yy_input) {
case 6:
- case 8: yy_isFinal = true; yy_state = 26; break yy_forNext;
- case 7: yy_state = 68; break yy_forNext;
- case 9: yy_isFinal = true; yy_state = 69; break yy_forNext;
- default: yy_isFinal = true; yy_noLookAhead = true; yy_state = 25; break yy_forNext;
+ case 8: yy_isFinal = true; yy_state = 27; break yy_forNext;
+ case 7: yy_state = 72; break yy_forNext;
+ case 9: yy_isFinal = true; yy_state = 73; break yy_forNext;
+ default: yy_isFinal = true; yy_noLookAhead = true; yy_state = 26; break yy_forNext;
}
case 28:
switch (yy_input) {
- case 32: yy_isFinal = true; yy_state = 29; break yy_forNext;
- case 35: yy_isFinal = true; yy_state = 30; break yy_forNext;
case 6:
- case 7:
- case 8: yy_state = 68; break yy_forNext;
- default: break yy_forAction;
+ case 8: yy_isFinal = true; yy_state = 27; break yy_forNext;
+ case 7: yy_state = 72; break yy_forNext;
+ case 9: yy_isFinal = true; yy_state = 73; break yy_forNext;
+ default: yy_isFinal = true; yy_noLookAhead = true; yy_state = 26; break yy_forNext;
}
case 29:
switch (yy_input) {
- case 9: yy_isFinal = true; yy_noLookAhead = true; yy_state = 70; break yy_forNext;
+ case 32: yy_isFinal = true; yy_state = 30; break yy_forNext;
+ case 37: yy_isFinal = true; yy_state = 31; break yy_forNext;
+ case 6:
+ case 7:
+ case 8: yy_state = 72; break yy_forNext;
default: break yy_forAction;
}
case 30:
switch (yy_input) {
- case 9: yy_isFinal = true; yy_noLookAhead = true; yy_state = 71; break yy_forNext;
+ case 9: yy_isFinal = true; yy_noLookAhead = true; yy_state = 74; break yy_forNext;
default: break yy_forAction;
}
- case 32:
+ case 31:
switch (yy_input) {
- case 9: yy_isFinal = true; yy_noLookAhead = true; yy_state = 72; break yy_forNext;
+ case 9: yy_isFinal = true; yy_noLookAhead = true; yy_state = 75; break yy_forNext;
default: break yy_forAction;
}
case 33:
switch (yy_input) {
- case 7:
- case 8:
- case 11:
- case 25: yy_isFinal = true; yy_state = 32; break yy_forNext;
- case 32: yy_isFinal = true; yy_state = 35; break yy_forNext;
- case 12:
- case 34: yy_state = 73; break yy_forNext;
+ case 9: yy_isFinal = true; yy_noLookAhead = true; yy_state = 76; break yy_forNext;
default: break yy_forAction;
}
case 34:
switch (yy_input) {
- case 9: yy_state = 74; break yy_forNext;
- case 25: yy_isFinal = true; yy_state = 75; break yy_forNext;
+ case 7:
+ case 8:
+ case 11:
+ case 25: yy_isFinal = true; yy_state = 33; break yy_forNext;
+ case 32: yy_isFinal = true; yy_state = 36; break yy_forNext;
+ case 12:
+ case 36: yy_state = 77; break yy_forNext;
default: break yy_forAction;
}
case 35:
switch (yy_input) {
- case 9: yy_isFinal = true; yy_noLookAhead = true; yy_state = 76; break yy_forNext;
+ case 9: yy_state = 78; break yy_forNext;
+ case 25: yy_isFinal = true; yy_state = 79; break yy_forNext;
default: break yy_forAction;
}
case 36:
switch (yy_input) {
- case 7:
- case 8:
- case 11:
- case 25: yy_isFinal = true; yy_state = 32; break yy_forNext;
- case 35: yy_isFinal = true; yy_state = 35; break yy_forNext;
- case 34: yy_state = 73; break yy_forNext;
- case 36: yy_state = 77; break yy_forNext;
+ case 9: yy_isFinal = true; yy_noLookAhead = true; yy_state = 80; break yy_forNext;
default: break yy_forAction;
}
case 37:
switch (yy_input) {
- case 25: yy_isFinal = true; yy_state = 32; break yy_forNext;
- case 9: yy_state = 78; break yy_forNext;
+ case 7:
+ case 8:
+ case 11:
+ case 25: yy_isFinal = true; yy_state = 33; break yy_forNext;
+ case 37: yy_isFinal = true; yy_state = 36; break yy_forNext;
+ case 36: yy_state = 77; break yy_forNext;
+ case 38: yy_state = 81; break yy_forNext;
default: break yy_forAction;
}
case 38:
switch (yy_input) {
- case 9: yy_isFinal = true; yy_noLookAhead = true; yy_state = 79; break yy_forNext;
+ case 25: yy_isFinal = true; yy_state = 33; break yy_forNext;
+ case 9: yy_state = 82; break yy_forNext;
default: break yy_forAction;
}
case 39:
switch (yy_input) {
- case 11:
- case 25: yy_isFinal = true; yy_state = 32; break yy_forNext;
- case 6:
- case 7:
- case 8: yy_isFinal = true; yy_state = 38; break yy_forNext;
- case 32:
- case 35: yy_isFinal = true; yy_state = 40; break yy_forNext;
- case 34: yy_state = 73; break yy_forNext;
- case 12: yy_state = 77; break yy_forNext;
+ case 9: yy_isFinal = true; yy_noLookAhead = true; yy_state = 83; break yy_forNext;
default: break yy_forAction;
}
case 40:
switch (yy_input) {
- case 9: yy_isFinal = true; yy_noLookAhead = true; yy_state = 80; break yy_forNext;
+ case 11:
+ case 25: yy_isFinal = true; yy_state = 33; break yy_forNext;
+ case 6:
+ case 7:
+ case 8: yy_isFinal = true; yy_state = 39; break yy_forNext;
+ case 32:
+ case 37: yy_isFinal = true; yy_state = 41; break yy_forNext;
+ case 36: yy_state = 77; break yy_forNext;
+ case 12: yy_state = 81; break yy_forNext;
default: break yy_forAction;
}
case 41:
switch (yy_input) {
- case 6:
- case 7:
- case 8: yy_isFinal = true; yy_pushback = true; yy_state = 81; break yy_forNext;
- case 9: yy_state = 82; break yy_forNext;
+ case 9: yy_isFinal = true; yy_noLookAhead = true; yy_state = 84; break yy_forNext;
default: break yy_forAction;
}
- case 45:
+ case 42:
switch (yy_input) {
- case 5: yy_isFinal = true; yy_noLookAhead = true; yy_state = 83; break yy_forNext;
+ case 6:
+ case 7:
+ case 8: yy_isFinal = true; yy_pushback = true; yy_state = 85; break yy_forNext;
+ case 9: yy_state = 86; break yy_forNext;
default: break yy_forAction;
}
case 46:
switch (yy_input) {
- case 9: yy_state = 47; break yy_forNext;
- case 14: yy_state = 48; break yy_forNext;
+ case 5: yy_isFinal = true; yy_noLookAhead = true; yy_state = 87; break yy_forNext;
default: break yy_forAction;
}
case 47:
switch (yy_input) {
- case 14: yy_state = 48; break yy_forNext;
+ case 9: yy_state = 48; break yy_forNext;
+ case 14: yy_state = 49; break yy_forNext;
default: break yy_forAction;
}
case 48:
switch (yy_input) {
- case 9: yy_state = 84; break yy_forNext;
- case 16: yy_state = 85; break yy_forNext;
+ case 14: yy_state = 49; break yy_forNext;
default: break yy_forAction;
}
case 49:
switch (yy_input) {
- case 6:
- case 7:
- case 8: yy_state = 49; break yy_forNext;
- case 9: yy_state = 50; break yy_forNext;
- case 11: yy_state = 51; break yy_forNext;
+ case 9: yy_state = 88; break yy_forNext;
+ case 16: yy_state = 89; break yy_forNext;
default: break yy_forAction;
}
@@ -868,196 +872,205 @@
switch (yy_input) {
case 6:
case 7:
- case 8: yy_state = 49; break yy_forNext;
- case 11: yy_state = 51; break yy_forNext;
- case 9: yy_state = 86; break yy_forNext;
+ case 8: yy_state = 50; break yy_forNext;
+ case 9: yy_state = 51; break yy_forNext;
+ case 11: yy_state = 52; break yy_forNext;
default: break yy_forAction;
}
case 51:
switch (yy_input) {
- case 12: yy_state = 54; break yy_forNext;
- case 9: yy_state = 87; break yy_forNext;
+ case 6:
+ case 7:
+ case 8: yy_state = 50; break yy_forNext;
+ case 11: yy_state = 52; break yy_forNext;
+ case 9: yy_state = 90; break yy_forNext;
default: break yy_forAction;
}
case 52:
switch (yy_input) {
- case 14: yy_state = 48; break yy_forNext;
- case 9: yy_state = 53; break yy_forNext;
- case 12: yy_state = 54; break yy_forNext;
+ case 12: yy_state = 55; break yy_forNext;
+ case 9: yy_state = 91; break yy_forNext;
default: break yy_forAction;
}
case 53:
switch (yy_input) {
- case 14: yy_state = 48; break yy_forNext;
- case 12: yy_state = 54; break yy_forNext;
+ case 14: yy_state = 49; break yy_forNext;
+ case 9: yy_state = 54; break yy_forNext;
+ case 12: yy_state = 55; break yy_forNext;
default: break yy_forAction;
}
case 54:
switch (yy_input) {
- case 9: yy_state = 88; break yy_forNext;
- case 13: yy_state = 89; break yy_forNext;
+ case 14: yy_state = 49; break yy_forNext;
+ case 12: yy_state = 55; break yy_forNext;
default: break yy_forAction;
}
case 55:
switch (yy_input) {
- case 9: yy_state = 57; break yy_forNext;
- case 25: yy_isFinal = true; yy_state = 58; break yy_forNext;
+ case 9: yy_state = 92; break yy_forNext;
+ case 13: yy_state = 93; break yy_forNext;
default: break yy_forAction;
}
case 56:
switch (yy_input) {
- case 9: yy_state = 59; break yy_forNext;
- case 19: yy_state = 60; break yy_forNext;
+ case 9: yy_state = 58; break yy_forNext;
+ case 25: yy_isFinal = true; yy_state = 59; break yy_forNext;
default: break yy_forAction;
}
case 57:
switch (yy_input) {
- case 25: yy_isFinal = true; yy_state = 58; break yy_forNext;
+ case 9: yy_state = 60; break yy_forNext;
+ case 19: yy_state = 61; break yy_forNext;
default: break yy_forAction;
}
case 58:
switch (yy_input) {
- case 9: yy_isFinal = true; yy_noLookAhead = true; yy_state = 90; break yy_forNext;
+ case 25: yy_isFinal = true; yy_state = 59; break yy_forNext;
default: break yy_forAction;
}
case 59:
switch (yy_input) {
- case 19: yy_state = 60; break yy_forNext;
+ case 9: yy_isFinal = true; yy_noLookAhead = true; yy_state = 94; break yy_forNext;
default: break yy_forAction;
}
case 60:
switch (yy_input) {
- case 9: yy_state = 91; break yy_forNext;
- case 20: yy_state = 92; break yy_forNext;
+ case 19: yy_state = 61; break yy_forNext;
default: break yy_forAction;
}
case 61:
switch (yy_input) {
- case 9: yy_state = 64; break yy_forNext;
- case 17: yy_state = 65; break yy_forNext;
+ case 9: yy_state = 95; break yy_forNext;
+ case 20: yy_state = 96; break yy_forNext;
default: break yy_forAction;
}
case 62:
switch (yy_input) {
- case 9: yy_state = 66; break yy_forNext;
- case 25: yy_isFinal = true; yy_state = 67; break yy_forNext;
+ case 9: yy_state = 65; break yy_forNext;
+ case 26: yy_state = 66; break yy_forNext;
+ default: break yy_forAction;
+ }
+
+ case 63:
+ switch (yy_input) {
+ case 9: yy_state = 68; break yy_forNext;
+ case 17: yy_state = 69; break yy_forNext;
default: break yy_forAction;
}
case 64:
switch (yy_input) {
- case 17: yy_state = 65; break yy_forNext;
+ case 9: yy_state = 70; break yy_forNext;
+ case 25: yy_isFinal = true; yy_state = 71; break yy_forNext;
default: break yy_forAction;
}
case 65:
switch (yy_input) {
- case 9: yy_state = 93; break yy_forNext;
- case 17: yy_state = 94; break yy_forNext;
+ case 26: yy_state = 66; break yy_forNext;
default: break yy_forAction;
}
case 66:
switch (yy_input) {
- case 25: yy_isFinal = true; yy_state = 67; break yy_forNext;
- default: break yy_forAction;
- }
-
- case 67:
- switch (yy_input) {
- case 9: yy_isFinal = true; yy_noLookAhead = true; yy_state = 95; break yy_forNext;
+ case 9: yy_state = 97; break yy_forNext;
+ case 18: yy_state = 98; break yy_forNext;
default: break yy_forAction;
}
case 68:
switch (yy_input) {
- case 6:
- case 8: yy_isFinal = true; yy_state = 26; break yy_forNext;
- case 7: yy_state = 68; break yy_forNext;
- case 9: yy_isFinal = true; yy_state = 69; break yy_forNext;
- default: yy_isFinal = true; yy_noLookAhead = true; yy_state = 25; break yy_forNext;
+ case 17: yy_state = 69; break yy_forNext;
+ default: break yy_forAction;
}
case 69:
switch (yy_input) {
+ case 9: yy_state = 99; break yy_forNext;
+ case 17: yy_state = 100; break yy_forNext;
+ default: break yy_forAction;
+ }
+
+ case 70:
+ switch (yy_input) {
+ case 25: yy_isFinal = true; yy_state = 71; break yy_forNext;
+ default: break yy_forAction;
+ }
+
+ case 71:
+ switch (yy_input) {
+ case 9: yy_isFinal = true; yy_noLookAhead = true; yy_state = 101; break yy_forNext;
+ default: break yy_forAction;
+ }
+
+ case 72:
+ switch (yy_input) {
case 6:
- case 8: yy_isFinal = true; yy_state = 26; break yy_forNext;
- case 7: yy_state = 68; break yy_forNext;
- case 9: yy_isFinal = true; yy_state = 96; break yy_forNext;
- default: yy_isFinal = true; yy_noLookAhead = true; yy_state = 25; break yy_forNext;
+ case 8: yy_isFinal = true; yy_state = 27; break yy_forNext;
+ case 7: yy_state = 72; break yy_forNext;
+ case 9: yy_isFinal = true; yy_state = 73; break yy_forNext;
+ default: yy_isFinal = true; yy_noLookAhead = true; yy_state = 26; break yy_forNext;
}
case 73:
switch (yy_input) {
- case 9: yy_state = 74; break yy_forNext;
- case 25: yy_isFinal = true; yy_state = 75; break yy_forNext;
- default: break yy_forAction;
- }
-
- case 74:
- switch (yy_input) {
- case 25: yy_isFinal = true; yy_state = 75; break yy_forNext;
- default: break yy_forAction;
- }
-
- case 75:
- switch (yy_input) {
- case 9: yy_isFinal = true; yy_noLookAhead = true; yy_state = 97; break yy_forNext;
- default: break yy_forAction;
+ case 6:
+ case 8: yy_isFinal = true; yy_state = 27; break yy_forNext;
+ case 7: yy_state = 72; break yy_forNext;
+ case 9: yy_isFinal = true; yy_state = 102; break yy_forNext;
+ default: yy_isFinal = true; yy_noLookAhead = true; yy_state = 26; break yy_forNext;
}
case 77:
switch (yy_input) {
- case 25: yy_isFinal = true; yy_state = 32; break yy_forNext;
case 9: yy_state = 78; break yy_forNext;
+ case 25: yy_isFinal = true; yy_state = 79; break yy_forNext;
default: break yy_forAction;
}
case 78:
switch (yy_input) {
- case 25: yy_isFinal = true; yy_state = 32; break yy_forNext;
+ case 25: yy_isFinal = true; yy_state = 79; break yy_forNext;
+ default: break yy_forAction;
+ }
+
+ case 79:
+ switch (yy_input) {
+ case 9: yy_isFinal = true; yy_noLookAhead = true; yy_state = 103; break yy_forNext;
default: break yy_forAction;
}
case 81:
switch (yy_input) {
- case 6:
- case 7:
- case 8: yy_isFinal = true; yy_pushback = true; yy_state = 81; break yy_forNext;
- case 9: yy_isFinal = true; yy_pushback = true; yy_state = 98; break yy_forNext;
+ case 25: yy_isFinal = true; yy_state = 33; break yy_forNext;
+ case 9: yy_state = 82; break yy_forNext;
default: break yy_forAction;
}
case 82:
switch (yy_input) {
- case 6:
- case 7:
- case 8: yy_isFinal = true; yy_pushback = true; yy_state = 81; break yy_forNext;
- default: break yy_forAction;
- }
-
- case 84:
- switch (yy_input) {
- case 16: yy_state = 85; break yy_forNext;
+ case 25: yy_isFinal = true; yy_state = 33; break yy_forNext;
default: break yy_forAction;
}
case 85:
switch (yy_input) {
- case 9: yy_state = 99; break yy_forNext;
- case 17: yy_state = 100; break yy_forNext;
+ case 6:
+ case 7:
+ case 8: yy_isFinal = true; yy_pushback = true; yy_state = 85; break yy_forNext;
+ case 9: yy_isFinal = true; yy_pushback = true; yy_state = 104; break yy_forNext;
default: break yy_forAction;
}
@@ -1065,70 +1078,74 @@
switch (yy_input) {
case 6:
case 7:
- case 8: yy_state = 49; break yy_forNext;
- case 11: yy_state = 51; break yy_forNext;
- default: break yy_forAction;
- }
-
- case 87:
- switch (yy_input) {
- case 12: yy_state = 54; break yy_forNext;
+ case 8: yy_isFinal = true; yy_pushback = true; yy_state = 85; break yy_forNext;
default: break yy_forAction;
}
case 88:
switch (yy_input) {
- case 13: yy_state = 89; break yy_forNext;
+ case 16: yy_state = 89; break yy_forNext;
default: break yy_forAction;
}
case 89:
switch (yy_input) {
- case 9: yy_state = 101; break yy_forNext;
- case 14: yy_state = 102; break yy_forNext;
+ case 9: yy_state = 105; break yy_forNext;
+ case 17: yy_state = 106; break yy_forNext;
+ default: break yy_forAction;
+ }
+
+ case 90:
+ switch (yy_input) {
+ case 6:
+ case 7:
+ case 8: yy_state = 50; break yy_forNext;
+ case 11: yy_state = 52; break yy_forNext;
default: break yy_forAction;
}
case 91:
switch (yy_input) {
- case 20: yy_state = 92; break yy_forNext;
+ case 12: yy_state = 55; break yy_forNext;
default: break yy_forAction;
}
case 92:
switch (yy_input) {
- case 9: yy_state = 103; break yy_forNext;
- case 21: yy_state = 104; break yy_forNext;
+ case 13: yy_state = 93; break yy_forNext;
default: break yy_forAction;
}
case 93:
switch (yy_input) {
- case 17: yy_state = 94; break yy_forNext;
+ case 9: yy_state = 107; break yy_forNext;
+ case 14: yy_state = 108; break yy_forNext;
default: break yy_forAction;
}
- case 94:
+ case 95:
switch (yy_input) {
- case 9: yy_state = 105; break yy_forNext;
- case 27: yy_state = 106; break yy_forNext;
+ case 20: yy_state = 96; break yy_forNext;
default: break yy_forAction;
}
case 96:
switch (yy_input) {
- case 6:
- case 7:
- case 8: yy_state = 68; break yy_forNext;
+ case 9: yy_state = 109; break yy_forNext;
+ case 21: yy_state = 110; break yy_forNext;
+ default: break yy_forAction;
+ }
+
+ case 97:
+ switch (yy_input) {
+ case 18: yy_state = 98; break yy_forNext;
default: break yy_forAction;
}
case 98:
switch (yy_input) {
- case 6:
- case 7:
- case 8: yy_isFinal = true; yy_pushback = true; yy_state = 81; break yy_forNext;
- case 9: yy_state = 82; break yy_forNext;
+ case 9: yy_state = 111; break yy_forNext;
+ case 34: yy_state = 112; break yy_forNext;
default: break yy_forAction;
}
@@ -1140,310 +1157,278 @@
case 100:
switch (yy_input) {
- case 9: yy_state = 107; break yy_forNext;
- case 18: yy_isFinal = true; yy_state = 108; break yy_forNext;
- default: break yy_forAction;
- }
-
- case 101:
- switch (yy_input) {
- case 14: yy_state = 102; break yy_forNext;
+ case 9: yy_state = 113; break yy_forNext;
+ case 27: yy_state = 114; break yy_forNext;
default: break yy_forAction;
}
case 102:
switch (yy_input) {
- case 9: yy_state = 109; break yy_forNext;
- case 15: yy_state = 110; break yy_forNext;
- default: break yy_forAction;
- }
-
- case 103:
- switch (yy_input) {
- case 21: yy_state = 104; break yy_forNext;
+ case 6:
+ case 7:
+ case 8: yy_state = 72; break yy_forNext;
default: break yy_forAction;
}
case 104:
switch (yy_input) {
- case 9: yy_state = 111; break yy_forNext;
- case 22: yy_state = 112; break yy_forNext;
+ case 6:
+ case 7:
+ case 8: yy_isFinal = true; yy_pushback = true; yy_state = 85; break yy_forNext;
+ case 9: yy_state = 86; break yy_forNext;
default: break yy_forAction;
}
case 105:
switch (yy_input) {
- case 27: yy_state = 106; break yy_forNext;
+ case 17: yy_state = 106; break yy_forNext;
default: break yy_forAction;
}
case 106:
switch (yy_input) {
- case 9: yy_state = 113; break yy_forNext;
- case 28: yy_state = 114; break yy_forNext;
+ case 9: yy_state = 115; break yy_forNext;
+ case 18: yy_isFinal = true; yy_state = 116; break yy_forNext;
default: break yy_forAction;
}
case 107:
switch (yy_input) {
- case 18: yy_isFinal = true; yy_state = 108; break yy_forNext;
+ case 14: yy_state = 108; break yy_forNext;
default: break yy_forAction;
}
case 108:
switch (yy_input) {
- case 9: yy_isFinal = true; yy_noLookAhead = true; yy_state = 115; break yy_forNext;
+ case 9: yy_state = 117; break yy_forNext;
+ case 15: yy_state = 118; break yy_forNext;
default: break yy_forAction;
}
case 109:
switch (yy_input) {
- case 15: yy_state = 110; break yy_forNext;
+ case 21: yy_state = 110; break yy_forNext;
default: break yy_forAction;
}
case 110:
switch (yy_input) {
- case 6:
- case 7:
- case 8: yy_isFinal = true; yy_state = 116; break yy_forNext;
- case 9: yy_state = 117; break yy_forNext;
+ case 9: yy_state = 119; break yy_forNext;
+ case 22: yy_state = 120; break yy_forNext;
default: break yy_forAction;
}
case 111:
switch (yy_input) {
- case 22: yy_state = 112; break yy_forNext;
+ case 34: yy_state = 112; break yy_forNext;
default: break yy_forAction;
}
case 112:
switch (yy_input) {
- case 9: yy_state = 118; break yy_forNext;
- case 23: yy_state = 119; break yy_forNext;
+ case 9: yy_state = 121; break yy_forNext;
+ case 35: yy_state = 122; break yy_forNext;
default: break yy_forAction;
}
case 113:
switch (yy_input) {
- case 28: yy_state = 114; break yy_forNext;
+ case 27: yy_state = 114; break yy_forNext;
default: break yy_forAction;
}
case 114:
switch (yy_input) {
- case 9: yy_state = 120; break yy_forNext;
- case 16: yy_state = 121; break yy_forNext;
+ case 9: yy_state = 123; break yy_forNext;
+ case 28: yy_state = 124; break yy_forNext;
+ default: break yy_forAction;
+ }
+
+ case 115:
+ switch (yy_input) {
+ case 18: yy_isFinal = true; yy_state = 116; break yy_forNext;
default: break yy_forAction;
}
case 116:
switch (yy_input) {
- case 6:
- case 7:
- case 8: yy_isFinal = true; yy_state = 116; break yy_forNext;
- case 9: yy_isFinal = true; yy_state = 122; break yy_forNext;
+ case 9: yy_isFinal = true; yy_noLookAhead = true; yy_state = 125; break yy_forNext;
default: break yy_forAction;
}
case 117:
switch (yy_input) {
- case 6:
- case 7:
- case 8: yy_isFinal = true; yy_state = 116; break yy_forNext;
- case 9: yy_state = 123; break yy_forNext;
+ case 15: yy_state = 118; break yy_forNext;
default: break yy_forAction;
}
case 118:
switch (yy_input) {
- case 23: yy_state = 119; break yy_forNext;
+ case 6:
+ case 7:
+ case 8: yy_isFinal = true; yy_state = 126; break yy_forNext;
+ case 9: yy_state = 127; break yy_forNext;
default: break yy_forAction;
}
case 119:
switch (yy_input) {
- case 9: yy_state = 124; break yy_forNext;
- case 19: yy_state = 125; break yy_forNext;
+ case 22: yy_state = 120; break yy_forNext;
default: break yy_forAction;
}
case 120:
switch (yy_input) {
- case 16: yy_state = 121; break yy_forNext;
+ case 9: yy_state = 128; break yy_forNext;
+ case 23: yy_state = 129; break yy_forNext;
default: break yy_forAction;
}
case 121:
switch (yy_input) {
- case 9: yy_state = 126; break yy_forNext;
- case 29: yy_state = 127; break yy_forNext;
+ case 35: yy_state = 122; break yy_forNext;
default: break yy_forAction;
}
case 122:
switch (yy_input) {
- case 6:
- case 7:
- case 8: yy_isFinal = true; yy_state = 116; break yy_forNext;
- case 9: yy_state = 123; break yy_forNext;
+ case 9: yy_state = 130; break yy_forNext;
+ case 16: yy_state = 131; break yy_forNext;
default: break yy_forAction;
}
case 123:
switch (yy_input) {
- case 6:
- case 7:
- case 8: yy_isFinal = true; yy_state = 116; break yy_forNext;
+ case 28: yy_state = 124; break yy_forNext;
default: break yy_forAction;
}
case 124:
switch (yy_input) {
- case 19: yy_state = 125; break yy_forNext;
- default: break yy_forAction;
- }
-
- case 125:
- switch (yy_input) {
- case 9: yy_state = 128; break yy_forNext;
- case 24: yy_state = 129; break yy_forNext;
+ case 9: yy_state = 132; break yy_forNext;
+ case 16: yy_state = 133; break yy_forNext;
default: break yy_forAction;
}
case 126:
switch (yy_input) {
- case 29: yy_state = 127; break yy_forNext;
+ case 6:
+ case 7:
+ case 8: yy_isFinal = true; yy_state = 126; break yy_forNext;
+ case 9: yy_isFinal = true; yy_state = 134; break yy_forNext;
default: break yy_forAction;
}
case 127:
switch (yy_input) {
- case 9: yy_state = 130; break yy_forNext;
- case 30: yy_state = 131; break yy_forNext;
+ case 6:
+ case 7:
+ case 8: yy_isFinal = true; yy_state = 126; break yy_forNext;
+ case 9: yy_state = 135; break yy_forNext;
default: break yy_forAction;
}
case 128:
switch (yy_input) {
- case 24: yy_state = 129; break yy_forNext;
+ case 23: yy_state = 129; break yy_forNext;
default: break yy_forAction;
}
case 129:
switch (yy_input) {
- case 6:
- case 7:
- case 8: yy_state = 129; break yy_forNext;
- case 9: yy_state = 132; break yy_forNext;
- case 10: yy_isFinal = true; yy_state = 133; break yy_forNext;
+ case 9: yy_state = 136; break yy_forNext;
+ case 19: yy_state = 137; break yy_forNext;
default: break yy_forAction;
}
case 130:
switch (yy_input) {
- case 30: yy_state = 131; break yy_forNext;
+ case 16: yy_state = 131; break yy_forNext;
default: break yy_forAction;
}
case 131:
switch (yy_input) {
- case 9: yy_state = 134; break yy_forNext;
- case 23: yy_state = 135; break yy_forNext;
+ case 9: yy_state = 138; break yy_forNext;
+ case 17: yy_state = 139; break yy_forNext;
default: break yy_forAction;
}
case 132:
switch (yy_input) {
- case 6:
- case 7:
- case 8: yy_state = 129; break yy_forNext;
- case 10: yy_isFinal = true; yy_state = 133; break yy_forNext;
- case 9: yy_state = 136; break yy_forNext;
+ case 16: yy_state = 133; break yy_forNext;
default: break yy_forAction;
}
case 133:
switch (yy_input) {
- case 6:
- case 7:
- case 8: yy_isFinal = true; yy_state = 137; break yy_forNext;
- case 9: yy_state = 138; break yy_forNext;
+ case 9: yy_state = 140; break yy_forNext;
+ case 29: yy_state = 141; break yy_forNext;
default: break yy_forAction;
}
case 134:
switch (yy_input) {
- case 23: yy_state = 135; break yy_forNext;
+ case 6:
+ case 7:
+ case 8: yy_isFinal = true; yy_state = 126; break yy_forNext;
+ case 9: yy_state = 135; break yy_forNext;
default: break yy_forAction;
}
case 135:
switch (yy_input) {
- case 9: yy_state = 139; break yy_forNext;
- case 31: yy_state = 140; break yy_forNext;
+ case 6:
+ case 7:
+ case 8: yy_isFinal = true; yy_state = 126; break yy_forNext;
default: break yy_forAction;
}
case 136:
switch (yy_input) {
- case 6:
- case 7:
- case 8: yy_state = 129; break yy_forNext;
+ case 19: yy_state = 137; break yy_forNext;
default: break yy_forAction;
}
case 137:
switch (yy_input) {
- case 9: yy_isFinal = true; yy_state = 133; break yy_forNext;
- case 6:
- case 7:
- case 8: yy_isFinal = true; yy_state = 137; break yy_forNext;
+ case 9: yy_state = 142; break yy_forNext;
+ case 24: yy_state = 143; break yy_forNext;
default: break yy_forAction;
}
case 138:
switch (yy_input) {
- case 6:
- case 7:
- case 8: yy_isFinal = true; yy_state = 137; break yy_forNext;
+ case 17: yy_state = 139; break yy_forNext;
default: break yy_forAction;
}
case 139:
switch (yy_input) {
- case 31: yy_state = 140; break yy_forNext;
+ case 6:
+ case 7:
+ case 8: yy_state = 139; break yy_forNext;
+ case 9: yy_state = 144; break yy_forNext;
+ case 10: yy_isFinal = true; yy_state = 145; break yy_forNext;
default: break yy_forAction;
}
case 140:
switch (yy_input) {
- case 6:
- case 7:
- case 8: yy_state = 140; break yy_forNext;
- case 9: yy_state = 141; break yy_forNext;
- case 10: yy_state = 142; break yy_forNext;
+ case 29: yy_state = 141; break yy_forNext;
default: break yy_forAction;
}
case 141:
switch (yy_input) {
- case 6:
- case 7:
- case 8: yy_state = 140; break yy_forNext;
- case 10: yy_state = 142; break yy_forNext;
- case 9: yy_state = 143; break yy_forNext;
+ case 9: yy_state = 146; break yy_forNext;
+ case 30: yy_state = 147; break yy_forNext;
default: break yy_forAction;
}
case 142:
switch (yy_input) {
- case 6:
- case 7:
- case 8: yy_state = 144; break yy_forNext;
- case 9: yy_state = 145; break yy_forNext;
- case 20: yy_state = 146; break yy_forNext;
- case 32: yy_state = 147; break yy_forNext;
+ case 24: yy_state = 143; break yy_forNext;
default: break yy_forAction;
}
@@ -1451,18 +1436,19 @@
switch (yy_input) {
case 6:
case 7:
- case 8: yy_state = 140; break yy_forNext;
+ case 8: yy_state = 143; break yy_forNext;
+ case 9: yy_state = 148; break yy_forNext;
+ case 10: yy_isFinal = true; yy_state = 149; break yy_forNext;
default: break yy_forAction;
}
case 144:
switch (yy_input) {
- case 9: yy_state = 142; break yy_forNext;
case 6:
case 7:
- case 8: yy_state = 144; break yy_forNext;
- case 20: yy_state = 146; break yy_forNext;
- case 32: yy_state = 147; break yy_forNext;
+ case 8: yy_state = 139; break yy_forNext;
+ case 10: yy_isFinal = true; yy_state = 145; break yy_forNext;
+ case 9: yy_state = 150; break yy_forNext;
default: break yy_forAction;
}
@@ -1470,326 +1456,343 @@
switch (yy_input) {
case 6:
case 7:
- case 8: yy_state = 144; break yy_forNext;
- case 20: yy_state = 146; break yy_forNext;
- case 32: yy_state = 147; break yy_forNext;
- case 9: yy_state = 148; break yy_forNext;
+ case 8: yy_isFinal = true; yy_state = 151; break yy_forNext;
+ case 9: yy_state = 152; break yy_forNext;
default: break yy_forAction;
}
case 146:
switch (yy_input) {
- case 9: yy_state = 149; break yy_forNext;
- case 21: yy_state = 150; break yy_forNext;
+ case 30: yy_state = 147; break yy_forNext;
default: break yy_forAction;
}
case 147:
switch (yy_input) {
- case 20: yy_state = 146; break yy_forNext;
- case 9: yy_state = 148; break yy_forNext;
+ case 9: yy_state = 153; break yy_forNext;
+ case 23: yy_state = 154; break yy_forNext;
default: break yy_forAction;
}
case 148:
switch (yy_input) {
- case 20: yy_state = 146; break yy_forNext;
- case 9: yy_state = 151; break yy_forNext;
+ case 6:
+ case 7:
+ case 8: yy_state = 143; break yy_forNext;
+ case 10: yy_isFinal = true; yy_state = 149; break yy_forNext;
+ case 9: yy_state = 155; break yy_forNext;
default: break yy_forAction;
}
case 149:
switch (yy_input) {
- case 21: yy_state = 150; break yy_forNext;
+ case 6:
+ case 7:
+ case 8: yy_isFinal = true; yy_state = 156; break yy_forNext;
+ case 9: yy_state = 157; break yy_forNext;
default: break yy_forAction;
}
case 150:
switch (yy_input) {
- case 9: yy_state = 152; break yy_forNext;
- case 19: yy_state = 153; break yy_forNext;
+ case 6:
+ case 7:
+ case 8: yy_state = 139; break yy_forNext;
default: break yy_forAction;
}
case 151:
switch (yy_input) {
- case 20: yy_state = 146; break yy_forNext;
+ case 9: yy_isFinal = true; yy_state = 145; break yy_forNext;
+ case 6:
+ case 7:
+ case 8: yy_isFinal = true; yy_state = 151; break yy_forNext;
default: break yy_forAction;
}
case 152:
switch (yy_input) {
- case 19: yy_state = 153; break yy_forNext;
+ case 6:
+ case 7:
+ case 8: yy_isFinal = true; yy_state = 151; break yy_forNext;
default: break yy_forAction;
}
case 153:
switch (yy_input) {
- case 9: yy_state = 154; break yy_forNext;
- case 17: yy_state = 155; break yy_forNext;
+ case 23: yy_state = 154; break yy_forNext;
default: break yy_forAction;
}
case 154:
switch (yy_input) {
- case 17: yy_state = 155; break yy_forNext;
+ case 9: yy_state = 158; break yy_forNext;
+ case 31: yy_state = 159; break yy_forNext;
default: break yy_forAction;
}
case 155:
switch (yy_input) {
- case 9: yy_state = 156; break yy_forNext;
- case 16: yy_state = 157; break yy_forNext;
+ case 6:
+ case 7:
+ case 8: yy_state = 143; break yy_forNext;
default: break yy_forAction;
}
case 156:
switch (yy_input) {
- case 16: yy_state = 157; break yy_forNext;
+ case 9: yy_isFinal = true; yy_state = 149; break yy_forNext;
+ case 6:
+ case 7:
+ case 8: yy_isFinal = true; yy_state = 156; break yy_forNext;
default: break yy_forAction;
}
case 157:
switch (yy_input) {
- case 9: yy_state = 158; break yy_forNext;
- case 19: yy_state = 159; break yy_forNext;
+ case 6:
+ case 7:
+ case 8: yy_isFinal = true; yy_state = 156; break yy_forNext;
default: break yy_forAction;
}
case 158:
switch (yy_input) {
- case 19: yy_state = 159; break yy_forNext;
+ case 31: yy_state = 159; break yy_forNext;
default: break yy_forAction;
}
case 159:
switch (yy_input) {
+ case 6:
+ case 7:
+ case 8: yy_state = 159; break yy_forNext;
case 9: yy_state = 160; break yy_forNext;
- case 17: yy_state = 161; break yy_forNext;
+ case 10: yy_state = 161; break yy_forNext;
default: break yy_forAction;
}
case 160:
switch (yy_input) {
- case 17: yy_state = 161; break yy_forNext;
+ case 6:
+ case 7:
+ case 8: yy_state = 159; break yy_forNext;
+ case 10: yy_state = 161; break yy_forNext;
+ case 9: yy_state = 162; break yy_forNext;
default: break yy_forAction;
}
case 161:
switch (yy_input) {
- case 9: yy_state = 162; break yy_forNext;
- case 28: yy_state = 163; break yy_forNext;
+ case 6:
+ case 7:
+ case 8: yy_state = 163; break yy_forNext;
+ case 9: yy_state = 164; break yy_forNext;
+ case 20: yy_state = 165; break yy_forNext;
+ case 32: yy_state = 166; break yy_forNext;
default: break yy_forAction;
}
case 162:
switch (yy_input) {
- case 28: yy_state = 163; break yy_forNext;
+ case 6:
+ case 7:
+ case 8: yy_state = 159; break yy_forNext;
default: break yy_forAction;
}
case 163:
switch (yy_input) {
- case 9: yy_state = 164; break yy_forNext;
- case 17: yy_state = 165; break yy_forNext;
+ case 9: yy_state = 161; break yy_forNext;
+ case 6:
+ case 7:
+ case 8: yy_state = 163; break yy_forNext;
+ case 20: yy_state = 165; break yy_forNext;
+ case 32: yy_state = 166; break yy_forNext;
default: break yy_forAction;
}
case 164:
switch (yy_input) {
- case 17: yy_state = 165; break yy_forNext;
+ case 6:
+ case 7:
+ case 8: yy_state = 163; break yy_forNext;
+ case 20: yy_state = 165; break yy_forNext;
+ case 32: yy_state = 166; break yy_forNext;
+ case 9: yy_state = 167; break yy_forNext;
default: break yy_forAction;
}
case 165:
switch (yy_input) {
- case 9: yy_state = 166; break yy_forNext;
- case 33: yy_state = 167; break yy_forNext;
+ case 9: yy_state = 168; break yy_forNext;
+ case 21: yy_state = 169; break yy_forNext;
default: break yy_forAction;
}
case 166:
switch (yy_input) {
- case 33: yy_state = 167; break yy_forNext;
+ case 20: yy_state = 165; break yy_forNext;
+ case 9: yy_state = 167; break yy_forNext;
default: break yy_forAction;
}
case 167:
switch (yy_input) {
- case 9: yy_state = 168; break yy_forNext;
- case 27: yy_state = 169; break yy_forNext;
+ case 20: yy_state = 165; break yy_forNext;
+ case 9: yy_state = 170; break yy_forNext;
default: break yy_forAction;
}
case 168:
switch (yy_input) {
- case 27: yy_state = 169; break yy_forNext;
+ case 21: yy_state = 169; break yy_forNext;
default: break yy_forAction;
}
case 169:
switch (yy_input) {
- case 9: yy_state = 170; break yy_forNext;
- case 16: yy_state = 171; break yy_forNext;
+ case 9: yy_state = 171; break yy_forNext;
+ case 19: yy_state = 172; break yy_forNext;
default: break yy_forAction;
}
case 170:
switch (yy_input) {
- case 16: yy_state = 171; break yy_forNext;
+ case 20: yy_state = 165; break yy_forNext;
default: break yy_forAction;
}
case 171:
switch (yy_input) {
- case 6:
- case 7:
- case 8: yy_state = 172; break yy_forNext;
- case 9: yy_state = 173; break yy_forNext;
- case 32: yy_state = 174; break yy_forNext;
+ case 19: yy_state = 172; break yy_forNext;
default: break yy_forAction;
}
case 172:
switch (yy_input) {
- case 6:
- case 7:
- case 8: yy_state = 172; break yy_forNext;
- case 9: yy_state = 175; break yy_forNext;
- case 20: yy_state = 176; break yy_forNext;
+ case 9: yy_state = 173; break yy_forNext;
+ case 17: yy_state = 174; break yy_forNext;
default: break yy_forAction;
}
case 173:
switch (yy_input) {
- case 6:
- case 7:
- case 8: yy_state = 172; break yy_forNext;
- case 32: yy_state = 174; break yy_forNext;
- case 9: yy_state = 177; break yy_forNext;
+ case 17: yy_state = 174; break yy_forNext;
default: break yy_forAction;
}
case 174:
switch (yy_input) {
- case 6:
- case 7:
- case 8: yy_state = 172; break yy_forNext;
- case 9: yy_state = 177; break yy_forNext;
+ case 9: yy_state = 175; break yy_forNext;
+ case 16: yy_state = 176; break yy_forNext;
default: break yy_forAction;
}
case 175:
switch (yy_input) {
- case 6:
- case 7:
- case 8: yy_state = 172; break yy_forNext;
- case 20: yy_state = 176; break yy_forNext;
- case 9: yy_state = 178; break yy_forNext;
+ case 16: yy_state = 176; break yy_forNext;
default: break yy_forAction;
}
case 176:
switch (yy_input) {
- case 9: yy_state = 179; break yy_forNext;
- case 21: yy_state = 180; break yy_forNext;
+ case 9: yy_state = 177; break yy_forNext;
+ case 19: yy_state = 178; break yy_forNext;
default: break yy_forAction;
}
case 177:
switch (yy_input) {
- case 6:
- case 7:
- case 8: yy_state = 172; break yy_forNext;
- case 9: yy_state = 181; break yy_forNext;
+ case 19: yy_state = 178; break yy_forNext;
default: break yy_forAction;
}
case 178:
switch (yy_input) {
- case 6:
- case 7:
- case 8: yy_state = 172; break yy_forNext;
- case 20: yy_state = 176; break yy_forNext;
+ case 9: yy_state = 179; break yy_forNext;
+ case 17: yy_state = 180; break yy_forNext;
default: break yy_forAction;
}
case 179:
switch (yy_input) {
- case 21: yy_state = 180; break yy_forNext;
+ case 17: yy_state = 180; break yy_forNext;
default: break yy_forAction;
}
case 180:
switch (yy_input) {
- case 9: yy_state = 182; break yy_forNext;
- case 19: yy_state = 183; break yy_forNext;
+ case 9: yy_state = 181; break yy_forNext;
+ case 28: yy_state = 182; break yy_forNext;
default: break yy_forAction;
}
case 181:
switch (yy_input) {
- case 6:
- case 7:
- case 8: yy_state = 172; break yy_forNext;
+ case 28: yy_state = 182; break yy_forNext;
default: break yy_forAction;
}
case 182:
switch (yy_input) {
- case 19: yy_state = 183; break yy_forNext;
+ case 9: yy_state = 183; break yy_forNext;
+ case 17: yy_state = 184; break yy_forNext;
default: break yy_forAction;
}
case 183:
switch (yy_input) {
- case 9: yy_state = 184; break yy_forNext;
- case 17: yy_state = 185; break yy_forNext;
+ case 17: yy_state = 184; break yy_forNext;
default: break yy_forAction;
}
case 184:
switch (yy_input) {
- case 17: yy_state = 185; break yy_forNext;
+ case 9: yy_state = 185; break yy_forNext;
+ case 33: yy_state = 186; break yy_forNext;
default: break yy_forAction;
}
case 185:
switch (yy_input) {
- case 9: yy_state = 186; break yy_forNext;
- case 16: yy_state = 187; break yy_forNext;
+ case 33: yy_state = 186; break yy_forNext;
default: break yy_forAction;
}
case 186:
switch (yy_input) {
- case 16: yy_state = 187; break yy_forNext;
+ case 9: yy_state = 187; break yy_forNext;
+ case 27: yy_state = 188; break yy_forNext;
default: break yy_forAction;
}
case 187:
switch (yy_input) {
- case 9: yy_state = 188; break yy_forNext;
- case 19: yy_state = 189; break yy_forNext;
+ case 27: yy_state = 188; break yy_forNext;
default: break yy_forAction;
}
case 188:
switch (yy_input) {
- case 19: yy_state = 189; break yy_forNext;
+ case 9: yy_state = 189; break yy_forNext;
+ case 16: yy_state = 190; break yy_forNext;
default: break yy_forAction;
}
case 189:
switch (yy_input) {
- case 9: yy_state = 190; break yy_forNext;
- case 17: yy_state = 191; break yy_forNext;
+ case 16: yy_state = 190; break yy_forNext;
default: break yy_forAction;
}
case 190:
switch (yy_input) {
- case 17: yy_state = 191; break yy_forNext;
+ case 6:
+ case 7:
+ case 8: yy_state = 191; break yy_forNext;
+ case 9: yy_state = 192; break yy_forNext;
+ case 32: yy_state = 193; break yy_forNext;
default: break yy_forAction;
}
@@ -1798,8 +1801,8 @@
case 6:
case 7:
case 8: yy_state = 191; break yy_forNext;
- case 9: yy_state = 192; break yy_forNext;
- case 10: yy_isFinal = true; yy_state = 193; break yy_forNext;
+ case 9: yy_state = 194; break yy_forNext;
+ case 20: yy_state = 195; break yy_forNext;
default: break yy_forAction;
}
@@ -1808,8 +1811,8 @@
case 6:
case 7:
case 8: yy_state = 191; break yy_forNext;
- case 10: yy_isFinal = true; yy_state = 193; break yy_forNext;
- case 9: yy_state = 194; break yy_forNext;
+ case 32: yy_state = 193; break yy_forNext;
+ case 9: yy_state = 196; break yy_forNext;
default: break yy_forAction;
}
@@ -1817,7 +1820,7 @@
switch (yy_input) {
case 6:
case 7:
- case 8: yy_isFinal = true; yy_state = 195; break yy_forNext;
+ case 8: yy_state = 191; break yy_forNext;
case 9: yy_state = 196; break yy_forNext;
default: break yy_forAction;
}
@@ -1827,15 +1830,15 @@
case 6:
case 7:
case 8: yy_state = 191; break yy_forNext;
+ case 20: yy_state = 195; break yy_forNext;
+ case 9: yy_state = 197; break yy_forNext;
default: break yy_forAction;
}
case 195:
switch (yy_input) {
- case 9: yy_isFinal = true; yy_state = 193; break yy_forNext;
- case 6:
- case 7:
- case 8: yy_isFinal = true; yy_state = 195; break yy_forNext;
+ case 9: yy_state = 198; break yy_forNext;
+ case 21: yy_state = 199; break yy_forNext;
default: break yy_forAction;
}
@@ -1843,7 +1846,150 @@
switch (yy_input) {
case 6:
case 7:
- case 8: yy_isFinal = true; yy_state = 195; break yy_forNext;
+ case 8: yy_state = 191; break yy_forNext;
+ case 9: yy_state = 200; break yy_forNext;
+ default: break yy_forAction;
+ }
+
+ case 197:
+ switch (yy_input) {
+ case 6:
+ case 7:
+ case 8: yy_state = 191; break yy_forNext;
+ case 20: yy_state = 195; break yy_forNext;
+ default: break yy_forAction;
+ }
+
+ case 198:
+ switch (yy_input) {
+ case 21: yy_state = 199; break yy_forNext;
+ default: break yy_forAction;
+ }
+
+ case 199:
+ switch (yy_input) {
+ case 9: yy_state = 201; break yy_forNext;
+ case 19: yy_state = 202; break yy_forNext;
+ default: break yy_forAction;
+ }
+
+ case 200:
+ switch (yy_input) {
+ case 6:
+ case 7:
+ case 8: yy_state = 191; break yy_forNext;
+ default: break yy_forAction;
+ }
+
+ case 201:
+ switch (yy_input) {
+ case 19: yy_state = 202; break yy_forNext;
+ default: break yy_forAction;
+ }
+
+ case 202:
+ switch (yy_input) {
+ case 9: yy_state = 203; break yy_forNext;
+ case 17: yy_state = 204; break yy_forNext;
+ default: break yy_forAction;
+ }
+
+ case 203:
+ switch (yy_input) {
+ case 17: yy_state = 204; break yy_forNext;
+ default: break yy_forAction;
+ }
+
+ case 204:
+ switch (yy_input) {
+ case 9: yy_state = 205; break yy_forNext;
+ case 16: yy_state = 206; break yy_forNext;
+ default: break yy_forAction;
+ }
+
+ case 205:
+ switch (yy_input) {
+ case 16: yy_state = 206; break yy_forNext;
+ default: break yy_forAction;
+ }
+
+ case 206:
+ switch (yy_input) {
+ case 9: yy_state = 207; break yy_forNext;
+ case 19: yy_state = 208; break yy_forNext;
+ default: break yy_forAction;
+ }
+
+ case 207:
+ switch (yy_input) {
+ case 19: yy_state = 208; break yy_forNext;
+ default: break yy_forAction;
+ }
+
+ case 208:
+ switch (yy_input) {
+ case 9: yy_state = 209; break yy_forNext;
+ case 17: yy_state = 210; break yy_forNext;
+ default: break yy_forAction;
+ }
+
+ case 209:
+ switch (yy_input) {
+ case 17: yy_state = 210; break yy_forNext;
+ default: break yy_forAction;
+ }
+
+ case 210:
+ switch (yy_input) {
+ case 6:
+ case 7:
+ case 8: yy_state = 210; break yy_forNext;
+ case 9: yy_state = 211; break yy_forNext;
+ case 10: yy_isFinal = true; yy_state = 212; break yy_forNext;
+ default: break yy_forAction;
+ }
+
+ case 211:
+ switch (yy_input) {
+ case 6:
+ case 7:
+ case 8: yy_state = 210; break yy_forNext;
+ case 10: yy_isFinal = true; yy_state = 212; break yy_forNext;
+ case 9: yy_state = 213; break yy_forNext;
+ default: break yy_forAction;
+ }
+
+ case 212:
+ switch (yy_input) {
+ case 6:
+ case 7:
+ case 8: yy_isFinal = true; yy_state = 214; break yy_forNext;
+ case 9: yy_state = 215; break yy_forNext;
+ default: break yy_forAction;
+ }
+
+ case 213:
+ switch (yy_input) {
+ case 6:
+ case 7:
+ case 8: yy_state = 210; break yy_forNext;
+ default: break yy_forAction;
+ }
+
+ case 214:
+ switch (yy_input) {
+ case 9: yy_isFinal = true; yy_state = 212; break yy_forNext;
+ case 6:
+ case 7:
+ case 8: yy_isFinal = true; yy_state = 214; break yy_forNext;
+ default: break yy_forAction;
+ }
+
+ case 215:
+ switch (yy_input) {
+ case 6:
+ case 7:
+ case 8: yy_isFinal = true; yy_state = 214; break yy_forNext;
default: break yy_forAction;
}
@@ -1867,37 +2013,37 @@
switch (yy_action) {
- case 32:
- case 72:
+ case 33:
+ case 76:
{ yypushback(yylength());popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue; }
- case 198: break;
- case 25:
+ case 217: break;
case 26:
- case 28:
- case 69:
- case 96:
+ case 27:
+ case 29:
+ case 73:
+ case 102:
{ yypushback(1); yybegin(UnDelimitedString); string.setLength(0); }
- case 199: break;
- case 22:
- case 63:
- { yybegin(YYINITIAL); if (foundContentTypeValue) hasMore = false; return HTMLHeadTokenizerConstants.MetaTagEnd; }
- case 200: break;
- case 40:
- case 80:
- { yypushback(yylength());popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTermintatedUnDelimitedStringValue; }
- case 201: break;
+ case 218: break;
+ case 23:
case 67:
- case 95:
+ { yybegin(YYINITIAL); if (foundContentTypeValue) hasMore = false; return HTMLHeadTokenizerConstants.MetaTagEnd; }
+ case 219: break;
+ case 41:
+ case 84:
+ { yypushback(yylength());popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTermintatedUnDelimitedStringValue; }
+ case 220: break;
+ case 71:
+ case 101:
{ yybegin(YYINITIAL); if (foundContentTypeValue) hasMore = false; return HTMLHeadTokenizerConstants.MetaTagEnd; }
- case 202: break;
- case 75:
- case 97:
+ case 221: break;
+ case 79:
+ case 103:
{ yypushback(yylength()); popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue; }
- case 203: break;
- case 116:
- case 122:
+ case 222: break;
+ case 126:
+ case 134:
{ if (yychar == 0 ) {yybegin(ST_XMLDecl); return XMLHeadTokenizerConstants.XMLDeclStart;} }
- case 204: break;
+ case 223: break;
case 9:
case 10:
case 11:
@@ -1911,68 +2057,73 @@
case 19:
case 20:
case 21:
- case 23:
+ case 22:
case 24:
- case 27:
- case 33:
- case 36:
- case 39:
- { if(yychar > MAX_TO_SCAN) {hasMore=false; return EncodingParserConstants.MAX_CHARS_REACHED;} }
- case 205: break;
- case 108:
- case 115:
- { yybegin(ST_META_TAG); return HTMLHeadTokenizerConstants.MetaTagStart; }
- case 206: break;
- case 58:
- case 90:
- { yybegin(YYINITIAL); return XMLHeadTokenizerConstants.XMLDeclEnd; }
- case 207: break;
- case 193:
- case 195:
- { pushCurrentState(); yybegin(QuotedAttributeValue); foundContentTypeValue=true; return HTMLHeadTokenizerConstants.MetaTagContentType; }
- case 208: break;
- case 133:
- case 137:
- { pushCurrentState(); yybegin(QuotedAttributeValue); return XMLHeadTokenizerConstants.XMLDelEncoding; }
- case 209: break;
- case 83:
- { hasMore = false; return EncodingParserConstants.UTF83ByteBOM; }
- case 210: break;
- case 43:
- { hasMore = false; return EncodingParserConstants.UTF16BE; }
- case 211: break;
- case 44:
- { hasMore = false; return EncodingParserConstants.UTF16LE; }
- case 212: break;
- case 35:
- case 76:
- { popState(); valueText = string.toString(); return EncodingParserConstants.StringValue; }
- case 213: break;
- case 31:
+ case 25:
+ case 28:
case 34:
case 37:
- { string.append( yytext() ); }
- case 214: break;
- case 30:
- case 71:
- { yybegin(SQ_STRING); string.setLength(0); }
- case 215: break;
- case 29:
- case 70:
- { yybegin(DQ_STRING); string.setLength(0); }
- case 216: break;
+ case 40:
+ { if(yychar > MAX_TO_SCAN) {hasMore=false; return EncodingParserConstants.MAX_CHARS_REACHED;} }
+ case 224: break;
+ case 116:
+ case 125:
+ { yybegin(ST_META_TAG); return HTMLHeadTokenizerConstants.MetaTagStart; }
+ case 225: break;
+ case 59:
+ case 94:
+ { yybegin(YYINITIAL); return XMLHeadTokenizerConstants.XMLDeclEnd; }
+ case 226: break;
+ case 212:
+ case 214:
+ { pushCurrentState(); yybegin(QuotedAttributeValue); foundContentTypeValue=true; return HTMLHeadTokenizerConstants.MetaTagContentType; }
+ case 227: break;
+ case 149:
+ case 156:
+ { pushCurrentState(); yybegin(QuotedAttributeValue); return XMLHeadTokenizerConstants.XMLDelEncoding; }
+ case 228: break;
+ case 145:
+ case 151:
+ { pushCurrentState(); yybegin(QuotedAttributeValue); foundContentTypeValue=true; hasCharsetAttr=true; return HTMLHeadTokenizerConstants.MetaTagContentType; }
+ case 229: break;
+ case 87:
+ { hasMore = false; return EncodingParserConstants.UTF83ByteBOM; }
+ case 230: break;
+ case 44:
+ { hasMore = false; return EncodingParserConstants.UTF16BE; }
+ case 231: break;
+ case 45:
+ { hasMore = false; return EncodingParserConstants.UTF16LE; }
+ case 232: break;
+ case 36:
+ case 80:
+ { popState(); valueText = string.toString(); return EncodingParserConstants.StringValue; }
+ case 233: break;
+ case 32:
+ case 35:
case 38:
- case 79:
+ { string.append( yytext() ); }
+ case 234: break;
+ case 31:
+ case 75:
+ { yybegin(SQ_STRING); string.setLength(0); }
+ case 235: break;
+ case 30:
+ case 74:
+ { yybegin(DQ_STRING); string.setLength(0); }
+ case 236: break;
+ case 39:
+ case 83:
{ yypushback(yylength());popState(); valueText = string.toString(); return EncodingParserConstants.UnDelimitedStringValue; }
- case 217: break;
- case 41:
- case 81:
- case 98:
- { pushCurrentState(); yybegin(UnDelimitedCharset); string.append( yytext() ); }
- case 218: break;
+ case 237: break;
case 42:
+ case 85:
+ case 104:
+ { pushCurrentState(); yybegin(UnDelimitedCharset); string.append( yytext() ); }
+ case 238: break;
+ case 43:
{ yypushback(1); popState(); }
- case 219: break;
+ case 239: break;
default:
if (yy_input == YYEOF && yy_startRead == yy_currentPos) {
yy_atEOF = true;
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contenttype/HTMLResourceEncodingDetector.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contenttype/HTMLResourceEncodingDetector.java
index 0367e54..9754fa8 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contenttype/HTMLResourceEncodingDetector.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contenttype/HTMLResourceEncodingDetector.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -146,7 +146,15 @@
}
while (tokenizer.hasMoreTokens());
if (contentTypeValue != null) {
- parseContentTypeValue(contentTypeValue);
+ if (tokenizer.hasCharsetAttr()) {
+ contentTypeValue = contentTypeValue.trim();
+ if (contentTypeValue.length() > 0) {
+ createEncodingMemento(contentTypeValue, EncodingMemento.FOUND_ENCODING_IN_CONTENT);
+ }
+ }
+ else {
+ parseContentTypeValue(contentTypeValue);
+ }
}
}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/document/HTMLDocumentTypeAdapter.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/document/HTMLDocumentTypeAdapter.java
index 1f806e5..5ae259e 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/document/HTMLDocumentTypeAdapter.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/document/HTMLDocumentTypeAdapter.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -72,9 +72,11 @@
// find DOCTYPE delcaration and Public ID
String publicId = null;
+ String systemId = null;
DocumentType newDocumentType = findDocumentType(document);
if (newDocumentType != null) {
publicId = newDocumentType.getPublicId();
+ systemId = newDocumentType.getSystemId();
}
else {
// lookup default set by contentsettings
@@ -86,6 +88,9 @@
if (publicId != null) {
newEntry = HTMLDocumentTypeRegistry.getInstance().getEntry(publicId);
}
+ else if (systemId == null){
+ newEntry = HTMLDocumentTypeRegistry.getInstance().getDefaultEntry(HTMLDocumentTypeRegistry.DEFAULT_HTML5);
+ }
boolean newXMLType = (newEntry != null ? newEntry.isXMLType() : false);
boolean newWMLType = (newEntry != null ? newEntry.isWMLType() : false);
@@ -137,7 +142,7 @@
if (impl != null) {
String name = newEntry.getName();
publicId = newEntry.getPublicId();
- String systemId = newEntry.getSystemId();
+ systemId = newEntry.getSystemId();
newDocumentType = impl.createDocumentType(name, publicId, systemId);
}
}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/document/HTMLDocumentTypeRegistry.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/document/HTMLDocumentTypeRegistry.java
index a14be96..8f3ca14 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/document/HTMLDocumentTypeRegistry.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/document/HTMLDocumentTypeRegistry.java
@@ -39,11 +39,15 @@
private HTMLDocumentTypeEntry defaultXHTMLEntry = null;
private HTMLDocumentTypeEntry defaultWMLEntry = null;
private HTMLDocumentTypeEntry defaultCHTMLEntry = null;
+ private HTMLDocumentTypeEntry defaultHTML5Entry = null;
+ private HTMLDocumentTypeEntry defaultXHTML5Entry = null;
final static int DEFAULT_HTML = 0;
final static int DEFAULT_XHTML = 1;
final static int DEFAULT_WML = 2;
final static int DEFAULT_CHTML = 3;
+ final static int DEFAULT_HTML5 = 4;
+ final static int DEFAULT_XHTML5 = 5;
public static final String CHTML_PUBLIC_ID = "-//W3C//DTD Compact HTML 1.0 Draft//EN";//$NON-NLS-1$
@@ -75,6 +79,18 @@
this.defaultCHTMLEntry = new HTMLDocumentTypeEntry(name, publicId, null, null, false, false, displayName, false, false, false, true);
this.entries.put(publicId, this.defaultCHTMLEntry);
+ //HTML5
+ name = "HTML5";//$NON-NLS-1$
+ publicId = "";
+ displayName = "HTML5"; //$NON-NLS-1$
+ this.defaultHTML5Entry = new HTMLDocumentTypeEntry(name, publicId, null, null, false, false, displayName, false, false, false, true);
+ this.entries.put(publicId, this.defaultHTML5Entry);
+
+ displayName = "XHTML5"; //$NON-NLS-1$
+ this.defaultXHTML5Entry = new HTMLDocumentTypeEntry(name, publicId, null, null, true, false, displayName, true, false, false, true);
+ this.entries.put("xmlns", this.defaultXHTML5Entry);
+
+
HTMLDocumentTypeRegistryReader reader = new HTMLDocumentTypeRegistryReader();
if (reader != null)
reader.readRegistry(this);
@@ -102,6 +118,12 @@
public HTMLDocumentTypeEntry getDefaultEntry(int type) {
HTMLDocumentTypeEntry entry = null;
switch (type) {
+ case DEFAULT_HTML5 :
+ entry = this.defaultHTML5Entry;
+ break;
+ case DEFAULT_XHTML5 :
+ entry = this.defaultXHTML5Entry;
+ break;
case DEFAULT_XHTML :
entry = this.defaultXHTMLEntry;
break;
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/modelquery/HTMLModelQueryCMProvider.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/modelquery/HTMLModelQueryCMProvider.java
index 40e6d3d..80c1ce5 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/modelquery/HTMLModelQueryCMProvider.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/modelquery/HTMLModelQueryCMProvider.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -38,6 +38,7 @@
public class HTMLModelQueryCMProvider implements ModelQueryCMProvider {
+ private static CMDocument staticHTML5 = HTMLCMDocumentFactory.getCMDocument(CMDocType.HTML5_DOC_TYPE);
private static CMDocument staticHTML = HTMLCMDocumentFactory.getCMDocument(CMDocType.HTML_DOC_TYPE);
private static CMDocument staticCHTML = HTMLCMDocumentFactory.getCMDocument(CMDocType.CHTML_DOC_TYPE);
private static HTMLDocumentTypeRegistry doctypeRegistry = HTMLDocumentTypeRegistry.getInstance();
@@ -60,8 +61,10 @@
return null;
String pid = getPublicId(owner);
- if (pid == null)
- return staticHTML;
+ // no PID, always return the currently-supported HTML version
+ if (pid == null || "".equals(pid)){
+ return staticHTML5;
+ }
HTMLDocumentTypeEntry entry = doctypeRegistry.getEntry(pid);
if (entry == null)
@@ -112,6 +115,10 @@
if (doc == null)
return null;
DocumentType doctype = doc.getDoctype();
+ //doctype.
return (doctype != null) ? doctype.getPublicId() : doc.getDocumentTypeId();
}
+
+
+
}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/preferences/HTMLCorePreferenceInitializer.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/preferences/HTMLCorePreferenceInitializer.java
index 03fd749..e7b5e5b 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/preferences/HTMLCorePreferenceInitializer.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/preferences/HTMLCorePreferenceInitializer.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -80,6 +80,8 @@
node.putInt(HTMLCorePreferenceNames.ATTRIBUTE_VALUE_MISMATCH, ValidationMessage.ERROR);
node.putInt(HTMLCorePreferenceNames.ATTRIBUTE_VALUE_UNCLOSED, ValidationMessage.WARNING);
node.putInt(HTMLCorePreferenceNames.ATTRIBUTE_VALUE_RESOURCE_NOT_FOUND, ValidationMessage.IGNORE);
+ node.putInt(HTMLCorePreferenceNames.ATTRIBUTE_OBSOLETE_NAME, ValidationMessage.WARNING);
+
// Elements
node.putInt(HTMLCorePreferenceNames.ELEM_UNKNOWN_NAME, ValidationMessage.WARNING);
@@ -96,6 +98,8 @@
node.putInt(HTMLCorePreferenceNames.ELEM_UNCLOSED_START_TAG, ValidationMessage.ERROR);
node.putInt(HTMLCorePreferenceNames.ELEM_UNCLOSED_END_TAG, ValidationMessage.ERROR);
node.putInt(HTMLCorePreferenceNames.ELEM_INVALID_EMPTY_TAG, ValidationMessage.WARNING);
+ node.putInt(HTMLCorePreferenceNames.ELEM_OBSOLETE_NAME, ValidationMessage.WARNING);
+
// DOCTYPE
node.putInt(HTMLCorePreferenceNames.DOC_DUPLICATE, ValidationMessage.ERROR);
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/preferences/HTMLCorePreferenceNames.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/preferences/HTMLCorePreferenceNames.java
index 3e22bc8..5c501e3 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/preferences/HTMLCorePreferenceNames.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/preferences/HTMLCorePreferenceNames.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -241,6 +241,8 @@
public static final String ATTRIBUTE_VALUE_MISMATCH = "attrValueMismatch";//$NON-NLS-1$
public static final String ATTRIBUTE_VALUE_UNCLOSED = "attrValueUnclosed";//$NON-NLS-1$
public static final String ATTRIBUTE_VALUE_RESOURCE_NOT_FOUND = "resourceNotFound";//$NON-NLS-1$
+ public static final String ATTRIBUTE_OBSOLETE_NAME = "attrObsoleteName";//$NON-NLS-1$
+
public static final String ELEM_UNKNOWN_NAME = "elemUnknownName";//$NON-NLS-1$
public static final String ELEM_INVALID_NAME = "elemInvalidName";//$NON-NLS-1$
@@ -256,6 +258,7 @@
public static final String ELEM_UNCLOSED_START_TAG = "elemUnclosedStartTag";//$NON-NLS-1$
public static final String ELEM_UNCLOSED_END_TAG = "elemUnclosedEndTag";//$NON-NLS-1$
public static final String ELEM_INVALID_EMPTY_TAG = "elemInvalidEmptyTag";//$NON-NLS-1$
+ public static final String ELEM_OBSOLETE_NAME = "elemObsoleteName";//$NON-NLS-1$
public static final String DOC_DUPLICATE = "docDuplicateTag";//$NON-NLS-1$
public static final String DOC_INVALID_CONTENT = "docInvalidContent";//$NON-NLS-1$
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/provisional/HTML50Namespace.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/provisional/HTML50Namespace.java
new file mode 100644
index 0000000..fc8d5be
--- /dev/null
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/provisional/HTML50Namespace.java
@@ -0,0 +1,179 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.html.core.internal.provisional;
+
+public interface HTML50Namespace extends HTML40Namespace {
+
+ public static interface ElementName extends HTML40Namespace.ElementName {
+ String ARTICLE = "article"; //$NON-NLS-1$
+ String ASIDE = "aside"; //$NON-NLS-1$
+ String AUDIO = "audio";
+ String CANVAS = "canvas";
+ String COMMAND = "command";
+ String DATALIST = "datalist";
+ String DETAILS = "details";
+ String FIGURE = "figure"; //$NON-NLS-1$
+ String FIGCAPTION = "figcaption"; //$NON-NLS-1$
+ String FOOTER = "footer"; //$NON-NLS-1$
+ String HEADER = "header";
+ String HGROUP = "hgroup";
+ String KEYGEN = "keygen";
+ String MARK = "mark";
+ String MATH = "math";
+ String METER = "meter";
+ String NAV = "nav";
+ String OUTPUT = "output";
+ String PROGRESS = "progress";
+ String RP = "rp";
+ String RT = "rt";
+ String RUBY = "ruby";
+ String SECTION = "section"; //$NON-NLS-1$
+ String SOURCE = "source";
+ String SUMMARY = "summary";
+ String SVG = "svg";
+ String TIME = "time";
+ String VIDEO = "video";
+ }
+
+ String HTML50_URI = "http://www.w3.org/TR/html50/";
+ String HTML50_TAG_PREFIX = "";
+
+ // global attribute names
+ String ATTR_NAME_CONTENT_EDITABLE = "contenteditable"; // %coreattrs; //$NON-NLS-1$
+ String ATTR_NAME_CONTEXT_MENU = "contextmenu"; // %coreattrs; //$NON-NLS-1$
+ String ATTR_NAME_DRAGGABLE = "draggable"; // %coreattrs; //$NON-NLS-1$
+ String ATTR_NAME_ROLE = "role"; // %coreattrs; //$NON_NLS-1$
+ String ATTR_NAME_SPELLCHECK = "spellcheck"; // %coreattrs; //$NON-NLS-1$
+ String ATTR_NAME_ONABORT = "onabort"; // %event; //$NON-NLS-1$
+ String ATTR_NAME_ONCAN_PLAY = "oncanply"; // %event; //$NON-NLS-1$
+ String ATTR_NAME_ONCAN_PLAY_THROUGH = "oncanplaythrough"; // %event; //$NON-NLS-1$
+ String ATTR_NAME_ONCONTEXT_MENU = "oncontextmenu"; // %event; //$NON-NLS-1$
+ String ATTR_NAME_ONDRAG = "ondrag"; // %event; //$NON-NLS-1$
+ String ATTR_NAME_ONDRAG_END = "ondragend"; // %event; //$NON-NLS-1$
+ String ATTR_NAME_ONDRAG_OVER = "ondragover"; // %event; //$NON-NLS-1$
+ String ATTR_NAME_ONDRAG_ENTER = "ondragenter"; // %event; //$NON-NLS-1$
+ String ATTR_NAME_ONDRAG_LEAVE = "ondragleave"; // %event; //$NON-NLS-1$
+ String ATTR_NAME_ONDRAG_START = "ondragstart"; // %event; //$NON-NLS-1$
+ String ATTR_NAME_ONDROP = "ondrop"; // %event; //$NON-NLS-1$
+ String ATTR_NAME_ONDURATION_CHANGE = "ondurationchange"; // %event; //$NON-NLS-1$
+ String ATTR_NAME_ONEMPTIED = "onemptied"; // %event; //$NON-NLS-1$
+ String ATTR_NAME_ONENDED = "onended"; // %event; //$NON-NLS-1$
+ String ATTR_NAME_ONERROR = "onerror"; // %event; //$NON-NLS-1$
+ String ATTR_NAME_ONFORM_CHANGE = "onformchange"; // %event; //$NON-NLS-1$
+ String ATTR_NAME_ONFORM_INPUT = "onform_input"; // %event; //$NON-NLS-1$
+ String ATTR_NAME_ONINPUT = "oninput"; // %event; //$NON-NLS-1$
+ String ATTR_NAME_ONINVALID = "oninvalid"; // %event; //$NON-NLS-1$
+ String ATTR_NAME_ONLOADED_DATA = "onloadeddata"; // %event; //$NON-NLS-1$
+ String ATTR_NAME_ONLOADED_METADATA = "onloadedmetadeta"; // %event; //$NON-NLS-1$
+ String ATTR_NAME_ONLOAD_START = "onloadstart"; // %event; //$NON-NLS-1$
+ String ATTR_NAME_ONMOUSE_WHEEL = "onmousewheel"; // %event; //$NON-NLS-1$
+ String ATTR_NAME_ONPAUSE = "onpause"; // %event; //$NON-NLS-1$
+ String ATTR_NAME_ONPLAY = "onplay"; // %event; //$NON-NLS-1$
+ String ATTR_NAME_ONPLAYING = "onplaying"; // %event; //$NON-NLS-1$
+ String ATTR_NAME_ONPROGRESS = "onprogress"; // %event; //$NON-NLS-1$
+ String ATTR_NAME_ONRATE_CHANGE = "onratechange"; // %event; //$NON-NLS-1$
+ String ATTR_NAME_ONREADY_STATE_CHANGE = "onreadystatechange"; // %event; //$NON-NLS-1$
+ String ATTR_NAME_ONSCROLL = "onscroll"; // %event; //$NON-NLS-1$
+ String ATTR_NAME_ONSEEKED = "onseeked"; // %event; //$NON-NLS-1$
+ String ATTR_NAME_ONSEEKING = "onseeking"; // %event; //$NON-NLS-1$
+ String ATTR_NAME_ONSHOW = "onshow"; // %event; //$NON-NLS-1$
+ String ATTR_NAME_ONSTALLED = "onstalled"; // %event; //$NON-NLS-1$
+ String ATTR_NAME_ONSUSPEND = "onsuspend"; // %event; //$NON-NLS-1$
+ String ATTR_NAME_ONTIME_UPDATE = "ontimeupdate"; // %event; //$NON-NLS-1$
+ String ATTR_NAME_ONVOLUME_UPDATE = "onvolumeupdate"; // %event; //$NON-NLS-1$
+ String ATTR_NAME_ONWAITING = "onwaiting"; // %event; //$NON-NLS-1$
+
+ String ATTR_NAME_PING = "ping";
+ String ATTR_NAME_AUTOFOCUS = "autofocus";
+ String ATTR_NAME_CHALLENGE = "challenge";
+ String ATTR_NAME_FORM = "form";
+ String ATTR_NAME_KEYTYPE = "keytype";
+ String ATTR_NAME_REQUIRED = "required";
+ String ATTR_NAME_AUTOCOMPLETE = "autocomplete"; // input
+ String ATTR_NAME_MIN = "min"; // input
+ String ATTR_NAME_MAX = "max"; // input
+ String ATTR_NAME_PATTERN = "pattern"; // input
+ String ATTR_NAME_STEP = "step"; // input
+ String ATTR_NAME_NOVALIDATE = "novalidate"; // form
+ String ATTR_NAME_FORMACTION = "formaction"; // input|button
+ String ATTR_NAME_FORMENCTYPE = "formenctype"; // input|button
+ String ATTR_NAME_FORMMETHOD = "formmethod"; // input|button
+ String ATTR_NAME_FORMNOVALIDATE = "formnovalidate"; // input|button
+ String ATTR_NAME_FORMTARGET = "formtarget"; // input|button
+ String ATTR_NAME_SCOPED = "scoped"; // style
+ String ATTR_NAME_ASYNC = "async"; // script
+ String ATTR_NAME_MANIFEST = "manifest"; // html
+ String ATTR_NAME_SIZES = "sizes"; // link
+ String ATTR_NAME_REVERSED = "reversed"; // ol
+ String ATTR_NAME_SANDBOX = "sandbox"; // iframe
+ String ATTR_NAME_SEAMLESS = "seamless"; // iframe
+ String ATTR_NAME_SRCDOC = "srcdoc"; // iframe
+ String ATTR_NAME_PRELOAD = "preload"; // %mediaElement; //$NON-NLS-1$
+ String ATTR_NAME_AUTOPLAY = "autoplay"; // %mediaElement; //$NON-NLS-1$
+ String ATTR_NAME_LOOP = "loop"; // %mediaElement; //$NON-NLS-1$
+ String ATTR_NAME_CONTROLS = "controls"; // %mediaElement; //$NON-NLS-1$
+ String ATTR_NAME_POSTER = "poster"; // %video; //$NON-NLS-1$
+ String ATTR_NAME_OPEN = "open"; // details //$NON-NLS-1$
+ String ATTR_NAME_PUBDATE = "pubdate"; //time //$NON-NLS-1$
+ String ATTR_NAME_LOW = "low"; //meter //$NON-NLS-1$
+ String ATTR_NAME_HIGH = "high"; //meter //$NON-NLS-1$
+ String ATTR_NAME_OPTIMUM = "optimum"; //meter //$NON-NLS-1$
+ String ATTR_NAME_ICON = "icon"; //command //$NON-NLS-1$
+ String ATTR_NAME_RADIOGROUP = "radiogroup"; //command //$NON-NLS-1$
+ String ATTR_NAME_LIST = "list"; //input //$NON-NLS-1$
+ String ATTR_NAME_PLACEHOLDER = "placeholder"; //input //$NON-NLS-1$
+ String ATTR_NAME_WRAP = "wrap"; //textarea //$NON-NLS-1$
+ String ATTR_NAME_XMLNS = "xmlns"; //html //$NON-NLS-1$
+
+ // Global attributes properties
+
+ // for contenteditable (EMPTY|TRUE|FALSE|INHERIT)
+ String ATTR_VALUE_EMPTY = ""; // contenteditable //$NON-NLS-1$
+ String ATTR_VALUE_INHERIT = "inherit"; // contenteditable //$NON-NLS-1$
+
+ // for MediaElement (Audio/Video)
+ String ATTR_VALUE_METADATA = "metadata"; // mediaelement //$NON-NLS-1$
+
+ // for Command
+ String ATTR_VALUE_COMMAND = "command"; //command //$NON-NLS-1$
+
+ //Input type
+ String ATTR_VALUE_SEARCH = "search"; //input type //$NON-NLS-1$
+ String ATTR_VALUE_TEL = "tel"; //input type //$NON-NLS-1$
+ String ATTR_VALUE_URL = "url"; //input type //$NON-NLS-1$
+ String ATTR_VALUE_EMAIL = "email"; //input type //$NON-NLS-1$
+ String ATTR_VALUE_DATE = "date"; //input type //$NON-NLS-1$
+ String ATTR_VALUE_DATETIME = "datetime"; //input type //$NON-NLS-1$
+ String ATTR_VALUE_MONTH = "month"; //input type //$NON-NLS-1$
+ String ATTR_VALUE_WEEK = "week"; //input type //$NON-NLS-1$
+ String ATTR_VALUE_TIME = "time"; //input type //$NON-NLS-1$
+ String ATTR_VALUE_DATETIME_LOCAL = "datetime-local"; //input type //$NON-NLS-1$
+ String ATTR_VALUE_RANGE = "range"; //input type //$NON-NLS-1$
+ String ATTR_VALUE_COLOR = "color"; //input type //$NON-NLS-1$
+
+ String ATTR_VALUE_ON = "on"; //input autocomplete //$NON-NLS-1$
+ String ATTR_VALUE_OFF = "off"; //input autocomplete //$NON-NLS-1$
+
+ String ATTR_VALUE_PUT = "PUT"; //input formmethod //$NON-NLS-1$
+ String ATTR_VALUE_DELETE = "DELETE"; //input formmethod //$NON-NLS-1$
+
+ String ATTR_VALUE_FORM_DATA = "multipart/form-data"; //input formencType //$NON-NLS-1$
+ String ATTR_VALUE_PLAIN = "text/plain"; //input formencType //$NON-NLS-1$
+
+ String ATTR_VALUE_SOFT = "soft"; //textarea wrap //$NON-NLS-1$
+ String ATTR_VALUE_HARD = "hard"; //textarea wrap //$NON-NLS-1$
+
+
+ String ATTR_VALUE_CONTEXT = "context"; //menu type //$NON-NLS-1$
+ String ATTR_VALUE_TOOLBAR = "toolbar"; //menu type //$NON-NLS-1$
+ String ATTR_VALUE_LIST = "list"; //menu type //$NON-NLS-1$
+
+}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/provisional/HTMLCMProperties.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/provisional/HTMLCMProperties.java
index 1d7a753..8098721 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/provisional/HTMLCMProperties.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/provisional/HTMLCMProperties.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -78,6 +78,11 @@
* "isScriptable" returns java.lang.Boolean object.
*/
public static final String IS_SCRIPTABLE = "isScriptable"; //$NON-NLS-1$
+ /**
+ * "isObsolete" returns java.lang.Boolean object.
+ */
+ public static final String IS_OBSOLETE = "isObsolete";//$NON-NLS-1$
+
public static interface Values {
/*
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validate/CMUtil.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validate/CMUtil.java
index 1809abd..9633916 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validate/CMUtil.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validate/CMUtil.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -197,4 +197,16 @@
}
return false;
}
+
+ /**
+ * The method to distinguish HTML and XHTML from other mark up.
+ * This method returns true if the target is,
+ * (1) not JSP,
+ * (2) not SSI.
+ */
+ public static boolean isObsolete(CMNode decl) {
+ return decl.supports(HTMLCMProperties.IS_OBSOLETE) && ((Boolean)(decl.getProperty(HTMLCMProperties.IS_OBSOLETE))).booleanValue();
+ }
+
+
}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validate/ErrorState.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validate/ErrorState.java
index 03183ea..f64d50e 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validate/ErrorState.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validate/ErrorState.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -18,6 +18,9 @@
static final int UNDEFINED_NAME_ERROR = 11;
static final int UNDEFINED_VALUE_ERROR = 12;
static final int MISMATCHED_VALUE_ERROR = 13;
+ static final int OBSOLETE_ATTR_NAME_ERROR = 14;
+ static final int OBSOLETE_TAG_NAME_ERROR = 15;
+
// format error
static final int FORMAT_ERROR_LEVEL = 100;
static final int INVALID_NAME_ERROR = 101;
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validate/HTMLAttributeValidator.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validate/HTMLAttributeValidator.java
index f99c231..0551d74 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validate/HTMLAttributeValidator.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validate/HTMLAttributeValidator.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2009 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -44,6 +44,8 @@
private static final char SINGLE_QUOTE = '\'';
private static final char DOUBLE_QUOTE = '\"';
+ private static final String ATTR_NAME_DATA = "data-";
+
// D210422
/**
* HTMLAttributeValidator constructor comment.
@@ -122,6 +124,10 @@
continue; // skip futher validation and begin next loop.
}
+ String attrName = a.getName().toLowerCase(Locale.US);
+ if (attrName.startsWith(ATTR_NAME_DATA) && attrName.length() > ATTR_NAME_DATA.length())
+ continue;
+
CMAttributeDeclaration adec = (CMAttributeDeclaration) declarations.getNamedItem(a.getName());
/* Check the modelquery if nothing is declared by the element declaration */
@@ -129,7 +135,7 @@
if (modelQueryNodes == null)
modelQueryNodes = ModelQueryUtil.getModelQuery(target.getOwnerDocument()).getAvailableContent((Element) node, edec, ModelQuery.INCLUDE_ATTRIBUTES);
- String attrName = a.getName().toLowerCase(Locale.US);
+
for (int k = 0; k < modelQueryNodes.size(); k++) {
CMNode cmnode = (CMNode) modelQueryNodes.get(k);
if (cmnode.getNodeType() == CMNode.ATTRIBUTE_DECLARATION && cmnode.getNodeName().toLowerCase(Locale.US).equals(attrName)) {
@@ -151,6 +157,9 @@
} else {
// The attr declaration was found.
// At 1st, the name should be checked.
+ if (CMUtil.isObsolete(adec)){
+ state = ErrorState.OBSOLETE_ATTR_NAME_ERROR;
+ }
if (CMUtil.isHTML(edec) && (!CMUtil.isXHTML(edec))) {
// If the target element is pure HTML (not XHTML), some
// attributes
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validate/HTMLElementContentValidator.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validate/HTMLElementContentValidator.java
index cf5a512..a060daa 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validate/HTMLElementContentValidator.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validate/HTMLElementContentValidator.java
@@ -128,7 +128,11 @@
// type of the parent content model. -- 10/12/2001
if (ced == null || CMUtil.isSSI(ced) || (!CMUtil.isHTML(ced)))
return;
-
+ if (CMUtil.isObsolete(ced)){
+ error = ErrorState.OBSOLETE_TAG_NAME_ERROR;
+ break;
+ }
+
switch (contentType) {
case CMElementDeclaration.ANY :
// Keep going.
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validate/MessageFactory.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validate/MessageFactory.java
index 06771b7..d7ed235 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validate/MessageFactory.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validate/MessageFactory.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -94,6 +94,7 @@
mapToKey(HTMLCorePreferenceNames.ATTRIBUTE_VALUE_MISMATCH, attrTable, MISMATCHED_VALUE_ERROR, MSG_MISMATCHED_ATTR_VALUE_ERROR);
mapToKey(HTMLCorePreferenceNames.ATTRIBUTE_VALUE_UNCLOSED, attrTable, UNCLOSED_ATTR_VALUE, MSG_UNCLOSED_ATTR_VALUE_ERROR);
mapToKey(HTMLCorePreferenceNames.ATTRIBUTE_VALUE_RESOURCE_NOT_FOUND, attrTable, RESOURCE_NOT_FOUND, MSG_RESOURCE_NOT_FOUND);
+ mapToKey(HTMLCorePreferenceNames.ATTRIBUTE_OBSOLETE_NAME, attrTable, OBSOLETE_ATTR_NAME_ERROR, MSG_OBSOLETE_ATTR_ERROR);
// element error map
ErrorTable elemTable = errTables[NodeType.ELEMENT];// short hand
@@ -112,6 +113,8 @@
mapToKey(HTMLCorePreferenceNames.ELEM_UNCLOSED_START_TAG, elemTable, UNCLOSED_TAG_ERROR, MSG_UNCLOSED_START_TAG_ERROR);
mapToKey(HTMLCorePreferenceNames.ELEM_UNCLOSED_END_TAG, elemTable, UNCLOSED_END_TAG_ERROR, MSG_UNCLOSED_END_TAG_ERROR);
mapToKey(HTMLCorePreferenceNames.ELEM_INVALID_EMPTY_TAG, elemTable, INVALID_EMPTY_ELEMENT_TAG, MSG_INVALID_EMPTY_ELEMENT_TAG);
+ mapToKey(HTMLCorePreferenceNames.ELEM_OBSOLETE_NAME, elemTable, OBSOLETE_TAG_NAME_ERROR, MSG_OBSOLETE_TAG_ERROR);
+
// document type error map
ErrorTable docTable = errTables[NodeType.DOCUMENT_TYPE];// short hand
@@ -237,6 +240,8 @@
private static final String MSG_INVALID_EMPTY_ELEMENT_TAG = HTMLCoreMessages._ERROR_Tag___0___should_be_an_empty_element_tag_1;
private static final String MSG_UNCLOSED_ATTR_VALUE_ERROR = HTMLCoreMessages._ERROR_Attribute_value___0___not_closed__1;
private static final String MSG_RESOURCE_NOT_FOUND = HTMLCoreMessages._ERROR_Resource_not_found_0;
+ private static final String MSG_OBSOLETE_ATTR_ERROR = HTMLCoreMessages.Obsolete_attribute_name___ERROR_;
+ private static final String MSG_OBSOLETE_TAG_ERROR = HTMLCoreMessages.Obsolete_tag___ERROR_;
private ErrorTable[] errTables = new ErrorTable[NodeType.MAX_TYPE];
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validate/SyntaxValidator.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validate/SyntaxValidator.java
index 097d8a1..4dd8979 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validate/SyntaxValidator.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/validate/SyntaxValidator.java
@@ -16,6 +16,7 @@
import org.eclipse.wst.html.core.internal.contentmodel.HTMLPropertyDeclaration;
import org.eclipse.wst.html.core.internal.document.HTMLDocumentTypeEntry;
import org.eclipse.wst.html.core.internal.document.HTMLDocumentTypeRegistry;
+import org.eclipse.wst.html.core.internal.provisional.HTML50Namespace;
import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion;
import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion;
@@ -28,8 +29,10 @@
import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
import org.eclipse.wst.xml.core.internal.regions.DOMRegionContext;
+import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
class SyntaxValidator extends PrimeValidator implements ErrorState {
@@ -80,6 +83,7 @@
public boolean hasStartTag() {return startTag != null;}
public boolean hasEndTag() {return endTag != null;}
public boolean isXHTML = false;
+ public boolean isXHTML5 = false;
}
public void validate(IndexedRegion indexedNode) {
@@ -116,10 +120,40 @@
return;
String typeid = ((IDOMDocument) doc).getDocumentTypeId();
if (typeid != null) {
- HTMLDocumentTypeEntry entry = HTMLDocumentTypeRegistry.getInstance().getEntry(typeid);
- info.isXHTML = (entry != null && entry.isXMLType());
+ if (typeid.trim().length()!= 0){
+ HTMLDocumentTypeEntry entry = HTMLDocumentTypeRegistry.getInstance().getEntry(typeid);
+ info.isXHTML = (entry != null && entry.isXMLType());
+ }
+ else {
+ info.isXHTML = getXMLTarget(doc);
+ info.isXHTML5 = info.isXHTML;
+ }
}
}
+
+ private boolean getXMLTarget(Document doc) {
+ if (doc == null)
+ return false;
+ Node child = doc.getFirstChild();
+ while (child != null) {
+ if (child.getNodeType() == Node.ELEMENT_NODE) {
+ if (child.getNodeName().equalsIgnoreCase("html")){
+ if (child.getAttributes()!= null){
+ NamedNodeMap attrs = child.getAttributes();
+ for (int i = 0; i < attrs.getLength(); i++) {
+ Attr a = (Attr) attrs.item(i);
+ if (a.getName().equalsIgnoreCase(HTML50Namespace.ATTR_NAME_XMLNS))
+ return true;
+ }
+ }
+ return false;
+ }
+
+ }
+ child = child.getNextSibling();
+ }
+ return false;
+ }
class TagErrorInfoImpl extends AbstractErrorInfo {
private String hint = null;
@@ -287,24 +321,41 @@
if (declared == null)
return;
- // start tag
- if (info.hasStartTag()) {
- startTagName = getTagName(info.startTag);
- if (!declared.equals(startTagName)) {
- TagErrorInfoImpl error = new TagErrorInfoImpl(MISMATCHED_ERROR, info.startTag, startTagName);
- this.reporter.report(error);
+ if (info.isXHTML5){
+ if (info.hasStartTag()) {
+ startTagName = getTagName(info.startTag);
+ if (info.hasEndTag()) {
+ endTagName = getTagName(info.endTag);
+ if (!endTagName.equals(startTagName)){
+ TagErrorInfoImpl error = new TagErrorInfoImpl(MISMATCHED_ERROR, info.endTag, endTagName);
+ this.reporter.report(error);
+ }
+ }
}
+
}
- // end tag
- if (info.hasEndTag()) {
- endTagName = getTagName(info.endTag);
- if (!info.hasStartTag() || (!endTagName.equals(startTagName))) {
- if (!declared.equals(endTagName)) {
- TagErrorInfoImpl error = new TagErrorInfoImpl(MISMATCHED_ERROR, info.endTag, endTagName);
+ else
+ {
+ // start tag
+ if (info.hasStartTag()) {
+ startTagName = getTagName(info.startTag);
+ if (!declared.equals(startTagName)) {
+ TagErrorInfoImpl error = new TagErrorInfoImpl(MISMATCHED_ERROR, info.startTag, startTagName);
this.reporter.report(error);
}
}
+ // end tag
+ if (info.hasEndTag()) {
+ endTagName = getTagName(info.endTag);
+ if (!info.hasStartTag() || (!endTagName.equals(startTagName))) {
+ if (!declared.equals(endTagName)) {
+ TagErrorInfoImpl error = new TagErrorInfoImpl(MISMATCHED_ERROR, info.endTag, endTagName);
+ this.reporter.report(error);
+ }
+ }
+ }
}
+
}
private void validateChildren(Node target) {
diff --git a/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/contentassist/HTMLTagsCompletionProposalComputer.java b/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/contentassist/HTMLTagsCompletionProposalComputer.java
index e724296..fa7d007 100644
--- a/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/contentassist/HTMLTagsCompletionProposalComputer.java
+++ b/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/contentassist/HTMLTagsCompletionProposalComputer.java
@@ -155,6 +155,13 @@
Boolean isXHTML = ((Boolean)node.getProperty(HTMLCMProperties.IS_XHTML));
isValid = isXHTML != null && isXHTML.booleanValue();
}
+
+ // Do not propose obsolete tags, regardless
+ if (isValid && node.supports(HTMLCMProperties.IS_OBSOLETE)) {
+ Boolean isObsolete = ((Boolean) node.getProperty(HTMLCMProperties.IS_OBSOLETE));
+ isValid = !(isObsolete != null && isObsolete.booleanValue());
+ }
+
return isValid;
}
diff --git a/bundles/org.eclipse.wst.html.ui/templates/htmldefault-templates.properties b/bundles/org.eclipse.wst.html.ui/templates/htmldefault-templates.properties
index b9b792e..cfa1c62 100644
--- a/bundles/org.eclipse.wst.html.ui/templates/htmldefault-templates.properties
+++ b/bundles/org.eclipse.wst.html.ui/templates/htmldefault-templates.properties
@@ -1,5 +1,5 @@
###############################################################################
-# Copyright (c) 2004, 2006 IBM Corporation and others.
+# Copyright (c) 2004, 2010 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
@@ -48,4 +48,7 @@
Templates.style.desc=style (commented)
Templates.style.content=<style>\n<!--\n${cursor}\n-->\n</style>
Templates.imgmap.name=img
-Templates.imgmap.desc=img (map)
\ No newline at end of file
+Templates.imgmap.desc=img (map)
+Templates.html5.name=New HTML File (5)
+Templates.html5.desc=html 5
+Templates.html5.content=<!DOCTYPE html>\n<html>\n<head>\n<meta charset="${encoding}">\n<title>Insert title here</title>\n</head>\n<body>\n${cursor}\n</body>\n</html>
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.html.ui/templates/htmldefault-templates.xml b/bundles/org.eclipse.wst.html.ui/templates/htmldefault-templates.xml
index b11ffb8..c600c08 100644
--- a/bundles/org.eclipse.wst.html.ui/templates/htmldefault-templates.xml
+++ b/bundles/org.eclipse.wst.html.ui/templates/htmldefault-templates.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -43,4 +43,6 @@
<template name="%Templates.style.name" description="%Templates.style.desc" id="org.eclipse.wst.html.ui.templates.style" context="html_tag" enabled="true">%Templates.style.content</template>
+<template name="%Templates.html5.name" description="%Templates.html5.desc" id="org.eclipse.wst.html.ui.templates.html5" context="html_new" enabled="true">%Templates.html5.content</template>
+
</templates>
diff --git a/bundles/org.eclipse.wst.sse.core/DevTimeSupport/HeadParsers/HTMLHeadTokenizer/HTMLHeadTokenizer.jFlex b/bundles/org.eclipse.wst.sse.core/DevTimeSupport/HeadParsers/HTMLHeadTokenizer/HTMLHeadTokenizer.jFlex
index fce07bc..8a11a4e 100644
--- a/bundles/org.eclipse.wst.sse.core/DevTimeSupport/HeadParsers/HTMLHeadTokenizer/HTMLHeadTokenizer.jFlex
+++ b/bundles/org.eclipse.wst.sse.core/DevTimeSupport/HeadParsers/HTMLHeadTokenizer/HTMLHeadTokenizer.jFlex
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2009 IBM Corporation and others.
+ * Copyright (c) 2004, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -24,6 +24,7 @@
private boolean hasMore = true;
+ private boolean hasCharsetAttr = false;
private final static int MAX_TO_SCAN = 8000;
StringBuffer string = new StringBuffer();
// state stack for easier state handling
@@ -97,6 +98,7 @@
fStateStack.clear();
hasMore = true;
+ hasCharsetAttr = false;
// its a little wasteful to "throw away" first char array generated
// by class init (via auto generated code), but we really do want
@@ -137,6 +139,9 @@
fStateStack.push(yystate());
}
+ public final boolean hasCharsetAttr() {
+ return hasCharsetAttr;
+ }
private void popState() {
yybegin(fStateStack.pop());
@@ -219,6 +224,7 @@
// "http-equiv" {S}* \= {S}* \"? "Content-Type" \"? {S}+ "content" {BeginAttribeValue} {pushCurrentState(); yybegin(QuotedAttributeValue); foundContentTypeValue=true; return HTMLHeadTokenizerConstants.MetaTagContentType;}
{Z}h{Z}t{Z}t{Z}p{Z}-{Z}e{Z}q{Z}u{Z}i{Z}v{Z} {S_UTF}* \= {S_UTF}* {Z}\"?{Z} ({Z}C{Z}o{Z}n{Z}t{Z}e{Z}n{Z}t{Z}-{Z}T{Z}y{Z}p{Z}e{Z}) \"?{Z} ({S_UTF})+ ({Z}c{Z}o{Z}n{Z}t{Z}e{Z}n{Z}t{Z}) {BeginAttributeValueUTF} {pushCurrentState(); yybegin(QuotedAttributeValue); foundContentTypeValue=true; return HTMLHeadTokenizerConstants.MetaTagContentType;}
+ {Z}c{Z}h{Z}a{Z}r{Z}s{Z}e{Z}t{Z} {BeginAttributeValueUTF} {pushCurrentState(); yybegin(QuotedAttributeValue); foundContentTypeValue=true; hasCharsetAttr=true; return HTMLHeadTokenizerConstants.MetaTagContentType;}
{Z}>{Z} { yybegin(YYINITIAL); if (foundContentTypeValue) hasMore = false; return HTMLHeadTokenizerConstants.MetaTagEnd;}
{Z}\/{Z}>{Z} { yybegin(YYINITIAL); if (foundContentTypeValue) hasMore = false; return HTMLHeadTokenizerConstants.MetaTagEnd;}
}
diff --git a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/provisional/contentmodel/CMDocType.java b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/provisional/contentmodel/CMDocType.java
index 2497bf6..679cefd 100644
--- a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/provisional/contentmodel/CMDocType.java
+++ b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/provisional/contentmodel/CMDocType.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2001, 2009 IBM Corporation and others.
+ * Copyright (c) 2001, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -23,6 +23,10 @@
*/
public final static String HTML_DOC_TYPE = "HTML";//$NON-NLS-1$
/**
+ * HTML5 files
+ */
+ public final static String HTML5_DOC_TYPE = "HTML5";//$NON-NLS-1$
+ /**
* JSP 1.1 files (currently includes 1.2 elements for backward behavioral compatibility)
*/
public final static String JSP11_DOC_TYPE = "JSP11";//$NON-NLS-1$