[133650] [validation] Missing "=" in attribute values of HTML tags not being validated
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 e3736d8..b1a868a 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
@@ -54,6 +54,7 @@
 	public static String Obsolete_attribute_name___ERROR_;
 	public static String Obsolete_tag___ERROR_;
 	public static String Invalid_text_in_tag__ERROR_;
+	public static String Missing_attribute_value_equals_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 ab0f203..b6b3ebf 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
@@ -43,4 +43,5 @@
 HTMLContentPropertiesManager_Problems_Updating=Problem saving Web Content Settings for {0}
 _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
+Obsolete_tag___ERROR_=Element ({0}) is obsolete. Its use is discouraged in HTML5 documents.
+Missing_attribute_value_equals_ERROR_=Attribute name ({0}) must be followed by the ''='' character.
\ 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 03b3511..0186a71 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
@@ -83,6 +83,7 @@
 		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);
+		node.putInt(HTMLCorePreferenceNames.ATTRIBUTE_VALUE_EQUALS_MISSING, ValidationMessage.WARNING);
 		
 		
 		// Elements
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 c1178f3..fe7fb60 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
@@ -250,6 +250,7 @@
 	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 ATTRIBUTE_VALUE_EQUALS_MISSING = "attrValueEqualsMissing";//$NON-NLS-1$
 	
 	
 	public static final String ELEM_UNKNOWN_NAME = "elemUnknownName";//$NON-NLS-1$
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 5ebf14c..7be1deb 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
@@ -20,6 +20,7 @@
 	static final int MISMATCHED_VALUE_ERROR = 13;
 	static final int OBSOLETE_ATTR_NAME_ERROR = 14;
 	static final int OBSOLETE_TAG_NAME_ERROR = 15;
+	static final int MISSING_ATTR_VALUE_EQUALS_ERROR = 16;
 	
 	// format error
 	static final int FORMAT_ERROR_LEVEL = 100;
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 5d93f92..783e1e0 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
@@ -181,6 +181,13 @@
 				if (state == ErrorState.NONE_ERROR) { // Need more check.
 					// Now, the value should be checked, if the type is ENUM.
 					CMDataType attrType = adec.getAttrType();
+					if (a instanceof IDOMAttr) {
+						final ITextRegion region = ((IDOMAttr) a).getEqualRegion();
+						if (region == null) {
+							rgnType = REGION_NAME;
+							state = ErrorState.MISSING_ATTR_VALUE_EQUALS_ERROR;
+						}
+					}
 					String actualValue = a.getValue();
 					if (attrType.getImpliedValueKind() == CMDataType.IMPLIED_VALUE_FIXED) {
 						// Check FIXED value.
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 1614671..83eb689 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
@@ -95,6 +95,7 @@
 		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);
+		mapToKey(HTMLCorePreferenceNames.ATTRIBUTE_VALUE_EQUALS_MISSING, attrTable, MISSING_ATTR_VALUE_EQUALS_ERROR, MSG_MISSING_ATTR_VALUE_EQUALS_ERROR);
 
 		// element error map
 		ErrorTable elemTable = errTables[NodeType.ELEMENT];// short hand
@@ -244,6 +245,7 @@
 	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 static final String MSG_INVALID_TEXT_IN_ELEM_ERROR = HTMLCoreMessages.Invalid_text_in_tag__ERROR_;
+	private static final String MSG_MISSING_ATTR_VALUE_EQUALS_ERROR = HTMLCoreMessages.Missing_attribute_value_equals_ERROR_;
 
 	private ErrorTable[] errTables = new ErrorTable[NodeType.MAX_TYPE];
 
diff --git a/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/HTMLUIMessages.java b/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/HTMLUIMessages.java
index 22614c9..8c1b3e4 100644
--- a/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/HTMLUIMessages.java
+++ b/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/HTMLUIMessages.java
@@ -195,13 +195,14 @@
 	public static String HTMLValidationPreferencePage_33;
 	public static String HTMLValidationPreferencePage_34;
 	public static String HTMLValidationPreferencePage_35;
+	public static String HTMLValidationPreferencePage_36;
+	public static String HTMLValidationPreferencePage_37;
 	public static String HTMLValidationPreferencePage_4;
 	public static String HTMLValidationPreferencePage_5;
 	public static String HTMLValidationPreferencePage_6;
 	public static String HTMLValidationPreferencePage_7;
 	public static String HTMLValidationPreferencePage_8;
 	public static String HTMLValidationPreferencePage_9;
-	public static String HTMLValidationPreferencePage_36;
 	
 	// Validation
 	public static String Validation_Title;
diff --git a/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/HTMLUIPluginResources.properties b/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/HTMLUIPluginResources.properties
index f57c49b..13b58c4 100644
--- a/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/HTMLUIPluginResources.properties
+++ b/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/HTMLUIPluginResources.properties
@@ -177,6 +177,7 @@
 HTMLValidationPreferencePage_9=Invalid tag name:
 HTMLValidationPreferencePage_35=Attribute value refers to missing resource:
 HTMLValidationPreferencePage_36=Invalid location of text in tag:
+HTMLValidationPreferencePage_37=Missing attribute equals sign character:
 
 Validation_Title=Validation Settings Changed
 Validation_Workspace=The validation settings have changed. A full validation is required for changes to take effect. Validate now?
diff --git a/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/preferences/ui/HTMLValidationPreferencePage.java b/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/preferences/ui/HTMLValidationPreferencePage.java
index 966bffc..3c227f7 100644
--- a/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/preferences/ui/HTMLValidationPreferencePage.java
+++ b/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/preferences/ui/HTMLValidationPreferencePage.java
@@ -169,6 +169,9 @@
 		label = HTMLUIMessages.HTMLValidationPreferencePage_7;
 		addComboBox(inner, label, HTMLCorePreferenceNames.ATTRIBUTE_VALUE_UNCLOSED, SEVERITIES, errorWarningIgnoreLabel, 0);
 		
+		label = HTMLUIMessages.HTMLValidationPreferencePage_37;
+		addComboBox(inner, label, HTMLCorePreferenceNames.ATTRIBUTE_VALUE_EQUALS_MISSING, SEVERITIES, errorWarningIgnoreLabel, 0);
+		
 		label = HTMLUIMessages.HTMLValidationPreferencePage_35;
 		// TODO: validate resources?
 		// addComboBox(inner, label, HTMLCorePreferenceNames.ATTRIBUTE_VALUE_RESOURCE_NOT_FOUND, SEVERITIES, errorWarningIgnoreLabel, 0);