diff --git a/jsf/tests/org.eclipse.jst.jsf.facesconfig.tests/plugin.xml b/jsf/tests/org.eclipse.jst.jsf.facesconfig.tests/plugin.xml
index 071b965..4d8a631 100644
--- a/jsf/tests/org.eclipse.jst.jsf.facesconfig.tests/plugin.xml
+++ b/jsf/tests/org.eclipse.jst.jsf.facesconfig.tests/plugin.xml
@@ -1,11 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?eclipse version="3.0"?>
 <plugin>
-   <extension
-         point="org.eclipse.wst.common.tests.collector.suites">
-         <suite
-            class="org.eclipse.jst.jsf.facesconfig.tests.AllFacesConfigTests"
-            name="org.eclipse.jst.jsf.facesconfig.tests">
-         </suite>
-   </extension>
 </plugin>
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/META-INF/MANIFEST.MF b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/META-INF/MANIFEST.MF
index 9ba3265..735fbae 100644
--- a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/META-INF/MANIFEST.MF
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/META-INF/MANIFEST.MF
@@ -20,12 +20,13 @@
  org.eclipse.wst.html.core;bundle-version="[1.1.0,1.2.0)",
  org.eclipse.wst.xml.core;bundle-version="[1.1.0,1.2.0)",
  org.eclipse.jface.text;bundle-version="[3.2.0,4.0.0)",
- org.eclipse.jdt.core,
- org.eclipse.wst.common.project.facet.core,
- org.eclipse.jst.common.frameworks,
+ org.eclipse.jdt.core;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.wst.common.project.facet.core;bundle-version="[1.2.0,1.3.0)",
+ org.eclipse.jst.common.frameworks;bundle-version="[1.1.0,1.2.0)",
  org.eclipse.jst.jsf.core.tests,
  org.eclipse.wst.validation,
- org.eclipse.jst.pagedesigner.jsf.ui
+ org.eclipse.jst.pagedesigner.jsf.ui,
+ org.eclipse.ui.views.properties.tabbed;bundle-version="[3.2.0,4.0.0)"
 Eclipse-LazyStart: true
 Export-Package: com.foobar;x-internal:=true,
  org.eclipse.jst.jsf.common.metadata.tests;x-internal:=true,
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/plugin.xml b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/plugin.xml
index beb4a8c..49740c6 100644
--- a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/plugin.xml
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/plugin.xml
@@ -40,7 +40,18 @@
             location="/testfiles/metadata/traithelpertest.xml"
             locator="org.eclipse.jst.jsf.common.metadata.tests.MyMDLocator"
             uri="http://org.eclipse.jsf/traithelpertest"/>
+      <standardMetaDataFile
+            location="/testfiles/metadata/quickEditSectionTest.xml"
+            uri="http://org.eclipse.jsf/quickEditSectionTest"/>
+      <standardMetaDataFile
+            location="/testfiles/metadata/propertyDescriptorTest.xml"
+            uri="http://org.eclipse.jsf/propertyDescriptorTest"/>            
+            
    </extension>
+   	<extension point="org.eclipse.jst.pagedesigner.cmRegistry">
+		<registry configFile="/testfiles/metadata/sybasejsfhtml.xml"
+			uri="http://SybaseMD.test.jsfhtml" />
+	</extension>
    <extension
          point="org.eclipse.jst.jsf.core.AttributeValueRuntimeTypes">
       <attributeValueRuntimeType
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/AllTests.java b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/AllTests.java
index 9b5316b..63f6bb5 100644
--- a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/AllTests.java
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/AllTests.java
@@ -35,11 +35,19 @@
 import org.eclipse.jst.jsf.metadata.tests.metadataprocessing.AttributeValueRuntimeTypeFactoryTests;
 import org.eclipse.jst.jsf.metadata.tests.metadataprocessing.AttributeValueRuntimeTypesRegistryTests;
 import org.eclipse.jst.jsf.metadata.tests.metadataprocessing.MetaDataProcessorsFactoryTests;
+import org.eclipse.jst.jsf.metadata.tests.pagedesigner.PropertyDescriptorTests;
+import org.eclipse.jst.jsf.metadata.tests.pagedesigner.QuickEditSectionsTests;
+import org.eclipse.jst.jsf.metadata.tests.sybaseMDTranslations.SybaseCMTranslationTests;
 import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.ActionTypeTests;
 import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.BooleanTypeTest;
+import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.CSSClassTypeTests;
+import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.CSSStyleTypeTests;
+import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.CharacterTypeTest;
 import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.ColorTypeTest;
 import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.ComponentBindingTypeTests;
 import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.ComponentIDTypeTests;
+import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.ContentTypeTest;
+import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.CurrencyCodeTypeTest;
 import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.DoubleTypeTest;
 import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.EnumeratedDoubleTypeTest;
 import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.EnumeratedIntegerTypeTest;
@@ -49,10 +57,15 @@
 import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.IntegerTypeTest;
 import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.JSFHTMLTestCase;
 import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.JavaClassTypeTest;
+import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.LanguageCodeTypeTest;
 import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.LengthTypeTest;
+import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.LinkTypeTest;
+import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.LocaleTypeTest;
 import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.LongTypeTest;
 import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.MethodBindingTypeTests;
+import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.NumberPatternTypeTest;
 import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.StringTypeTest;
+import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.TimeZoneTypeTest;
 import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.ValueBindingTypeTests;
 import org.eclipse.jst.jsf.metadata.tests.taglibprocessing.ValueTypeTests;
 import org.eclipse.jst.jsf.metadata.tests.util.IJSFRuntimeRequiredV11;
@@ -96,7 +109,15 @@
 		addTestSuite(suite, AttributeValueRuntimeTypesRegistryTests.class);
 		addTestSuite(suite, AttributeValueRuntimeTypeFactoryTests.class);
 		
+		//Sybase config translation test
+		addTestSuite(suite, SybaseCMTranslationTests.class);
+		
+		//PageDesigner Metadata tests
+		addTestSuite(suite, PropertyDescriptorTests.class);
+		addTestSuite(suite, QuickEditSectionsTests.class);
+		
 //		//taglib processing
+		//Tests NOT requiring JSF Implementation
 		addTestSuite(suite, StringTypeTest.class);
 		addTestSuite(suite, BooleanTypeTest.class);
 		addTestSuite(suite, IntegerTypeTest.class);
@@ -105,6 +126,23 @@
 		addTestSuite(suite, EnumeratedLongTypeTest.class);
 		addTestSuite(suite, DoubleTypeTest.class);
 		addTestSuite(suite, EnumeratedDoubleTypeTest.class);
+		
+		addTestSuite(suite, ColorTypeTest.class);
+		addTestSuite(suite, LanguageCodeTypeTest.class);
+		addTestSuite(suite, LocaleTypeTest.class);
+		addTestSuite(suite, CurrencyCodeTypeTest.class);
+		addTestSuite(suite, TimeZoneTypeTest.class);
+		addTestSuite(suite, LengthTypeTest.class);
+		addTestSuite(suite, NumberPatternTypeTest.class);
+//		addTestSuite(suite, RelativePathTypeTest.class);
+//		addTestSuite(suite, WebPathTypeTest.class);
+		addTestSuite(suite, CharacterTypeTest.class);
+//		addTestSuite(suite, ScriptTypeTest.class);
+		addTestSuite(suite, LinkTypeTest.class);
+		addTestSuite(suite, ContentTypeTest.class);
+//		addTestSuite(suite, URITypeTest.class);
+		
+		//Tests requiring JSF Implementation
 		addTestSuite(suite, JavaClassTypeTest.class);
 		addTestSuite(suite, FacesConfigConverterIDTypeTests.class);
 		addTestSuite(suite, FacesConfigValidatorIDTypeTests.class);
@@ -114,11 +152,14 @@
 		addTestSuite(suite, ValueBindingTypeTests.class);
 		addTestSuite(suite, ValueTypeTests.class);
 		addTestSuite(suite, ActionTypeTests.class);
-		addTestSuite(suite, LengthTypeTest.class);
-		addTestSuite(suite, ColorTypeTest.class);
+		
+		addTestSuite(suite, CSSClassTypeTests.class);
+		addTestSuite(suite, CSSStyleTypeTests.class);			
 		
 		addTestSuite(suite, JSFHTMLTestCase.class);
 //		addTestSuite(suite, JSFCoreTestCase.class);
+		
+		
 		//$JUnit-END$
 		return suite;
 	}
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/pagedesigner/PropertyDescriptorTests.java b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/pagedesigner/PropertyDescriptorTests.java
new file mode 100644
index 0000000..a5aae25
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/pagedesigner/PropertyDescriptorTests.java
@@ -0,0 +1,117 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle Corporation.
+ * 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:
+ *    Oracle - initial API and implementation
+ *    
+ ********************************************************************************/
+package org.eclipse.jst.jsf.metadata.tests.pagedesigner;
+
+import java.util.List;
+
+import org.eclipse.core.runtime.QualifiedName;
+import org.eclipse.jst.jsf.common.metadata.Entity;
+import org.eclipse.jst.jsf.common.metadata.Model;
+import org.eclipse.jst.jsf.common.metadata.query.ITaglibDomainMetaDataModelContext;
+import org.eclipse.jst.jsf.common.metadata.query.TaglibDomainMetaDataQueryHelper;
+import org.eclipse.jst.jsf.core.JSFVersion;
+import org.eclipse.jst.jsf.metadata.tests.util.SingleJSPTestCase;
+import org.eclipse.jst.jsf.metadataprocessors.IMetaDataEnabledFeature;
+import org.eclipse.jst.jsf.metadataprocessors.MetaDataEnabledProcessingFactory;
+import org.eclipse.jst.pagedesigner.editors.properties.IPropertyPageDescriptor;
+import org.eclipse.jst.pagedesigner.properties.ITabbedPropertiesConstants;
+
+//TODO:   can use beefing up
+public class PropertyDescriptorTests extends SingleJSPTestCase {
+	
+	private static QualifiedName qn = new QualifiedName("test","model");
+	private String uri = "http://org.eclipse.jsf/propertyDescriptorTest";
+	private Model _model;
+	private int _offset = 423;
+	
+	
+	public PropertyDescriptorTests() {
+		super("/testfiles/jsps/propertyDescTests.jsp",
+			"/propertyDescTests.jsp",
+				JSFVersion.V1_1,
+			"/testfiles/web/faces-config_1_1.xml.data");
+	}
+	
+	public void setUp() throws Exception {
+		if (_model == null) {
+			super.setUp();
+			getModel();			
+		}
+	}
+	
+	private Model getModel() {
+		if (_model == null) {
+			ITaglibDomainMetaDataModelContext modelContext = TaglibDomainMetaDataQueryHelper.createMetaDataModelContext(null, uri);
+			_model = TaglibDomainMetaDataQueryHelper.getModel(modelContext);
+		}
+
+		return _model;
+	}
+	
+	public void testBasics(){
+		assertNotNull(getModel());
+		assertEquals(1, getModel().getChildEntities().size());
+		
+		Entity tag = TaglibDomainMetaDataQueryHelper.getEntity(getModel(), "Tag");
+		assertNotNull(tag);
+		assertTrue(tag.getChildEntities().size() == 3);
+
+		testAttr1(tag);
+		testDefaultAttr(tag);
+			
+	}
+
+
+	private void testAttr1(Entity tag){	
+		Entity attr1 = TaglibDomainMetaDataQueryHelper.getEntity(tag, "Attr1");
+		assertNotNull(attr1);
+		assertTrue(attr1.getTraits().size() > 2);
+		
+		List<IMetaDataEnabledFeature> pds = MetaDataEnabledProcessingFactory.getInstance().getAttributeValueRuntimeTypeFeatureProcessors(IPropertyPageDescriptor.class, getStructuredDocumentContext(_structuredDocument, _offset), attr1);
+		assertNotNull(pds);
+		IPropertyPageDescriptor pd = (IPropertyPageDescriptor)pds.get(0);
+		assertNotNull(pd);
+		assertEquals("CategoryName", pd.getCategory());
+		assertEquals("This is a description.", pd.getDescription());
+		assertTrue(pd.isRequired());
+		assertEquals("MyAttr1", pd.getLabel());
+		
+	}
+	
+	private void testDefaultAttr(Entity tag){	
+		Entity attr1 = TaglibDomainMetaDataQueryHelper.getEntity(tag, "DefaultAttr");
+		assertNotNull(attr1);
+		
+		List<IMetaDataEnabledFeature> pds = MetaDataEnabledProcessingFactory.getInstance().getAttributeValueRuntimeTypeFeatureProcessors(IPropertyPageDescriptor.class, getStructuredDocumentContext(_structuredDocument, _offset), attr1);
+		assertNotNull(pds);
+		IPropertyPageDescriptor pd = (IPropertyPageDescriptor)pds.get(0);
+		assertNotNull(pd);
+		assertEquals(ITabbedPropertiesConstants.OTHER_CATEGORY, pd.getCategory());
+		assertNull(pd.getDescription());
+		assertFalse(pd.isRequired());
+		assertEquals("DefaultAttr", pd.getLabel());
+		
+	}
+	
+	
+	public void testLocatePropertyPageDescForBooleanTagAttr() {
+		Entity boolAttr = TaglibDomainMetaDataQueryHelper.getEntity(getModel(), "Tag/boolAttr");
+		assertNotNull(boolAttr);
+		
+		List<IMetaDataEnabledFeature> pds = MetaDataEnabledProcessingFactory.getInstance().getAttributeValueRuntimeTypeFeatureProcessors(IPropertyPageDescriptor.class, getStructuredDocumentContext(_structuredDocument, _offset), boolAttr);
+		assertNotNull(pds);
+		IPropertyPageDescriptor pd = (IPropertyPageDescriptor)pds.get(0);
+		assertNotNull(pd);
+
+	}
+
+}
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/pagedesigner/QuickEditSectionsTests.java b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/pagedesigner/QuickEditSectionsTests.java
new file mode 100644
index 0000000..83faab6
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/pagedesigner/QuickEditSectionsTests.java
@@ -0,0 +1,68 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle Corporation.
+ * 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:
+ *    Oracle - initial API and implementation
+ *    
+ ********************************************************************************/
+package org.eclipse.jst.jsf.metadata.tests.pagedesigner;
+
+import org.eclipse.jst.jsf.common.metadata.Entity;
+import org.eclipse.jst.jsf.common.metadata.Model;
+import org.eclipse.jst.jsf.common.metadata.Trait;
+import org.eclipse.jst.jsf.common.metadata.query.ITaglibDomainMetaDataModelContext;
+import org.eclipse.jst.jsf.common.metadata.query.TaglibDomainMetaDataQueryHelper;
+import org.eclipse.jst.jsf.core.JSFVersion;
+import org.eclipse.jst.jsf.metadata.tests.util.JSPTestCase;
+import org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.QuickEditTabSections;
+import org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.SECTION_TYPE;
+import org.eclipse.jst.pagedesigner.editors.properties.quickedittabsections.SectionInfo;
+
+//TODO:   can use beefing up
+public class QuickEditSectionsTests extends JSPTestCase {
+	private String _uri;
+	private ITaglibDomainMetaDataModelContext _context;
+	
+	public QuickEditSectionsTests () {
+		super(	JSFVersion.V1_1,
+				"/testfiles/web/faces-config_1_1.xml.data");
+
+	}
+	public void setUp() throws Exception{
+		super.setUp();
+	    
+		_uri = "http://org.eclipse.jsf/quickEditSectionTest";
+		_context = TaglibDomainMetaDataQueryHelper.createMetaDataModelContext(_testEnv.getTestProject(), _uri);
+	}
+	
+	public void testQuickEditTabSections(){
+		Model model = TaglibDomainMetaDataQueryHelper.getModel(_context);
+		assertNotNull(model);		
+		Entity entity = TaglibDomainMetaDataQueryHelper.getEntity(model, "A");
+		assertNotNull(entity);		
+		Trait trait = TaglibDomainMetaDataQueryHelper.getTrait(entity , QuickEditTabSections.TRAIT_ID);
+		assertNotNull(trait);
+		assertNotNull(trait.getValue());
+		assertTrue(trait.getValue() instanceof QuickEditTabSections);
+		QuickEditTabSections sections = (QuickEditTabSections)trait.getValue();
+		assertEquals(3, sections.getSections().size());
+		
+		SectionInfo section = sections.getSections().get(0); 
+		assertEquals("attr1", section.getId());
+		assertEquals(SECTION_TYPE.ATTRIBUTE, section.getType());
+		
+		section = sections.getSections().get(1); 
+		assertEquals("attr2", section.getId());
+		assertEquals(SECTION_TYPE.ATTRIBUTE, section.getType());
+		
+		section = sections.getSections().get(2); 
+		assertEquals("section1", section.getId());
+		assertEquals(SECTION_TYPE.SECTION, section.getType());
+
+	}
+
+}
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/sybaseMDTranslations/SybaseCMTranslationTests.java b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/sybaseMDTranslations/SybaseCMTranslationTests.java
new file mode 100644
index 0000000..11b152f
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/sybaseMDTranslations/SybaseCMTranslationTests.java
@@ -0,0 +1,295 @@
+package org.eclipse.jst.jsf.metadata.tests.sybaseMDTranslations;
+
+import java.util.List;
+import java.util.Locale;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.QualifiedName;
+import org.eclipse.jst.jsf.common.metadata.Entity;
+import org.eclipse.jst.jsf.common.metadata.Model;
+import org.eclipse.jst.jsf.common.metadata.Trait;
+import org.eclipse.jst.jsf.common.metadata.internal.TraitValueHelper;
+import org.eclipse.jst.jsf.common.metadata.query.ITaglibDomainMetaDataModelContext;
+import org.eclipse.jst.jsf.common.metadata.query.TaglibDomainMetaDataQueryHelper;
+import org.eclipse.jst.jsf.common.metadata.tests.AbstractBaseMetaDataTestCase;
+import org.eclipse.jst.jsf.common.metadata.traittypes.traittypes.ListOfValues;
+import org.eclipse.jst.jsf.metadata.tests.util.IJSFRuntimeRequiredV11;
+import org.eclipse.jst.jsf.metadataprocessors.MetaDataEnabledProcessingFactory;
+import org.eclipse.jst.jsf.metadataprocessors.features.IPossibleValues;
+import org.eclipse.jst.pagedesigner.editors.properties.IPropertyPageDescriptor;
+import org.eclipse.jst.pagedesigner.meta.IAttributeRuntimeValueType;
+
+
+public class SybaseCMTranslationTests extends AbstractBaseMetaDataTestCase implements IJSFRuntimeRequiredV11 {
+	private static QualifiedName qn = new QualifiedName("test","model");
+	private String uri = "http://SybaseMD.test.jsfhtml";
+	private Model _model;
+	
+	public void setUp() throws Exception {
+		if (_model == null) {
+			super.setUp();
+			getModel();			
+		}
+	}
+	
+	private Model getModel() {
+		try {
+			_model = (Model)project.getSessionProperty(qn);
+			if (_model == null) {
+				ITaglibDomainMetaDataModelContext modelContext = TaglibDomainMetaDataQueryHelper.createMetaDataModelContext(project, uri);
+				_model = TaglibDomainMetaDataQueryHelper.getModel(modelContext);
+				assertNotNull(_model);
+				try {
+					project.setSessionProperty(qn, _model);
+				} catch (CoreException e) {
+					// TODO Auto-generated catch block
+					e.printStackTrace();
+				}
+			}
+
+		} catch (CoreException e1) {
+			// TODO Auto-generated catch block
+			e1.printStackTrace();
+		}
+		return _model;
+	}
+
+	public void testBasics(){
+		assertNotNull(getModel());
+		assertEquals(25, getModel().getChildEntities().size());
+		
+		testSanity(getModel());
+		testAttributeTraits(getModel());
+		testPossibleValues(getModel());
+		
+		
+	}
+
+	private void testSanity(Model model){
+		Entity form = TaglibDomainMetaDataQueryHelper.getEntity(model, "form");
+		assertNotNull(form);
+		assertTrue(form.getChildEntities().size() >= 10);
+		
+		Entity dir = TaglibDomainMetaDataQueryHelper.getEntity(form, "dir");
+		assertNotNull(dir);
+		assertTrue(dir.getTraits().size() > 2);
+		
+		Trait validValues = TaglibDomainMetaDataQueryHelper.getTrait(dir, "valid-values");
+		assertNotNull(validValues);
+		
+		Entity nullEntity = TaglibDomainMetaDataQueryHelper.getEntity(model, "commandButton/converter");//converter should be excluded
+		assertNull("commandButton/converter should not be present", nullEntity);
+	}
+	
+	private void testAttributeTraits(Model model) {		
+		if (Locale.getDefault().equals(Locale.US)) {
+			testProps(model, "message/for", "true", "For", null, null, "JSF", null);
+			testProps(model, "commandButton/action", "false", "Action", "action", null, "JSF", null);
+			testProps(model, "dataTable/frame", "false", "Frame", null, "No sides", "HTML", null);
+		}		
+	}
+	
+	public void testEnumeratedValueTypeTranslation() {
+		assertEquals(IAttributeRuntimeValueType.STRING, getAttrValRuntimeType(getModel(), "selectManyCheckbox/layout"));
+		assertEquals(IAttributeRuntimeValueType.LANGUAGECODE, getAttrValRuntimeType(getModel(), "form/lang"));
+	}
+
+	public void testBooleanValueTypeTranslation() {
+		assertEquals(IAttributeRuntimeValueType.BOOLEAN, getAttrValRuntimeType(getModel(), "inputText/immediate"));
+		Entity attr = TaglibDomainMetaDataQueryHelper.getEntity(getModel(), "commandButton/rendered");
+		List list = MetaDataEnabledProcessingFactory.getInstance().getAttributeValueRuntimeTypeFeatureProcessors(IPropertyPageDescriptor.class, null , attr);
+		assertNotNull(list);
+		assertTrue(list.size() > 0);
+	}
+	
+	public void testJavaClassTypeTranslation() {
+		assertEquals(IAttributeRuntimeValueType.JAVACLASS, getAttrValRuntimeType(getModel(), "column/faketypeattr"));
+		Trait t = getTrait(getModel(), "column/faketypeattr", "valid-interfaces");
+		assertNotNull(t);
+		assertEquals("javax.faces.event.ActionListener", TraitValueHelper.getValueAsString(t));
+	}
+	
+	public void testClasspathResourceTypeTranslation() {
+		assertEquals(IAttributeRuntimeValueType.RESOURCEBUNDLE, getAttrValRuntimeType(getModel(), "column/fakeBasename"));
+	}
+	
+	public void testColorTypeTranslation() {		
+		assertEquals(IAttributeRuntimeValueType.COLOR, getAttrValRuntimeType(getModel(), "column/fakeColor"));
+	}
+
+	public void testCSSClassTypeTranslation() {
+		assertEquals(IAttributeRuntimeValueType.CSSCLASS, getAttrValRuntimeType(getModel(), "selectBooleanCheckbox/styleClass"));
+	}
+	public void testCSSIdTypeTranslation() {
+		assertEquals(IAttributeRuntimeValueType.CSSID, getAttrValRuntimeType(getModel(), "column/fakecssid"));
+	}
+	public void testCSSStyleTypeTranslation() {
+		assertEquals(IAttributeRuntimeValueType.CSSSTYLE, getAttrValRuntimeType(getModel(), "selectBooleanCheckbox/style"));
+	}
+	public void testCurrencyCodeTypeTranslation() {
+		assertEquals(IAttributeRuntimeValueType.CURRENCYCODE, getAttrValRuntimeType(getModel(), "column/fakeCurrencyCode"));
+	}
+	public void testJavaScriptTypeTypeTranslation() {
+		assertEquals(IAttributeRuntimeValueType.SCRIPT, getAttrValRuntimeType(getModel(), "commandButton/onfocus"));
+	}
+	public void testLinkTypeTranslation() {
+		// none known usages
+	}
+	public void testLocaleTypeTranslation() {
+		assertEquals(IAttributeRuntimeValueType.LOCALE, getAttrValRuntimeType(getModel(), "column/fakeLocale"));
+	}
+	
+	public void testMethodBindingTypeTranslation() {
+		//validator
+		assertEquals(IAttributeRuntimeValueType.METHODBINDING, getAttrValRuntimeType(getModel(), "inputText/validator"));
+		Trait t = getTrait(getModel(), "inputText/validator", "runtime-param-types");
+		assertNotNull(t);
+		assertTrue(t.getValue() instanceof ListOfValues);
+		List vals = TraitValueHelper.getValueAsListOfStrings(t);
+		assertEquals(3, vals.size());
+		assertEquals("java.lang.Object", vals.get(2));
+		
+		t = getTrait(getModel(), "inputText/validator", "runtime-return-type");
+		assertNotNull(t);
+		assertEquals("void", TraitValueHelper.getValueAsString(t));
+		
+		//actionListener
+		assertEquals(IAttributeRuntimeValueType.METHODBINDING, getAttrValRuntimeType(getModel(), "commandButton/actionListener"));
+		t = getTrait(getModel(), "commandButton/actionListener", "runtime-param-types");
+		assertNotNull(t);
+		assertEquals("javax.faces.event.ActionEvent", TraitValueHelper.getValueAsString(t));
+		
+		assertEquals(IAttributeRuntimeValueType.METHODBINDING, getAttrValRuntimeType(getModel(), "inputText/valueChangeListener"));
+		t = getTrait(getModel(), "inputText/valueChangeListener", "runtime-param-types");
+		assertNotNull(t);
+		assertEquals("javax.faces.event.ValueChangeEvent", TraitValueHelper.getValueAsString(t));
+	}
+	
+	public void testMultiChoiceTypeTypeTranslation() {
+		//i believe that this is a comma-delim enumerated type... noop for now
+		assertEquals(IAttributeRuntimeValueType.STRING, getAttrValRuntimeType(getModel(), "column/fakeMultiChoice"));
+	}
+	public void testNamedBooleanTypeTranslation() {
+		assertEquals(IAttributeRuntimeValueType.BOOLEAN, getAttrValRuntimeType(getModel(), "graphicImage/ismap"));
+	}
+	
+	public void testPropertyBindingTypeTranslation() {
+		assertEquals(IAttributeRuntimeValueType.VALUEBINDING, getAttrValRuntimeType(getModel(), "message/binding"));
+	}
+	
+	public void testRelativePathValueTypeTranslation() {
+		assertEquals(IAttributeRuntimeValueType.RELATIVEPATH, getAttrValRuntimeType(getModel(), "outputLink/value"));
+	}
+	
+	public void testTimeZoneTypeTranslation() {
+		assertEquals(IAttributeRuntimeValueType.TIMEZONE, getAttrValRuntimeType(getModel(), "column/fakeTimeZone"));
+	}
+	
+	public void testJavaScriptTypeTranslation() {
+		assertEquals(IAttributeRuntimeValueType.SCRIPT, getAttrValRuntimeType(getModel(), "commandButton/onclick"));
+	}
+	public void testWebPathTypeTranslation() {
+		assertEquals(IAttributeRuntimeValueType.WEBPATH, getAttrValRuntimeType(getModel(), "graphicImage/value"));
+		Trait trait = getTrait(getModel(), "graphicImage/value", "file-extensions");
+		assertNotNull(trait);
+		assertEquals(3, TraitValueHelper.getValueAsListOfStrings(trait).size());
+	}
+
+	private Trait getTrait(Model model, String entityKey, String traitKey) {
+		Entity attrEntity = TaglibDomainMetaDataQueryHelper.getEntity(model, entityKey);
+		assertNotNull(attrEntity);
+
+		return TaglibDomainMetaDataQueryHelper.getTrait(attrEntity, traitKey);
+	}
+	
+	private String getAttrValRuntimeType(Model model, String entityKey) {
+		Trait t = getTrait(model, entityKey, MetaDataEnabledProcessingFactory.ATTRIBUTE_VALUE_RUNTIME_TYPE_PROP_NAME);
+		assertNotNull(t);
+		return TraitValueHelper.getValueAsString(t);
+	}
+	
+	private void testProps(Model model, String entityKey, String requiredVal, String displayLabel, String description, String defaultValue, String cateagoryValue, String typeParam) {
+		Entity attrEntity = TaglibDomainMetaDataQueryHelper.getEntity(model, entityKey);
+		assertNotNull(attrEntity);
+		assertTrue(attrEntity.getChildEntities().size() == 0);
+		
+		//required
+		Trait t = TaglibDomainMetaDataQueryHelper.getTrait(attrEntity, "required");
+		if (requiredVal != null){
+			assertNotNull(t);
+			assertEquals(requiredVal, TraitValueHelper.getValueAsString(t));
+		}
+		else
+			assertNull(t);
+		
+		//display-label
+		t = TaglibDomainMetaDataQueryHelper.getTrait(attrEntity, "display-label");
+		if (displayLabel != null){
+			assertNotNull(t);
+			assertEquals(displayLabel, TraitValueHelper.getValueAsString(t));
+		}
+		else
+			assertNull(t);
+		
+		//description
+		t = TaglibDomainMetaDataQueryHelper.getTrait(attrEntity, "description");
+		if (description != null){
+			assertNotNull(t);
+			assertEquals(description, TraitValueHelper.getValueAsString(t));
+		}
+		else
+			assertNull(t);
+		
+		//description
+		t = TaglibDomainMetaDataQueryHelper.getTrait(attrEntity, "default-value");
+		if (defaultValue != null){
+			assertNotNull(t);
+			assertEquals(defaultValue, TraitValueHelper.getValueAsString(t));
+		}
+		else
+			assertNull(t);
+		
+		//category
+		t = TaglibDomainMetaDataQueryHelper.getTrait(attrEntity, IPropertyPageDescriptor.PROP_DESC_CATEGORY);
+		if (cateagoryValue != null){
+			assertNotNull(t);
+			assertEquals(cateagoryValue, TraitValueHelper.getValueAsString(t));
+		}
+		else
+			assertNull(t);
+		
+		//type-param
+		t = TaglibDomainMetaDataQueryHelper.getTrait(attrEntity, "type-param");
+		if (typeParam != null){
+			assertNotNull(t);
+			assertEquals(typeParam, TraitValueHelper.getValueAsString(t));
+		}
+		else
+			assertNull(t);
+		
+	}
+	
+	private void testPossibleValues(Model model){
+		//form/dir
+		List pvsList = MetaDataEnabledProcessingFactory.getInstance().getAttributeValueRuntimeTypeFeatureProcessors(IPossibleValues.class, null, uri, "form", "dir");
+		assertNotNull(pvsList);
+		assertEquals(1, pvsList.size());
+		assertTrue(pvsList.get(0) instanceof IPossibleValues);
+		IPossibleValues pvs = (IPossibleValues)pvsList.get(0);
+		assertEquals(2, pvs.getPossibleValues().size());
+		
+		//form/lang
+		pvsList = MetaDataEnabledProcessingFactory.getInstance().getAttributeValueRuntimeTypeFeatureProcessors(IPossibleValues.class, null, uri, "form", "lang");
+		assertNotNull(pvsList);
+		assertEquals(1, pvsList.size());
+		assertTrue(pvsList.get(0) instanceof IPossibleValues);
+		pvs = (IPossibleValues)pvsList.get(0);
+		assertEquals(58, pvs.getPossibleValues().size());
+	}
+	
+	private List getProcessorAdapters(Class featureClass, String tag, String attrName) {
+		return MetaDataEnabledProcessingFactory.getInstance().
+			getAttributeValueRuntimeTypeFeatureProcessors(featureClass, docContext, 
+					uri, tag , attrName);
+	}
+}
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/AllTests.java b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/AllTests.java
index ad426c2..ff153f0 100644
--- a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/AllTests.java
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/AllTests.java
@@ -39,15 +39,22 @@
 		addTestSuite(suite, DoubleTypeTest.class);
 		addTestSuite(suite, EnumeratedDoubleTypeTest.class);
 		
+		addTestSuite(suite, ColorTypeTest.class);
+		addTestSuite(suite, LanguageCodeTypeTest.class);
+		addTestSuite(suite, LocaleTypeTest.class);
+		addTestSuite(suite, CurrencyCodeTypeTest.class);
+		addTestSuite(suite, TimeZoneTypeTest.class);
+		addTestSuite(suite, LengthTypeTest.class);
+		addTestSuite(suite, NumberPatternTypeTest.class);
+//		addTestSuite(suite, RelativePathTypeTest.class);
+//		addTestSuite(suite, WebPathTypeTest.class);
+		addTestSuite(suite, CharacterTypeTest.class);
+//		addTestSuite(suite, ScriptTypeTest.class);
+		addTestSuite(suite, LinkTypeTest.class);
+		addTestSuite(suite, ContentTypeTest.class);
+//		addTestSuite(suite, URITypeTest.class);
+		
 		//Tests requiring JSF Implementation
-		addTestSuite(suite, StringTypeTest.class);
-		addTestSuite(suite, BooleanTypeTest.class);
-		addTestSuite(suite, IntegerTypeTest.class);
-		addTestSuite(suite, EnumeratedIntegerTypeTest.class);
-		addTestSuite(suite, LongTypeTest.class);
-		addTestSuite(suite, EnumeratedLongTypeTest.class);
-		addTestSuite(suite, DoubleTypeTest.class);
-		addTestSuite(suite, EnumeratedDoubleTypeTest.class);
 		addTestSuite(suite, JavaClassTypeTest.class);
 		addTestSuite(suite, FacesConfigConverterIDTypeTests.class);
 		addTestSuite(suite, FacesConfigValidatorIDTypeTests.class);
@@ -58,6 +65,9 @@
 		addTestSuite(suite, ValueTypeTests.class);
 		addTestSuite(suite, ActionTypeTests.class);
 		
+		addTestSuite(suite, CSSClassTypeTests.class);
+		addTestSuite(suite, CSSStyleTypeTests.class);			
+		
 		addTestSuite(suite,JSFHTMLTestCase.class);
 		
 		//$JUnit-END$
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/CSSClassTypeTests.java b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/CSSClassTypeTests.java
new file mode 100644
index 0000000..48dba3e
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/CSSClassTypeTests.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle 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:
+ *     Oracle Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.jsf.metadata.tests.taglibprocessing;
+
+import org.eclipse.jst.jsf.core.JSFVersion;
+import org.eclipse.jst.jsf.metadata.tests.util.SingleJSPTestCase;
+import org.eclipse.jst.jsf.metadataprocessors.features.IPossibleValues;
+import org.eclipse.jst.jsf.metadataprocessors.features.IValidValues;
+
+public class CSSClassTypeTests extends SingleJSPTestCase {
+	private final String tagName = "commandButton";
+	private final String attrName = "class";
+	
+	public CSSClassTypeTests(){
+		super(	"/testfiles/jsps/cssTypesTest.jsp.data/", 
+				"/cssTypesTest.jsp", 
+				JSFVersion.V1_1,
+				"/testfiles/web/faces-config_1_1.xml.data");
+	}
+
+	public void testGetPossibleValues() {
+		IPossibleValues pv = (IPossibleValues)getProcessor(IPossibleValues.class, JSF_HTML_URI, tagName, attrName);		
+		assertNotNull(pv);		
+			
+		//TODO: fill me in
+	}
+
+	public void testIsValidValue() {
+		IValidValues vv = (IValidValues)getProcessor(IValidValues.class, JSF_HTML_URI, tagName, attrName);		
+		assertNull(vv); 		
+
+	}
+	
+
+
+}
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/CSSStyleTypeTests.java b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/CSSStyleTypeTests.java
new file mode 100644
index 0000000..3458269
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/CSSStyleTypeTests.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle 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:
+ *     Oracle Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.jsf.metadata.tests.taglibprocessing;
+
+import org.eclipse.jst.jsf.core.JSFVersion;
+import org.eclipse.jst.jsf.metadata.tests.util.SingleJSPTestCase;
+import org.eclipse.jst.jsf.metadataprocessors.features.IPossibleValues;
+import org.eclipse.jst.jsf.metadataprocessors.features.IValidValues;
+
+public class CSSStyleTypeTests extends SingleJSPTestCase {
+	private final String tagName = "commandButton";
+	private final String attrName = "class";
+	
+	public CSSStyleTypeTests(){
+		super(	"/testfiles/jsps/cssTypesTest.jsp.data/", 
+				"/cssTypesTest.jsp", 
+				JSFVersion.V1_1,
+				"/testfiles/web/faces-config_1_1.xml.data");
+	}
+
+	public void testGetPossibleValues() {
+		IPossibleValues pv = (IPossibleValues)getProcessor(IPossibleValues.class, JSF_HTML_URI, tagName, attrName);		
+		assertNotNull(pv);		
+			
+//		TODO: fill me in
+	}
+
+	public void testIsValidValue() {
+		IValidValues vv = (IValidValues)getProcessor(IValidValues.class, JSF_HTML_URI, tagName, attrName);		
+		assertNull(vv); 		
+
+		
+	}
+	
+
+
+}
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/CharacterTypeTest.java b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/CharacterTypeTest.java
new file mode 100644
index 0000000..d67c58e
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/CharacterTypeTest.java
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle Corporation.
+ * 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:
+ *    Oracle - initial API and implementation
+ *    
+ ********************************************************************************/
+package org.eclipse.jst.jsf.metadata.tests.taglibprocessing;
+
+import junit.framework.Assert;
+
+import org.eclipse.jst.jsf.metadataprocessors.features.IValidValues;
+
+public class CharacterTypeTest extends TaglibProcessingTestCase {
+	public void testPossibleValues() {
+		Assert.assertNotNull(possibleValueAdapters);
+		Assert.assertTrue(possibleValueAdapters.isEmpty());
+
+	}
+
+	public void testValidValuesValues() {
+		Assert.assertNotNull(validValuesAdapters);
+		Assert.assertFalse(validValuesAdapters.isEmpty());
+
+		IValidValues pvs = (IValidValues) validValuesAdapters.get(0);
+		Assert.assertTrue(pvs.isValidValue("a"));
+		
+		
+		//negative 
+		Assert.assertFalse(pvs.isValidValue("ab"));
+		pvs.getValidationMessages().clear();
+		Assert.assertFalse(pvs.isValidValue("_a"));
+		pvs.getValidationMessages().clear();
+		Assert.assertFalse(pvs.isValidValue(""));
+		pvs.getValidationMessages().clear();
+		Assert.assertFalse(pvs.isValidValue(" a "));
+		pvs.getValidationMessages().clear();
+	}
+}
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/ComponentIDTypeTests.java b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/ComponentIDTypeTests.java
index d49a87f..845e827 100644
--- a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/ComponentIDTypeTests.java
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/ComponentIDTypeTests.java
@@ -11,6 +11,8 @@
  
 package org.eclipse.jst.jsf.metadata.tests.taglibprocessing;
 
+import junit.framework.Assert;
+
 import org.eclipse.jst.jsf.core.JSFVersion;
 import org.eclipse.jst.jsf.metadata.tests.util.SingleJSPTestCase;
 import org.eclipse.jst.jsf.metadataprocessors.features.ELIsNotValidException;
@@ -19,7 +21,8 @@
 import org.eclipse.jst.jsf.metadataprocessors.features.IValidValues;
 
 public class ComponentIDTypeTests extends SingleJSPTestCase {
-	private final String tagName = "inputText";
+	
+	private final String tagName = "commandButton";
 	private final String attrName = "id";
 	
 	public ComponentIDTypeTests() {
@@ -55,12 +58,46 @@
 	public void testIsValidValue() {
 		IValidValues vv = (IValidValues)getProcessor(IValidValues.class, JSF_HTML_URI, tagName, attrName);		
 		assertNotNull(vv);
-		
-		assertTrue(vv.isValidValue("every non zero length string is valid!"));
-		assertNotNull(vv.getValidationMessages());
-		assertEquals(0, vv.getValidationMessages().size());
-		assertFalse(vv.isValidValue(""));
+//		
+//		assertTrue(vv.isValidValue("every non zero length string is valid!"));
+//		assertNotNull(vv.getValidationMessages());
+//		assertEquals(0, vv.getValidationMessages().size());
+//		assertFalse(vv.isValidValue(""));
 
+		//positive tests
+		Assert.assertTrue(vv.isValidValue("A"));
+		Assert.assertTrue(vv.isValidValue("Aa"));
+		Assert.assertTrue(vv.isValidValue("z.abc"));
+		Assert.assertTrue(vv.isValidValue("A1"));
+		Assert.assertTrue(vv.isValidValue("A-1"));
+		Assert.assertTrue(vv.isValidValue("A_a"));
+		Assert.assertTrue(vv.isValidValue("A:a"));
+		Assert.assertTrue(vv.isValidValue("A_"));
+		Assert.assertTrue(vv.isValidValue("a."));
+		Assert.assertTrue(vv.isValidValue("Aa."));		
+		Assert.assertTrue(vv.isValidValue("_Aa"));	
+		
+		//negative tests
+		Assert.assertFalse(vv.isValidValue("  "));	
+		vv.getValidationMessages().clear();
+		
+		//will fail when we have proper regex validation
+//		Assert.assertFalse(vv.isValidValue("1Aa"));	
+//		vv.getValidationMessages().clear();
+//		Assert.assertFalse(vv.isValidValue(":Aa"));	
+//		vv.getValidationMessages().clear();
+//		Assert.assertFalse(vv.isValidValue("-Aa"));	
+//		vv.getValidationMessages().clear();
+//		Assert.assertFalse(vv.isValidValue(".Aa"));	
+//		vv.getValidationMessages().clear();	
+		
+		// FIXME the below is currently failing and is commented out.   
+//		Assert.assertFalse(vv.isValidValue("A$!a"));
+//		vv.getValidationMessages().clear();
+//		Assert.assertFalse(vv.isValidValue("A:!a"));					
+//		vv.getValidationMessages().clear();
+//		Assert.assertFalse(vv.isValidValue("A(a"));	
+//		vv.getValidationMessages().clear();
 	}
 
 }
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/ContentTypeTest.java b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/ContentTypeTest.java
new file mode 100644
index 0000000..0ff164b
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/ContentTypeTest.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle Corporation.
+ * 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:
+ *    Oracle - initial API and implementation
+ *    
+ ********************************************************************************/
+package org.eclipse.jst.jsf.metadata.tests.taglibprocessing;
+
+import junit.framework.Assert;
+
+import org.eclipse.jst.jsf.metadataprocessors.features.IPossibleValues;
+import org.eclipse.jst.jsf.metadataprocessors.features.IValidValues;
+
+public class ContentTypeTest extends TaglibProcessingTestCase {
+	public void testPossibleValues() {
+		Assert.assertNotNull(possibleValueAdapters);
+		Assert.assertFalse(possibleValueAdapters.isEmpty());
+
+		IPossibleValues pvs = (IPossibleValues) possibleValueAdapters.get(0);
+		Assert.assertTrue(pvs.getPossibleValues().size() >= 8);
+	}
+
+	public void testValidValuesValues() {
+		Assert.assertNotNull(validValuesAdapters);
+		Assert.assertFalse(validValuesAdapters.isEmpty());
+		
+		IValidValues pvs = (IValidValues) validValuesAdapters.get(0);
+		Assert.assertTrue(pvs.isValidValue("a"));
+		Assert.assertTrue(pvs.isValidValue("foo_bar"));
+		
+		//negative
+		Assert.assertFalse(pvs.isValidValue(""));
+		pvs.getValidationMessages().clear();
+		Assert.assertFalse(pvs.isValidValue("          "));
+		pvs.getValidationMessages().clear();
+		Assert.assertFalse(pvs.isValidValue(null));
+		pvs.getValidationMessages().clear();
+	}
+}
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/CurrencyCodeTypeTest.java b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/CurrencyCodeTypeTest.java
new file mode 100644
index 0000000..26baad8
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/CurrencyCodeTypeTest.java
@@ -0,0 +1,41 @@
+package org.eclipse.jst.jsf.metadata.tests.taglibprocessing;
+
+import junit.framework.Assert;
+
+import org.eclipse.jst.jsf.metadataprocessors.features.IPossibleValues;
+import org.eclipse.jst.jsf.metadataprocessors.features.IValidValues;
+import org.eclipse.jst.pagedesigner.editors.properties.IPropertyPageDescriptor;
+
+/**
+ * 
+ *
+ */
+public class CurrencyCodeTypeTest extends TaglibProcessingTestCase {
+	public void testPossibleValues(){		
+		Assert.assertNotNull(possibleValueAdapters);
+		IPossibleValues pvs = (IPossibleValues)possibleValueAdapters.get(0);
+		Assert.assertEquals(173, pvs.getPossibleValues().size());
+	}
+	
+	public void testValidValues(){		
+		Assert.assertNotNull(validValuesAdapters);
+		Assert.assertFalse(validValuesAdapters.isEmpty());
+		
+		IValidValues vv =(IValidValues)validValuesAdapters.get(0);
+		//positive tests
+		assertTrue(vv.isValidValue("USD"));
+		assertTrue(vv.isValidValue("AOA"));
+		//negative tests
+		vv.getValidationMessages().clear();
+		assertFalse(vv.isValidValue("XXX"));	
+	}
+	
+	public void testPropertyPageDescriptor(){		
+		Assert.assertNotNull(propertyPageDescriptorAdapters);
+		Assert.assertFalse(propertyPageDescriptorAdapters.isEmpty());
+		
+		IPropertyPageDescriptor ppd =(IPropertyPageDescriptor)propertyPageDescriptorAdapters.get(0);
+		assertEquals(false, ppd.isRequired());
+
+	}
+}
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/LanguageCodeTypeTest.java b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/LanguageCodeTypeTest.java
new file mode 100644
index 0000000..727f4f3
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/LanguageCodeTypeTest.java
@@ -0,0 +1,38 @@
+package org.eclipse.jst.jsf.metadata.tests.taglibprocessing;
+
+import junit.framework.Assert;
+
+import org.eclipse.jst.jsf.metadataprocessors.features.IPossibleValues;
+import org.eclipse.jst.jsf.metadataprocessors.features.IValidValues;
+import org.eclipse.jst.pagedesigner.editors.properties.IPropertyPageDescriptor;
+
+public class LanguageCodeTypeTest extends TaglibProcessingTestCase {
+	public void testPossibleValues(){		
+		Assert.assertNotNull(possibleValueAdapters);
+		IPossibleValues pvs = (IPossibleValues)possibleValueAdapters.get(0);
+		Assert.assertEquals(58, pvs.getPossibleValues().size());
+	}
+	
+	public void testValidValues(){		
+		Assert.assertNotNull(validValuesAdapters);
+		Assert.assertFalse(validValuesAdapters.isEmpty());
+		
+		IValidValues vv =(IValidValues)validValuesAdapters.get(0);
+		//positive tests
+		assertTrue(vv.isValidValue("en"));
+		//negative tests
+		vv.getValidationMessages().clear();
+		assertFalse(vv.isValidValue("xxx"));	
+	}
+	
+	public void testPropertyPageDescriptor(){		
+		Assert.assertNotNull(propertyPageDescriptorAdapters);
+		Assert.assertFalse(propertyPageDescriptorAdapters.isEmpty());
+		
+		IPropertyPageDescriptor ppd =(IPropertyPageDescriptor)propertyPageDescriptorAdapters.get(0);
+		//positive tests
+		assertEquals("ACategory", ppd.getCategory());
+		assertEquals(false, ppd.isRequired());
+
+	}
+}
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/LinkTypeTest.java b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/LinkTypeTest.java
new file mode 100644
index 0000000..e17a3bb
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/LinkTypeTest.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle Corporation.
+ * 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:
+ *    Oracle - initial API and implementation
+ *    
+ ********************************************************************************/
+package org.eclipse.jst.jsf.metadata.tests.taglibprocessing;
+
+import junit.framework.Assert;
+
+import org.eclipse.jst.jsf.metadataprocessors.features.IPossibleValues;
+import org.eclipse.jst.jsf.metadataprocessors.features.IValidValues;
+
+public class LinkTypeTest extends TaglibProcessingTestCase {
+	public void testPossibleValues() {
+		Assert.assertNotNull(possibleValueAdapters);
+		Assert.assertFalse(possibleValueAdapters.isEmpty());
+
+		IPossibleValues pvs = (IPossibleValues) possibleValueAdapters.get(0);
+		Assert.assertTrue(pvs.getPossibleValues().size() >= 8);
+	}
+
+	public void testValidValuesValues() {
+		Assert.assertNotNull(validValuesAdapters);
+		Assert.assertFalse(validValuesAdapters.isEmpty());
+		
+		IValidValues pvs = (IValidValues) validValuesAdapters.get(0);
+		Assert.assertTrue(pvs.isValidValue("a"));
+		Assert.assertTrue(pvs.isValidValue("Chapter"));
+		
+		//negative
+		Assert.assertFalse(pvs.isValidValue(""));
+		pvs.getValidationMessages().clear();
+		Assert.assertFalse(pvs.isValidValue("          "));
+		pvs.getValidationMessages().clear();
+		Assert.assertFalse(pvs.isValidValue(null));
+		pvs.getValidationMessages().clear();
+	}
+}
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/LocaleTypeTest.java b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/LocaleTypeTest.java
new file mode 100644
index 0000000..c01711f
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/LocaleTypeTest.java
@@ -0,0 +1,38 @@
+package org.eclipse.jst.jsf.metadata.tests.taglibprocessing;
+
+import junit.framework.Assert;
+
+import org.eclipse.jst.jsf.metadataprocessors.features.IPossibleValues;
+import org.eclipse.jst.jsf.metadataprocessors.features.IValidValues;
+import org.eclipse.jst.pagedesigner.editors.properties.IPropertyPageDescriptor;
+
+public class LocaleTypeTest extends TaglibProcessingTestCase {
+	public void testPossibleValues(){		
+		Assert.assertNotNull(possibleValueAdapters);
+		IPossibleValues pvs = (IPossibleValues)possibleValueAdapters.get(0);
+		Assert.assertEquals(135, pvs.getPossibleValues().size());
+	}
+	
+	public void testValidValues(){		
+		Assert.assertNotNull(validValuesAdapters);
+		Assert.assertFalse(validValuesAdapters.isEmpty());
+		
+		IValidValues vv =(IValidValues)validValuesAdapters.get(0);
+		//positive tests
+		assertTrue(vv.isValidValue("en"));
+		//negative tests
+		vv.getValidationMessages().clear();
+		assertFalse(vv.isValidValue("xxx"));	
+	}
+	
+	public void testPropertyPageDescriptor(){		
+		Assert.assertNotNull(propertyPageDescriptorAdapters);
+		Assert.assertFalse(propertyPageDescriptorAdapters.isEmpty());
+		
+		IPropertyPageDescriptor ppd =(IPropertyPageDescriptor)propertyPageDescriptorAdapters.get(0);
+		//positive tests
+		assertEquals("ACategory", ppd.getCategory());
+		assertEquals(false, ppd.isRequired());
+
+	}
+}
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/NumberPatternTypeTest.java b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/NumberPatternTypeTest.java
new file mode 100644
index 0000000..5e852a9
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/NumberPatternTypeTest.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle Corporation.
+ * 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:
+ *    Oracle - initial API and implementation
+ *    
+ ********************************************************************************/
+package org.eclipse.jst.jsf.metadata.tests.taglibprocessing;
+
+import junit.framework.Assert;
+
+import org.eclipse.jst.jsf.metadataprocessors.features.IPossibleValues;
+
+public class NumberPatternTypeTest extends TaglibProcessingTestCase {
+	public void testPossibleValues() {
+		Assert.assertNotNull(possibleValueAdapters);
+		Assert.assertFalse(possibleValueAdapters.isEmpty());
+
+		IPossibleValues pvs = (IPossibleValues) possibleValueAdapters.get(0);
+		Assert.assertTrue(pvs.getPossibleValues().size() >= 8);
+	}
+
+	public void testValidValuesValues() {
+		Assert.assertNotNull(validValuesAdapters);
+		Assert.assertTrue(validValuesAdapters.isEmpty());
+	}
+}
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/TaglibProcessingTestCase.java b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/TaglibProcessingTestCase.java
index c64d60a..7bde25d 100644
--- a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/TaglibProcessingTestCase.java
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/TaglibProcessingTestCase.java
@@ -15,12 +15,14 @@
 
 import org.eclipse.jst.jsf.common.metadata.tests.AbstractBaseMetaDataTestCase;
 import org.eclipse.jst.jsf.metadata.tests.MetadataTestsPlugin;
+import org.eclipse.jst.jsf.metadataprocessors.IMetaDataEnabledFeature;
 import org.eclipse.jst.jsf.metadataprocessors.MetaDataEnabledProcessingFactory;
 import org.eclipse.jst.jsf.metadataprocessors.features.ICreateValues;
 import org.eclipse.jst.jsf.metadataprocessors.features.IDefaultValue;
 import org.eclipse.jst.jsf.metadataprocessors.features.IPossibleValues;
 import org.eclipse.jst.jsf.metadataprocessors.features.IValidELValues;
 import org.eclipse.jst.jsf.metadataprocessors.features.IValidValues;
+import org.eclipse.jst.pagedesigner.editors.properties.IPropertyPageDescriptor;
 
 public abstract class TaglibProcessingTestCase extends AbstractBaseMetaDataTestCase {
 //	protected IStructuredDocumentContext docContext;
@@ -35,6 +37,7 @@
 	protected List<?> defaultValueAdapters;
 	protected List<?> createValuesAdapters;
 	protected List<?> validELValuesAdapters;
+	protected List<?> propertyPageDescriptorAdapters;
 	
 	public void setUp() throws Exception{
 		super.setUp();
@@ -44,6 +47,7 @@
 		defaultValueAdapters = getProcessorAdapters(IDefaultValue.class);
 		createValuesAdapters = getProcessorAdapters(ICreateValues.class);
 		validELValuesAdapters = getProcessorAdapters(IValidELValues.class);
+		propertyPageDescriptorAdapters = getProcessorAdapters(IPropertyPageDescriptor.class);
 	}
 
 	private String getAttributeNameFromTest(){
@@ -55,7 +59,7 @@
         return attributeName;
 	}
 	
-	protected List<?> getProcessorAdapters(Class<?> featureClass) {
+	protected List<? extends IMetaDataEnabledFeature> getProcessorAdapters(Class<?> featureClass) {
 		return MetaDataEnabledProcessingFactory.getInstance().
 			getAttributeValueRuntimeTypeFeatureProcessors(featureClass, docContext, 
 					uri, tag , getAttributeNameFromTest());
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/TimeZoneTypeTest.java b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/TimeZoneTypeTest.java
new file mode 100644
index 0000000..18afcb1
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/src/org/eclipse/jst/jsf/metadata/tests/taglibprocessing/TimeZoneTypeTest.java
@@ -0,0 +1,27 @@
+package org.eclipse.jst.jsf.metadata.tests.taglibprocessing;
+
+import junit.framework.Assert;
+
+import org.eclipse.jst.jsf.metadataprocessors.features.IPossibleValues;
+import org.eclipse.jst.jsf.metadataprocessors.features.IValidValues;
+
+public class TimeZoneTypeTest extends TaglibProcessingTestCase {
+	public void testPossibleValues(){		
+		Assert.assertNotNull(possibleValueAdapters);
+		IPossibleValues pvs = (IPossibleValues)possibleValueAdapters.get(0);
+		Assert.assertEquals(585, pvs.getPossibleValues().size());
+	}
+	
+	public void testValidValues(){		
+		Assert.assertNotNull(validValuesAdapters);
+		Assert.assertFalse(validValuesAdapters.isEmpty());
+		
+		IValidValues vv =(IValidValues)validValuesAdapters.get(0);
+		//positive tests
+		assertTrue(vv.isValidValue("America/Edmonton"));
+		//negative tests
+		vv.getValidationMessages().clear();
+		assertFalse(vv.isValidValue("xxx"));	
+	}
+
+}
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/jsps/cssTypesTest.html b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/jsps/cssTypesTest.html
new file mode 100644
index 0000000..76e48b9
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/jsps/cssTypesTest.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<link rel="stylesheet" href="mystyle.css">
+<link rel="stylesheet" href="foo.css">
+<style type="text/css">
+  body {
+    color: purple;
+    background-color: red; }
+ </style>
+<title>Insert title here</title>
+</head>
+<body class="" style="">
+	<b style="color: green;">Hello</b>
+	<a id="a" class="" style="color: HoneyDew " href="Foo" /></output>
+</body>
+</html>
\ No newline at end of file
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/jsps/cssTypesTest.jsp.data b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/jsps/cssTypesTest.jsp.data
new file mode 100644
index 0000000..f2daed8
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/jsps/cssTypesTest.jsp.data
@@ -0,0 +1,14 @@
+<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%><%@taglib
+	uri="http://java.sun.com/jsf/html" prefix="h"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+    pageEncoding="ISO-8859-1"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<link rel="stylesheet" href="mystyle.css">
+<title>Insert title here</title>
+</head>
+<body>
+	<input id="a" class=""/>
+</body>
+</html>
\ No newline at end of file
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/jsps/foo.css b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/jsps/foo.css
new file mode 100644
index 0000000..890fcd0
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/jsps/foo.css
@@ -0,0 +1,157 @@
+BODY, P, LI, UL, OL {
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 97%;
+	color:#000000;
+	list-style-position: outside;
+}
+
+A:link {
+	font-family: Arial, Helvetica, sans-serif;
+	color:#663300;
+	
+}
+
+A:active {
+	font-family: Arial, Helvetica, sans-serif;
+	color:#ff6600;
+	
+}
+
+A:visited {
+	font-family: Arial, Helvetica, sans-serif;
+	color:#996633;
+	
+}
+
+A.navigation:link
+{
+	font-family: Arial, Helvetica, sans-serif;
+	font-size:65%; 
+	color:#996633;
+}
+
+A.navigation:active
+{
+	font-family: Arial, Helvetica, sans-serif;
+	font-size:65%; 
+	color:#996633;
+}
+
+A.navigation:visited
+{
+	font-family: Arial, Helvetica, sans-serif;
+	font-size:65%; 
+	color:#996633;
+}
+
+p.listpara
+{text-indent: 15%}
+
+H1 {
+	font-family: Arial, Helvetica, sans-serif;
+	font-size:170%;
+	color:#336699;
+	border : solid #CCCC99;
+	width : 100%;
+	border-width : 0px 0px 2px 0px; 
+}
+
+H2 {
+	font-family: Arial, Helvetica, sans-serif;
+	font-size:130%;
+	color:#336699;
+	border : solid #cccc99;
+	border-width : 0px 0px 2px 0px;
+	width : 100%;
+}
+
+H3 {
+	font-family: Arial, Helvetica, sans-serif;
+	font-size:110%;
+	color:#336699;
+	width : 100%; 
+}
+
+H4 {
+	font-family: Arial, Helvetica, sans-serif;
+	font-size:92%;
+	color:#000000;
+      font-weight: bold;
+	width : 100%;
+}
+
+.code_no_color {
+        color : #000000;
+	font-family : "Courier New", "Courier", "monospace";
+}
+
+code {  
+	color : #336699;
+	font-family : "Courier New", "Courier", "monospace";
+}
+
+P.indent {
+	text-indent: 9%;
+}
+
+table.borders {
+	border : 1% solid #BDB76B;
+}
+
+TR {
+	text-align : left;
+	vertical-align : top;
+}
+
+TH {
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 11pt;
+	color:#000000;
+	font-weight: bold;
+}
+
+TD {
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 11pt%;
+	color:#000000;
+}
+
+.smalltext {
+	font-size:80%;
+}
+
+p.note { 
+    display: block; 
+    font-family: Arial, Helvetica, Geneva, sans-serif; 
+    font-size: 95%;
+}
+
+p.warning { 
+    display: block;
+    font-family: Arial, Helvetica, Geneva, sans-serif; 
+    font-size: 95%;
+}
+
+pre { 
+    font-family: "Courier New", Courier, mono; 
+    font-size: 92%;
+    text-indent : 15%;
+}
+
+.GUITag {
+    font-family: Arial, Helvetica, Geneva, sans-serif; 
+    font-size: 95%; 
+    font-weight: bold; 
+    font-style: normal;
+}
+
+.PropertyName {
+    font-family: "Courier New", Courier, mono; 
+    font-style: normal;
+}
+
+.GlossaryItem { 
+    color : #008080; 
+    font-family: Arial, Helvetica, sans-serif;
+    font-size : 95%;
+}
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/jsps/mystyle.css b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/jsps/mystyle.css
new file mode 100644
index 0000000..97b7c22
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/jsps/mystyle.css
@@ -0,0 +1,31 @@
+body {
+  padding-left: 11em;
+  font-family: Georgia, "Times New Roman",
+        Times, serif;
+}
+ul.navbar {
+  list-style-type: none;
+  padding: 0;
+  margin: 0;
+  position: absolute;
+  top: 2em;
+  left: 1em;
+  width: 9em }
+h1 {
+  font-family: Helvetica, Geneva, Arial,
+        SunSans-Regular, sans-serif }
+ul.navbar li {
+  background: white;
+  margin: 0.5em 0;
+  padding: 0.3em;
+  border-right: 1em solid black }
+ul.navbar a {
+  text-decoration: none }
+a:link {
+  color: blue }
+a:visited {
+  color: purple }
+address {
+  margin-top: 1em;
+  padding-top: 1em;
+  border-top: thin dotted }
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/jsps/propertyDescTests.jsp b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/jsps/propertyDescTests.jsp
new file mode 100644
index 0000000..2da57b6
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/jsps/propertyDescTests.jsp
@@ -0,0 +1,13 @@
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+    pageEncoding="ISO-8859-1"%>
+ <%@ taglib prefix="x" uri="http://org.eclipse.jsf/propertyDescriptorTest" %>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Insert title here</title>
+</head>
+<body>
+	<x:Tag Attr1="y" boolAttr="true" DeafultAttr="x"/>
+</body>
+</html>
\ No newline at end of file
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/jsf_tagprocessing.xml b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/jsf_tagprocessing.xml
index 0d0088f..390c16e 100644
--- a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/jsf_tagprocessing.xml
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/jsf_tagprocessing.xml
@@ -166,5 +166,86 @@
   		</trait>
   		<trait id="default-value"><value>Black</value></trait>
   	</entity>    
+  	<entity id="LanguageCodeType">
+  		<trait id="attribute-value-runtime-type">
+  			<value>org.eclipse.jst.jsf.core.attributevalues.LanguageCodeType</value>
+  		</trait>
+  		<trait id="category">
+  			<value>ACategory</value>
+  		</trait>
+  	</entity>   
+  	<entity id="LocaleType">
+  		<trait id="attribute-value-runtime-type">
+  			<value>org.eclipse.jst.jsf.core.attributevalues.LocaleType</value>
+  		</trait>
+  		<trait id="category">
+  			<value>ACategory</value>
+  		</trait>
+  	</entity> 
+  	<entity id="CurrencyCodeType">
+  		<trait id="attribute-value-runtime-type">
+  			<value>org.eclipse.jst.jsf.core.attributevalues.CurrencyCodeType</value>
+  		</trait>
+  	</entity>
+  	<entity id="TimeZoneType">
+  		<trait id="attribute-value-runtime-type">
+  			<value>org.eclipse.jst.jsf.core.attributevalues.TimeZoneType</value>
+  		</trait>
+  	</entity>   
+  	<entity id="RelativePathType">
+  		<trait id="attribute-value-runtime-type">
+  			<value>org.eclipse.jst.jsf.core.attributevalues.RelativePathType</value>
+  		</trait>
+  	</entity>
+  	<entity id="WebPathType">
+  		<trait id="attribute-value-runtime-type">
+  			<value>org.eclipse.jst.jsf.core.attributevalues.WebPathType</value>
+  		</trait>
+  	</entity>     	   		
+  	<entity id="JavaScriptType">
+  		<trait id="attribute-value-runtime-type">
+  			<value>org.eclipse.jst.jsf.core.attributevalues.JavaScriptType</value>
+  		</trait>
+  	</entity> 
+  	<entity id="CSSClassType">
+  		<trait id="attribute-value-runtime-type">
+  			<value>org.eclipse.jst.pagedesigner.attributevalues.CSSClassType</value>
+  		</trait>
+  	</entity> 
+  	<entity id="CSSStyleType">
+  		<trait id="attribute-value-runtime-type">
+  			<value>org.eclipse.jst.pagedesigner.attributevalues.CSSStyleType</value>
+  		</trait>
+  	</entity> 
+  	<entity id="ComponentIDType">
+  		<trait id="attribute-value-runtime-type">
+  			<value>org.eclipse.jst.jsf.core.attributevalues.ComponentIDType</value>
+  		</trait>
+  	</entity>
+  	<entity id="CharacterType">
+  		<trait id="attribute-value-runtime-type">
+  			<value>org.eclipse.jst.jsf.core.attributevalues.CharacterType</value>
+  		</trait>
+  	</entity> 
+  	<entity id="ScriptType">
+  		<trait id="attribute-value-runtime-type">
+  			<value>org.eclipse.jst.jsf.core.attributevalues.ScriptType</value>
+  		</trait>
+  	</entity>    	 
+  	<entity id="LinkType">
+  		<trait id="attribute-value-runtime-type">
+  			<value>org.eclipse.jst.jsf.core.attributevalues.LinkType</value>
+  		</trait>
+  	</entity>     
+  	<entity id="ContentType">
+  		<trait id="attribute-value-runtime-type">
+  			<value>org.eclipse.jst.jsf.core.attributevalues.ContentType</value>
+  		</trait>
+  	</entity>     	
+  	<entity id="NumberPatternType">
+  		<trait id="attribute-value-runtime-type">
+  			<value>org.eclipse.jst.jsf.core.attributevalues.NumberPatternType</value>
+  		</trait>
+  	</entity>    
   </entity>
  </md:metadatamodel>
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/propertyDescriptorTest.xml b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/propertyDescriptorTest.xml
new file mode 100644
index 0000000..cb87f4a
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/propertyDescriptorTest.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadatamodel 
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" 
+	xmlns:mdt="http://org.eclipse.jst.jsf.common.metadata/metadataTraitTypes.ecore"  
+	xmlns:qe="http://org.eclipse.jsf.pagedesigner/QuickEditTabSections.ecore"
+	id="http://org.eclipse.jsf/propertyDescriptorTest"
+	type="tagFile">
+	
+	<entity id="Tag">
+		<entity id="Attr1">
+	 		<trait id="attribute-value-runtime-type">
+	  			<value>org.eclipse.jst.jsf.core.attributevalues.StringType</value>
+	  		</trait>
+	  		<trait id="valid-values">
+	  			<value xsi:type="mdt:ListOfValues">
+		  			<item>A</item>
+		  			<item>B</item>
+		  			<item>C</item>
+	  				<item>D</item>
+	  			</value>
+	  		</trait>
+	  		<trait id="displayed-values">
+	  			<value xsi:type="mdt:ListOfValues">
+		  			<item>A FirstVal</item>
+		  			<item>B SecondVal</item>
+		  			<item>C ThirdVal</item>
+		  			<item>D FourthVal</item>
+	  			</value>
+	  		</trait>  	
+	  		<trait id="display-label">
+	  			<value>MyAttr1</value>
+	  		</trait>	
+	  		<trait id="description">
+	  			<value>This is a description.</value>
+	  		</trait>
+	  		<trait id="category">
+	  			<value>CategoryName</value>
+	  		</trait>
+	  		<trait id="small-icon">
+	  			<value>/testfiles/icons/attr_val.gif</value>
+	  		</trait>
+	  		<trait id="default-value">
+	  			<value>A</value>
+	  		</trait>
+	  		<trait id="required">
+	  			<value>true</value>
+	  		</trait>
+		</entity>
+		<entity id="DefaultAttr">
+			<trait id="attribute-value-runtime-type">
+	  			<value>org.eclipse.jst.jsf.core.attributevalues.StringType</value>
+	  		</trait>
+	  		<trait id="cell-editor">
+	  			<value>org.eclipse.jface.viewers.TextCellEditor</value>
+	  		</trait>
+		</entity>
+		<entity id="boolAttr">
+			<trait id="attribute-value-runtime-type">
+	  			<value>org.eclipse.jst.jsf.core.attributevalues.BooleanType</value>
+	  		</trait>
+		</entity>
+	</entity>
+</metadatamodel>
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/quickEditSectionTest.xml b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/quickEditSectionTest.xml
new file mode 100644
index 0000000..9567ffd
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/quickEditSectionTest.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadatamodel 
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" 
+	xmlns:mdt="http://org.eclipse.jst.jsf.common.metadata/metadataTraitTypes.ecore"  
+	xmlns:qe="http://org.eclipse.jsf.pagedesigner/QuickEditTabSections.ecore"
+	id="http://org.eclipse.jsf/quickEditSectionTest"
+	type="tagFile">
+	
+	<entity id="A">
+		<entity id="attr1"/>
+		<entity id="attr2"/>
+		<trait id="quick-edit-tab">
+			<value xsi:type="qe:QuickEditTabSections"> 
+				<section id="attr1" type="ATTRIBUTE" />
+				<section id="attr2"/> <!-- ATTRIBUTE type is default -->
+				<section id="section1" type="SECTION"/>
+			</value>
+		</trait>
+	</entity>
+</metadatamodel>
\ No newline at end of file
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/sybasejsfhtml.properties b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/sybasejsfhtml.properties
new file mode 100644
index 0000000..9b68fcd
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/sybasejsfhtml.properties
@@ -0,0 +1,112 @@
+###############################################################################
+# Copyright (c) 2001, 2006 Oracle 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:
+#     Oracle Corporation - initial API and implementation
+###############################################################################
+Attribute.Label.accept=Accept
+Attribute.Label.acceptcharset=Accept Charset
+Attribute.Label.accesskey=Access Key
+Attribute.Label.action=Action
+Attribute.Label.actionListener=ActionListener
+Attribute.Label.alt=Alt
+Attribute.Label.bgcolor=BG Color
+Attribute.Label.binding=Binding
+Attribute.Label.border=Border
+Attribute.Label.cellpadding=Cell Padding
+Attribute.Label.cellspacing=Cell Spacing
+Attribute.Label.charset=Charset
+Attribute.Label.cols=Cols
+Attribute.Label.columnClasses=Column Classes
+Attribute.Label.columns=Columns
+Attribute.Label.converter=Converter
+Attribute.Label.coords=Coords
+Attribute.Label.dir=Dir
+Attribute.Label.disabled=Disabled
+Attribute.Label.disabledClass=Disabled Class
+Attribute.Label.enabledClass=Enabled Class
+Attribute.Label.enctype=Enctype
+Attribute.Label.errorClass=Error Class
+Attribute.Label.errorStyle=Error Style
+Attribute.Label.escape=Escape
+Attribute.Label.fatalClass=Fatal Class
+Attribute.Label.fatalStyle=Fatal Style
+Attribute.Label.first=First
+Attribute.Label.footerClass=Footer Class
+Attribute.Label.for=For
+Attribute.Label.frame=Frame
+Attribute.Label.globalOnly=Global Only
+Attribute.Label.headerClass=Header Class
+Attribute.Label.height=Height
+Attribute.Label.hreflang=Hreflang
+Attribute.Label.id=ID
+Attribute.Label.image=Image
+Attribute.Label.immediate=Immediate
+Attribute.Label.infoClass=Info Class
+Attribute.Label.infoStyle=Info Style
+Attribute.Label.ismap=Ismap
+Attribute.Label.lang=Lang
+Attribute.Label.layout=Layout
+Attribute.Label.link=Link
+Attribute.Label.longdesc=Longdesc
+Attribute.Label.maxlength=Max Length
+Attribute.Label.onblur=Onblur
+Attribute.Label.onchange=Onchange
+Attribute.Label.onclick=Onclick
+Attribute.Label.ondblclick=Ondblclick
+Attribute.Label.onfocus=Onfocus
+Attribute.Label.onkeydown=Onkeydown
+Attribute.Label.onkeypress=Onkeypress
+Attribute.Label.onkeyup=Onkeyup
+Attribute.Label.onmousedown=Onmousedown
+Attribute.Label.onmousemove=Onmousemove
+Attribute.Label.onmouseout=Onmouseout
+Attribute.Label.onmouseover=Onmouseover
+Attribute.Label.onmouseup=Onmouseup
+Attribute.Label.onreset=Onreset
+Attribute.Label.onselect=Onselect
+Attribute.Label.onsubmit=Onsubmit
+Attribute.Label.readonly=Read Only
+Attribute.Label.redisplay=Redisplay
+Attribute.Label.rel=Rel
+Attribute.Label.rendered=Rendered
+Attribute.Label.required=Required
+Attribute.Label.rev=Rev
+Attribute.Label.rowClasses=Row Classes
+Attribute.Label.rows=Rows
+Attribute.Label.rules=Rules
+Attribute.Label.shape=Shape
+Attribute.Label.showDetail=Show Detail
+Attribute.Label.showSummary=Show Summary
+Attribute.Label.size=Size
+Attribute.Label.style=Style
+Attribute.Label.styleClass=Style Class
+Attribute.Label.summary=Summary
+Attribute.Label.tabindex=Tab Index
+Attribute.Label.target=Target
+Attribute.Label.title=Title
+Attribute.Label.tooltip=Tooltip
+Attribute.Label.type=Type
+Attribute.Label.url=URL
+Attribute.Label.usemap=Usemap
+Attribute.Label.validator=Validator
+Attribute.Label.value=Value
+Attribute.Label.valueChangeListener=ValueChangeListener
+Attribute.Label.var=Var
+Attribute.Label.warnClass=Warn Class
+Attribute.Label.warnStyle=Warn Style
+Attribute.Label.width=Width
+Category.Label.CSS=CSS
+Category.Label.CSS2=CSS2
+Category.Label.CSS3=CSS3
+Category.Label.CSS4=CSS4
+Category.Label.Event=Event
+Category.Label.HTML=HTML
+Category.Label.JSF=JSF
+Category.Label.Language=Language
+Category.Label.Link=Link
+Category.Label.Table=Table
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/sybasejsfhtml.xml b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/sybasejsfhtml.xml
new file mode 100644
index 0000000..936a5b2
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/sybasejsfhtml.xml
@@ -0,0 +1,730 @@
+<?xml version="1.0" ?>
+<taglib uri="http://SybaseMD.test.jsfhtml">
+	<tag name="column">
+		<category name="JSF" displaylabel="%Category.Label.JSF">
+			<attribute name="id" displaylabel="%Attribute.Label.id" />
+			<attribute name="binding" type="PROPERTYBINDING"
+				displaylabel="%Attribute.Label.binding" />
+			<attribute name="rendered" type="BOOLEAN"
+				displaylabel="%Attribute.Label.rendered" />
+			<attribute name="faketypeattr" type="CLASSNAME" required="required"
+				typeparam="superType=I:javax.faces.event.ActionListener" 
+				displaylabel="faketypeattr" />				
+			<attribute name="fakeBasename" type="CLASSPATH_RESOURCE" required="required"
+				displaylabel="fakeBasename" />		
+			<attribute name="fakeColor" type="COLOR"
+				displaylabel="fakeColor" />	
+			<attribute name="fakecssid" type="CSSID"
+					displaylabel="fakecssid" />
+			<attribute name="fakeCurrencyCode"
+				displaylabel="fakeCurrencyCode" type="CURRENCYCODE" />				
+			<attribute name="fakeLocale"
+				displaylabel="fakeLocale" type="LOCALE" />
+			<attribute name="fakeTimeZone"
+				displaylabel="fakeTimeZone" type="TIMEZONE" />	
+			<attribute name="fakeMultiChoice"
+				displaylabel="fakeMultiChoice" type="MULTICHOICE" />									
+		</category>
+	</tag>
+	<tag name="commandButton">
+		<referedcategory ref="JSF">
+			<includeattrs>
+				<attribute name="action"
+					displaylabel="%Attribute.Label.action" description="action"/>
+				<attribute name="actionListener" type="METHODBINDING"
+					displaylabel="%Attribute.Label.actionListener" />
+			</includeattrs>
+			<excludeattrs
+				refs="converter,validator,valueChangeListener,required" />
+		</referedcategory>
+		<referedcategory ref="Language" />
+		<referedcategory ref="CSS" />
+		<referedcategory ref="Event" />
+		<referedcategory ref="HTML">
+			<includeattrs>
+				<attribute name="type" type="ENUMERATED"
+					displaylabel="%Attribute.Label.type">
+					<option key="submit" value="submit" default="default"/>
+					<option key="reset" value="reset" />
+				</attribute>
+				<attribute name="image" type="RELATIVEPATH"
+					typeparam="suffix=jpg;gif;png"
+					displaylabel="%Attribute.Label.image" />
+				<attribute name="alt"
+					displaylabel="%Attribute.Label.alt" />
+			</includeattrs>
+		</referedcategory>
+	</tag>
+	<tag name="commandLink">
+		<referedcategory ref="JSF">
+			<includeattrs>
+				<attribute name="action"
+					displaylabel="%Attribute.Label.action" />
+				<attribute name="actionListener" type="METHODBINDING"
+					displaylabel="%Attribute.Label.actionListener" />
+			</includeattrs>
+			<excludeattrs
+				refs="converter,validator,valueChangeListener,required" />
+		</referedcategory>
+		<referedcategory ref="Language" />
+		<referedcategory ref="CSS" />
+		<referedcategory ref="Event">
+			<excludeattrs refs="onchange,onclick,onselect" />
+		</referedcategory>
+		<referedcategory ref="Link" displaylabel="%Category.Label.HTML" />
+	</tag>
+	<tag name="dataTable">
+		<category name="JSF" displaylabel="%Category.Label.JSF">
+			<attribute name="id" displaylabel="%Attribute.Label.id" />
+			<attribute name="value"
+				displaylabel="%Attribute.Label.value" />
+			<attribute name="binding" type="PROPERTYBINDING"
+				displaylabel="%Attribute.Label.binding" />
+			<attribute name="var" displaylabel="%Attribute.Label.var" />
+			<attribute name="rendered" type="BOOLEAN"
+				displaylabel="%Attribute.Label.rendered" />
+			<attribute name="rows" displaylabel="%Attribute.Label.rows" />
+			<attribute name="first"
+				displaylabel="%Attribute.Label.first" />
+		</category>
+		<referedcategory ref="Language" />
+		<referedcategory ref="CSS3" displaylabel="%Category.Label.CSS" />
+		<referedcategory ref="Event">
+			<excludeattrs refs="onblur,onchange,onfocus,onselect" />
+		</referedcategory>
+		<referedcategory ref="Table"
+			displaylabel="%Category.Label.HTML" />
+	</tag>
+	<tag name="form">
+		<category name="JSF" displaylabel="%Category.Label.JSF">
+			<attribute name="id" displaylabel="%Attribute.Label.id" />
+			<attribute name="binding" type="PROPERTYBINDING"
+				displaylabel="%Attribute.Label.binding" />
+			<attribute name="rendered" type="BOOLEAN"
+				displaylabel="%Attribute.Label.rendered" />
+		</category>
+		<referedcategory ref="Language" />
+		<referedcategory ref="CSS" />
+		<referedcategory ref="Event">
+			<includeattrs>
+				<attribute name="onreset"
+					displaylabel="%Attribute.Label.onreset" />
+				<attribute name="onsubmit"
+					displaylabel="%Attribute.Label.onsubmit" />
+			</includeattrs>
+			<excludeattrs refs="onblur,onchange,onfocus,onselect" />
+		</referedcategory>
+		<category name="HTML" displaylabel="%Category.Label.HTML">
+			<attribute name="target" type="ENUMERATED"
+				displaylabel="%Attribute.Label.target">
+				<option key="_self" value="_self" />
+				<option key="_blank" value="_blank" />
+				<option key="_parent" value="_parent" />
+				<option key="_top" value="_top" />
+			</attribute>
+			<attribute name="accept"
+				displaylabel="%Attribute.Label.accept" />
+			<attribute name="acceptcharset"
+				displaylabel="%Attribute.Label.acceptcharset" />
+			<attribute name="enctype"
+				displaylabel="%Attribute.Label.enctype" type="ENUMERATED">
+				<option key="application/x-www-form-urlencoded"
+					value="application/x-www-form-urlencoded" default="default"/>
+			</attribute>
+			<attribute name="title"
+				displaylabel="%Attribute.Label.title" />
+		</category>
+	</tag>
+	<tag name="graphicImage">
+		<category name="JSF" displaylabel="%Category.Label.JSF">
+			<attribute name="value" type="WEBPATH"
+				typeparam="suffix=jpg;gif;png"
+				displaylabel="%Attribute.Label.value" />
+			<attribute name="url" type="WEBPATH"
+				typeparam="suffix=jpg;gif;png" displaylabel="%Attribute.Label.url" />
+			<attribute name="binding" type="PROPERTYBINDING"
+				displaylabel="%Attribute.Label.binding" />
+			<attribute name="id" displaylabel="%Attribute.Label.id" />
+			<attribute name="rendered" type="BOOLEAN"
+				displaylabel="%Attribute.Label.rendered" />
+		</category>
+		<referedcategory ref="Language" />
+		<referedcategory ref="CSS" />
+		<referedcategory ref="Event">
+			<excludeattrs refs="onblur,onchange,onfocus,onselect" />
+		</referedcategory>
+		<category name="HTML" displaylabel="%Category.Label.HTML">
+			<attribute name="ismap" type="NAMED-BOOLEAN"
+				displaylabel="%Attribute.Label.ismap" />
+			<attribute name="longdesc" type="RELATIVEPATH"
+				displaylabel="%Attribute.Label.longdesc" />
+			<attribute name="alt" displaylabel="%Attribute.Label.alt" />
+			<attribute name="height"
+				displaylabel="%Attribute.Label.height" />
+			<attribute name="title"
+				displaylabel="%Attribute.Label.title" />
+			<attribute name="usemap"
+				displaylabel="%Attribute.Label.usemap" />
+			<attribute name="width"
+				displaylabel="%Attribute.Label.width" />
+		</category>
+	</tag>
+	<tag name="inputHidden">
+		<referedcategory ref="JSF" />
+	</tag>
+	<tag name="inputSecret">
+		<referedcategory ref="JSF" />
+		<referedcategory ref="Language" />
+		<referedcategory ref="CSS" />
+		<referedcategory ref="Event" />
+		<referedcategory ref="HTML">
+			<includeattrs>
+				<attribute name="maxlength"
+					displaylabel="%Attribute.Label.maxlength" />
+				<attribute name="redisplay" type="BOOLEAN"
+					displaylabel="%Attribute.Label.redisplay" />
+				<attribute name="alt"
+					displaylabel="%Attribute.Label.alt" />
+				<attribute name="size"
+					displaylabel="%Attribute.Label.size" />
+			</includeattrs>
+		</referedcategory>
+	</tag>
+	<tag name="inputText">
+		<referedcategory ref="JSF" />
+		<referedcategory ref="Language" />
+		<referedcategory ref="CSS" />
+		<referedcategory ref="Event" />
+		<referedcategory ref="HTML">
+			<includeattrs>
+				<attribute name="maxlength"
+					displaylabel="%Attribute.Label.maxlength" />
+				<attribute name="alt"
+					displaylabel="%Attribute.Label.alt" />
+				<attribute name="size"
+					displaylabel="%Attribute.Label.size" />
+			</includeattrs>
+		</referedcategory>
+	</tag>
+	<tag name="inputTextarea">
+		<referedcategory ref="JSF" />
+		<referedcategory ref="Language" />
+		<referedcategory ref="CSS" />
+		<referedcategory ref="Event" />
+		<referedcategory ref="HTML">
+			<includeattrs>
+				<attribute name="cols"
+					displaylabel="%Attribute.Label.cols" />
+				<attribute name="rows"
+					displaylabel="%Attribute.Label.rows" />
+			</includeattrs>
+		</referedcategory>
+	</tag>
+	<tag name="message">
+		<category name="JSF" displaylabel="%Category.Label.JSF">
+			<attribute name="id" displaylabel="%Attribute.Label.id" />
+			<attribute name="binding" type="PROPERTYBINDING"
+				displaylabel="%Attribute.Label.binding" />
+			<attribute name="for" displaylabel="%Attribute.Label.for" required="required"/>
+			<attribute name="rendered" type="BOOLEAN"
+				displaylabel="%Attribute.Label.rendered" />
+			<attribute name="showDetail" type="BOOLEAN"
+				typeparam="default=true" displaylabel="%Attribute.Label.showDetail" />
+			<attribute name="showSummary" type="BOOLEAN"
+				typeparam="default=false"
+				displaylabel="%Attribute.Label.showSummary" />
+		</category>
+		<referedcategory ref="CSS2" displaylabel="%Category.Label.CSS" />
+		<category name="HTML" displaylabel="%Category.Label.HTML">
+			<attribute name="tooltip" type="BOOLEAN"
+				displaylabel="%Attribute.Label.tooltip" />
+			<attribute name="title"
+				displaylabel="%Attribute.Label.title" />
+		</category>
+	</tag>
+	<tag name="messages">
+		<category name="JSF" displaylabel="%Category.Label.JSF">
+			<attribute name="id" displaylabel="%Attribute.Label.id" />
+			<attribute name="binding" type="PROPERTYBINDING"
+				displaylabel="%Attribute.Label.binding" />
+			<attribute name="globalOnly" type="BOOLEAN"
+				typeparam="default=false"
+				displaylabel="%Attribute.Label.globalOnly" />
+			<attribute name="rendered" type="BOOLEAN"
+				displaylabel="%Attribute.Label.rendered" />
+			<attribute name="showDetail" type="BOOLEAN"
+				typeparam="default=false"
+				displaylabel="%Attribute.Label.showDetail" />
+			<attribute name="showSummary" type="BOOLEAN"
+				typeparam="default=true"
+				displaylabel="%Attribute.Label.showSummary" />
+		</category>
+		<referedcategory ref="CSS2" displaylabel="%Category.Label.CSS" />
+		<category name="HTML" displaylabel="%Category.Label.HTML">
+			<attribute name="layout" type="ENUMERATED"
+				displaylabel="%Attribute.Label.layout">
+				<option key="list" value="list" default="default"/>
+				<option key="table" value="table" />
+			</attribute>
+			<attribute name="tooltip" type="BOOLEAN"
+				displaylabel="%Attribute.Label.tooltip" />
+			<attribute name="title"
+				displaylabel="%Attribute.Label.title" />
+		</category>
+	</tag>
+	<tag name="outputFormat">
+		<referedcategory ref="JSF">
+			<excludeattrs
+				refs="validator,valueChangeListener,immediate,required" />
+		</referedcategory>
+		<referedcategory ref="CSS" />
+		<category name="HTML" displaylabel="%Category.Label.HTML">
+			<attribute name="escape" type="BOOLEAN"
+				typeparam="default=true" displaylabel="%Attribute.Label.escape" />
+			<attribute name="title"
+				displaylabel="%Attribute.Label.title" />
+		</category>
+	</tag>
+	<tag name="outputLabel">
+		<referedcategory ref="JSF">
+			<excludeattrs
+				refs="validator,valueChangeListener,immediate,required" />
+		</referedcategory>
+		<referedcategory ref="Language" />
+		<referedcategory ref="CSS" />
+		<referedcategory ref="Event">
+			<excludeattrs refs="onchange,onselect" />
+		</referedcategory>
+		<referedcategory ref="HTML">
+			<includeattrs>
+				<attribute name="for"
+					displaylabel="%Attribute.Label.for" />
+			</includeattrs>
+			<excludeattrs refs="disabled,readonly" />
+		</referedcategory>
+	</tag>
+	<tag name="outputLink">
+		<referedcategory ref="JSF">
+			<includeattrs>
+				<attribute name="value" type="RELATIVEPATH"
+					displaylabel="%Attribute.Label.value" />
+			</includeattrs>
+			<excludeattrs
+				refs="validator,valueChangeListener,immediate,required" />
+		</referedcategory>
+		<referedcategory ref="Language" />
+		<referedcategory ref="CSS" />
+		<referedcategory ref="Event">
+			<excludeattrs refs="onchange,onselect" />
+		</referedcategory>
+		<referedcategory ref="Link" displaylabel="%Category.Label.HTML" />
+	</tag>
+	<tag name="outputText">
+		<referedcategory ref="JSF">
+			<excludeattrs
+				refs="validator,valueChangeListener,immediate,required" />
+		</referedcategory>
+		<referedcategory ref="CSS" />
+		<category name="HTML" displaylabel="%Category.Label.HTML">
+			<attribute name="escape" type="BOOLEAN"
+				typeparam="default=true" displaylabel="%Attribute.Label.escape" />
+			<attribute name="title"
+				displaylabel="%Attribute.Label.title" />
+		</category>
+	</tag>
+	<tag name="panelGrid">
+		<category name="JSF" displaylabel="%Category.Label.JSF">
+			<attribute name="id" displaylabel="%Attribute.Label.id" />
+			<attribute name="binding" type="PROPERTYBINDING"
+				displaylabel="%Attribute.Label.binding" />
+			<attribute name="rendered" type="BOOLEAN"
+				displaylabel="%Attribute.Label.rendered" />
+		</category>
+		<referedcategory ref="Language" />
+		<referedcategory ref="CSS3" displaylabel="%Category.Label.CSS" />
+		<referedcategory ref="Event">
+			<excludeattrs refs="onblur,onchange,onfocus,onselect" />
+		</referedcategory>
+		<referedcategory ref="Table"
+			displaylabel="%Category.Label.HTML">
+			<includeattrs>
+				<attribute name="columns"
+					displaylabel="%Attribute.Label.columns" />
+			</includeattrs>
+		</referedcategory>
+	</tag>
+	<tag name="panelGroup">
+		<category name="JSF" displaylabel="%Category.Label.JSF">
+			<attribute name="id" displaylabel="%Attribute.Label.id" />
+			<attribute name="binding" type="PROPERTYBINDING"
+				displaylabel="%Attribute.Label.binding" />
+			<attribute name="rendered" type="BOOLEAN"
+				displaylabel="%Attribute.Label.rendered" />
+		</category>
+		<referedcategory ref="CSS" />
+	</tag>
+	<tag name="selectBooleanCheckbox">
+		<referedcategory ref="JSF" />
+		<referedcategory ref="Language" />
+		<referedcategory ref="CSS" />
+		<referedcategory ref="Event" />
+		<referedcategory ref="HTML" />
+	</tag>
+	<tag name="selectManyCheckbox">
+		<referedcategory ref="JSF" />
+		<referedcategory ref="Language" />
+		<referedcategory ref="CSS4" displaylabel="%Category.Label.CSS" />
+		<referedcategory ref="Event" />
+		<referedcategory ref="HTML">
+			<includeattrs>
+				<attribute name="layout" type="ENUMERATED"
+					displaylabel="%Attribute.Label.layout">
+					<option key="lineDirection" value="lineDirection" default="default" />
+					<option key="pageDirection" value="pageDirection" />
+				</attribute>
+				<attribute name="border"
+					displaylabel="%Attribute.Label.border" />
+			</includeattrs>
+		</referedcategory>
+	</tag>
+	<tag name="selectManyListbox">
+		<referedcategory ref="JSF" />
+		<referedcategory ref="Language" />
+		<referedcategory ref="CSS4" displaylabel="%Category.Label.CSS" />
+		<referedcategory ref="Event" />
+		<referedcategory ref="HTML">
+			<includeattrs>
+				<attribute name="size"
+					displaylabel="%Attribute.Label.size" />
+			</includeattrs>
+		</referedcategory>
+	</tag>
+	<tag name="selectManyMenu">
+		<referedcategory ref="JSF" />
+		<referedcategory ref="Language" />
+		<referedcategory ref="CSS4" displaylabel="%Category.Label.CSS" />
+		<referedcategory ref="Event" />
+		<referedcategory ref="HTML" />
+	</tag>
+	<tag name="selectOneListbox">
+		<referedcategory ref="JSF" />
+		<referedcategory ref="Language" />
+		<referedcategory ref="CSS4" displaylabel="%Category.Label.CSS" />
+		<referedcategory ref="Event" />
+		<referedcategory ref="HTML">
+			<includeattrs>
+				<attribute name="size"
+					displaylabel="%Attribute.Label.size" />
+			</includeattrs>
+		</referedcategory>
+	</tag>
+	<tag name="selectOneMenu">
+		<referedcategory ref="JSF" />
+		<referedcategory ref="Language" />
+		<referedcategory ref="CSS4" displaylabel="%Category.Label.CSS" />
+		<referedcategory ref="Event" />
+		<referedcategory ref="HTML" />
+	</tag>
+	<tag name="selectOneRadio">
+		<referedcategory ref="JSF" />
+		<referedcategory ref="Language" />
+		<referedcategory ref="CSS4" displaylabel="%Category.Label.CSS" />
+		<referedcategory ref="Event" />
+		<referedcategory ref="HTML">
+			<includeattrs>
+				<attribute name="layout" type="ENUMERATED"
+					displaylabel="%Attribute.Label.layout">
+					<option key="lineDirection" value="lineDirection" default="default" />
+					<option key="pageDirection" value="pageDirection" />
+				</attribute>
+				<attribute name="border"
+					displaylabel="%Attribute.Label.border" />
+			</includeattrs>
+		</referedcategory>
+	</tag>
+	<definition>
+		<categories>
+			<category name="JSF" displaylabel="%Category.Label.JSF">
+				<attribute name="id" displaylabel="%Attribute.Label.id" />
+				<attribute name="value"
+					displaylabel="%Attribute.Label.value" />
+				<attribute name="binding" type="PROPERTYBINDING"
+					displaylabel="%Attribute.Label.binding" />
+				<attribute name="converter"
+					displaylabel="%Attribute.Label.converter" />
+				<attribute name="validator" type="METHODBINDING"
+					displaylabel="%Attribute.Label.validator" />
+				<attribute name="valueChangeListener"
+					type="METHODBINDING"
+					displaylabel="%Attribute.Label.valueChangeListener" />
+				<attribute name="immediate" type="BOOLEAN"
+					displaylabel="%Attribute.Label.immediate" />
+				<attribute name="rendered" type="BOOLEAN"
+					displaylabel="%Attribute.Label.rendered" />
+				<attribute name="required" type="BOOLEAN"
+					displaylabel="%Attribute.Label.required" />
+			</category>
+			<category name="Language"
+				displaylabel="%Category.Label.Language">
+				<referedattribute ref="lang" />
+				<attribute name="dir" type="ENUMERATED"
+					displaylabel="%Attribute.Label.dir">
+					<option key="RTL" value="RTL" />
+					<option key="LTR" value="LTR" />
+				</attribute>
+			</category>
+			<category name="CSS" displaylabel="%Category.Label.CSS">
+				<attribute name="style" type="CSSSTYLE"
+					typeparam="style=STYLE" displaylabel="%Attribute.Label.style" />
+				<attribute name="styleClass" type="CSSCLASS"
+					typeparam=" " displaylabel="%Attribute.Label.styleClass" />
+			</category>
+			<category name="Event"
+				displaylabel="%Category.Label.Event">
+				<attribute name="onblur" type="JAVASCRIPT"
+					displaylabel="%Attribute.Label.onblur" />
+				<attribute name="onchange" type="JAVASCRIPT"
+					displaylabel="%Attribute.Label.onchange" />
+				<attribute name="onclick" type="JAVASCRIPT"
+					displaylabel="%Attribute.Label.onclick" />
+				<attribute name="ondblclick" type="JAVASCRIPT"
+					displaylabel="%Attribute.Label.ondblclick" />
+				<attribute name="onfocus" type="JAVASCRIPT"
+					displaylabel="%Attribute.Label.onfocus" />
+				<attribute name="onkeydown" type="JAVASCRIPT"
+					displaylabel="%Attribute.Label.onkeydown" />
+				<attribute name="onkeypress" type="JAVASCRIPT"
+					displaylabel="%Attribute.Label.onkeypress" />
+				<attribute name="onkeyup" type="JAVASCRIPT"
+					displaylabel="%Attribute.Label.onkeyup" />
+				<attribute name="onmousedown" type="JAVASCRIPT"
+					displaylabel="%Attribute.Label.onmousedown" />
+				<attribute name="onmousemove" type="JAVASCRIPT"
+					displaylabel="%Attribute.Label.onmousemove" />
+				<attribute name="onmouseout" type="JAVASCRIPT"
+					displaylabel="%Attribute.Label.onmouseout" />
+				<attribute name="onmouseover" type="JAVASCRIPT"
+					displaylabel="%Attribute.Label.onmouseover" />
+				<attribute name="onmouseup" type="JAVASCRIPT"
+					displaylabel="%Attribute.Label.onmouseup" />
+				<attribute name="onselect" type="JAVASCRIPT"
+					displaylabel="%Attribute.Label.onselect" />
+			</category>
+			<category name="HTML" displaylabel="%Category.Label.HTML">
+				<attribute name="accesskey"
+					displaylabel="%Attribute.Label.accesskey" />
+				<attribute name="disabled" type="BOOLEAN"
+					displaylabel="%Attribute.Label.disabled" />
+				<attribute name="readonly" type="BOOLEAN"
+					displaylabel="%Attribute.Label.readonly" />
+				<attribute name="title"
+					displaylabel="%Attribute.Label.title" />
+				<attribute name="tabindex"
+					displaylabel="%Attribute.Label.tabindex" />
+			</category>
+			<category name="Link" displaylabel="%Category.Label.Link">
+				<attribute name="accesskey"
+					displaylabel="%Attribute.Label.accesskey" />
+				<attribute name="title"
+					displaylabel="%Attribute.Label.title" />
+				<attribute name="tabindex"
+					displaylabel="%Attribute.Label.tabindex" />
+				<attribute name="charset"
+					displaylabel="%Attribute.Label.charset" />
+				<referedattribute ref="lang" overridename="hreflang"
+					displaylabel="%Attribute.Label.hreflang" />
+				<referedattribute ref="link" overridename="rel"
+					displaylabel="%Attribute.Label.rel" />
+				<attribute name="shape" type="ENUMERATED"
+					displaylabel="%Attribute.Label.shape">
+					<option key="default"
+						value="Entire region" default="default"/>
+					<option key="circle" value="Circular region" />
+					<option key="rect" value="Rectangular region" />
+					<option key="poly" value="Polygonal region" />
+				</attribute>
+				<attribute name="target" type="ENUMERATED"
+					displaylabel="%Attribute.Label.target">
+					<option key="_self" value="_self" />
+					<option key="_blank" value="_blank" />
+					<option key="_parent" value="_parent" />
+					<option key="_top" value="_top" />
+				</attribute>
+				<attribute name="coords"
+					displaylabel="%Attribute.Label.coords" />
+				<referedattribute ref="link" overridename="rev"
+					displaylabel="%Attribute.Label.rev" />
+				<attribute name="type"
+					displaylabel="%Attribute.Label.type" />
+			</category>
+			<category name="CSS2" displaylabel="%Category.Label.CSS2">
+				<attribute name="style" type="CSSSTYLE"
+					typeparam="style=STYLE" displaylabel="%Attribute.Label.style" />
+				<attribute name="styleClass" type="CSSCLASS"
+					typeparam=" " displaylabel="%Attribute.Label.styleClass" />
+				<attribute name="infoStyle" type="CSSSTYLE"
+					displaylabel="%Attribute.Label.infoStyle" />
+				<attribute name="infoClass" type="CSSCLASS"
+					typeparam=" " displaylabel="%Attribute.Label.infoClass" />
+				<attribute name="warnStyle" type="CSSSTYLE"
+					displaylabel="%Attribute.Label.warnStyle" />
+				<attribute name="warnClass" type="CSSCLASS"
+					typeparam=" " displaylabel="%Attribute.Label.warnClass" />
+				<attribute name="errorStyle" type="CSSSTYLE"
+					displaylabel="%Attribute.Label.errorStyle" />
+				<attribute name="errorClass" type="CSSCLASS"
+					typeparam=" " displaylabel="%Attribute.Label.errorClass" />
+				<attribute name="fatalStyle" type="CSSSTYLE"
+					displaylabel="%Attribute.Label.fatalStyle" />
+				<attribute name="fatalClass" type="CSSCLASS"
+					typeparam=" " displaylabel="%Attribute.Label.fatalClass" />
+			</category>
+			<category name="CSS3" displaylabel="%Category.Label.CSS3">
+				<attribute name="style" type="CSSSTYLE"
+					typeparam="style=STYLE" displaylabel="%Attribute.Label.style" />
+				<attribute name="styleClass" type="CSSCLASS"
+					typeparam=" " displaylabel="%Attribute.Label.styleClass" />
+				<attribute name="columnClasses" type="CSSCLASS"
+					typeparam="," displaylabel="%Attribute.Label.columnClasses" />
+				<attribute name="footerClass" type="CSSCLASS"
+					typeparam=" " displaylabel="%Attribute.Label.footerClass" />
+				<attribute name="headerClass" type="CSSCLASS"
+					typeparam=" " displaylabel="%Attribute.Label.headerClass" />
+				<attribute name="rowClasses" type="CSSCLASS"
+					typeparam="separator=," displaylabel="%Attribute.Label.rowClasses" />
+			</category>
+			<category name="CSS4" displaylabel="%Category.Label.CSS4">
+				<attribute name="style" type="CSSSTYLE"
+					typeparam="style=STYLE" displaylabel="%Attribute.Label.style" />
+				<attribute name="styleClass" type="CSSCLASS"
+					typeparam=" " displaylabel="%Attribute.Label.styleClass" />
+				<attribute name="disabledClass" type="CSSCLASS"
+					typeparam="" displaylabel="%Attribute.Label.disabledClass" />
+				<attribute name="enabledClass" type="CSSCLASS"
+					typeparam="" displaylabel="%Attribute.Label.enabledClass" />
+			</category>
+			<category name="Table"
+				displaylabel="%Category.Label.Table">
+				<attribute name="bgcolor" type="COLOR"
+					displaylabel="%Attribute.Label.bgcolor" />
+				<attribute name="border"
+					displaylabel="%Attribute.Label.border" />
+				<attribute name="cellpadding"
+					displaylabel="%Attribute.Label.cellpadding" />
+				<attribute name="cellspacing"
+					displaylabel="%Attribute.Label.cellspacing" />
+				<attribute name="width"
+					displaylabel="%Attribute.Label.width" />
+				<attribute name="frame" type="ENUMERATED"
+					displaylabel="%Attribute.Label.frame">
+					<option key="lhs" value="Left hand side only" />
+					<option key="above" value="Top side only" />
+					<option key="none" value="No sides" default="default"/>
+					<option key="box" value="All four sides" />
+					<option key="vsides"
+						value="Right and left sides only" />
+					<option key="below" value="Bottom side only" />
+					<option key="border" value="All four sides" />
+					<option key="rhs" value="Right hand side only" />
+					<option key="hsides"
+						value="Top and bottom sides only" />
+				</attribute>
+				<attribute name="rules" type="ENUMERATED"
+					displaylabel="%Attribute.Label.rules">
+					<option key="cols" value="Between columns only" />
+					<option key="groups" value="Between row groups" />
+					<option key="rows" value="Between rows only" />
+					<option key="none" value="No rules" default="default"/>
+					<option key="all"
+						value="Between all rows and columns" />
+				</attribute>
+				<attribute name="summary"
+					displaylabel="%Attribute.Label.summary" />
+				<attribute name="title"
+					displaylabel="%Attribute.Label.title" />
+			</category>
+		</categories>
+		<attributes>
+			<attribute name="lang" type="ENUMERATED"
+				displaylabel="%Attribute.Label.lang">
+				<option key="af" value="af Afrikaans" />
+				<option key="ar" value="ar Arabic (needs subtype)" />
+				<option key="be" value="be Belarusian" />
+				<option key="bg" value="bg Bulgarian" />
+				<option key="br" value="br Breton" />
+				<option key="ca" value="ca Catalan" />
+				<option key="cs" value="cs Czech" />
+				<option key="da" value="da Danish" />
+				<option key="de" value="de German (Standard)" />
+				<option key="el" value="el Greek" />
+				<option key="en" value="en English" />
+				<option key="es" value="es Spanish (Spain)" />
+				<option key="et" value="et Estonian" />
+				<option key="eu" value="eu Basque" />
+				<option key="fa" value="fa Farsi" />
+				<option key="fi" value="fi Finnish" />
+				<option key="fo" value="fo Faeroese" />
+				<option key="fr" value="fr French (Standard)" />
+				<option key="gd" value="gd Gaelic (Scotland)" />
+				<option key="he" value="he Hebrew" />
+				<option key="hi" value="hi Hindi" />
+				<option key="hr" value="hr Croatian" />
+				<option key="hu" value="hu Hungarian" />
+				<option key="id" value="id Indonesian" />
+				<option key="is" value="is Icelandic" />
+				<option key="it" value="it Italian (Standard)" />
+				<option key="ja" value="ja Japanese" />
+				<option key="ko" value="ko Korean" />
+				<option key="lt" value="lt Lithuanian" />
+				<option key="lv" value="lv Latvian" />
+				<option key="mk" value="mk Macedonian" />
+				<option key="ms" value="ms Malaysian" />
+				<option key="mt" value="mt Maltese" />
+				<option key="nl" value="nl Dutch (Standard)" />
+				<option key="no" value="no Norwegian (Bokmal/Nynorsk)" />
+				<option key="pl" value="pl Polish" />
+				<option key="pt" value="pt Portuguese (Standard)" />
+				<option key="rm" value="rm Rhaeto-Romanic" />
+				<option key="ro" value="ro Romanian" />
+				<option key="ru" value="ru Russian" />
+				<option key="sk" value="sk Slovak" />
+				<option key="sl" value="sl Slovenian" />
+				<option key="sq" value="sq Albanian" />
+				<option key="sr" value="sr Serbian (Cyrillic/Latin)" />
+				<option key="sv" value="sv Swedish" />
+				<option key="sx" value="sx Sutu" />
+				<option key="sz" value="sz Sami (Lappish)" />
+				<option key="th" value="th Thai" />
+				<option key="tn" value="tn Setswana" />
+				<option key="tr" value="tr Turkish" />
+				<option key="ts" value="ts Tsonga" />
+				<option key="uk" value="uk Ukrainian" />
+				<option key="ur" value="ur Urdu" />
+				<option key="vi" value="vi Vietnamese" />
+				<option key="xh" value="xh Xhosa" />
+				<option key="yi" value="yi Yiddish" />
+				<option key="zh" value="zh Chinese (needs subtype)" />
+				<option key="zu" value="zu Zulu" />
+			</attribute>
+			<attribute name="link" type="MULTICHOICE" typeparam=" "
+				displaylabel="%Attribute.Label.link">
+				<option key="index" value="index" />
+				<option key="subsection" value="subsection" />
+				<option key="bookmark" value="bookmark" />
+				<option key="start" value="start" />
+				<option key="next" value="next" />
+				<option key="stylesheet" value="stylesheet" />
+				<option key="chapter" value="chapter" />
+				<option key="help" value="help" />
+				<option key="alternate" value="alternate" />
+				<option key="appendix" value="appendix" />
+				<option key="contents" value="contents" />
+				<option key="section" value="section" />
+				<option key="prev" value="prev" />
+				<option key="glossary" value="glossary" />
+				<option key="copyright" value="copyright" />
+			</attribute>
+		</attributes>
+	</definition>
+
+</taglib>
diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/META-INF/MANIFEST.MF b/jsf/tests/org.eclipse.jst.pagedesigner.tests/META-INF/MANIFEST.MF
index ccb0f59..eab3da4 100644
--- a/jsf/tests/org.eclipse.jst.pagedesigner.tests/META-INF/MANIFEST.MF
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/META-INF/MANIFEST.MF
@@ -21,7 +21,10 @@
  org.eclipse.jface.text;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.jst.pagedesigner;bundle-version="[1.0.0,1.1.0)",
  org.eclipse.emf.common;bundle-version="[2.2.0,3.0.0)",
- org.eclipse.gef;bundle-version="[3.2.0,4.0.0)"
+ org.eclipse.gef;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.ui.views.properties.tabbed;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.jst.jsf.common.ui,
+ org.eclipse.jst.pagedesigner.jsf.ui
 Export-Package: org.eclipse.jst.pagedesigner.tests;x-internal:=true
 Bundle-ClassPath: pagedesignertests.jar
 Bundle-Activator: org.eclipse.jst.pagedesigner.tests.PageDesignerTestsPlugin
diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/plugin.xml b/jsf/tests/org.eclipse.jst.pagedesigner.tests/plugin.xml
index ce4218e..c06337c 100644
--- a/jsf/tests/org.eclipse.jst.pagedesigner.tests/plugin.xml
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/plugin.xml
@@ -13,5 +13,21 @@
       <elementEditFactory
             class="org.eclipse.jst.pagedesigner.tests.tagcreatorPlugin.TestCreationFactory"></elementEditFactory>
    </extension>
+   <extension
+         point="org.eclipse.ui.views.properties.tabbed.propertySections">
+      <propertySections
+            contributorId="org.eclipse.jst.pagedesigner.tabPropertyContributor">
+		   <propertySection
+		         class="org.eclipse.jst.pagedesigner.tests.tabbed.properties.sections.FakePropertySection"
+		         id="section.fake"
+		         tab="sss">
+		   </propertySection>
+		   <propertySection
+		         class="org.eclipse.jst.pagedesigner.tests.tabbed.properties.sections.FakePropertySectionUsingDialogField"
+		         id="section.fake.dialogfield"
+		         tab="sss">
+		   </propertySection>  
+      </propertySections>
+   </extension>
 
 </plugin>
diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tabbed/properties/sections/FakePropertySection.java b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tabbed/properties/sections/FakePropertySection.java
new file mode 100644
index 0000000..ece587e
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tabbed/properties/sections/FakePropertySection.java
@@ -0,0 +1,84 @@
+package org.eclipse.jst.pagedesigner.tests.tabbed.properties.sections;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jst.pagedesigner.properties.DesignerPropertyTool;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.KeyListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.views.properties.tabbed.AbstractPropertySection;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Element;
+
+/**
+ * Fake section for testing.... remove
+ * Binds to "type" attribute if present on an element
+ *
+ */
+public class FakePropertySection extends AbstractPropertySection {
+
+	private Text txt;
+	private Attr typeAttr;
+	/**
+	 * Constructor
+	 */
+	public FakePropertySection() {
+		// TODO Auto-generated constructor stub
+	}
+
+	@Override
+	public void createControls(final Composite parent,
+			TabbedPropertySheetPage tabbedPropertySheetPage) {
+	
+		super.createControls(parent, tabbedPropertySheetPage);
+		TabbedPropertySheetWidgetFactory factory = tabbedPropertySheetPage.getWidgetFactory();
+		
+		Composite outer = factory.createComposite(parent);
+		GridLayout gl = new GridLayout();
+		gl.numColumns = 2;
+		gl.marginTop = 0;
+		gl.marginBottom = 0;
+		outer.setLayout(gl);
+		//
+		CLabel lbl = factory.createCLabel(outer, "TYPE:", SWT.NONE);
+		lbl.setLayoutData(new GridData());
+		
+		txt = factory.createText(outer, "");
+		GridData gd = new GridData();
+		gd.verticalAlignment = SWT.TOP;
+		gd.grabExcessHorizontalSpace = true;
+		txt.setLayoutData(gd);
+		
+	}
+
+	@Override
+	public void setInput(IWorkbenchPart part, ISelection selection) {
+		super.setInput(part, selection);
+		Element node = DesignerPropertyTool.getElement(part, selection);
+		if (node != null){
+			typeAttr = node.getAttributeNode("type");
+			if (typeAttr != null){
+				txt.setText(typeAttr.getValue());
+				txt.addKeyListener(new KeyListener(){
+
+					public void keyPressed(KeyEvent e) {
+						//
+					}
+
+					public void keyReleased(KeyEvent e) {
+							typeAttr.setValue(typeAttr.getValue()+ new String(new char[]{e.character}));						
+					}
+					
+				});
+			}
+		}
+	}
+
+}
diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tabbed/properties/sections/FakePropertySectionUsingDialogField.java b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tabbed/properties/sections/FakePropertySectionUsingDialogField.java
new file mode 100644
index 0000000..aa6cc94
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tabbed/properties/sections/FakePropertySectionUsingDialogField.java
@@ -0,0 +1,100 @@
+package org.eclipse.jst.pagedesigner.tests.tabbed.properties.sections;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jst.jsf.common.ui.internal.dialogfield.DialogField;
+import org.eclipse.jst.jsf.common.ui.internal.dialogfield.IDialogFieldApplyListener;
+import org.eclipse.jst.jsf.common.ui.internal.dialogfield.IDialogFieldChangeListener;
+import org.eclipse.jst.jsf.common.ui.internal.dialogfield.ISupportTextValue;
+import org.eclipse.jst.jsf.common.ui.internal.dialogfield.StringDialogField;
+import org.eclipse.jst.pagedesigner.jsf.ui.attributegroup.DialogFieldFactory;
+import org.eclipse.jst.pagedesigner.properties.BaseCustomSection;
+import org.eclipse.jst.pagedesigner.properties.DesignerPropertyTool;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
+import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Element;
+
+/**
+ * Fake section for testing.... remove
+ * Binds to "type" attribute if present on element
+ *
+ */
+public class FakePropertySectionUsingDialogField extends BaseCustomSection {
+//
+//	private Text txt;
+	private Attr typeAttr;
+	private DialogField field;
+	private TabbedPropertySheetWidgetFactory factory;
+	private Composite outer;
+	/**
+	 * Constructor
+	 */
+	public FakePropertySectionUsingDialogField() {
+		// TODO Auto-generated constructor stub
+	}
+
+	@Override
+	public void createControls(final Composite parent,
+			TabbedPropertySheetPage tabbedPropertySheetPage) {
+	
+		super.createControls(parent, tabbedPropertySheetPage);
+		factory = tabbedPropertySheetPage.getWidgetFactory();
+
+		outer = factory.createComposite(parent, SWT.NONE);
+		GridLayout gl = new GridLayout();
+		gl.numColumns = 3;
+		gl.marginTop = 0;
+		gl.marginBottom = 0;
+		outer.setLayout(gl);
+
+		field = new StringDialogField();
+		GridData gd = new GridData();
+		gd.grabExcessHorizontalSpace = true;
+		gd.horizontalSpan = 2;
+		field.doFillIntoGrid(factory, outer, 3);
+		((StringDialogField)field).getTextControl(factory, outer).setLayoutData(gd);
+		field.setLabelText("TYPETESTDIALOGFIELD:");
+		 
+	}
+
+	@Override
+	public void setInput(IWorkbenchPart part, ISelection selection) {
+		super.setInput(part, selection);
+		Element node = DesignerPropertyTool.getElement(part, selection);
+		if (node != null){
+			typeAttr = node.getAttributeNode("type");
+			if (typeAttr != null){
+				DialogFieldFactory.setDialogFieldValue(field, typeAttr.getValue());
+				field.setDialogFieldApplyListener(new IDialogFieldApplyListener(){
+
+					public void dialogFieldApplied(DialogField field) {
+						typeAttr.setValue(((ISupportTextValue)field).getText());
+					}
+				});
+				field.setDialogFieldChangeListener(new IDialogFieldChangeListener(){
+
+					public void dialogFieldChanged(DialogField field) {
+							//
+					}
+				});				
+
+			};
+		}
+	}
+
+	@Override
+	protected void notifyChanged(INodeNotifier notifier, int eventType,
+			Object changedFeature, Object oldValue, Object newValue, int pos) {
+		if (field != null && changedFeature.toString().equalsIgnoreCase("type") ){
+			((ISupportTextValue)field).setTextWithoutUpdate((String)newValue);
+		}
+		
+	}
+
+}
