General test coverage improvement for frameworks and API.
diff --git a/jsf/tests/org.eclipse.jst.jsf.contentassist.tests/src/org/eclipse/jst/jsf/contentassist/tests/AllTests.java b/jsf/tests/org.eclipse.jst.jsf.contentassist.tests/src/org/eclipse/jst/jsf/contentassist/tests/AllTests.java
index 253cb18..b664f7d 100644
--- a/jsf/tests/org.eclipse.jst.jsf.contentassist.tests/src/org/eclipse/jst/jsf/contentassist/tests/AllTests.java
+++ b/jsf/tests/org.eclipse.jst.jsf.contentassist.tests/src/org/eclipse/jst/jsf/contentassist/tests/AllTests.java
@@ -28,8 +28,8 @@
         TestSuite suite = new TestSuite("Test for org.eclipse.jst.jsf.contentassist");
         //$JUnit-BEGIN$
         suite.addTestSuite(CompletionPrefixTest.class);
-//        suite.addTestSuite(Test_bug_149224.class);
-//        suite.addTestSuite(Test_bug_149743.class);
+        suite.addTestSuite(Test_bug_149224.class);
+        suite.addTestSuite(Test_bug_149743.class);
         //$JUnit-END$
         return suite;
     }
diff --git a/jsf/tests/org.eclipse.jst.jsf.core.tests/src/org/eclipse/jst/jsf/core/tests/AllTests.java b/jsf/tests/org.eclipse.jst.jsf.core.tests/src/org/eclipse/jst/jsf/core/tests/AllTests.java
index 55b642b..d7a5296 100644
--- a/jsf/tests/org.eclipse.jst.jsf.core.tests/src/org/eclipse/jst/jsf/core/tests/AllTests.java
+++ b/jsf/tests/org.eclipse.jst.jsf.core.tests/src/org/eclipse/jst/jsf/core/tests/AllTests.java
@@ -13,6 +13,7 @@
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
+import org.eclipse.jst.jsf.core.tests.appconfig.validation.AppConfigValidationUtilTestCase;
 import org.eclipse.jst.jsf.core.tests.jsflibraryconfig.JSFLibraryConfigDialogSettingDataTestCases;
 import org.eclipse.jst.jsf.core.tests.jsflibraryconfig.JSFLibraryConfigModelTestCases;
 import org.eclipse.jst.jsf.core.tests.jsflibraryconfig.JSFLibraryRegistryUtilTestCases;
@@ -25,10 +26,16 @@
 import org.eclipse.jst.jsf.core.tests.jsflibraryregistry.MaintainDefaultImplementationAdapterTestCases;
 import org.eclipse.jst.jsf.core.tests.jsflibraryregistry.migration.MigrationV1toV2Test;
 import org.eclipse.jst.jsf.core.tests.project.facet.JSFFacetInstallDataModelProviderTestCases;
+import org.eclipse.jst.jsf.core.tests.set.ConcreteAxiomaticSetTest;
+import org.eclipse.jst.jsf.core.tests.set.NodeSetTest;
+import org.eclipse.jst.jsf.core.tests.set.TestMemberConstraint;
+import org.eclipse.jst.jsf.core.tests.set.TestXPathValidation;
+import org.eclipse.jst.jsf.core.tests.tagmatcher.TestXPathTagMatcher;
 import org.eclipse.jst.jsf.core.tests.types.TypeComparatorTests;
 import org.eclipse.jst.jsf.core.tests.types.TypeTransformerTests;
 import org.eclipse.jst.jsf.core.tests.util.TestJDTBeanIntrospector;
 import org.eclipse.jst.jsf.core.tests.util.TestJDTBeanPropertyWorkingCopy;
+import org.eclipse.jst.jsf.core.tests.util.TestTypeUtil;
 import org.eclipse.jst.jsf.core.tests.validation.TestJSPSemanticsValidator;
 
 /**
@@ -46,6 +53,7 @@
 		//$JUnit-BEGIN$
         suite.addTestSuite(TestJDTBeanPropertyWorkingCopy.class);
         suite.addTestSuite(TestJDTBeanIntrospector.class);
+        suite.addTestSuite(TestTypeUtil.class);
 
 		suite.addTestSuite(TypeComparatorTests.class);
 		suite.addTestSuite(TypeTransformerTests.class);
@@ -67,6 +75,12 @@
 		suite.addTestSuite(JSFLibraryRegistryUtilTestCases.class);
 
 		suite.addTestSuite(TestJSPSemanticsValidator.class);
+		suite.addTestSuite(AppConfigValidationUtilTestCase.class);
+		suite.addTestSuite(TestMemberConstraint.class);
+		suite.addTestSuite(TestXPathValidation.class);
+		suite.addTestSuite(TestXPathTagMatcher.class);
+		suite.addTestSuite(ConcreteAxiomaticSetTest.class);
+		suite.addTestSuite(NodeSetTest.class);
 		
         // NOTE: migration tests affect workspace meta-data files, but they
         // should play nice with others
diff --git a/jsf/tests/org.eclipse.jst.jsf.core.tests/src/org/eclipse/jst/jsf/core/tests/set/ConcreteAxiomaticSetTest.java b/jsf/tests/org.eclipse.jst.jsf.core.tests/src/org/eclipse/jst/jsf/core/tests/set/ConcreteAxiomaticSetTest.java
new file mode 100644
index 0000000..5757772
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.core.tests/src/org/eclipse/jst/jsf/core/tests/set/ConcreteAxiomaticSetTest.java
@@ -0,0 +1,153 @@
+package org.eclipse.jst.jsf.core.tests.set;
+
+import junit.framework.TestCase;
+
+import org.eclipse.jst.jsf.common.sets.AxiomaticSet;
+import org.eclipse.jst.jsf.common.sets.ConcreteAxiomaticSet;
+
+public class ConcreteAxiomaticSetTest extends TestCase 
+{
+	AxiomaticSet  	_primaryColours;
+	AxiomaticSet	_secondaryColours;
+	AxiomaticSet	_allMainColours;
+	
+	AxiomaticSet	_palette;
+	AxiomaticSet	_overlappingSet;
+	AxiomaticSet    _emptySet;
+	
+	@Override
+	protected void setUp() throws Exception 
+	{
+		super.setUp();
+		
+		// make concreteSet1 disjoint with concreteSet2 and non-disjoint with concrete3
+		
+		_emptySet = new ConcreteAxiomaticSet();
+		
+		_primaryColours = new ConcreteAxiomaticSet();
+		_primaryColours.add("blue");
+		_primaryColours.add("red");
+		_primaryColours.add("yellow");
+
+		_secondaryColours = new ConcreteAxiomaticSet();
+		_secondaryColours.add("green");
+		_secondaryColours.add("purple");
+		_secondaryColours.add("orange");
+		
+		_allMainColours = new ConcreteAxiomaticSet();
+		_allMainColours.add("blue");
+		_allMainColours.add("red");
+		_allMainColours.add("yellow");
+		_allMainColours.add("green");
+		_allMainColours.add("purple");
+		_allMainColours.add("orange");
+		
+		_palette = new ConcreteAxiomaticSet();
+		_palette.add("blue");
+		_palette.add("green");
+		_palette.add("burgundy");
+		
+		_overlappingSet = new ConcreteAxiomaticSet();
+		_overlappingSet.add("blue");
+		_overlappingSet.add("red");
+		_overlappingSet.add("yellow");
+		_overlappingSet.add("green");
+		_overlappingSet.add("purple");
+		_overlappingSet.add("burgundy");
+	}
+
+	@Override
+	protected void tearDown() throws Exception 
+	{
+		super.tearDown();
+		
+		_primaryColours = null;
+		_secondaryColours = null;
+		_palette = null;
+		_emptySet = null;
+	}
+
+	public void testIntersect() 
+	{
+		// intersect the empty is set an identity
+		assertTrue(_primaryColours.intersect(_secondaryColours).isEmpty());
+		
+		// non-disjoint intersection not empty
+		assertFalse(_primaryColours.intersect(_palette).isEmpty());
+		assertEquals(1, _primaryColours.intersect(_palette).size());
+		assertEquals("blue", _primaryColours.intersect(_palette).getFirstElement());
+
+		// intersection is commutative
+		assertEquals(_primaryColours.intersect(_palette), _palette.intersect(_primaryColours));
+		//intersection is associative
+		assertEquals(_primaryColours.intersect(_overlappingSet).intersect(_palette)
+					, _overlappingSet.intersect(_palette).intersect(_primaryColours));		
+		
+		// intersection of disjoint sets are empty
+		assertTrue(_primaryColours.intersect(_secondaryColours).isEmpty());
+		
+		// intersection of subset of a set with the set is the subset
+		assertEquals(_primaryColours, _allMainColours.intersect(_primaryColours));
+		assertEquals(_secondaryColours, _allMainColours.intersect(_secondaryColours));
+	}
+
+	public void testIsEquivalent() 
+	{
+		// identity: a set is equal to itself
+		assertTrue(_primaryColours.isEquivalent(_primaryColours));
+		
+		// two unequal sets are not equivalent
+		assertFalse(_primaryColours.isEquivalent(_secondaryColours));
+	}
+
+	public void testUnion() 
+	{
+		// union with empty is identity
+		assertEquals(_primaryColours, _primaryColours.union(_emptySet));
+		
+		// primary and secondary union to allMain
+		assertEquals(_allMainColours, _primaryColours.union(_secondaryColours));
+		
+		// union is commutative
+		assertEquals(_primaryColours.union(_secondaryColours)
+				    , _secondaryColours.union(_primaryColours));
+		// union is associative
+		assertEquals(_primaryColours.union(_secondaryColours).union(_overlappingSet), 
+						_secondaryColours.union(_overlappingSet).union(_primaryColours));
+	}
+
+	public void testIsDisjoint() {
+		// primary colours and secondary have no common elements
+		assertTrue(_primaryColours.isDisjoint(_secondaryColours));
+		
+		// all sets are disjoint with the empty set
+		assertTrue(_primaryColours.isDisjoint(_emptySet));
+		assertTrue(_secondaryColours.isDisjoint(_emptySet));
+		assertTrue(_emptySet.isDisjoint(_allMainColours));
+		
+		// subset is not disjoint with set
+		assertFalse(_primaryColours.isDisjoint(_allMainColours));
+	}
+
+	public void testGetFirstElement() 
+	{
+		// TODO:
+	}
+
+	public void testSubtract() {
+		// A - B = A if A and B are disjoint
+		assertEquals(_primaryColours, _primaryColours.subtract(_secondaryColours));
+		
+		// A - B = C where A = B U C and B and C are disjoint
+		assertEquals(_secondaryColours, _allMainColours.subtract(_primaryColours));
+		assertEquals(_primaryColours, _allMainColours.subtract(_secondaryColours));
+		
+		// A - B = A if B is empty
+		assertEquals(_secondaryColours, _secondaryColours.subtract(_emptySet));
+		
+		AxiomaticSet remainder = _allMainColours.subtract(_overlappingSet);
+		assertEquals(1, remainder.size());
+		assertTrue(remainder.contains("orange"));
+	}
+
+}
diff --git a/jsf/tests/org.eclipse.jst.jsf.core.tests/src/org/eclipse/jst/jsf/core/tests/set/NodeSetTest.java b/jsf/tests/org.eclipse.jst.jsf.core.tests/src/org/eclipse/jst/jsf/core/tests/set/NodeSetTest.java
new file mode 100644
index 0000000..9dd0910
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.core.tests/src/org/eclipse/jst/jsf/core/tests/set/NodeSetTest.java
@@ -0,0 +1,131 @@
+package org.eclipse.jst.jsf.core.tests.set;
+
+import org.eclipse.jst.jsf.common.sets.AxiomaticSet;
+import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
+import org.eclipse.jst.jsf.core.set.mapping.ElementToTagIdentifierMapping;
+import org.eclipse.jst.jsf.core.tagmatcher.XPathMatchingAlgorithm;
+import org.eclipse.jst.jsf.core.tests.tagmatcher.BaseTagMatcherTestCase;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
+import org.w3c.dom.Document;
+
+public class NodeSetTest extends BaseTagMatcherTestCase 
+{
+	private AxiomaticSet  _ancestorsOfInputText;
+	private AxiomaticSet  _ancestorsOfCommandButton;
+	private AxiomaticSet  _ancestorsOfOutputText;
+	private AxiomaticSet  _inputTextSingletonSet;
+	
+	@Override
+	protected void setUp() throws Exception 
+	{
+        _srcFileName = "/testfiles/jsps/testdata1.jsp.data";
+        _destFileName = "/testdata1.jsp";
+        
+		super.setUp();
+		
+		_ancestorsOfInputText = getAncestorsOf("/view/html/body/form/panelGrid/inputText", 5);
+		_ancestorsOfCommandButton = getAncestorsOf("/view/html/body/form/commandButton", 4);
+		_ancestorsOfOutputText = getAncestorsOf("/view/html/body/form/h1/outputText", 5);
+		
+		Document doc = ((IDOMModel)_structuredModel).getDocument();
+        XPathMatchingAlgorithm matcher = new XPathMatchingAlgorithm("/view/html/body/form/panelGrid/inputText");
+        _inputTextSingletonSet = matcher.evaluate(doc);
+        assertEquals(1, _inputTextSingletonSet.size());
+	}
+
+	@Override
+	protected void tearDown() throws Exception 
+	{
+		super.tearDown();
+	}
+
+	public void testIntersect() 
+	{
+		AxiomaticSet set1 = 
+			_ancestorsOfInputText.intersect(_ancestorsOfCommandButton);
+		set1 = new ElementToTagIdentifierMapping().map(set1);
+		assertEquals(4, set1.size());
+		assertTrue(set1.contains(IJSFConstants.TAG_IDENTIFIER_FORM));
+		assertTrue(set1.contains(IJSFConstants.TAG_IDENTIFIER_VIEW));
+		// should not contain panelgrid because command button not in it
+		assertFalse(set1.contains(IJSFConstants.TAG_IDENTIFIER_PANEL_GRID));
+		
+		AxiomaticSet set2 =
+			_ancestorsOfOutputText.intersect(_ancestorsOfCommandButton);
+		set2 = new ElementToTagIdentifierMapping().map(set2);
+		assertEquals(4, set2.size());
+		assertTrue(set2.contains(IJSFConstants.TAG_IDENTIFIER_FORM));
+		assertTrue(set2.contains(IJSFConstants.TAG_IDENTIFIER_VIEW));
+		
+		// result is same as command button's ancestors, but output text
+		// has an additional h1 ancestor
+		assertFalse(set2.equals(new ElementToTagIdentifierMapping().map(_ancestorsOfOutputText)));
+		assertTrue(set2.equals(new ElementToTagIdentifierMapping().map(_ancestorsOfCommandButton)));
+	}
+
+	public void testIsEquivalent() throws Exception
+	{
+		// this == compareTo
+		assertTrue(_ancestorsOfInputText.isEquivalent(_ancestorsOfInputText));
+		
+		// this._data == compareTo._data
+		//assertTrue(_ancestorsOfInputText.isEquivalent((AxiomaticSet) ((NodeSet)_ancestorsOfInputText).clone()));
+		
+		// this.size() != compareTo.size();
+		assertFalse(_ancestorsOfInputText.isEquivalent(_ancestorsOfCommandButton));
+		
+		// this.size() == compareTo.size() but contents not same
+		assertFalse(_ancestorsOfInputText.isEquivalent(_ancestorsOfOutputText));
+		
+		// this.size() == compareTo.size() AND contents same
+		assertTrue(_ancestorsOfInputText.isEquivalent(getAncestorsOf("/view/html/body/form/panelGrid/inputText", -1)));
+	}
+
+	public void testUnion() 
+	{
+		AxiomaticSet set1 = 
+			_ancestorsOfInputText.union(_ancestorsOfCommandButton);
+		set1 = new ElementToTagIdentifierMapping().map(set1);
+		assertEquals(5, set1.size());
+		assertTrue(set1.contains(IJSFConstants.TAG_IDENTIFIER_FORM));
+		assertTrue(set1.contains(IJSFConstants.TAG_IDENTIFIER_VIEW));
+		assertTrue(set1.contains(IJSFConstants.TAG_IDENTIFIER_PANEL_GRID));
+		
+		AxiomaticSet set2 =
+			_ancestorsOfOutputText.union(_ancestorsOfCommandButton);
+		set2 = new ElementToTagIdentifierMapping().map(set2);
+		assertEquals(5, set2.size());
+		assertTrue(set2.contains(IJSFConstants.TAG_IDENTIFIER_FORM));
+		assertTrue(set2.contains(IJSFConstants.TAG_IDENTIFIER_VIEW));
+		assertFalse(set2.contains(IJSFConstants.TAG_IDENTIFIER_PANEL_GRID));
+	}
+
+	public void testIsDisjoint() 
+	{
+		assertFalse(_ancestorsOfInputText.isDisjoint(_ancestorsOfCommandButton));
+		assertFalse(_ancestorsOfInputText.isDisjoint(_ancestorsOfOutputText));
+		assertFalse(_ancestorsOfInputText.isDisjoint(_ancestorsOfInputText));
+		
+		assertTrue(_ancestorsOfInputText.isDisjoint(_inputTextSingletonSet));
+		assertTrue(_ancestorsOfOutputText.isDisjoint(_inputTextSingletonSet));
+		assertTrue(_ancestorsOfCommandButton.isDisjoint(_inputTextSingletonSet));
+	}
+
+	public void testSubtract() 
+	{
+		// the only non-common parent is the panel grid
+		AxiomaticSet  set1 = _ancestorsOfInputText.subtract(_ancestorsOfCommandButton);
+		set1 = new ElementToTagIdentifierMapping().map(set1);
+		assertEquals(1, set1.size());
+		assertTrue(set1.contains(IJSFConstants.TAG_IDENTIFIER_PANEL_GRID));
+		
+		// all of command button's parents are also parents of inputText
+		set1 = _ancestorsOfCommandButton.subtract(_ancestorsOfInputText);
+		set1 = new ElementToTagIdentifierMapping().map(set1);
+		assertEquals(0, set1.size());
+		
+		// no common elements
+		set1 = _ancestorsOfCommandButton.subtract(_inputTextSingletonSet);
+		assertEquals(_ancestorsOfCommandButton, set1);
+	}
+}
diff --git a/jsf/tests/org.eclipse.jst.jsf.core.tests/src/org/eclipse/jst/jsf/core/tests/set/TestElementToTagIdentifierMapping.java b/jsf/tests/org.eclipse.jst.jsf.core.tests/src/org/eclipse/jst/jsf/core/tests/set/TestElementToTagIdentifierMapping.java
index cf8b170..2c6438e 100644
--- a/jsf/tests/org.eclipse.jst.jsf.core.tests/src/org/eclipse/jst/jsf/core/tests/set/TestElementToTagIdentifierMapping.java
+++ b/jsf/tests/org.eclipse.jst.jsf.core.tests/src/org/eclipse/jst/jsf/core/tests/set/TestElementToTagIdentifierMapping.java
@@ -14,7 +14,8 @@
 
 public class TestElementToTagIdentifierMapping extends BaseTagMatcherTestCase
 {
-    protected void setUp() throws Exception {
+    protected void setUp() throws Exception 
+    {
         _srcFileName = "/testfiles/jsps/testdata1.jsp.data";
         _destFileName = "/testdata1.jsp";
         super.setUp();
diff --git a/jsf/tests/org.eclipse.jst.jsf.core.tests/src/org/eclipse/jst/jsf/core/tests/set/TestXPathValidation.java b/jsf/tests/org.eclipse.jst.jsf.core.tests/src/org/eclipse/jst/jsf/core/tests/set/TestXPathValidation.java
index ff8ebc2..b61e16d 100644
--- a/jsf/tests/org.eclipse.jst.jsf.core.tests/src/org/eclipse/jst/jsf/core/tests/set/TestXPathValidation.java
+++ b/jsf/tests/org.eclipse.jst.jsf.core.tests/src/org/eclipse/jst/jsf/core/tests/set/TestXPathValidation.java
@@ -24,11 +24,13 @@
 
 public class TestXPathValidation extends BaseTagMatcherTestCase {
 
-    protected void setUp() throws Exception {
+    protected void setUp() throws Exception 
+    {
         _srcFileName = "/testfiles/jsps/testdata1.jsp.data";
         _destFileName = "/testdata1.jsp";
+        
         super.setUp();
-    }
+   }
 
     public void testValidateParentMembership()
     {
@@ -47,7 +49,7 @@
         
         // test a constraint set that isn't satisfied: no ancestor is inputLabel
         constraintSet.clear();
-        constraintSet.add(TagIdentifierFactory.createJSPTagWrapper(ITLDConstants.URI_JSF_HTML, "form"));
+        constraintSet.add(TagIdentifierFactory.createJSPTagWrapper(ITLDConstants.URI_JSF_HTML, "inputLabel"));
         memberConstraint = new MemberConstraint(constraintSet);
         assertTrue(memberConstraint.failsConstraint(inputAncestors));
     }
diff --git a/jsf/tests/org.eclipse.jst.jsf.core.tests/src/org/eclipse/jst/jsf/core/tests/tagmatcher/BaseTagMatcherTestCase.java b/jsf/tests/org.eclipse.jst.jsf.core.tests/src/org/eclipse/jst/jsf/core/tests/tagmatcher/BaseTagMatcherTestCase.java
index 06c7998..4e7d89d 100644
--- a/jsf/tests/org.eclipse.jst.jsf.core.tests/src/org/eclipse/jst/jsf/core/tests/tagmatcher/BaseTagMatcherTestCase.java
+++ b/jsf/tests/org.eclipse.jst.jsf.core.tests/src/org/eclipse/jst/jsf/core/tests/tagmatcher/BaseTagMatcherTestCase.java
@@ -13,13 +13,20 @@
 import junit.framework.TestCase;
 
 import org.eclipse.core.resources.IFile;
+import org.eclipse.jst.jsf.common.sets.AxiomaticSet;
+import org.eclipse.jst.jsf.core.IJSFCoreConstants;
+import org.eclipse.jst.jsf.core.tagmatcher.XPathMatchingAlgorithm;
 import org.eclipse.jst.jsf.core.tests.TestsPlugin;
+import org.eclipse.jst.jsf.core.tests.util.JSFFacetedTestEnvironment;
 import org.eclipse.jst.jsf.test.util.JDTTestEnvironment;
 import org.eclipse.jst.jsf.test.util.JSFTestUtil;
 import org.eclipse.jst.jsf.test.util.WebProjectTestEnvironment;
 import org.eclipse.wst.sse.core.StructuredModelManager;
 import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
 import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
 
 
 
@@ -65,16 +72,31 @@
         
         _testEnv = new WebProjectTestEnvironment("ELValidationTest_"+this.getClass().getName()+"_"+getName());
         _testEnv.createProject(false);
-        assertNotNull(_testEnv);       
+        assertNotNull(_testEnv);
         assertNotNull(_testEnv.getTestProject());
         assertTrue(_testEnv.getTestProject().isAccessible());
 
+        // load a dummy tld for core
+        // NOTE: the TLDs seem to need to be loaded BEFORE any JSPs that use them.
+        // probably adding the jsp kicks off something that searches for TLD's that doesn't
+        // get kicked if the TLDs are added after.
+        _testEnv.loadResourceInWebRoot(TestsPlugin.getDefault().getBundle()
+    			, "/testfiles/myfaces_core.tld.data", "META-INF/myfaces_core.tld");
+
+        _testEnv.loadResourceInWebRoot(TestsPlugin.getDefault().getBundle()
+    			, "/testfiles/myfaces_html.tld.data", "META-INF/myfaces_html.tld");
+
         _testJSP = (IFile) _testEnv.loadResourceInWebRoot
             (TestsPlugin.getDefault().getBundle(),
                     _srcFileName, _destFileName);
 
         _structuredModel = StructuredModelManager.getModelManager().getModelForRead(_testJSP);
         _structuredDocument = _structuredModel.getStructuredDocument();
+        
+        // 	initialize test case for faces 1.1
+        JSFFacetedTestEnvironment jsfFacedEnv = new JSFFacetedTestEnvironment(_testEnv);
+        jsfFacedEnv.initialize(IJSFCoreConstants.FACET_VERSION_1_1);
+
     }
     
     protected void tearDown() throws Exception 
@@ -87,5 +109,26 @@
         }
         _testEnv.getTestProject().close(null);
     }
+    
+    protected final AxiomaticSet getAncestorsOf(String xpathToChild, int expectedAncestors)
+    {
+        Document doc = ((IDOMModel)_structuredModel).getDocument();
+        XPathMatchingAlgorithm matcher = new XPathMatchingAlgorithm(xpathToChild);
+        AxiomaticSet  set = matcher.evaluate(doc);
+        assertEquals(1, set.size());
+     
+        // get all of the ancestors of the inputText
+        final Node inputText = (Node) set.getFirstElement();
+        matcher = new XPathMatchingAlgorithm("ancestor::*");
+        AxiomaticSet result =  matcher.evaluate(inputText);
 
+        assertNotNull(result);
+
+        if (expectedAncestors >= 0)
+        {
+        	assertEquals(expectedAncestors, result.size());
+        }
+
+        return result;
+    }
 }
diff --git a/jsf/tests/org.eclipse.jst.jsf.core.tests/src/org/eclipse/jst/jsf/core/tests/tagmatcher/TestXPathTagMatcher.java b/jsf/tests/org.eclipse.jst.jsf.core.tests/src/org/eclipse/jst/jsf/core/tests/tagmatcher/TestXPathTagMatcher.java
index 3e28088..1a83d70 100644
--- a/jsf/tests/org.eclipse.jst.jsf.core.tests/src/org/eclipse/jst/jsf/core/tests/tagmatcher/TestXPathTagMatcher.java
+++ b/jsf/tests/org.eclipse.jst.jsf.core.tests/src/org/eclipse/jst/jsf/core/tests/tagmatcher/TestXPathTagMatcher.java
@@ -12,10 +12,18 @@
 
 import java.util.Iterator;
 
+import org.eclipse.jst.jsf.common.dom.TagIdentifier;
 import org.eclipse.jst.jsf.common.sets.AxiomaticSet;
+import org.eclipse.jst.jsf.context.resolver.structureddocument.IDOMContextResolver;
+import org.eclipse.jst.jsf.context.resolver.structureddocument.IStructuredDocumentContextResolverFactory;
+import org.eclipse.jst.jsf.context.structureddocument.IStructuredDocumentContext;
+import org.eclipse.jst.jsf.context.structureddocument.IStructuredDocumentContextFactory;
+import org.eclipse.jst.jsf.core.internal.tld.CMUtil;
+import org.eclipse.jst.jsf.core.set.mapping.ElementToTagIdentifierMapping;
 import org.eclipse.jst.jsf.core.tagmatcher.XPathMatchingAlgorithm;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
 import org.w3c.dom.Document;
+import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 
 
@@ -38,7 +46,15 @@
         
         // get an input nested along a form path
         assertEquals(1, set.size());
-        Node node = (Node) set.getFirstElement();
+		IStructuredDocumentContext context =
+			IStructuredDocumentContextFactory.INSTANCE
+				.getContext(_structuredDocument, 544);
+		IDOMContextResolver resolver = 
+			IStructuredDocumentContextResolverFactory.INSTANCE
+				.getDOMContextResolver(context);
+
+        Node node = resolver.getNode();//(Node) set.getFirstElement();
+        System.out.println(CMUtil.getElementNamespaceURI((Element) node));
         XPathMatchingAlgorithm  matcher = new XPathMatchingAlgorithm("html/body/form/panelGrid/inputText");
         set = matcher.evaluate(node);
         System.out.println(System.currentTimeMillis());
@@ -46,13 +62,18 @@
         
         // get all of the ancestors of the inputText
         final Node inputText = (Node) set.getFirstElement();
+        System.out.println(CMUtil.getElementNamespaceURI((Element) inputText));
         matcher = new XPathMatchingAlgorithm("ancestor::*");
         set = matcher.evaluate(inputText);
         assertEquals(5,set.size());
-        
+
+        set = new ElementToTagIdentifierMapping().map(set);
+
         for (final Iterator it = set.iterator(); it.hasNext();)
         {
-            System.out.println(it.next());
+        	TagIdentifier tagId = (TagIdentifier) it.next();
+        	System.out.println(tagId.getUri());
+            System.out.println(tagId.getTagName());
         }
     }
 }
diff --git a/jsf/tests/org.eclipse.jst.jsf.core.tests/src/org/eclipse/jst/jsf/core/tests/util/TestTypeUtil.java b/jsf/tests/org.eclipse.jst.jsf.core.tests/src/org/eclipse/jst/jsf/core/tests/util/TestTypeUtil.java
index 4871538..0811bb0 100644
--- a/jsf/tests/org.eclipse.jst.jsf.core.tests/src/org/eclipse/jst/jsf/core/tests/util/TestTypeUtil.java
+++ b/jsf/tests/org.eclipse.jst.jsf.core.tests/src/org/eclipse/jst/jsf/core/tests/util/TestTypeUtil.java
@@ -11,14 +11,14 @@
  ********************************************************************************/
 package org.eclipse.jst.jsf.core.tests.util;
 
-import java.util.Map;
+import java.util.ArrayList;
+import java.util.List;
 
 import junit.framework.TestCase;
 
+import org.eclipse.jdt.core.IMethod;
 import org.eclipse.jdt.core.IType;
 import org.eclipse.jst.jsf.common.internal.types.TypeConstants;
-import org.eclipse.jst.jsf.common.util.JDTBeanIntrospector;
-import org.eclipse.jst.jsf.common.util.JDTBeanProperty;
 import org.eclipse.jst.jsf.common.util.TypeUtil;
 import org.eclipse.jst.jsf.core.tests.TestsPlugin;
 import org.eclipse.jst.jsf.test.util.JDTTestEnvironment;
@@ -32,9 +32,11 @@
     private IType                                   _testBean1Type;
     private IType                                   _testBeanSubclassType;
     private IType                                   _testBeanGenericType;
-    private Map<String, JDTBeanProperty>            _properties;
-    private Map<String, JDTBeanProperty>            _subClassProperties;
-    private Map<String, JDTBeanProperty>            _genericTypeProperties;
+    private IType									_testEnum1Type;
+   
+//    private Map<String, JDTBeanProperty>            _properties;
+//    private Map<String, JDTBeanProperty>            _subClassProperties;
+//    private Map<String, JDTBeanProperty>            _genericTypeProperties;
 
     private final static String srcFolderName = "src";
     private final static String packageName1 = "com.test";
@@ -42,6 +44,8 @@
     private final static String testBeanSubclassName1 = "TestBean1Subclass";
     private final static String testAnotherBeanName = "AnotherBean";
     private final static String testBeanGenericName = "TestBeanGeneric";
+    private final static String testEnumName1 = "TestEnum1";
+    //private final static String testEnumName2 = "TestEnum2";
 
     protected void setUp() throws Exception {
         super.setUp();
@@ -89,21 +93,31 @@
 
         _testBeanGenericType = _jdtTestEnvironment.getJavaProject().findType(packageName1+"."+testBeanGenericName); 
         assertNotNull(_testBeanGenericType);
-        
+
+        // load TestEnum1
+        codeRes = new TestFileResource();
+        codeRes.load(TestsPlugin.getDefault().getBundle(), "/testfiles/TestEnum1.java.data");
+        code = codeRes.toString();
+        _jdtTestEnvironment.addSourceFile(srcFolderName, packageName1, testEnumName1, code);
+
+        _testEnum1Type = _jdtTestEnvironment.getJavaProject().findType(packageName1+"."+testEnumName1); 
+        assertNotNull(_testEnum1Type);
+        assertTrue(_testEnum1Type.isEnum());
+
         // introspect after classes loaded to ensure all dependencies
         // are in the project
-        JDTBeanIntrospector  beanIntrospector = 
-            new JDTBeanIntrospector(_testBean1Type);
+//        JDTBeanIntrospector  beanIntrospector = 
+//            new JDTBeanIntrospector(_testBean1Type);
+//        
+//        _properties = beanIntrospector.getProperties();
+//        
+//        beanIntrospector = 
+//            new JDTBeanIntrospector(_testBeanSubclassType);
+//        
+//        _subClassProperties = beanIntrospector.getProperties();
         
-        _properties = beanIntrospector.getProperties();
-        
-        beanIntrospector = 
-            new JDTBeanIntrospector(_testBeanSubclassType);
-        
-        _subClassProperties = beanIntrospector.getProperties();
-        
-        beanIntrospector = 
-            new JDTBeanIntrospector(_testBeanGenericType);
+//        beanIntrospector = 
+//            new JDTBeanIntrospector(_testBeanGenericType);
     }
 
     protected void tearDown() throws Exception {
@@ -130,16 +144,42 @@
         assertEquals(TypeConstants.TYPE_COLLECTION, TypeUtil.resolveTypeSignature(_testBean1Type, "QCollection;", false));
         assertEquals(TypeConstants.TYPE_MAP, TypeUtil.resolveTypeSignature(_testBean1Type, "QMap;", true));
         assertEquals(TypeConstants.TYPE_MAP, TypeUtil.resolveTypeSignature(_testBean1Type, "QMap;", false));
-        
+
         // in this case, the provided signature has type erasure, so the answer will different depending on typeErasure flag
         final String typeSigWithErasure = TypeUtil.resolveTypeSignature(_testBean1Type, "QMap<QString;QString;>;", true);        
         assertEquals(TypeConstants.TYPE_MAP, typeSigWithErasure);
         final String typeSigNoErasure = TypeUtil.resolveTypeSignature(_testBean1Type, "QMap<QString;QString;>;", false);
         assertEquals("Ljava.util.Map<Ljava.lang.String;Ljava.lang.String;>;", typeSigNoErasure);
+
+        // test resolution of type paramaters
+        IType mapType = TypeUtil.resolveType(_jdtTestEnvironment.getJavaProject(), "Ljava.util.Map;");
+        assertNotNull(mapType);
+        assertEquals(TypeConstants.TYPE_JAVAOBJECT, TypeUtil.resolveTypeSignature(mapType, "TV;", false));
+        
+        // unfound signature
+        assertEquals("QSomeNotRealClass;"
+        		, TypeUtil.resolveTypeSignature(_testBean1Type, "QSomeNotRealClass;", false));
+
+        // arrays
+        assertEquals("[I"
+        		, TypeUtil.resolveTypeSignature(_testBean1Type, "[I"));
+        
+        assertEquals("[Ljava.lang.String;"
+        		, TypeUtil.resolveTypeSignature(_testBean1Type, "[QString;"));
+
+        assertEquals("[Ljava.util.Map;"
+        		, TypeUtil.resolveTypeSignature(_testBean1Type, "[QMap;"));
+
+        assertEquals("[Ljava.util.Collection;"
+        		, TypeUtil.resolveTypeSignature(_testBean1Type, "[QCollection;"));
+
+        // array of arrays
+        assertEquals("[[[Ljava.lang.String;"
+        		, TypeUtil.resolveTypeSignature(_testBean1Type, "[[[QString;"));
         
         // cover cases where wildcards and/or capture are used.  All should be equivalent to the case for
         // the same signature without wildcards and capture
-        
+
         // with type erasure
         runWildcardAndCapture(typeSigWithErasure, true);
         // and without type erasure
@@ -168,30 +208,110 @@
         assertEquals(expected, TypeUtil.resolveTypeSignature(_testBean1Type, "QMap<!+QString;!+QString;>;", typeErasure));
         assertEquals(expected, TypeUtil.resolveTypeSignature(_testBean1Type, "QMap<!+QString;QString;>;", typeErasure));
         assertEquals(expected, TypeUtil.resolveTypeSignature(_testBean1Type, "QMap<QString;!+QString;>;", typeErasure));
+        
+        assertEquals("Ljava.lang.String;", TypeUtil.resolveTypeSignature(_testBean1Type, "!+QString;", typeErasure));
+        
+    }
+    
+    public void testCanNeverBeEqual()
+    {
+    	// one of the arguments is the enum base
+    	assertFalse(TypeUtil.canNeverBeEqual(TypeConstants.TYPE_ENUM_BASE, "Lcom.test.SomeEnum;"));
+    	assertFalse(TypeUtil.canNeverBeEqual("Lcom.test.SomeEnum;", TypeConstants.TYPE_ENUM_BASE));
+    	
+    	assertTrue(TypeUtil.canNeverBeEqual("Lcom.test.SomeEnum1;", "Lcom.test.SomeEnum2;"));
+    	assertFalse(TypeUtil.canNeverBeEqual("Lcom.test.SomeEnum1;", "Lcom.test.SomeEnum1;"));
+    }
+    
+    public void testIsEnumsCompareCompatible()
+    {
+    	// one of the arguments is the enum base
+    	assertTrue(TypeUtil.isEnumsCompareCompatible(TypeConstants.TYPE_ENUM_BASE, "Lcom.test.SomeEnum;"));
+    	assertTrue(TypeUtil.isEnumsCompareCompatible("Lcom.test.SomeEnum;", TypeConstants.TYPE_ENUM_BASE));
+    	
+    	assertFalse(TypeUtil.isEnumsCompareCompatible("Lcom.test.SomeEnum1;", "Lcom.test.SomeEnum2;"));
+    	assertTrue(TypeUtil.isEnumsCompareCompatible("Lcom.test.SomeEnum1;", "Lcom.test.SomeEnum1;"));
     }
     
 //    public void testResolveTypeSignatureITypeStringBoolean() {
 //        fail("Not yet implemented");
 //    }
 //
-//    public void testGetSignature() {
-//        fail("Not yet implemented");
-//    }
-//
-//    public void testResolveMethodSignature() {
-//        fail("Not yet implemented");
-//    }
-//
+    public void testGetSignature() 
+    {
+    	assertEquals("Lcom.test.TestBean1;",TypeUtil.getSignature(_testBean1Type));
+    }
+
+    public void testResolveMethodSignature()  throws Exception
+    {
+        assertEquals("()Ljava.lang.String;"
+        		, TypeUtil.resolveMethodSignature(_testBean1Type, "()QString;"));
+        assertEquals("(Ljava.lang.String;)V"
+        		, TypeUtil.resolveMethodSignature(_testBean1Type, "(QString;)V"));
+        assertEquals("(Ljava.lang.String;Z)V"
+        		, TypeUtil.resolveMethodSignature(_testBean1Type, "(QString;Z)V"));
+        
+        IMethod method = _testBean1Type.getMethod("getStringProp1", null);
+        assertEquals("()Ljava.lang.String;"
+        		, TypeUtil.resolveMethodSignature(_testBean1Type, method.getSignature()));
+        		
+        method = _testBean1Type.getMethod("setStringProperty2", new String[] {"I"});
+        assertEquals("(I)V"
+        		, TypeUtil.resolveMethodSignature(_testBean1Type, method.getSignature()));
+    }
+
 //    public void testGetFullyQualifiedName() {
 //        fail("Not yet implemented");
 //    }
 //
-//    public void testResolveTypeIJavaProjectString() {
-//        fail("Not yet implemented");
-//    }
-//
-//    public void testMatchTypeParameterToArgument() {
-//        fail("Not yet implemented");
-//    }
+    public void testResolveTypeIJavaProjectString() 
+    {
+        assertNotNull(TypeUtil.resolveType(_jdtTestEnvironment.getJavaProject()
+        					, "Ljava.lang.String;"));
+        assertEquals(_testBean1Type
+        			,TypeUtil.resolveType(_jdtTestEnvironment.getJavaProject()
+        									, "Lcom.test.TestBean1;"));
+    }
 
+    public void testMatchTypeParameterToArgument() throws Exception
+    {
+        IType mapType = TypeUtil.resolveType(_jdtTestEnvironment.getJavaProject(), "Ljava.util.Map;");
+        assertNotNull(mapType);
+        
+        List<String> args = new ArrayList<String>();
+        args.add("Ljava.lang.String;");
+        args.add("Lcom.test.TestBean1;");
+        
+        // TestBean1 is the "V" in Map<K,V>
+        assertEquals("Lcom.test.TestBean1;"
+        		     , TypeUtil.matchTypeParameterToArgument(mapType, "TV;", args));
+        
+        // there is no "Q" type arg
+        assertNull(TypeUtil.matchTypeParameterToArgument(mapType, "TQ;", args));
+        // there is no "garbonzo" type arg
+        assertNull(TypeUtil.matchTypeParameterToArgument(mapType, "Tgarbonzo;", args));
+    }
+
+    public void testIsEnumMember() throws Exception
+    {
+    	assertTrue(TypeUtil.isEnumMember(_testEnum1Type, "red"));
+    	assertTrue(TypeUtil.isEnumMember(_testEnum1Type, "blue"));
+    	assertTrue(TypeUtil.isEnumMember(_testEnum1Type, "green"));
+    	assertTrue(TypeUtil.isEnumMember(_testEnum1Type, "yellow"));
+    	assertTrue(TypeUtil.isEnumMember(_testEnum1Type, "purple"));
+    	assertTrue(TypeUtil.isEnumMember(_testEnum1Type, "orange"));
+    	
+    	assertFalse(TypeUtil.isEnumMember(_testEnum1Type, "mauve"));
+    	assertFalse(TypeUtil.isEnumMember(_testEnum1Type, "pink"));
+    	
+    	// test the enum base type.. all things may be members of it
+    	IType type = _jdtTestEnvironment.getJavaProject().findType("java.lang.Enum");
+    	assertNotNull(type);
+    	//assertTrue(type.isEnum());
+    	assertTrue(TypeUtil.isEnumMember(type, "red"));
+    	assertTrue(TypeUtil.isEnumMember(type, "pink"));
+    	assertTrue(TypeUtil.isEnumMember(type, "anything"));
+    	assertTrue(TypeUtil.isEnumMember(type, "deadbeef"));
+    	
+    }
 }
diff --git a/jsf/tests/org.eclipse.jst.jsf.core.tests/src/org/eclipse/jst/jsf/core/tests/validation/TestJSPSemanticsValidator.java b/jsf/tests/org.eclipse.jst.jsf.core.tests/src/org/eclipse/jst/jsf/core/tests/validation/TestJSPSemanticsValidator.java
index 67d1616..a5cb0d8 100644
--- a/jsf/tests/org.eclipse.jst.jsf.core.tests/src/org/eclipse/jst/jsf/core/tests/validation/TestJSPSemanticsValidator.java
+++ b/jsf/tests/org.eclipse.jst.jsf.core.tests/src/org/eclipse/jst/jsf/core/tests/validation/TestJSPSemanticsValidator.java
@@ -6,12 +6,12 @@
 import junit.framework.TestCase;
 
 import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.jst.jsf.context.resolver.structureddocument.IDOMContextResolver;
 import org.eclipse.jst.jsf.context.resolver.structureddocument.IStructuredDocumentContextResolverFactory;
 import org.eclipse.jst.jsf.context.structureddocument.IStructuredDocumentContext;
 import org.eclipse.jst.jsf.context.structureddocument.IStructuredDocumentContextFactory;
 import org.eclipse.jst.jsf.core.IJSFCoreConstants;
+import org.eclipse.jst.jsf.core.internal.tld.CMUtil;
 import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
 import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
 import org.eclipse.jst.jsf.core.tests.TestsPlugin;
@@ -22,7 +22,6 @@
 import org.eclipse.wst.sse.core.StructuredModelManager;
 import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
 import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
-import org.eclipse.wst.validation.internal.operations.WorkbenchReporter;
 import org.eclipse.wst.validation.internal.provisional.core.IMessage;
 import org.eclipse.wst.validation.internal.provisional.core.IReporter;
 import org.eclipse.wst.validation.internal.provisional.core.IValidator;
@@ -60,7 +59,10 @@
         // load a dummy tld for core
         _testEnv.loadResourceInWebRoot(TestsPlugin.getDefault().getBundle()
     			, "/testfiles/jsf-core.tld.data", "META-INF/jsf-core.tld");
-        
+
+        _testEnv.loadResourceInWebRoot(TestsPlugin.getDefault().getBundle()
+    			, "/testfiles/myfaces_html.tld.data", "META-INF/myfaces_html.tld");
+
         _jspFile = (IFile)
         	_testEnv.loadResourceInWebRoot(TestsPlugin.getDefault().getBundle()
         			, "/testfiles/jsps/testContainment.jsp.data", "testContainment.jsp");
@@ -164,6 +166,7 @@
 		assertTrue(node instanceof Element);
 		Element elem = (Element) node;
 		assertEquals(IJSFConstants.TAG_INPUTTEXT, elem.getLocalName());
+		System.out.println(CMUtil.getElementNamespaceURI(elem));
 
 		MyReporter reporter = new MyReporter();
 		validator.validateContainment(elem, ITLDConstants.URI_JSF_HTML
diff --git a/jsf/tests/org.eclipse.jst.jsf.core.tests/testfiles/TestEnum1.java.data b/jsf/tests/org.eclipse.jst.jsf.core.tests/testfiles/TestEnum1.java.data
new file mode 100644
index 0000000..203499c
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.core.tests/testfiles/TestEnum1.java.data
@@ -0,0 +1,6 @@
+package org.eclipse.jst.jsf.core.tests.util;
+
+public enum TestEnum1 
+{
+	red, blue, green, yellow, orange, purple
+}
diff --git a/jsf/tests/org.eclipse.jst.jsf.core.tests/testfiles/myfaces_core.tld.data b/jsf/tests/org.eclipse.jst.jsf.core.tests/testfiles/myfaces_core.tld.data
new file mode 100644
index 0000000..9e547d2
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.core.tests/testfiles/myfaces_core.tld.data
@@ -0,0 +1,781 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Copyright 2004,2005,2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+-->
+<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
+<taglib xmlns="http://java.sun.com/JSP/TagLibraryDescriptor">
+   <tlib-version>1.0</tlib-version>
+   <jsp-version>1.2</jsp-version>
+   <short-name>f</short-name>
+   <uri>http://java.sun.com/jsf/core</uri>
+   <display-name>JSF core tag library.</display-name>
+   <description>
+        This tag library implements the standard JSF core tags.
+    </description>
+   <!--
+======================================================
+ Listener, that does all the startup work (configuration, init).
+======================================================
+-->
+   <listener>
+      <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
+   </listener>
+   <!--
+======================================================
+ actionListener
+======================================================
+-->
+   <tag>
+      <name>actionListener</name>
+      <tag-class>org.apache.myfaces.taglib.core.ActionListenerTag</tag-class>
+      <body-content>empty</body-content>
+      <description>
+            This tag creates an instance of the specified ActionListener, and
+            associates it with the nearest parent UIComponent.
+
+            Unless otherwise specified, all attributes accept static values
+            or EL expressions.
+        </description>
+      <attribute>
+         <name>type</name>
+         <required>true</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The fully qualified class name of the ActionListener class.</description>
+      </attribute>
+   </tag>
+   <!--
+======================================================
+ attribute
+======================================================
+-->
+   <tag>
+      <name>attribute</name>
+      <tag-class>javax.faces.webapp.AttributeTag</tag-class>
+      <body-content>empty</body-content>
+      <description>
+            This tag associates an attribute with the nearest parent
+            UIComponent. 
+            &lt;p&gt;
+            When the value is not an EL expression, this tag has the same effect
+            as calling component.getAttributes.put(name, value). When the attribute
+            name specified matches a standard property of the component, that
+            property is set. However it is also valid to assign attributes
+            to components using any arbitrary name; the component itself won't
+            make any use of these but other objects such as custom renderers,
+            validators or action listeners can later retrieve the attribute
+            from the component by name.
+            &lt;p&gt;
+            When the value is an EL expression, this tag has the same effect
+            as calling component.setValueBinding. A call to method
+            component.getAttributes().get(name) will then cause that
+            expression to be evaluated and the result of the expression is
+            returned, not the original EL expression string.
+            &lt;p&gt;
+            See the javadoc for UIComponent.getAttributes for more details.
+            &lt;p&gt;
+            Unless otherwise specified, all attributes accept static values
+            or EL expressions.
+            
+        </description>
+      <attribute>
+         <name>name</name>
+         <required>true</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The name of the attribute.</description>
+      </attribute>
+      <attribute>
+         <name>value</name>
+         <required>true</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The attribute's value.</description>
+      </attribute>
+   </tag>
+   <!--
+======================================================
+ converter
+======================================================
+-->
+   <tag>
+      <name>convertDateTime</name>
+      <tag-class>org.apache.myfaces.taglib.core.ConvertDateTimeTag</tag-class>
+      <body-content>empty</body-content>
+      <description>
+            This tag associates a date time converter with the nearest parent UIComponent.
+        
+            Unless otherwise specified, all attributes accept static values or EL expressions.
+        </description>
+      <attribute>
+         <name>dateStyle</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The style of the date.  Values include: default, short, medium, long, and full.</description>
+      </attribute>
+      <attribute>
+         <name>locale</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The name of the locale to be used, instead of the default.</description>
+      </attribute>
+      <attribute>
+         <name>pattern</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>A custom Date formatting pattern, in the format used by java.text.SimpleDateFormat.</description>
+      </attribute>
+      <attribute>
+         <name>timeStyle</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The style of the time.  Values include:  default, short, medium, long, and full.</description>
+      </attribute>
+      <attribute>
+         <name>timeZone</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>
+                The time zone to use instead of GMT (the default timezone). When
+                this value is a value-binding to a TimeZone instance, that
+                timezone is used. Otherwise this value is treated as a String
+                containing a timezone id, ie as the ID parameter of method
+                java.util.TimeZone.getTimeZone(String).
+            </description>
+      </attribute>
+      <attribute>
+         <name>type</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>
+                Specifies whether the date, time, or both should be 
+                parsed/formatted.  Values include:  date, time, and both.
+                Default based on setting of timeStyle and dateStyle.
+            </description>
+      </attribute>
+   </tag>
+   <tag>
+      <name>converter</name>
+      <tag-class>javax.faces.webapp.ConverterTag</tag-class>
+      <body-content>empty</body-content>
+      <description>
+            This tag creates an instance of the specified Converter, and
+            associates it with the nearest parent UIComponent.
+        </description>
+      <attribute>
+         <name>converterId</name>
+         <required>true</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The converter's registered ID.</description>
+      </attribute>
+   </tag>
+   <tag>
+      <name>convertNumber</name>
+      <tag-class>org.apache.myfaces.taglib.core.ConvertNumberTag</tag-class>
+      <body-content>empty</body-content>
+      <description>
+            This tag creates a number formatting converter and associates it
+            with the nearest parent UIComponent.
+ 
+            Unless otherwise specified, all attributes accept static values or EL expressions.
+        </description>
+      <attribute>
+         <name>currencyCode</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>ISO 4217 currency code</description>
+      </attribute>
+      <attribute>
+         <name>currencySymbol</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>
+                The currency symbol used to format a currency value.  Defaults
+                to the currency symbol for locale.
+            </description>
+      </attribute>
+      <attribute>
+         <name>groupingUsed</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>Specifies whether output will contain grouping separators.  Default: true.</description>
+      </attribute>
+      <attribute>
+         <name>integerOnly</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>Specifies whether only the integer part of the input will be parsed.  Default: false.</description>
+      </attribute>
+      <attribute>
+         <name>locale</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>
+                The name of the locale to be used, instead of the default as
+                specified in the faces configuration file.
+            </description>
+      </attribute>
+      <attribute>
+         <name>maxFractionDigits</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The maximum number of digits in the fractional portion of the number.</description>
+      </attribute>
+      <attribute>
+         <name>maxIntegerDigits</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The maximum number of digits in the integer portion of the number.</description>
+      </attribute>
+      <attribute>
+         <name>minFractionDigits</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The minimum number of digits in the fractional portion of the number.</description>
+      </attribute>
+      <attribute>
+         <name>minIntegerDigits</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The minimum number of digits in the integer portion of the number.</description>
+      </attribute>
+      <attribute>
+         <name>pattern</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>A custom Date formatting pattern, in the format used by java.text.SimpleDateFormat.</description>
+      </attribute>
+      <attribute>
+         <name>type</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>
+                The type of formatting/parsing to be performed.  Values include:
+                number, currency, and percent.  Default: number.
+            </description>
+      </attribute>
+   </tag>
+   <!--
+======================================================
+ facet
+======================================================
+-->
+   <tag>
+      <name>facet</name>
+      <tag-class>javax.faces.webapp.FacetTag</tag-class>
+      <body-content>JSP</body-content>
+      <description>
+            This tag adds its child as a facet of the nearest parent UIComponent.
+            A child consisting of multiple elements should be nested within a
+            container component (i.e., within an h:panelGroup for HTML library
+            components).
+
+            Unless otherwise specified, all attributes accept static values or EL expressions.
+        </description>
+      <attribute>
+         <name>name</name>
+         <required>true</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The name of the facet to be created.  This must be a static value.</description>
+      </attribute>
+   </tag>
+   <!--
+======================================================
+ loadBundle
+======================================================
+-->
+   <tag>
+      <name>loadBundle</name>
+      <tag-class>org.apache.myfaces.taglib.core.LoadBundleTag</tag-class>
+      <body-content>empty</body-content>
+      <description>
+            Loads a resource bundle and saves it as a variable in the request scope.
+
+            Unless otherwise specified, all attributes accept static values or EL expressions.
+        </description>
+      <attribute>
+         <name>basename</name>
+         <required>true</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The base name of the resource bundle.</description>
+      </attribute>
+      <attribute>
+         <name>var</name>
+         <required>true</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>
+                The name of the variable in request scope that the resources
+                are saved to.  This must be a static value.
+            </description>
+      </attribute>
+   </tag>
+   <!--
+======================================================
+ param
+======================================================
+-->
+   <tag>
+      <name>param</name>
+      <tag-class>org.apache.myfaces.taglib.core.ParamTag</tag-class>
+      <body-content>empty</body-content>
+      <description>
+            This tag associates a parameter name-value pair with the nearest
+            parent UIComponent. A UIComponent is created to represent this
+            name-value pair, and stored as a child of the parent component; what
+            effect this has depends upon the renderer of that parent component.
+            &lt;p&gt;
+            Unless otherwise specified, all attributes accept static values
+            or EL expressions.
+            
+        </description>
+      <!-- UIParameter attributes -->
+      <attribute>
+         <name>binding</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        Identifies a backing bean property (of type UIComponent or appropriate
+        subclass) to bind to this component instance.  This value must be an
+        EL expression.
+    </description>
+      </attribute>
+      <attribute>
+         <name>id</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        The developer-assigned ID of this component.  The ID must be unique
+        within the scope of the tag's enclosing naming container (e.g. 
+        h:form or f:subview).  This value must be a static value.
+    </description>
+      </attribute>
+      <attribute>
+         <name>name</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>A String containing the name of the parameter.</description>
+      </attribute>
+      <attribute>
+         <name>value</name>
+         <required>true</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>The value of this parameter.</description>
+      </attribute>
+   </tag>
+   <!--
+======================================================
+ selectitem
+======================================================
+-->
+   <tag>
+      <name>selectItem</name>
+      <tag-class>org.apache.myfaces.taglib.core.SelectItemTag</tag-class>
+      <body-content>empty</body-content>
+      <description>
+            This tag associates a single SelectItem with the nearest
+            parent UIComponent. The item represents a single option
+            for a component such as an h:selectBooleanCheckbox or h:selectOneMenu.
+            See also component selectItems.
+            &lt;p&gt;
+            Unless otherwise specified, all attributes accept static values
+            or EL expressions.
+            
+        </description>
+      <!-- UISelectItem attributes -->
+      <attribute>
+         <name>binding</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        Identifies a backing bean property (of type UIComponent or appropriate
+        subclass) to bind to this component instance.  This value must be an
+        EL expression.
+    </description>
+      </attribute>
+      <attribute>
+         <name>id</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        The developer-assigned ID of this component.  The ID must be unique
+        within the scope of the tag's enclosing naming container (e.g. 
+        h:form or f:subview).  This value must be a static value.
+    </description>
+      </attribute>
+      <attribute>
+         <name>itemDisabled</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        If true, this component will not be saved during state saving.
+    </description>
+      </attribute>
+      <attribute>
+         <name>itemDescription</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>An optional description for this item.</description>
+      </attribute>
+      <attribute>
+         <name>itemLabel</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        The locale-specific label that will be displayed to the user for this item.
+    </description>
+      </attribute>
+      <attribute>
+         <name>itemValue</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        The value of this item, of the same type as the parent component's value.
+    </description>
+      </attribute>
+      <attribute>
+         <name>value</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        An EL expression that refers to a javax.faces.model.SelectItem instance.
+    </description>
+      </attribute>
+   </tag>
+   <!--
+======================================================
+ selectitems
+======================================================
+-->
+   <tag>
+      <name>selectItems</name>
+      <tag-class>org.apache.myfaces.taglib.core.SelectItemsTag</tag-class>
+      <body-content>empty</body-content>
+      <description>
+            This tag associates a set of selection list items with the nearest
+            parent UIComponent. The set of SelectItem objects is retrieved via
+            a value-binding.
+            &lt;p&gt;
+            Unless otherwise specified, all attributes accept static values
+            or EL expressions.
+            
+        </description>
+      <!-- UISelectItems attributes -->
+      <attribute>
+         <name>binding</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        Identifies a backing bean property (of type UIComponent or appropriate
+        subclass) to bind to this component instance.  This value must be an
+        EL expression.
+    </description>
+      </attribute>
+      <attribute>
+         <name>id</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        The developer-assigned ID of this component.  The ID must be unique
+        within the scope of the tag's enclosing naming container (e.g. 
+        h:form or f:subview).  This value must be a static value.
+    </description>
+      </attribute>
+      <attribute>
+         <name>value</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        An EL expression that specifies the contents of the selection list.
+        The expression can refer to one of the following:
+        &lt;ol&gt;
+            &lt;li&gt;A single SelectItem&lt;/li&gt;
+            &lt;li&gt;An array or Collection of SelectItem instances&lt;/li&gt;
+            &lt;li&gt;A Map. The contents of the Map are used to create SelectItem
+                instances, where the SelectItem's label is the map's key value, 
+                and the SelectItem's value is the map's value. When using a
+                map, it is recommended that an ordered implementation such as
+                java.util.TreeMap is used.&lt;/li&gt;
+        &lt;/ol&gt;
+        The value properties of each of the SelectItems must be of the same
+        basic type as the parent component's value.
+        
+    </description>
+      </attribute>
+   </tag>
+   <!--
+======================================================
+ subview
+======================================================
+-->
+   <tag>
+      <name>subview</name>
+      <tag-class>org.apache.myfaces.taglib.core.SubviewTag</tag-class>
+      <body-content>JSP</body-content>
+      <description>
+            This tag associates a set of UIComponents with the nearest parent
+            UIComponent.  It acts as a naming container to make the IDs of its
+            component elements unique.
+        
+            Unless otherwise specified, all attributes accept static values or EL expressions.
+        </description>
+      <attribute>
+         <name>id</name>
+         <required>true</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        The developer-assigned ID of this component.  The ID must be unique
+        within the scope of the tag's enclosing naming container (e.g. 
+        h:form or f:subview).  This value must be a static value.
+    </description>
+      </attribute>
+      <attribute>
+         <name>binding</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        Identifies a backing bean property (of type UIComponent or appropriate
+        subclass) to bind to this component instance.  This value must be an
+        EL expression.
+    </description>
+      </attribute>
+      <attribute>
+         <name>rendered</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that indicates whether this component should be rendered.
+        Default value: true.
+    </description>
+      </attribute>
+   </tag>
+   <!--
+======================================================
+ validators
+======================================================
+-->
+   <tag>
+      <name>validateDoubleRange</name>
+      <tag-class>org.apache.myfaces.taglib.core.ValidateDoubleRangeTag</tag-class>
+      <body-content>empty</body-content>
+      <description>
+            Creates a validator and associateds it with the nearest parent
+            UIComponent.  When invoked, the validator ensures that values are
+            valid doubles that lie within the minimum and maximum values specified.
+        
+            Commonly associated with a h:inputText entity.
+        
+            Unless otherwise specified, all attributes accept static values or EL expressions.
+        </description>
+      <!-- validator min/max attributes -->
+      <attribute>
+         <name>minimum</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>The smallest value that should be considered valid.</description>
+      </attribute>
+      <attribute>
+         <name>maximum</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>The largest value that should be considered valid.</description>
+      </attribute>
+   </tag>
+   <tag>
+      <name>validateLength</name>
+      <tag-class>org.apache.myfaces.taglib.core.ValidateLengthTag</tag-class>
+      <body-content>empty</body-content>
+      <description>
+          Creates a validator and associateds it with the nearest parent
+          UIComponent.  When invoked, the validator ensures that values are
+          valid strings with a length that lies within the minimum and maximum
+          values specified.
+        
+          Commonly associated with a h:inputText entity.
+        
+          Unless otherwise specified, all attributes accept static values or EL expressions.
+      </description>
+      <!-- validator min/max attributes -->
+      <attribute>
+         <name>minimum</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>The smallest value that should be considered valid.</description>
+      </attribute>
+      <attribute>
+         <name>maximum</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>The largest value that should be considered valid.</description>
+      </attribute>
+   </tag>
+   <tag>
+      <name>validateLongRange</name>
+      <tag-class>org.apache.myfaces.taglib.core.ValidateLongRangeTag</tag-class>
+      <body-content>empty</body-content>
+      <description>
+        Creates a validator and associateds it with the nearest parent
+        UIComponent.  When invoked, the validator ensures that values
+        are valid longs that lie within the minimum and maximum values specified.
+        
+        Commonly associated with a h:inputText entity.
+        
+        Unless otherwise specified, all attributes accept static values or EL expressions.
+      </description>
+      <!-- validator min/max attributes -->
+      <attribute>
+         <name>minimum</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>The smallest value that should be considered valid.</description>
+      </attribute>
+      <attribute>
+         <name>maximum</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>The largest value that should be considered valid.</description>
+      </attribute>
+   </tag>
+   <tag>
+      <name>validator</name>
+      <tag-class>javax.faces.webapp.ValidatorTag</tag-class>
+      <body-content>empty</body-content>
+      <description>
+        Creates a validator and associates it with the nearest parent
+        UIComponent.  During the validation phase (or the apply-request-values
+        phase for immediate components), if the associated component has any
+        submitted value and the conversion of that value to the required
+        type has succeeded then the specified validator type is
+        invoked to test the validity of the converted value.
+        &lt;p&gt;
+        Commonly associated with an h:inputText entity, but may be applied to
+        any input component.
+        &lt;p&gt;
+        Some validators may allow the component to use attributes to define
+        component-specific validation constraints; see the f:attribute tag.
+        See also the "validator" attribute of all input components, which
+        allows a component to specify an arbitrary validation &lt;i&gt;method&lt;/i&gt;
+        (rather than a registered validation type, as this tag does).
+        &lt;p&gt;
+        Unless otherwise specified, all attributes accept static values
+        or EL expressions.
+        
+      </description>
+      <attribute>
+         <name>validatorId</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>The registered ID of the desired Validator.</description>
+      </attribute>
+   </tag>
+   <!--
+======================================================
+ valueChangeListener
+======================================================
+-->
+   <tag>
+      <name>valueChangeListener</name>
+      <tag-class>org.apache.myfaces.taglib.core.ValueChangeListenerTag</tag-class>
+      <body-content>empty</body-content>
+      <description>
+            Adds the specified ValueChangeListener to the nearest parent
+            UIComponent (which is expected to be a UIInput component).
+            Whenever the form containing the parent UIComponent is submitted,
+            an instance of the specified type is created. If the submitted
+            value from the component is different from the component's current
+            value then a ValueChangeEvent is queued. When the ValueChangeEvent
+            is processed (at end of the validate phase for non-immediate components,
+            or at end of the apply-request-values phase for immediate components)
+            the object's processValueChange method is invoked.
+            &lt;p&gt;
+            Unless otherwise specified, all attributes accept static values
+            or EL expressions.
+            
+        </description>
+      <attribute>
+         <name>type</name>
+         <required>true</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The name of a Java class that implements ValueChangeListener.</description>
+      </attribute>
+   </tag>
+   <!--
+======================================================
+ verbatim
+======================================================
+-->
+   <tag>
+      <name>verbatim</name>
+      <tag-class>org.apache.myfaces.taglib.core.VerbatimTag</tag-class>
+      <body-content>JSP</body-content>
+      <description>
+            Outputs its body as verbatim text. No JSP tags within the verbatim
+            tag (including JSF tags) are evaluated; the content is treated
+            simply as literal text to be copied to the response.
+            &lt;p&gt;
+            Unless otherwise specified, all attributes accept static values
+            or EL expressions.
+            
+        </description>
+      <attribute>
+         <name>escape</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>If true, generated markup is escaped.  Default:  false.</description>
+      </attribute>
+   </tag>
+   <!--
+======================================================
+ view
+======================================================
+-->
+   <tag>
+      <name>view</name>
+      <tag-class>org.apache.myfaces.taglib.core.ViewTag</tag-class>
+      <body-content>JSP</body-content>
+      <description>
+            Creates a JSF View, which is a container that holds all of the
+            components that are part of the view.
+
+            Unless otherwise specified, all attributes accept static values or EL expressions.
+        </description>
+      <attribute>
+         <name>locale</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The locale of this view.  Default:  the default locale from the configuration file.</description>
+      </attribute>
+   </tag>
+</taglib>
diff --git a/jsf/tests/org.eclipse.jst.jsf.core.tests/testfiles/myfaces_html.tld.data b/jsf/tests/org.eclipse.jst.jsf.core.tests/testfiles/myfaces_html.tld.data
new file mode 100644
index 0000000..386e895
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.core.tests/testfiles/myfaces_html.tld.data
@@ -0,0 +1,6200 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Copyright 2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+-->
+<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
+<taglib xmlns="http://java.sun.com/JSP/TagLibraryDescriptor">
+   <tlib-version>1.0</tlib-version>
+   <jsp-version>1.2</jsp-version>
+   <short-name>h</short-name>
+   <uri>http://java.sun.com/jsf/html</uri>
+   <display-name>JSF HTML tag library.</display-name>
+   <description>
+        This tag library implements the standard JSF HTML tags.
+    </description>
+   <!--
+*************************************************************************************
+Start of revised 1.0 conforming tags (in alphabetical order)
+*************************************************************************************
+-->
+   <!-- column -->
+   <tag>
+      <name>column</name>
+      <tag-class>org.apache.myfaces.taglib.html.HtmlColumnTag</tag-class>
+      <body-content>JSP</body-content>
+      <description>
+            This tag is commonly used as a child of the dataTable tag, to
+            represent a column of data. It can be decorated with "header" and
+            "footer" facets to drive the output of header and footer rows.
+            Row values are specified via its children.
+
+            Unless otherwise specified, all attributes accept static values
+            or EL expressions.
+        </description>
+      <!-- UIComponent attributes -->
+      <attribute>
+         <name>id</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        The developer-assigned ID of this component.  The ID must be unique
+        within the scope of the tag's enclosing naming container (e.g. 
+        h:form or f:subview).  This value must be a static value.
+    </description>
+      </attribute>
+      <attribute>
+         <name>binding</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        Identifies a backing bean property (of type UIComponent or appropriate
+        subclass) to bind to this component instance.  This value must be an
+        EL expression.
+    </description>
+      </attribute>
+      <attribute>
+         <name>rendered</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that indicates whether this component should be rendered.
+        Default value: true.
+    </description>
+      </attribute>
+   </tag>
+   <!-- commandButton -->
+   <tag>
+      <name>commandButton</name>
+      <tag-class>org.apache.myfaces.taglib.html.HtmlCommandButtonTag</tag-class>
+      <body-content>JSP</body-content>
+      <description>
+            This tag renders as an HTML input element.
+
+            Unless otherwise specified, all attributes accept static values
+            or EL expressions.
+        </description>
+      <!-- all standard attributes of the commandButton tag -->
+      <!-- UICommand attributes -->
+      <!-- UIComponent attributes -->
+      <attribute>
+         <name>id</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        The developer-assigned ID of this component.  The ID must be unique
+        within the scope of the tag's enclosing naming container (e.g. 
+        h:form or f:subview).  This value must be a static value.
+    </description>
+      </attribute>
+      <attribute>
+         <name>binding</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        Identifies a backing bean property (of type UIComponent or appropriate
+        subclass) to bind to this component instance.  This value must be an
+        EL expression.
+    </description>
+      </attribute>
+      <attribute>
+         <name>rendered</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that indicates whether this component should be rendered.
+        Default value: true.
+    </description>
+      </attribute>
+      <attribute>
+         <name>action</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+    	Specifies the action to take when this command is invoked.
+    	
+        If the value is an expression, it is expected to be a method 
+        binding EL expression that identifies an action method. An action method
+        accepts no parameters and has a String return value, called the action
+        outcome, that identifies the next view displayed. The phase that this
+        event is fired in can be controlled via the immediate attribute.
+
+    	If the value is a string literal, it is treated as a navigation outcome
+    	for the current view.  This is functionally equivalent to a reference to
+    	an action method that returns the string literal.
+    </description>
+      </attribute>
+      <attribute>
+         <name>actionListener</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A method binding EL expression that identifies an action listener method
+        to be invoked if this component is activated by the user. An action
+        listener method accepts a parameter of type javax.faces.event.ActionEvent
+        and returns void. The phase that this event is fired in can be controlled
+        via the immediate attribute.
+    </description>
+      </attribute>
+      <attribute>
+         <name>immediate</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that identifies the phase during which action events
+        should fire. During normal event processing, action methods and
+        action listener methods are fired during the "invoke application"
+        phase of request processing. If this attribute is set to "true",
+        these methods are fired instead at the end of the "apply request
+        values" phase.
+    </description>
+      </attribute>
+      <attribute>
+         <name>value</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>The initial value of this component.</description>
+      </attribute>
+      <!-- HTML 4.0 universal attributes -->
+      <attribute>
+         <name>dir</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The direction of text display, either 'ltr' (left-to-right) or 'rtl' (right-to-left).</description>
+      </attribute>
+      <attribute>
+         <name>lang</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The base language of this document.</description>
+      </attribute>
+      <attribute>
+         <name>style</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: CSS styling instructions.</description>
+      </attribute>
+      <attribute>
+         <name>title</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: An advisory title for this element.  Often used by the user agent as a tooltip.</description>
+      </attribute>
+      <attribute>
+         <name>styleClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The CSS class for this element.  Corresponds to the HTML 'class' attribute.</description>
+      </attribute>
+      <!-- HTML 4.0 event-handler attributes -->
+      <attribute>
+         <name>onclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is clicked.</description>
+      </attribute>
+      <attribute>
+         <name>ondblclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is double-clicked.</description>
+      </attribute>
+      <attribute>
+         <name>onmousedown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is released over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseover</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved into this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmousemove</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved while it is in this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseout</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moves out of this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeypress</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeydown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed down over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeyup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is released over this element.</description>
+      </attribute>
+      <!-- HTML 4.0 button attributes -->
+      <attribute>
+         <name>accesskey</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Sets the access key for this element.</description>
+      </attribute>
+      <attribute>
+         <name>alt</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies alternative text that can be used by a browser that can't show this element.</description>
+      </attribute>
+      <attribute>
+         <name>disabled</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: When true, this element cannot receive focus.</description>
+      </attribute>
+      <attribute>
+         <name>onblur</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element loses focus.</description>
+      </attribute>
+      <attribute>
+         <name>onfocus</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element receives focus.</description>
+      </attribute>
+      <attribute>
+         <name>onselect</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element is selected.</description>
+      </attribute>
+      <attribute>
+         <name>onchange</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element is modified.</description>
+      </attribute>
+      <attribute>
+         <name>tabindex</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies the position of this element within the tab order of the document.</description>
+      </attribute>
+      <attribute>
+         <name>type</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: A hint to the user agent about the content type of the linked resource.</description>
+      </attribute>
+      <attribute>
+         <name>size</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>The initial width of this control.</description>
+      </attribute>
+      <!-- HtmlCommandButton attributes -->
+      <attribute>
+         <name>image</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The URL of an image that renders in place of the button.</description>
+      </attribute>
+   </tag>
+   <!-- commandLink -->
+   <tag>
+      <name>commandLink</name>
+      <tag-class>org.apache.myfaces.taglib.html.HtmlCommandLinkTag</tag-class>
+      <body-content>JSP</body-content>
+      <description>
+            This tag renders as an HTML a element.
+
+            Unless otherwise specified, all attributes accept static values
+            or EL expressions.
+        </description>
+      <!-- all standard attributes of the commandLink tag -->
+      <!-- UICommand attributes -->
+      <!-- UIComponent attributes -->
+      <attribute>
+         <name>id</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        The developer-assigned ID of this component.  The ID must be unique
+        within the scope of the tag's enclosing naming container (e.g. 
+        h:form or f:subview).  This value must be a static value.
+    </description>
+      </attribute>
+      <attribute>
+         <name>binding</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        Identifies a backing bean property (of type UIComponent or appropriate
+        subclass) to bind to this component instance.  This value must be an
+        EL expression.
+    </description>
+      </attribute>
+      <attribute>
+         <name>rendered</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that indicates whether this component should be rendered.
+        Default value: true.
+    </description>
+      </attribute>
+      <attribute>
+         <name>action</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+    	Specifies the action to take when this command is invoked.
+    	
+        If the value is an expression, it is expected to be a method 
+        binding EL expression that identifies an action method. An action method
+        accepts no parameters and has a String return value, called the action
+        outcome, that identifies the next view displayed. The phase that this
+        event is fired in can be controlled via the immediate attribute.
+
+    	If the value is a string literal, it is treated as a navigation outcome
+    	for the current view.  This is functionally equivalent to a reference to
+    	an action method that returns the string literal.
+    </description>
+      </attribute>
+      <attribute>
+         <name>actionListener</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A method binding EL expression that identifies an action listener method
+        to be invoked if this component is activated by the user. An action
+        listener method accepts a parameter of type javax.faces.event.ActionEvent
+        and returns void. The phase that this event is fired in can be controlled
+        via the immediate attribute.
+    </description>
+      </attribute>
+      <attribute>
+         <name>immediate</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that identifies the phase during which action events
+        should fire. During normal event processing, action methods and
+        action listener methods are fired during the "invoke application"
+        phase of request processing. If this attribute is set to "true",
+        these methods are fired instead at the end of the "apply request
+        values" phase.
+    </description>
+      </attribute>
+      <attribute>
+         <name>value</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>The initial value of this component.</description>
+      </attribute>
+      <!-- HTML 4.0 universal attributes -->
+      <attribute>
+         <name>dir</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The direction of text display, either 'ltr' (left-to-right) or 'rtl' (right-to-left).</description>
+      </attribute>
+      <attribute>
+         <name>lang</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The base language of this document.</description>
+      </attribute>
+      <attribute>
+         <name>style</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: CSS styling instructions.</description>
+      </attribute>
+      <attribute>
+         <name>title</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: An advisory title for this element.  Often used by the user agent as a tooltip.</description>
+      </attribute>
+      <attribute>
+         <name>styleClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The CSS class for this element.  Corresponds to the HTML 'class' attribute.</description>
+      </attribute>
+      <!-- HTML 4.0 event-handler attributes -->
+      <attribute>
+         <name>onclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is clicked.</description>
+      </attribute>
+      <attribute>
+         <name>ondblclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is double-clicked.</description>
+      </attribute>
+      <attribute>
+         <name>onmousedown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is released over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseover</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved into this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmousemove</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved while it is in this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseout</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moves out of this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeypress</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeydown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed down over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeyup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is released over this element.</description>
+      </attribute>
+      <!-- HTML 4.0 anchor (=a) attributes -->
+      <attribute>
+         <name>accesskey</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Sets the access key for this element.</description>
+      </attribute>
+      <attribute>
+         <name>charset</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies the character encoding of the linked resource.</description>
+      </attribute>
+      <attribute>
+         <name>tabindex</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies the position of this element within the tab order of the document.</description>
+      </attribute>
+      <attribute>
+         <name>onblur</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element loses focus.</description>
+      </attribute>
+      <attribute>
+         <name>onfocus</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element receives focus.</description>
+      </attribute>
+      <attribute>
+         <name>type</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: A hint to the user agent about the content type of the linked resource.</description>
+      </attribute>
+      <attribute>
+         <name>target</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Names the frame that should display content generated by invoking this action. </description>
+      </attribute>
+      <attribute>
+         <name>coords</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: The coordinates of regions within a client side image map.</description>
+      </attribute>
+      <!-- "href" is a special LinkRenderer attribute -->
+      <attribute>
+         <name>hreflang</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: The language of the linked resource.</description>
+      </attribute>
+      <!-- "name" cannot be set by user -->
+      <attribute>
+         <name>rel</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+                HTML: The relationship between the current document and
+                the linked resource.
+            </description>
+      </attribute>
+      <attribute>
+         <name>rev</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+                HTML: The type(s) describing the reverse link for the linked
+                resource.
+            </description>
+      </attribute>
+      <attribute>
+         <name>shape</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+                HTML: The shape of a region in a client side image map.
+            </description>
+      </attribute>
+   </tag>
+   <!-- data_table -->
+   <tag>
+      <name>dataTable</name>
+      <tag-class>org.apache.myfaces.taglib.html.HtmlDataTableTag</tag-class>
+      <body-content>JSP</body-content>
+      <description>
+            This component renders as an HTML table element.  It has as its
+            children h:column entities, which describe the columns of the table.
+            It can be decorated with facets named "header" and "footer" to
+            specify header and footer rows.
+
+            Unless otherwise specified, all attributes accept static values
+            or EL expressions.
+        </description>
+      <!-- all standard attributes of the dataTable tag -->
+      <!-- UIPanel attributes -->
+      <!-- UIComponent attributes -->
+      <attribute>
+         <name>id</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        The developer-assigned ID of this component.  The ID must be unique
+        within the scope of the tag's enclosing naming container (e.g. 
+        h:form or f:subview).  This value must be a static value.
+    </description>
+      </attribute>
+      <attribute>
+         <name>binding</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        Identifies a backing bean property (of type UIComponent or appropriate
+        subclass) to bind to this component instance.  This value must be an
+        EL expression.
+    </description>
+      </attribute>
+      <attribute>
+         <name>rendered</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that indicates whether this component should be rendered.
+        Default value: true.
+    </description>
+      </attribute>
+      <attribute>
+         <name>columnClasses</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>
+        A comma separated list of CSS class names to apply to td elements in
+        each column.
+    </description>
+      </attribute>
+      <attribute>
+         <name>footerClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The CSS class to be applied to footer cells.</description>
+      </attribute>
+      <attribute>
+         <name>headerClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The CSS class to be applied to header cells.</description>
+      </attribute>
+      <attribute>
+         <name>rowClasses</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>
+        A comma separated list of CSS class names to apply to td elements in
+        each row.
+    </description>
+      </attribute>
+      <!-- HTML 4.0 universal attributes -->
+      <attribute>
+         <name>dir</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The direction of text display, either 'ltr' (left-to-right) or 'rtl' (right-to-left).</description>
+      </attribute>
+      <attribute>
+         <name>lang</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The base language of this document.</description>
+      </attribute>
+      <attribute>
+         <name>style</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: CSS styling instructions.</description>
+      </attribute>
+      <attribute>
+         <name>title</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: An advisory title for this element.  Often used by the user agent as a tooltip.</description>
+      </attribute>
+      <attribute>
+         <name>styleClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The CSS class for this element.  Corresponds to the HTML 'class' attribute.</description>
+      </attribute>
+      <!-- HTML 4.0 event-handler attributes -->
+      <attribute>
+         <name>onclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is clicked.</description>
+      </attribute>
+      <attribute>
+         <name>ondblclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is double-clicked.</description>
+      </attribute>
+      <attribute>
+         <name>onmousedown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is released over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseover</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved into this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmousemove</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved while it is in this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseout</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moves out of this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeypress</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeydown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed down over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeyup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is released over this element.</description>
+      </attribute>
+      <!-- HTML 4.0 table attributes -->
+      <attribute>
+         <name>align</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Specifies the horizontal alignment of this element.  Deprecated in HTML 4.01.</description>
+      </attribute>
+      <attribute>
+         <name>border</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies the width of the border of this element, in pixels.  Deprecated in HTML 4.01.</description>
+      </attribute>
+      <attribute>
+         <name>bgcolor</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The background color of this element.</description>
+      </attribute>
+      <attribute>
+         <name>datafld</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>Reserved for future use.</description>
+      </attribute>
+      <attribute>
+         <name>datasrc</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>Reserved for future use.</description>
+      </attribute>
+      <attribute>
+         <name>dataformatas</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>Reserved for future use.</description>
+      </attribute>
+      <attribute>
+         <name>cellpadding</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>
+        HTML: Specifies the amount of empty space between the cell border and
+        its contents.  It can be either a pixel length or a percentage.
+    </description>
+      </attribute>
+      <attribute>
+         <name>cellspacing</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>
+        HTML: Specifies the amount of space between the cells of the table.
+        It can be either a pixel length or a percentage of available 
+        space.
+    </description>
+      </attribute>
+      <attribute>
+         <name>frame</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>
+        HTML: Controls what part of the frame that surrounds a table is 
+        visible.  Values include:  void, above, below, hsides, lhs, 
+        rhs, vsides, box, and border.
+    </description>
+      </attribute>
+      <attribute>
+         <name>rules</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>
+        HTML: Controls how rules are rendered between cells.  Values include:
+        none, groups, rows, cols, and all.
+    </description>
+      </attribute>
+      <attribute>
+         <name>summary</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>
+        HTML: Provides a summary of the contents of the table, for
+        accessibility purposes.
+    </description>
+      </attribute>
+      <attribute>
+         <name>width</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>
+        HTML: Specifies the desired width of the table, as a pixel length or
+        a percentage of available space.
+    </description>
+      </attribute>
+      <!-- UIData attributes -->
+      <attribute>
+         <name>value</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>An EL expression that specifies the data model that backs this table.  The value can be of any type.
+            
+            A value of type DataModel is used directly.  Array-like parameters of type java.util.List, array of Object, 
+            java.sql.ResultSet, or javax.servlet.jsp.jstl.sql.Result are wrapped in a DataModel.
+            
+            Other values are wrapped in a DataModel as a single row.</description>
+      </attribute>
+      <attribute>
+         <name>var</name>
+         <required>true</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>Defines the name of the request-scope variable that will hold the current row during iteration.  This value must be a static value.</description>
+      </attribute>
+      <attribute>
+         <name>rows</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The number of rows to be displayed.  Specify zero for all remaining rows in the table.</description>
+      </attribute>
+      <attribute>
+         <name>first</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The index of the first row to be displayed, where 0 is the first row.</description>
+      </attribute>
+   </tag>
+   <!-- form -->
+   <tag>
+      <name>form</name>
+      <tag-class>org.apache.myfaces.taglib.html.HtmlFormTag</tag-class>
+      <body-content>JSP</body-content>
+      <description>
+            Renders an HTML form element.
+
+            Unless otherwise specified, all attributes accept static values
+            or EL expressions.
+        </description>
+      <!-- UIForm attributes -->
+      <!-- UIComponent attributes -->
+      <attribute>
+         <name>id</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        The developer-assigned ID of this component.  The ID must be unique
+        within the scope of the tag's enclosing naming container (e.g. 
+        h:form or f:subview).  This value must be a static value.
+    </description>
+      </attribute>
+      <attribute>
+         <name>binding</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        Identifies a backing bean property (of type UIComponent or appropriate
+        subclass) to bind to this component instance.  This value must be an
+        EL expression.
+    </description>
+      </attribute>
+      <attribute>
+         <name>rendered</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that indicates whether this component should be rendered.
+        Default value: true.
+    </description>
+      </attribute>
+      <!-- HTML 4.0 universal attributes -->
+      <attribute>
+         <name>dir</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The direction of text display, either 'ltr' (left-to-right) or 'rtl' (right-to-left).</description>
+      </attribute>
+      <attribute>
+         <name>lang</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The base language of this document.</description>
+      </attribute>
+      <attribute>
+         <name>style</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: CSS styling instructions.</description>
+      </attribute>
+      <attribute>
+         <name>title</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: An advisory title for this element.  Often used by the user agent as a tooltip.</description>
+      </attribute>
+      <attribute>
+         <name>styleClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The CSS class for this element.  Corresponds to the HTML 'class' attribute.</description>
+      </attribute>
+      <!-- HTML 4.0 event-handler attributes -->
+      <attribute>
+         <name>onclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is clicked.</description>
+      </attribute>
+      <attribute>
+         <name>ondblclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is double-clicked.</description>
+      </attribute>
+      <attribute>
+         <name>onmousedown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is released over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseover</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved into this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmousemove</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved while it is in this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseout</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moves out of this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeypress</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeydown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed down over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeyup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is released over this element.</description>
+      </attribute>
+      <!-- HTML 4.0 form attributes -->
+      <attribute>
+         <name>target</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Names the frame that should display content generated by invoking this action. </description>
+      </attribute>
+      <attribute>
+         <name>accept</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>
+        HTML: Provides a comma-separated list of content types that the 
+        server processing this form can handle.
+    </description>
+      </attribute>
+      <attribute>
+         <name>acceptCharset</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>
+        HTML: The list of character encodings accepted by the server for this
+        form.
+    </description>
+      </attribute>
+      <attribute>
+         <name>enctype</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>
+        HTML: The content type used to submit this form to the server.
+    </description>
+      </attribute>
+      <attribute>
+         <name>onreset</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when this form is reset.</description>
+      </attribute>
+      <attribute>
+         <name>onsubmit</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when this form is submitted.</description>
+      </attribute>
+   </tag>
+   <!-- graphic_image -->
+   <tag>
+      <name>graphicImage</name>
+      <tag-class>org.apache.myfaces.taglib.html.HtmlGraphicImageTag</tag-class>
+      <body-content>JSP</body-content>
+      <description>
+            Renders an HTML img element.
+
+            Unless otherwise specified, all attributes accept static values
+            or EL expressions.
+        </description>
+      <!-- UIGraphic attributes -->
+      <!-- UIComponent attributes -->
+      <attribute>
+         <name>id</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        The developer-assigned ID of this component.  The ID must be unique
+        within the scope of the tag's enclosing naming container (e.g. 
+        h:form or f:subview).  This value must be a static value.
+    </description>
+      </attribute>
+      <attribute>
+         <name>binding</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        Identifies a backing bean property (of type UIComponent or appropriate
+        subclass) to bind to this component instance.  This value must be an
+        EL expression.
+    </description>
+      </attribute>
+      <attribute>
+         <name>rendered</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that indicates whether this component should be rendered.
+        Default value: true.
+    </description>
+      </attribute>
+      <attribute>
+         <name>url</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        An alias for the "value" attribute.
+    </description>
+      </attribute>
+      <attribute>
+         <name>value</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        The URL of the image.  If the URL starts with a '/', it is relative
+        to the context path of the web application.
+    </description>
+      </attribute>
+      <!-- HTML 4.0 universal attributes -->
+      <attribute>
+         <name>dir</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The direction of text display, either 'ltr' (left-to-right) or 'rtl' (right-to-left).</description>
+      </attribute>
+      <attribute>
+         <name>lang</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The base language of this document.</description>
+      </attribute>
+      <attribute>
+         <name>style</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: CSS styling instructions.</description>
+      </attribute>
+      <attribute>
+         <name>title</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: An advisory title for this element.  Often used by the user agent as a tooltip.</description>
+      </attribute>
+      <attribute>
+         <name>styleClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The CSS class for this element.  Corresponds to the HTML 'class' attribute.</description>
+      </attribute>
+      <!-- HTML 4.0 event-handler attributes -->
+      <attribute>
+         <name>onclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is clicked.</description>
+      </attribute>
+      <attribute>
+         <name>ondblclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is double-clicked.</description>
+      </attribute>
+      <attribute>
+         <name>onmousedown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is released over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseover</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved into this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmousemove</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved while it is in this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseout</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moves out of this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeypress</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeydown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed down over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeyup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is released over this element.</description>
+      </attribute>
+      <!-- The subset of HTML 4.0 img attributes that are supported by the JSF 1.1 specification -->
+      <attribute>
+         <name>alt</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies alternative text that can be used by a browser that can't show this element.</description>
+      </attribute>
+      <attribute>
+         <name>height</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Overrides the natural height of this image, by specifying height in pixels.</description>
+      </attribute>
+      <attribute>
+         <name>ismap</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies server-side image map handling for this image.</description>
+      </attribute>
+      <attribute>
+         <name>longdesc</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: A link to a long description of the image.</description>
+      </attribute>
+      <!-- "name" attribute cannot be set directly by user -->
+      <!-- "src" attribute cannot be set directly, use "url" instead! -->
+      <attribute>
+         <name>usemap</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies an image map to use with this image.</description>
+      </attribute>
+      <attribute>
+         <name>width</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Overrides the natural width of this image, by specifying width in pixels.</description>
+      </attribute>
+   </tag>
+   <!-- input_hidden -->
+   <tag>
+      <name>inputHidden</name>
+      <tag-class>org.apache.myfaces.taglib.html.HtmlInputHiddenTag</tag-class>
+      <body-content>JSP</body-content>
+      <description>
+            Renders as an HTML input tag with its type set to "hidden".
+
+            Unless otherwise specified, all attributes accept static values
+            or EL expressions.
+        </description>
+      <!-- UIInput attributes -->
+      <!-- UIOutput attributes -->
+      <!-- UIComponent attributes -->
+      <attribute>
+         <name>id</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        The developer-assigned ID of this component.  The ID must be unique
+        within the scope of the tag's enclosing naming container (e.g. 
+        h:form or f:subview).  This value must be a static value.
+    </description>
+      </attribute>
+      <attribute>
+         <name>binding</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        Identifies a backing bean property (of type UIComponent or appropriate
+        subclass) to bind to this component instance.  This value must be an
+        EL expression.
+    </description>
+      </attribute>
+      <attribute>
+         <name>rendered</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that indicates whether this component should be rendered.
+        Default value: true.
+    </description>
+      </attribute>
+      <attribute>
+         <name>value</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>The initial value of this component.</description>
+      </attribute>
+      <attribute>
+         <name>converter</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        An expression that specifies the Converter for this component.  
+        If the value binding expression is a String, the String is used
+        as an ID to look up a Converter. If the value binding expression
+        is a Converter, uses that instance as the converter.
+            
+        The value can either be a static value (ID case only) or an EL expression.
+    </description>
+      </attribute>
+      <attribute>
+         <name>immediate</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that identifies the phase during which value change
+        events should fire. During normal event processing, value change
+        events are fired during the "invoke application" phase of request
+        processing. If this attribute is set to "true", these methods are
+        fired instead at the end of the "apply request values" phase.
+    </description>
+      </attribute>
+      <attribute>
+         <name>required</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that indicates whether an input value is required.
+        If this value is true, and no input value is provided, the error
+        message javax.faces.component.UIInput.REQUIRED is posted.
+    </description>
+      </attribute>
+      <attribute>
+         <name>validator</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A method binding EL expression, accepting FacesContext, UIComponent,
+        and Object parameters, and returning void, that validates the
+        component's local value.
+    </description>
+      </attribute>
+      <attribute>
+         <name>valueChangeListener</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A method binding EL expression, accepting a ValueChangeEvent parameter
+        and returning void. The specified method is invoked if this component
+        is modified. The phase that this handler is fired in can be controlled
+        via the immediate attribute.
+    </description>
+      </attribute>
+   </tag>
+   <!-- input_secret -->
+   <tag>
+      <name>inputSecret</name>
+      <tag-class>org.apache.myfaces.taglib.html.HtmlInputSecretTag</tag-class>
+      <body-content>JSP</body-content>
+      <description>
+            Renders as an HTML input tag with its type set to "password".
+
+            Unless otherwise specified, all attributes accept static values
+            or EL expressions.
+        </description>
+      <!-- todo: not all html_input_attributes are used for input_secret
+            in RI (e.g. datafld, datasrc, ...) -->
+      <!-- UIInput attributes -->
+      <!-- UIOutput attributes -->
+      <!-- UIComponent attributes -->
+      <attribute>
+         <name>id</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        The developer-assigned ID of this component.  The ID must be unique
+        within the scope of the tag's enclosing naming container (e.g. 
+        h:form or f:subview).  This value must be a static value.
+    </description>
+      </attribute>
+      <attribute>
+         <name>binding</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        Identifies a backing bean property (of type UIComponent or appropriate
+        subclass) to bind to this component instance.  This value must be an
+        EL expression.
+    </description>
+      </attribute>
+      <attribute>
+         <name>rendered</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that indicates whether this component should be rendered.
+        Default value: true.
+    </description>
+      </attribute>
+      <attribute>
+         <name>value</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>The initial value of this component.</description>
+      </attribute>
+      <attribute>
+         <name>converter</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        An expression that specifies the Converter for this component.  
+        If the value binding expression is a String, the String is used
+        as an ID to look up a Converter. If the value binding expression
+        is a Converter, uses that instance as the converter.
+            
+        The value can either be a static value (ID case only) or an EL expression.
+    </description>
+      </attribute>
+      <attribute>
+         <name>immediate</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that identifies the phase during which value change
+        events should fire. During normal event processing, value change
+        events are fired during the "invoke application" phase of request
+        processing. If this attribute is set to "true", these methods are
+        fired instead at the end of the "apply request values" phase.
+    </description>
+      </attribute>
+      <attribute>
+         <name>required</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that indicates whether an input value is required.
+        If this value is true, and no input value is provided, the error
+        message javax.faces.component.UIInput.REQUIRED is posted.
+    </description>
+      </attribute>
+      <attribute>
+         <name>validator</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A method binding EL expression, accepting FacesContext, UIComponent,
+        and Object parameters, and returning void, that validates the
+        component's local value.
+    </description>
+      </attribute>
+      <attribute>
+         <name>valueChangeListener</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A method binding EL expression, accepting a ValueChangeEvent parameter
+        and returning void. The specified method is invoked if this component
+        is modified. The phase that this handler is fired in can be controlled
+        via the immediate attribute.
+    </description>
+      </attribute>
+      <!-- HTML 4.0 input attributes -->
+      <attribute>
+         <name>accesskey</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Sets the access key for this element.</description>
+      </attribute>
+      <attribute>
+         <name>align</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Specifies the horizontal alignment of this element.  Deprecated in HTML 4.01.</description>
+      </attribute>
+      <attribute>
+         <name>alt</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies alternative text that can be used by a browser that can't show this element.</description>
+      </attribute>
+      <attribute>
+         <name>disabled</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: When true, this element cannot receive focus.</description>
+      </attribute>
+      <attribute>
+         <name>onblur</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element loses focus.</description>
+      </attribute>
+      <attribute>
+         <name>onfocus</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element receives focus.</description>
+      </attribute>
+      <attribute>
+         <name>onchange</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element is modified.</description>
+      </attribute>
+      <attribute>
+         <name>onselect</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element is selected.</description>
+      </attribute>
+      <attribute>
+         <name>readonly</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        HTML: When true, indicates that this component cannot be modified by the user.
+        The element may receive focus unless it has also been disabled.
+    </description>
+      </attribute>
+      <attribute>
+         <name>tabindex</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies the position of this element within the tab order of the document.</description>
+      </attribute>
+      <attribute>
+         <name>maxlength</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: The maximum number of characters allowed to be entered.</description>
+      </attribute>
+      <attribute>
+         <name>size</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: The initial width of this control, in characters.</description>
+      </attribute>
+      <!-- HTML 4.0 universal attributes -->
+      <attribute>
+         <name>dir</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The direction of text display, either 'ltr' (left-to-right) or 'rtl' (right-to-left).</description>
+      </attribute>
+      <attribute>
+         <name>lang</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The base language of this document.</description>
+      </attribute>
+      <attribute>
+         <name>style</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: CSS styling instructions.</description>
+      </attribute>
+      <attribute>
+         <name>title</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: An advisory title for this element.  Often used by the user agent as a tooltip.</description>
+      </attribute>
+      <attribute>
+         <name>styleClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The CSS class for this element.  Corresponds to the HTML 'class' attribute.</description>
+      </attribute>
+      <!-- HTML 4.0 event-handler attributes -->
+      <attribute>
+         <name>onclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is clicked.</description>
+      </attribute>
+      <attribute>
+         <name>ondblclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is double-clicked.</description>
+      </attribute>
+      <attribute>
+         <name>onmousedown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is released over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseover</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved into this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmousemove</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved while it is in this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseout</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moves out of this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeypress</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeydown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed down over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeyup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is released over this element.</description>
+      </attribute>
+      <!-- SecretRenderer attributes -->
+      <attribute>
+         <name>redisplay</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>
+                If true, the value will be re-sent (in plaintext) when the form
+                is rerendered (see JSF.7.4.4). Default is false.
+            </description>
+      </attribute>
+   </tag>
+   <!-- input_text -->
+   <tag>
+      <name>inputText</name>
+      <tag-class>org.apache.myfaces.taglib.html.HtmlInputTextTag</tag-class>
+      <body-content>JSP</body-content>
+      <description>
+            Renders a HTML input element.
+
+            Unless otherwise specified, all attributes accept static values
+            or EL expressions.
+        </description>
+      <!-- all standard attributes of the inputText tag -->
+      <!-- UIInput attributes -->
+      <!-- UIOutput attributes -->
+      <!-- UIComponent attributes -->
+      <attribute>
+         <name>id</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        The developer-assigned ID of this component.  The ID must be unique
+        within the scope of the tag's enclosing naming container (e.g. 
+        h:form or f:subview).  This value must be a static value.
+    </description>
+      </attribute>
+      <attribute>
+         <name>binding</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        Identifies a backing bean property (of type UIComponent or appropriate
+        subclass) to bind to this component instance.  This value must be an
+        EL expression.
+    </description>
+      </attribute>
+      <attribute>
+         <name>rendered</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that indicates whether this component should be rendered.
+        Default value: true.
+    </description>
+      </attribute>
+      <attribute>
+         <name>value</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>The initial value of this component.</description>
+      </attribute>
+      <attribute>
+         <name>converter</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        An expression that specifies the Converter for this component.  
+        If the value binding expression is a String, the String is used
+        as an ID to look up a Converter. If the value binding expression
+        is a Converter, uses that instance as the converter.
+            
+        The value can either be a static value (ID case only) or an EL expression.
+    </description>
+      </attribute>
+      <attribute>
+         <name>immediate</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that identifies the phase during which value change
+        events should fire. During normal event processing, value change
+        events are fired during the "invoke application" phase of request
+        processing. If this attribute is set to "true", these methods are
+        fired instead at the end of the "apply request values" phase.
+    </description>
+      </attribute>
+      <attribute>
+         <name>required</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that indicates whether an input value is required.
+        If this value is true, and no input value is provided, the error
+        message javax.faces.component.UIInput.REQUIRED is posted.
+    </description>
+      </attribute>
+      <attribute>
+         <name>validator</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A method binding EL expression, accepting FacesContext, UIComponent,
+        and Object parameters, and returning void, that validates the
+        component's local value.
+    </description>
+      </attribute>
+      <attribute>
+         <name>valueChangeListener</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A method binding EL expression, accepting a ValueChangeEvent parameter
+        and returning void. The specified method is invoked if this component
+        is modified. The phase that this handler is fired in can be controlled
+        via the immediate attribute.
+    </description>
+      </attribute>
+      <!-- HTML 4.0 universal attributes -->
+      <attribute>
+         <name>dir</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The direction of text display, either 'ltr' (left-to-right) or 'rtl' (right-to-left).</description>
+      </attribute>
+      <attribute>
+         <name>lang</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The base language of this document.</description>
+      </attribute>
+      <attribute>
+         <name>style</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: CSS styling instructions.</description>
+      </attribute>
+      <attribute>
+         <name>title</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: An advisory title for this element.  Often used by the user agent as a tooltip.</description>
+      </attribute>
+      <attribute>
+         <name>styleClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The CSS class for this element.  Corresponds to the HTML 'class' attribute.</description>
+      </attribute>
+      <!-- HTML 4.0 event-handler attributes -->
+      <attribute>
+         <name>onclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is clicked.</description>
+      </attribute>
+      <attribute>
+         <name>ondblclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is double-clicked.</description>
+      </attribute>
+      <attribute>
+         <name>onmousedown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is released over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseover</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved into this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmousemove</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved while it is in this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseout</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moves out of this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeypress</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeydown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed down over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeyup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is released over this element.</description>
+      </attribute>
+      <!-- HTML 4.0 input attributes -->
+      <attribute>
+         <name>accesskey</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Sets the access key for this element.</description>
+      </attribute>
+      <attribute>
+         <name>align</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Specifies the horizontal alignment of this element.  Deprecated in HTML 4.01.</description>
+      </attribute>
+      <attribute>
+         <name>alt</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies alternative text that can be used by a browser that can't show this element.</description>
+      </attribute>
+      <attribute>
+         <name>disabled</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: When true, this element cannot receive focus.</description>
+      </attribute>
+      <attribute>
+         <name>onblur</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element loses focus.</description>
+      </attribute>
+      <attribute>
+         <name>onfocus</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element receives focus.</description>
+      </attribute>
+      <attribute>
+         <name>onchange</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element is modified.</description>
+      </attribute>
+      <attribute>
+         <name>onselect</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element is selected.</description>
+      </attribute>
+      <attribute>
+         <name>readonly</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        HTML: When true, indicates that this component cannot be modified by the user.
+        The element may receive focus unless it has also been disabled.
+    </description>
+      </attribute>
+      <attribute>
+         <name>tabindex</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies the position of this element within the tab order of the document.</description>
+      </attribute>
+      <attribute>
+         <name>maxlength</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: The maximum number of characters allowed to be entered.</description>
+      </attribute>
+      <attribute>
+         <name>size</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: The initial width of this control, in characters.</description>
+      </attribute>
+   </tag>
+   <!-- input_textarea -->
+   <tag>
+      <name>inputTextarea</name>
+      <tag-class>org.apache.myfaces.taglib.html.HtmlInputTextareaTag</tag-class>
+      <body-content>JSP</body-content>
+      <description>
+            Renders a HTML textarea element.
+
+            Unless otherwise specified, all attributes accept static values
+            or EL expressions.
+        </description>
+      <!-- all standard attributes of the inputTextarea tag -->
+      <!-- UIInput attributes -->
+      <!-- UIOutput attributes -->
+      <!-- UIComponent attributes -->
+      <attribute>
+         <name>id</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        The developer-assigned ID of this component.  The ID must be unique
+        within the scope of the tag's enclosing naming container (e.g. 
+        h:form or f:subview).  This value must be a static value.
+    </description>
+      </attribute>
+      <attribute>
+         <name>binding</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        Identifies a backing bean property (of type UIComponent or appropriate
+        subclass) to bind to this component instance.  This value must be an
+        EL expression.
+    </description>
+      </attribute>
+      <attribute>
+         <name>rendered</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that indicates whether this component should be rendered.
+        Default value: true.
+    </description>
+      </attribute>
+      <attribute>
+         <name>value</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>The initial value of this component.</description>
+      </attribute>
+      <attribute>
+         <name>converter</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        An expression that specifies the Converter for this component.  
+        If the value binding expression is a String, the String is used
+        as an ID to look up a Converter. If the value binding expression
+        is a Converter, uses that instance as the converter.
+            
+        The value can either be a static value (ID case only) or an EL expression.
+    </description>
+      </attribute>
+      <attribute>
+         <name>immediate</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that identifies the phase during which value change
+        events should fire. During normal event processing, value change
+        events are fired during the "invoke application" phase of request
+        processing. If this attribute is set to "true", these methods are
+        fired instead at the end of the "apply request values" phase.
+    </description>
+      </attribute>
+      <attribute>
+         <name>required</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that indicates whether an input value is required.
+        If this value is true, and no input value is provided, the error
+        message javax.faces.component.UIInput.REQUIRED is posted.
+    </description>
+      </attribute>
+      <attribute>
+         <name>validator</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A method binding EL expression, accepting FacesContext, UIComponent,
+        and Object parameters, and returning void, that validates the
+        component's local value.
+    </description>
+      </attribute>
+      <attribute>
+         <name>valueChangeListener</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A method binding EL expression, accepting a ValueChangeEvent parameter
+        and returning void. The specified method is invoked if this component
+        is modified. The phase that this handler is fired in can be controlled
+        via the immediate attribute.
+    </description>
+      </attribute>
+      <!-- HTML 4.0 textarea attributes -->
+      <attribute>
+         <name>datafld</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>Reserved for future use.</description>
+      </attribute>
+      <attribute>
+         <name>datasrc</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>Reserved for future use.</description>
+      </attribute>
+      <attribute>
+         <name>dataformatas</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>Reserved for future use.</description>
+      </attribute>
+      <attribute>
+         <name>accesskey</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Sets the access key for this element.</description>
+      </attribute>
+      <attribute>
+         <name>disabled</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: When true, this element cannot receive focus.</description>
+      </attribute>
+      <attribute>
+         <name>onblur</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element loses focus.</description>
+      </attribute>
+      <attribute>
+         <name>onfocus</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element receives focus.</description>
+      </attribute>
+      <attribute>
+         <name>onchange</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element is modified.</description>
+      </attribute>
+      <attribute>
+         <name>onselect</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element is selected.</description>
+      </attribute>
+      <attribute>
+         <name>tabindex</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies the position of this element within the tab order of the document.</description>
+      </attribute>
+      <attribute>
+         <name>readonly</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        HTML: When true, indicates that this component cannot be modified by the user.
+        The element may receive focus unless it has also been disabled.
+    </description>
+      </attribute>
+      <attribute>
+         <name>cols</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: The width of this element, in characters.</description>
+      </attribute>
+      <attribute>
+         <name>rows</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: The height of this element, in characters.</description>
+      </attribute>
+      <!-- HTML 4.0 universal attributes -->
+      <attribute>
+         <name>dir</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The direction of text display, either 'ltr' (left-to-right) or 'rtl' (right-to-left).</description>
+      </attribute>
+      <attribute>
+         <name>lang</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The base language of this document.</description>
+      </attribute>
+      <attribute>
+         <name>style</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: CSS styling instructions.</description>
+      </attribute>
+      <attribute>
+         <name>title</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: An advisory title for this element.  Often used by the user agent as a tooltip.</description>
+      </attribute>
+      <attribute>
+         <name>styleClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The CSS class for this element.  Corresponds to the HTML 'class' attribute.</description>
+      </attribute>
+      <!-- HTML 4.0 event-handler attributes -->
+      <attribute>
+         <name>onclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is clicked.</description>
+      </attribute>
+      <attribute>
+         <name>ondblclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is double-clicked.</description>
+      </attribute>
+      <attribute>
+         <name>onmousedown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is released over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseover</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved into this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmousemove</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved while it is in this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseout</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moves out of this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeypress</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeydown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed down over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeyup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is released over this element.</description>
+      </attribute>
+   </tag>
+   <!-- message -->
+   <tag>
+      <name>message</name>
+      <tag-class>org.apache.myfaces.taglib.html.HtmlMessageTag</tag-class>
+      <body-content>JSP</body-content>
+      <description>
+            Renders the first FacesMessage that is assigned to the component
+            referenced by the "for" attribute.
+
+            Unless otherwise specified, all attributes accept static values
+            or EL expressions.
+        </description>
+      <!-- all standard attributes of the message tag -->
+      <!-- UIMessage attributes -->
+      <!-- UIComponent attributes -->
+      <attribute>
+         <name>id</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        The developer-assigned ID of this component.  The ID must be unique
+        within the scope of the tag's enclosing naming container (e.g. 
+        h:form or f:subview).  This value must be a static value.
+    </description>
+      </attribute>
+      <attribute>
+         <name>binding</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        Identifies a backing bean property (of type UIComponent or appropriate
+        subclass) to bind to this component instance.  This value must be an
+        EL expression.
+    </description>
+      </attribute>
+      <attribute>
+         <name>rendered</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that indicates whether this component should be rendered.
+        Default value: true.
+    </description>
+      </attribute>
+      <attribute>
+         <name>for</name>
+         <required>true</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        An EL expression, returning a String, with the unique ID of the component 
+        for which messages should be displayed.  This string has the same format
+        as that accepted by the UIComponent.findComponent() method.
+    </description>
+      </attribute>
+      <attribute>
+         <name>showSummary</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        An EL expression, returning a boolean, that controls whether the
+        summary text of the associated messages is displayed.  Default: true.
+    </description>
+      </attribute>
+      <attribute>
+         <name>showDetail</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        An EL expression, returning a boolean, that controls whether the
+        detail text of the associated messages is displayed.  Default: false.
+    </description>
+      </attribute>
+      <!-- HTML 4.0 universal attributes -->
+      <attribute>
+         <name>dir</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The direction of text display, either 'ltr' (left-to-right) or 'rtl' (right-to-left).</description>
+      </attribute>
+      <attribute>
+         <name>lang</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The base language of this document.</description>
+      </attribute>
+      <attribute>
+         <name>style</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: CSS styling instructions.</description>
+      </attribute>
+      <attribute>
+         <name>title</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: An advisory title for this element.  Often used by the user agent as a tooltip.</description>
+      </attribute>
+      <attribute>
+         <name>styleClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The CSS class for this element.  Corresponds to the HTML 'class' attribute.</description>
+      </attribute>
+      <!-- HTML 4.0 event-handler attributes -->
+      <attribute>
+         <name>onclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is clicked.</description>
+      </attribute>
+      <attribute>
+         <name>ondblclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is double-clicked.</description>
+      </attribute>
+      <attribute>
+         <name>onmousedown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is released over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseover</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved into this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmousemove</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved while it is in this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseout</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moves out of this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeypress</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeydown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed down over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeyup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is released over this element.</description>
+      </attribute>
+      <!-- HtmlMessage attributes -->
+      <attribute>
+         <name>infoClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>CSS class to be used for messages with severity "INFO".</description>
+      </attribute>
+      <attribute>
+         <name>infoStyle</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>CSS style to be used for messages with severity "INFO".</description>
+      </attribute>
+      <attribute>
+         <name>warnClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>CSS class to be used for messages with severity "WARN".</description>
+      </attribute>
+      <attribute>
+         <name>warnStyle</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>CSS style to be used for messages with severity "WARN".</description>
+      </attribute>
+      <attribute>
+         <name>errorClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>CSS class to be used for messages with severity "ERROR".</description>
+      </attribute>
+      <attribute>
+         <name>errorStyle</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>CSS style to be used for messages with severity "ERROR".</description>
+      </attribute>
+      <attribute>
+         <name>fatalClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>CSS class to be used for messages with severity "FATAL".</description>
+      </attribute>
+      <attribute>
+         <name>fatalStyle</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>CSS style to be used for messages with severity "FATAL".</description>
+      </attribute>
+      <attribute>
+         <name>tooltip</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>
+                If true, the message summary will be rendered as a tooltip (i.e. HTML title attribute).
+            </description>
+      </attribute>
+   </tag>
+   <!-- messages -->
+   <tag>
+      <name>messages</name>
+      <tag-class>org.apache.myfaces.taglib.html.HtmlMessagesTag</tag-class>
+      <body-content>JSP</body-content>
+      <description> 
+            Renders all or some FacesMessages depending on the "for" and
+            "globalOnly" attributes:&lt;br&gt;
+            &lt;ul&gt;
+             &lt;li&gt;If globalOnly = true, only global messages, that have no
+               associated clientId, will be displayed.&lt;/li&gt;
+            &lt;li&gt;else if there is a "for" attribute, only messages that are
+               assigned to the component referenced by the "for" attribute
+               are displayed.&lt;/li&gt;
+            &lt;li&gt;else all messages are displayed.&lt;/li&gt;
+           &lt;/ul&gt;
+
+            Unless otherwise specified, all attributes accept static values
+            or EL expressions.
+            
+        </description>
+      <!-- all standard attributes of the messages tag -->
+      <!-- UIMessages attributes -->
+      <!-- UIComponent attributes -->
+      <attribute>
+         <name>id</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        The developer-assigned ID of this component.  The ID must be unique
+        within the scope of the tag's enclosing naming container (e.g. 
+        h:form or f:subview).  This value must be a static value.
+    </description>
+      </attribute>
+      <attribute>
+         <name>binding</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        Identifies a backing bean property (of type UIComponent or appropriate
+        subclass) to bind to this component instance.  This value must be an
+        EL expression.
+    </description>
+      </attribute>
+      <attribute>
+         <name>rendered</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that indicates whether this component should be rendered.
+        Default value: true.
+    </description>
+      </attribute>
+      <attribute>
+         <name>showSummary</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that controls whether the summary text of the
+        associated messages is displayed.  Default: true.
+    </description>
+      </attribute>
+      <attribute>
+         <name>showDetail</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that controls whether the detail text of the
+        associated messages is displayed.  Default: false.
+    </description>
+      </attribute>
+      <attribute>
+         <name>globalOnly</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that controls whether global messages (those without
+        IDs) should be displayed. Default: true.
+    </description>
+      </attribute>
+      <!-- HTML 4.0 universal attributes -->
+      <attribute>
+         <name>dir</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The direction of text display, either 'ltr' (left-to-right) or 'rtl' (right-to-left).</description>
+      </attribute>
+      <attribute>
+         <name>lang</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The base language of this document.</description>
+      </attribute>
+      <attribute>
+         <name>style</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: CSS styling instructions.</description>
+      </attribute>
+      <attribute>
+         <name>title</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: An advisory title for this element.  Often used by the user agent as a tooltip.</description>
+      </attribute>
+      <attribute>
+         <name>styleClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The CSS class for this element.  Corresponds to the HTML 'class' attribute.</description>
+      </attribute>
+      <!-- HTML 4.0 event-handler attributes -->
+      <attribute>
+         <name>onclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is clicked.</description>
+      </attribute>
+      <attribute>
+         <name>ondblclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is double-clicked.</description>
+      </attribute>
+      <attribute>
+         <name>onmousedown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is released over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseover</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved into this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmousemove</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved while it is in this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseout</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moves out of this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeypress</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeydown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed down over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeyup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is released over this element.</description>
+      </attribute>
+      <!-- HtmlMessages attributes -->
+      <attribute>
+         <name>infoClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>CSS class to be used for messages with severity "INFO".</description>
+      </attribute>
+      <attribute>
+         <name>infoStyle</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>CSS style to be used for messages with severity "INFO".</description>
+      </attribute>
+      <attribute>
+         <name>warnClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>CSS class to be used for messages with severity "WARN".</description>
+      </attribute>
+      <attribute>
+         <name>warnStyle</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>CSS style to be used for messages with severity "WARN".</description>
+      </attribute>
+      <attribute>
+         <name>errorClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>CSS class to be used for messages with severity "ERROR".</description>
+      </attribute>
+      <attribute>
+         <name>errorStyle</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>CSS style to be used for messages with severity "ERROR".</description>
+      </attribute>
+      <attribute>
+         <name>fatalClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>CSS class to be used for messages with severity "FATAL".</description>
+      </attribute>
+      <attribute>
+         <name>fatalStyle</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>CSS style to be used for messages with severity "FATAL".</description>
+      </attribute>
+      <attribute>
+         <name>layout</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The layout: "table" or "list". Default: list</description>
+      </attribute>
+      <attribute>
+         <name>tooltip</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>
+                If true, the message summary will be rendered as a tooltip (i.e. HTML title attribute).
+            </description>
+      </attribute>
+   </tag>
+   <!-- outputLabel -->
+   <tag>
+      <name>outputLabel</name>
+      <tag-class>org.apache.myfaces.taglib.html.HtmlOutputLabelTag</tag-class>
+      <body-content>JSP</body-content>
+      <description>
+            Renders a HTML label element.
+        
+            In addition to the JSF specification, MyFaces allows it to directly
+            give an output text via the "value" attribute.
+        
+
+            Unless otherwise specified, all attributes accept static values
+            or EL expressions.
+        </description>
+      <!-- all standard attributes of the outputLabel tag -->
+      <!-- UIOutput attributes -->
+      <!-- UIComponent attributes -->
+      <attribute>
+         <name>id</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        The developer-assigned ID of this component.  The ID must be unique
+        within the scope of the tag's enclosing naming container (e.g. 
+        h:form or f:subview).  This value must be a static value.
+    </description>
+      </attribute>
+      <attribute>
+         <name>binding</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        Identifies a backing bean property (of type UIComponent or appropriate
+        subclass) to bind to this component instance.  This value must be an
+        EL expression.
+    </description>
+      </attribute>
+      <attribute>
+         <name>rendered</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that indicates whether this component should be rendered.
+        Default value: true.
+    </description>
+      </attribute>
+      <attribute>
+         <name>value</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>The initial value of this component.</description>
+      </attribute>
+      <attribute>
+         <name>converter</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        An expression that specifies the Converter for this component.  
+        If the value binding expression is a String, the String is used
+        as an ID to look up a Converter. If the value binding expression
+        is a Converter, uses that instance as the converter.
+            
+        The value can either be a static value (ID case only) or an EL expression.
+    </description>
+      </attribute>
+      <!-- HTML 4.0 universal attributes -->
+      <attribute>
+         <name>dir</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The direction of text display, either 'ltr' (left-to-right) or 'rtl' (right-to-left).</description>
+      </attribute>
+      <attribute>
+         <name>lang</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The base language of this document.</description>
+      </attribute>
+      <attribute>
+         <name>style</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: CSS styling instructions.</description>
+      </attribute>
+      <attribute>
+         <name>title</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: An advisory title for this element.  Often used by the user agent as a tooltip.</description>
+      </attribute>
+      <attribute>
+         <name>styleClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The CSS class for this element.  Corresponds to the HTML 'class' attribute.</description>
+      </attribute>
+      <!-- HTML 4.0 event-handler attributes -->
+      <attribute>
+         <name>onclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is clicked.</description>
+      </attribute>
+      <attribute>
+         <name>ondblclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is double-clicked.</description>
+      </attribute>
+      <attribute>
+         <name>onmousedown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is released over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseover</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved into this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmousemove</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved while it is in this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseout</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moves out of this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeypress</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeydown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed down over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeyup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is released over this element.</description>
+      </attribute>
+      <!-- HTML 4.0 label attributes -->
+      <attribute>
+         <name>accesskey</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Sets the access key for this element.</description>
+      </attribute>
+      <attribute>
+         <name>onblur</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element loses focus.</description>
+      </attribute>
+      <attribute>
+         <name>onfocus</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element receives focus.</description>
+      </attribute>
+      <!-- "for" is a specific LabelRenderer attribute -->
+      <!-- LabelRenderer attributes -->
+      <attribute>
+         <name>for</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The client ID of the target input element of this label.</description>
+      </attribute>
+   </tag>
+   <!-- output_link -->
+   <tag>
+      <name>outputLink</name>
+      <tag-class>org.apache.myfaces.taglib.html.HtmlOutputLinkTag</tag-class>
+      <body-content>JSP</body-content>
+      <description>
+            Renders a HTML a element.  Child f:param elements are added to the href
+            attribute as query parameters.  Other children are rendered as the link text or image.
+
+            Unless otherwise specified, all attributes accept static values
+            or EL expressions.
+        </description>
+      <!-- UIOutput attributes -->
+      <!-- UIComponent attributes -->
+      <attribute>
+         <name>id</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        The developer-assigned ID of this component.  The ID must be unique
+        within the scope of the tag's enclosing naming container (e.g. 
+        h:form or f:subview).  This value must be a static value.
+    </description>
+      </attribute>
+      <attribute>
+         <name>binding</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        Identifies a backing bean property (of type UIComponent or appropriate
+        subclass) to bind to this component instance.  This value must be an
+        EL expression.
+    </description>
+      </attribute>
+      <attribute>
+         <name>rendered</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that indicates whether this component should be rendered.
+        Default value: true.
+    </description>
+      </attribute>
+      <attribute>
+         <name>value</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>The initial value of this component.</description>
+      </attribute>
+      <attribute>
+         <name>converter</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        An expression that specifies the Converter for this component.  
+        If the value binding expression is a String, the String is used
+        as an ID to look up a Converter. If the value binding expression
+        is a Converter, uses that instance as the converter.
+            
+        The value can either be a static value (ID case only) or an EL expression.
+    </description>
+      </attribute>
+      <!-- HTML 4.0 universal attributes -->
+      <attribute>
+         <name>dir</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The direction of text display, either 'ltr' (left-to-right) or 'rtl' (right-to-left).</description>
+      </attribute>
+      <attribute>
+         <name>lang</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The base language of this document.</description>
+      </attribute>
+      <attribute>
+         <name>style</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: CSS styling instructions.</description>
+      </attribute>
+      <attribute>
+         <name>title</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: An advisory title for this element.  Often used by the user agent as a tooltip.</description>
+      </attribute>
+      <attribute>
+         <name>styleClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The CSS class for this element.  Corresponds to the HTML 'class' attribute.</description>
+      </attribute>
+      <!-- HTML 4.0 event-handler attributes -->
+      <attribute>
+         <name>onclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is clicked.</description>
+      </attribute>
+      <attribute>
+         <name>ondblclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is double-clicked.</description>
+      </attribute>
+      <attribute>
+         <name>onmousedown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is released over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseover</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved into this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmousemove</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved while it is in this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseout</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moves out of this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeypress</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeydown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed down over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeyup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is released over this element.</description>
+      </attribute>
+      <!-- HTML 4.0 anchor (=a) attributes -->
+      <attribute>
+         <name>accesskey</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Sets the access key for this element.</description>
+      </attribute>
+      <attribute>
+         <name>charset</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies the character encoding of the linked resource.</description>
+      </attribute>
+      <attribute>
+         <name>tabindex</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies the position of this element within the tab order of the document.</description>
+      </attribute>
+      <attribute>
+         <name>onblur</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element loses focus.</description>
+      </attribute>
+      <attribute>
+         <name>onfocus</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element receives focus.</description>
+      </attribute>
+      <attribute>
+         <name>type</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: A hint to the user agent about the content type of the linked resource.</description>
+      </attribute>
+      <attribute>
+         <name>target</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Names the frame that should display content generated by invoking this action. </description>
+      </attribute>
+      <attribute>
+         <name>coords</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: The coordinates of regions within a client side image map.</description>
+      </attribute>
+      <!-- "href" is a special LinkRenderer attribute -->
+      <attribute>
+         <name>hreflang</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: The language of the linked resource.</description>
+      </attribute>
+      <!-- "name" cannot be set by user -->
+      <attribute>
+         <name>rel</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+                HTML: The relationship between the current document and
+                the linked resource.
+            </description>
+      </attribute>
+      <attribute>
+         <name>rev</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+                HTML: The type(s) describing the reverse link for the linked
+                resource.
+            </description>
+      </attribute>
+      <attribute>
+         <name>shape</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+                HTML: The shape of a region in a client side image map.
+            </description>
+      </attribute>
+   </tag>
+   <!-- output_message -->
+   <tag>
+      <name>outputFormat</name>
+      <tag-class>org.apache.myfaces.taglib.html.HtmlOutputFormatTag</tag-class>
+      <body-content>JSP</body-content>
+      <description>
+            Renders as text, applying the child f:param values to the value
+            attribute as a MessageFormat string.  If this element has an ID
+            or CSS style properties, the text is wrapped in a span element.
+
+            Unless otherwise specified, all attributes accept static values
+            or EL expressions.
+        </description>
+      <!-- UIOutput attributes -->
+      <!-- UIComponent attributes -->
+      <attribute>
+         <name>id</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        The developer-assigned ID of this component.  The ID must be unique
+        within the scope of the tag's enclosing naming container (e.g. 
+        h:form or f:subview).  This value must be a static value.
+    </description>
+      </attribute>
+      <attribute>
+         <name>binding</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        Identifies a backing bean property (of type UIComponent or appropriate
+        subclass) to bind to this component instance.  This value must be an
+        EL expression.
+    </description>
+      </attribute>
+      <attribute>
+         <name>rendered</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that indicates whether this component should be rendered.
+        Default value: true.
+    </description>
+      </attribute>
+      <attribute>
+         <name>value</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>The initial value of this component.</description>
+      </attribute>
+      <attribute>
+         <name>converter</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        An expression that specifies the Converter for this component.  
+        If the value binding expression is a String, the String is used
+        as an ID to look up a Converter. If the value binding expression
+        is a Converter, uses that instance as the converter.
+            
+        The value can either be a static value (ID case only) or an EL expression.
+    </description>
+      </attribute>
+      <!-- HTML 4.0 universal attributes -->
+      <attribute>
+         <name>dir</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The direction of text display, either 'ltr' (left-to-right) or 'rtl' (right-to-left).</description>
+      </attribute>
+      <attribute>
+         <name>lang</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The base language of this document.</description>
+      </attribute>
+      <attribute>
+         <name>style</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: CSS styling instructions.</description>
+      </attribute>
+      <attribute>
+         <name>title</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: An advisory title for this element.  Often used by the user agent as a tooltip.</description>
+      </attribute>
+      <attribute>
+         <name>styleClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The CSS class for this element.  Corresponds to the HTML 'class' attribute.</description>
+      </attribute>
+      <!-- HTML 4.0 event-handler attributes -->
+      <attribute>
+         <name>onclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is clicked.</description>
+      </attribute>
+      <attribute>
+         <name>ondblclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is double-clicked.</description>
+      </attribute>
+      <attribute>
+         <name>onmousedown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is released over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseover</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved into this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmousemove</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved while it is in this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseout</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moves out of this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeypress</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeydown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed down over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeyup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is released over this element.</description>
+      </attribute>
+      <attribute>
+         <name>escape</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>
+                Indicates whether rendered markup should be escaped.
+                Default: true
+            </description>
+      </attribute>
+   </tag>
+   <!-- output_text -->
+   <tag>
+      <name>outputText</name>
+      <tag-class>org.apache.myfaces.taglib.html.HtmlOutputTextTag</tag-class>
+      <body-content>JSP</body-content>
+      <description>
+            Renders the value of the associated UIOutput component.  If this
+            element has an ID or CSS style properties, the text is wrapped in
+            a span element.
+
+            Unless otherwise specified, all attributes accept static values
+            or EL expressions.
+        </description>
+      <!-- UIOutput attributes -->
+      <!-- UIComponent attributes -->
+      <attribute>
+         <name>id</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        The developer-assigned ID of this component.  The ID must be unique
+        within the scope of the tag's enclosing naming container (e.g. 
+        h:form or f:subview).  This value must be a static value.
+    </description>
+      </attribute>
+      <attribute>
+         <name>binding</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        Identifies a backing bean property (of type UIComponent or appropriate
+        subclass) to bind to this component instance.  This value must be an
+        EL expression.
+    </description>
+      </attribute>
+      <attribute>
+         <name>rendered</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that indicates whether this component should be rendered.
+        Default value: true.
+    </description>
+      </attribute>
+      <attribute>
+         <name>value</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>The initial value of this component.</description>
+      </attribute>
+      <attribute>
+         <name>converter</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        An expression that specifies the Converter for this component.  
+        If the value binding expression is a String, the String is used
+        as an ID to look up a Converter. If the value binding expression
+        is a Converter, uses that instance as the converter.
+            
+        The value can either be a static value (ID case only) or an EL expression.
+    </description>
+      </attribute>
+      <!-- HTML 4.0 universal attributes -->
+      <attribute>
+         <name>dir</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The direction of text display, either 'ltr' (left-to-right) or 'rtl' (right-to-left).</description>
+      </attribute>
+      <attribute>
+         <name>lang</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The base language of this document.</description>
+      </attribute>
+      <attribute>
+         <name>style</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: CSS styling instructions.</description>
+      </attribute>
+      <attribute>
+         <name>title</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: An advisory title for this element.  Often used by the user agent as a tooltip.</description>
+      </attribute>
+      <attribute>
+         <name>styleClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The CSS class for this element.  Corresponds to the HTML 'class' attribute.</description>
+      </attribute>
+      <!-- HTML 4.0 event-handler attributes -->
+      <attribute>
+         <name>onclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is clicked.</description>
+      </attribute>
+      <attribute>
+         <name>ondblclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is double-clicked.</description>
+      </attribute>
+      <attribute>
+         <name>onmousedown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is released over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseover</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved into this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmousemove</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved while it is in this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseout</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moves out of this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeypress</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeydown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed down over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeyup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is released over this element.</description>
+      </attribute>
+      <attribute>
+         <name>escape</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>
+                Indicates whether rendered markup should be escaped.
+                Default: true
+            </description>
+      </attribute>
+   </tag>
+   <!-- panel_grid -->
+   <tag>
+      <name>panelGrid</name>
+      <tag-class>org.apache.myfaces.taglib.html.HtmlPanelGridTag</tag-class>
+      <body-content>JSP</body-content>
+      <description>
+            This element renders as an HTML table with specified number of
+            columns.  Children of this element are rendered as cells in the
+            table, filling rows from left to right.  Facets named "header"
+            and "footer" are optional and specify the content of the thead
+            and tfoot rows, respectively.
+
+            Unless otherwise specified, all attributes accept static values
+            or EL expressions.
+        </description>
+      <!-- UIPanel attributes -->
+      <!-- UIComponent attributes -->
+      <attribute>
+         <name>id</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        The developer-assigned ID of this component.  The ID must be unique
+        within the scope of the tag's enclosing naming container (e.g. 
+        h:form or f:subview).  This value must be a static value.
+    </description>
+      </attribute>
+      <attribute>
+         <name>binding</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        Identifies a backing bean property (of type UIComponent or appropriate
+        subclass) to bind to this component instance.  This value must be an
+        EL expression.
+    </description>
+      </attribute>
+      <attribute>
+         <name>rendered</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that indicates whether this component should be rendered.
+        Default value: true.
+    </description>
+      </attribute>
+      <!-- HTML 4.0 universal attributes -->
+      <attribute>
+         <name>dir</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The direction of text display, either 'ltr' (left-to-right) or 'rtl' (right-to-left).</description>
+      </attribute>
+      <attribute>
+         <name>lang</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The base language of this document.</description>
+      </attribute>
+      <attribute>
+         <name>style</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: CSS styling instructions.</description>
+      </attribute>
+      <attribute>
+         <name>title</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: An advisory title for this element.  Often used by the user agent as a tooltip.</description>
+      </attribute>
+      <attribute>
+         <name>styleClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The CSS class for this element.  Corresponds to the HTML 'class' attribute.</description>
+      </attribute>
+      <!-- HTML 4.0 event-handler attributes -->
+      <attribute>
+         <name>onclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is clicked.</description>
+      </attribute>
+      <attribute>
+         <name>ondblclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is double-clicked.</description>
+      </attribute>
+      <attribute>
+         <name>onmousedown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is released over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseover</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved into this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmousemove</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved while it is in this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseout</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moves out of this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeypress</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeydown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed down over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeyup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is released over this element.</description>
+      </attribute>
+      <!-- HTML 4.0 table attributes -->
+      <attribute>
+         <name>align</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Specifies the horizontal alignment of this element.  Deprecated in HTML 4.01.</description>
+      </attribute>
+      <attribute>
+         <name>border</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies the width of the border of this element, in pixels.  Deprecated in HTML 4.01.</description>
+      </attribute>
+      <attribute>
+         <name>bgcolor</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The background color of this element.</description>
+      </attribute>
+      <attribute>
+         <name>datafld</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>Reserved for future use.</description>
+      </attribute>
+      <attribute>
+         <name>datasrc</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>Reserved for future use.</description>
+      </attribute>
+      <attribute>
+         <name>dataformatas</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>Reserved for future use.</description>
+      </attribute>
+      <attribute>
+         <name>cellpadding</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>
+        HTML: Specifies the amount of empty space between the cell border and
+        its contents.  It can be either a pixel length or a percentage.
+    </description>
+      </attribute>
+      <attribute>
+         <name>cellspacing</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>
+        HTML: Specifies the amount of space between the cells of the table.
+        It can be either a pixel length or a percentage of available 
+        space.
+    </description>
+      </attribute>
+      <attribute>
+         <name>frame</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>
+        HTML: Controls what part of the frame that surrounds a table is 
+        visible.  Values include:  void, above, below, hsides, lhs, 
+        rhs, vsides, box, and border.
+    </description>
+      </attribute>
+      <attribute>
+         <name>rules</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>
+        HTML: Controls how rules are rendered between cells.  Values include:
+        none, groups, rows, cols, and all.
+    </description>
+      </attribute>
+      <attribute>
+         <name>summary</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>
+        HTML: Provides a summary of the contents of the table, for
+        accessibility purposes.
+    </description>
+      </attribute>
+      <attribute>
+         <name>width</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>
+        HTML: Specifies the desired width of the table, as a pixel length or
+        a percentage of available space.
+    </description>
+      </attribute>
+      <attribute>
+         <name>columnClasses</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>
+        A comma separated list of CSS class names to apply to td elements in
+        each column.
+    </description>
+      </attribute>
+      <attribute>
+         <name>footerClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The CSS class to be applied to footer cells.</description>
+      </attribute>
+      <attribute>
+         <name>headerClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The CSS class to be applied to header cells.</description>
+      </attribute>
+      <attribute>
+         <name>rowClasses</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>
+        A comma separated list of CSS class names to apply to td elements in
+        each row.
+    </description>
+      </attribute>
+      <!-- GridRenderer attributes -->
+      <attribute>
+         <name>columns</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>Specifies the number of columns in the grid.</description>
+      </attribute>
+   </tag>
+   <tag>
+      <name>panelGroup</name>
+      <tag-class>org.apache.myfaces.taglib.html.HtmlPanelGroupTag</tag-class>
+      <body-content>JSP</body-content>
+      <description>
+            This element is used to group other components where the
+            specification requires one child element. If any of the HTML or
+            CSS attributes are set, its content is rendered within a span element.
+
+            Unless otherwise specified, all attributes accept static values
+            or EL expressions.
+        </description>
+      <!-- all standard attributes of the panelGroup tag -->
+      <!-- UIPanel attributes -->
+      <!-- UIComponent attributes -->
+      <attribute>
+         <name>id</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        The developer-assigned ID of this component.  The ID must be unique
+        within the scope of the tag's enclosing naming container (e.g. 
+        h:form or f:subview).  This value must be a static value.
+    </description>
+      </attribute>
+      <attribute>
+         <name>binding</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        Identifies a backing bean property (of type UIComponent or appropriate
+        subclass) to bind to this component instance.  This value must be an
+        EL expression.
+    </description>
+      </attribute>
+      <attribute>
+         <name>rendered</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that indicates whether this component should be rendered.
+        Default value: true.
+    </description>
+      </attribute>
+      <!-- HTML 4.0 universal attributes -->
+      <attribute>
+         <name>dir</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The direction of text display, either 'ltr' (left-to-right) or 'rtl' (right-to-left).</description>
+      </attribute>
+      <attribute>
+         <name>lang</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The base language of this document.</description>
+      </attribute>
+      <attribute>
+         <name>style</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: CSS styling instructions.</description>
+      </attribute>
+      <attribute>
+         <name>title</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: An advisory title for this element.  Often used by the user agent as a tooltip.</description>
+      </attribute>
+      <attribute>
+         <name>styleClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The CSS class for this element.  Corresponds to the HTML 'class' attribute.</description>
+      </attribute>
+      <!-- HTML 4.0 event-handler attributes -->
+      <attribute>
+         <name>onclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is clicked.</description>
+      </attribute>
+      <attribute>
+         <name>ondblclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is double-clicked.</description>
+      </attribute>
+      <attribute>
+         <name>onmousedown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is released over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseover</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved into this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmousemove</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved while it is in this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseout</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moves out of this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeypress</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeydown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed down over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeyup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is released over this element.</description>
+      </attribute>
+   </tag>
+   <tag>
+      <name>selectBooleanCheckbox</name>
+      <tag-class>org.apache.myfaces.taglib.html.HtmlSelectBooleanCheckboxTag</tag-class>
+      <body-content>JSP</body-content>
+      <description>
+            Allow the user to choose a "true" or "false" value, presented as a
+            checkbox.
+            &lt;p&gt;
+            Renders as an HTML input tag with its type set to "checkbox", and
+            its name attribute set to the id. The "checked" attribute is rendered
+            if the value of this component is true.
+            &lt;p&gt;
+            Unless otherwise specified, all attributes accept static values
+            or EL expressions.
+            
+        </description>
+      <!-- UISelectBoolean attributes -->
+      <!-- "selected" attribute is covered by HTML "checked" attribute -->
+      <!-- UIInput attributes -->
+      <!-- UIOutput attributes -->
+      <!-- UIComponent attributes -->
+      <attribute>
+         <name>id</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        The developer-assigned ID of this component.  The ID must be unique
+        within the scope of the tag's enclosing naming container (e.g. 
+        h:form or f:subview).  This value must be a static value.
+    </description>
+      </attribute>
+      <attribute>
+         <name>binding</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        Identifies a backing bean property (of type UIComponent or appropriate
+        subclass) to bind to this component instance.  This value must be an
+        EL expression.
+    </description>
+      </attribute>
+      <attribute>
+         <name>rendered</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that indicates whether this component should be rendered.
+        Default value: true.
+    </description>
+      </attribute>
+      <attribute>
+         <name>value</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>The initial value of this component.</description>
+      </attribute>
+      <attribute>
+         <name>converter</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        An expression that specifies the Converter for this component.  
+        If the value binding expression is a String, the String is used
+        as an ID to look up a Converter. If the value binding expression
+        is a Converter, uses that instance as the converter.
+            
+        The value can either be a static value (ID case only) or an EL expression.
+    </description>
+      </attribute>
+      <attribute>
+         <name>immediate</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that identifies the phase during which value change
+        events should fire. During normal event processing, value change
+        events are fired during the "invoke application" phase of request
+        processing. If this attribute is set to "true", these methods are
+        fired instead at the end of the "apply request values" phase.
+    </description>
+      </attribute>
+      <attribute>
+         <name>required</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that indicates whether an input value is required.
+        If this value is true, and no input value is provided, the error
+        message javax.faces.component.UIInput.REQUIRED is posted.
+    </description>
+      </attribute>
+      <attribute>
+         <name>validator</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A method binding EL expression, accepting FacesContext, UIComponent,
+        and Object parameters, and returning void, that validates the
+        component's local value.
+    </description>
+      </attribute>
+      <attribute>
+         <name>valueChangeListener</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A method binding EL expression, accepting a ValueChangeEvent parameter
+        and returning void. The specified method is invoked if this component
+        is modified. The phase that this handler is fired in can be controlled
+        via the immediate attribute.
+    </description>
+      </attribute>
+      <!-- HTML 4.0 universal attributes -->
+      <attribute>
+         <name>dir</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The direction of text display, either 'ltr' (left-to-right) or 'rtl' (right-to-left).</description>
+      </attribute>
+      <attribute>
+         <name>lang</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The base language of this document.</description>
+      </attribute>
+      <attribute>
+         <name>style</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: CSS styling instructions.</description>
+      </attribute>
+      <attribute>
+         <name>title</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: An advisory title for this element.  Often used by the user agent as a tooltip.</description>
+      </attribute>
+      <attribute>
+         <name>styleClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The CSS class for this element.  Corresponds to the HTML 'class' attribute.</description>
+      </attribute>
+      <!-- HTML 4.0 event-handler attributes -->
+      <attribute>
+         <name>onclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is clicked.</description>
+      </attribute>
+      <attribute>
+         <name>ondblclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is double-clicked.</description>
+      </attribute>
+      <attribute>
+         <name>onmousedown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is released over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseover</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved into this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmousemove</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved while it is in this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseout</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moves out of this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeypress</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeydown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed down over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeyup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is released over this element.</description>
+      </attribute>
+      <!-- HTML 4.0 input attributes for type "checkbox" -->
+      <attribute>
+         <name>accesskey</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Sets the access key for this element.</description>
+      </attribute>
+      <attribute>
+         <name>alt</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies alternative text that can be used by a browser that can't show this element.</description>
+      </attribute>
+      <attribute>
+         <name>datafld</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>Reserved for future use.</description>
+      </attribute>
+      <attribute>
+         <name>datasrc</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>Reserved for future use.</description>
+      </attribute>
+      <attribute>
+         <name>dataformatas</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>Reserved for future use.</description>
+      </attribute>
+      <attribute>
+         <name>disabled</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: When true, this element cannot receive focus.</description>
+      </attribute>
+      <attribute>
+         <name>onblur</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element loses focus.</description>
+      </attribute>
+      <attribute>
+         <name>onfocus</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element receives focus.</description>
+      </attribute>
+      <attribute>
+         <name>onchange</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element is modified.</description>
+      </attribute>
+      <attribute>
+         <name>onselect</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element is selected.</description>
+      </attribute>
+      <attribute>
+         <name>readonly</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        HTML: When true, indicates that this component cannot be modified by the user.
+        The element may receive focus unless it has also been disabled.
+    </description>
+      </attribute>
+      <attribute>
+         <name>tabindex</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies the position of this element within the tab order of the document.</description>
+      </attribute>
+   </tag>
+   <tag>
+      <name>selectManyCheckbox</name>
+      <tag-class>org.apache.myfaces.taglib.html.HtmlSelectManyCheckboxTag</tag-class>
+      <body-content>JSP</body-content>
+      <description>
+            Allow the user to select zero or more items from a set of
+            available options. This is presented as a table with one cell per
+            available option; each cell contains a checkbox and the option's
+            label. The "layout" attribute determines whether the checkboxes
+            are laid out horizontally or vertically.
+            &lt;p&gt;
+            The set of available options is defined by adding child
+            f:selectItem or f:selectItems components to this component.
+            &lt;p&gt;
+            The value attribute must be a value-binding expression to a
+            property of type List, Object array or primitive array. That
+            "collection" is expected to contain objects of the same type as
+            SelectItem.getValue() returns for the child SelectItem objects.
+            On rendering, any child whose value is in the list will be
+            selected initially. During the update phase, the property setter
+            is called to replace the original collection with a completely
+            new collection object of the appropriate type. The new collection
+            object contains the value of each child SelectItem object that
+            is currently selected.
+            &lt;p&gt;
+            Unless otherwise specified, all attributes accept static values
+            or EL expressions.
+            
+        </description>
+      <!-- all standard attributes of the selectManyCheckbox tag -->
+      <!-- UISelectMany attributes -->
+      <!-- UIInput attributes -->
+      <!-- UIOutput attributes -->
+      <!-- UIComponent attributes -->
+      <attribute>
+         <name>id</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        The developer-assigned ID of this component.  The ID must be unique
+        within the scope of the tag's enclosing naming container (e.g. 
+        h:form or f:subview).  This value must be a static value.
+    </description>
+      </attribute>
+      <attribute>
+         <name>binding</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        Identifies a backing bean property (of type UIComponent or appropriate
+        subclass) to bind to this component instance.  This value must be an
+        EL expression.
+    </description>
+      </attribute>
+      <attribute>
+         <name>rendered</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that indicates whether this component should be rendered.
+        Default value: true.
+    </description>
+      </attribute>
+      <attribute>
+         <name>value</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>The initial value of this component.</description>
+      </attribute>
+      <attribute>
+         <name>converter</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        An expression that specifies the Converter for this component.  
+        If the value binding expression is a String, the String is used
+        as an ID to look up a Converter. If the value binding expression
+        is a Converter, uses that instance as the converter.
+            
+        The value can either be a static value (ID case only) or an EL expression.
+    </description>
+      </attribute>
+      <attribute>
+         <name>immediate</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that identifies the phase during which value change
+        events should fire. During normal event processing, value change
+        events are fired during the "invoke application" phase of request
+        processing. If this attribute is set to "true", these methods are
+        fired instead at the end of the "apply request values" phase.
+    </description>
+      </attribute>
+      <attribute>
+         <name>required</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that indicates whether an input value is required.
+        If this value is true, and no input value is provided, the error
+        message javax.faces.component.UIInput.REQUIRED is posted.
+    </description>
+      </attribute>
+      <attribute>
+         <name>validator</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A method binding EL expression, accepting FacesContext, UIComponent,
+        and Object parameters, and returning void, that validates the
+        component's local value.
+    </description>
+      </attribute>
+      <attribute>
+         <name>valueChangeListener</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A method binding EL expression, accepting a ValueChangeEvent parameter
+        and returning void. The specified method is invoked if this component
+        is modified. The phase that this handler is fired in can be controlled
+        via the immediate attribute.
+    </description>
+      </attribute>
+      <!-- HTML 4.0 universal attributes -->
+      <attribute>
+         <name>dir</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The direction of text display, either 'ltr' (left-to-right) or 'rtl' (right-to-left).</description>
+      </attribute>
+      <attribute>
+         <name>lang</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The base language of this document.</description>
+      </attribute>
+      <attribute>
+         <name>style</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: CSS styling instructions.</description>
+      </attribute>
+      <attribute>
+         <name>title</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: An advisory title for this element.  Often used by the user agent as a tooltip.</description>
+      </attribute>
+      <attribute>
+         <name>styleClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The CSS class for this element.  Corresponds to the HTML 'class' attribute.</description>
+      </attribute>
+      <!-- HTML 4.0 event-handler attributes -->
+      <attribute>
+         <name>onclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is clicked.</description>
+      </attribute>
+      <attribute>
+         <name>ondblclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is double-clicked.</description>
+      </attribute>
+      <attribute>
+         <name>onmousedown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is released over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseover</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved into this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmousemove</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved while it is in this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseout</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moves out of this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeypress</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeydown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed down over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeyup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is released over this element.</description>
+      </attribute>
+      <!-- HTML 4.0 input attributes for type "checkbox" -->
+      <attribute>
+         <name>accesskey</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Sets the access key for this element.</description>
+      </attribute>
+      <attribute>
+         <name>alt</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies alternative text that can be used by a browser that can't show this element.</description>
+      </attribute>
+      <attribute>
+         <name>datafld</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>Reserved for future use.</description>
+      </attribute>
+      <attribute>
+         <name>datasrc</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>Reserved for future use.</description>
+      </attribute>
+      <attribute>
+         <name>dataformatas</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>Reserved for future use.</description>
+      </attribute>
+      <attribute>
+         <name>disabled</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: When true, this element cannot receive focus.</description>
+      </attribute>
+      <attribute>
+         <name>onblur</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element loses focus.</description>
+      </attribute>
+      <attribute>
+         <name>onfocus</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element receives focus.</description>
+      </attribute>
+      <attribute>
+         <name>onchange</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element is modified.</description>
+      </attribute>
+      <attribute>
+         <name>onselect</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element is selected.</description>
+      </attribute>
+      <attribute>
+         <name>readonly</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        HTML: When true, indicates that this component cannot be modified by the user.
+        The element may receive focus unless it has also been disabled.
+    </description>
+      </attribute>
+      <attribute>
+         <name>tabindex</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies the position of this element within the tab order of the document.</description>
+      </attribute>
+      <!-- CheckboxListRenderer attributes -->
+      <attribute>
+         <name>layout</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>Controls the layout direction of the child elements.  Values include:  
+	lineDirection (vertical) and pageDirection (horzontal).</description>
+      </attribute>
+      <!--TODO: disabledClass, enabledClass -->
+      <attribute>
+         <name>enabledClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The CSS class assigned to the label element for enabled choices.</description>
+      </attribute>
+      <attribute>
+         <name>disabledClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The CSS class assigned to the label element for enabled choices.</description>
+      </attribute>
+   </tag>
+   <tag>
+      <name>selectManyListbox</name>
+      <tag-class>org.apache.myfaces.taglib.html.HtmlSelectManyListboxTag</tag-class>
+      <body-content>JSP</body-content>
+      <description>
+            Allow the user to select zero or more items from a set of
+            available options. This is presented as a listbox which allows
+            multiple rows in the list to be selected simultaneously.
+            &lt;p&gt;
+            The set of available options is defined by adding child
+            f:selectItem or f:selectItems components to this component.
+            &lt;p&gt;
+            The list is rendered as an HTML select element. The "multiple"
+            attribute is set on the element and the size attribute is set to
+            the provided value, defaulting to the number of items in the list
+            if no value is provided. If the size is set to 1, then a
+            "drop-down" list (aka "combo-box") is presented, though if this is
+            the intention then a selectManyMenu should be used instead.
+            &lt;p&gt;
+            The value attribute must be a value-binding expression to a
+            property of type List, Object array or primitive array. That
+            "collection" is expected to contain objects of the same type as
+            SelectItem.getValue() returns for the child SelectItem objects.
+            On rendering, any child whose value is in the list will be
+            selected initially. During the update phase, the property is set
+            to contain a "collection" of values for those child SelectItem
+            objects that are currently selected.
+            &lt;p&gt;
+            Unless otherwise specified, all attributes accept static values
+            or EL expressions.
+            
+        </description>
+      <!-- UISelectMany attributes -->
+      <!-- UIInput attributes -->
+      <!-- UIOutput attributes -->
+      <!-- UIComponent attributes -->
+      <attribute>
+         <name>id</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        The developer-assigned ID of this component.  The ID must be unique
+        within the scope of the tag's enclosing naming container (e.g. 
+        h:form or f:subview).  This value must be a static value.
+    </description>
+      </attribute>
+      <attribute>
+         <name>binding</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        Identifies a backing bean property (of type UIComponent or appropriate
+        subclass) to bind to this component instance.  This value must be an
+        EL expression.
+    </description>
+      </attribute>
+      <attribute>
+         <name>rendered</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that indicates whether this component should be rendered.
+        Default value: true.
+    </description>
+      </attribute>
+      <attribute>
+         <name>value</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>The initial value of this component.</description>
+      </attribute>
+      <attribute>
+         <name>converter</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        An expression that specifies the Converter for this component.  
+        If the value binding expression is a String, the String is used
+        as an ID to look up a Converter. If the value binding expression
+        is a Converter, uses that instance as the converter.
+            
+        The value can either be a static value (ID case only) or an EL expression.
+    </description>
+      </attribute>
+      <attribute>
+         <name>immediate</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that identifies the phase during which value change
+        events should fire. During normal event processing, value change
+        events are fired during the "invoke application" phase of request
+        processing. If this attribute is set to "true", these methods are
+        fired instead at the end of the "apply request values" phase.
+    </description>
+      </attribute>
+      <attribute>
+         <name>required</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that indicates whether an input value is required.
+        If this value is true, and no input value is provided, the error
+        message javax.faces.component.UIInput.REQUIRED is posted.
+    </description>
+      </attribute>
+      <attribute>
+         <name>validator</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A method binding EL expression, accepting FacesContext, UIComponent,
+        and Object parameters, and returning void, that validates the
+        component's local value.
+    </description>
+      </attribute>
+      <attribute>
+         <name>valueChangeListener</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A method binding EL expression, accepting a ValueChangeEvent parameter
+        and returning void. The specified method is invoked if this component
+        is modified. The phase that this handler is fired in can be controlled
+        via the immediate attribute.
+    </description>
+      </attribute>
+      <!-- HTML 4.0 universal attributes -->
+      <attribute>
+         <name>dir</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The direction of text display, either 'ltr' (left-to-right) or 'rtl' (right-to-left).</description>
+      </attribute>
+      <attribute>
+         <name>lang</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The base language of this document.</description>
+      </attribute>
+      <attribute>
+         <name>style</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: CSS styling instructions.</description>
+      </attribute>
+      <attribute>
+         <name>title</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: An advisory title for this element.  Often used by the user agent as a tooltip.</description>
+      </attribute>
+      <attribute>
+         <name>styleClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The CSS class for this element.  Corresponds to the HTML 'class' attribute.</description>
+      </attribute>
+      <!-- HTML 4.0 event-handler attributes -->
+      <attribute>
+         <name>onclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is clicked.</description>
+      </attribute>
+      <attribute>
+         <name>ondblclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is double-clicked.</description>
+      </attribute>
+      <attribute>
+         <name>onmousedown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is released over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseover</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved into this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmousemove</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved while it is in this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseout</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moves out of this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeypress</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeydown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed down over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeyup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is released over this element.</description>
+      </attribute>
+      <!-- HTML 4.0 select attributes -->
+      <attribute>
+         <name>onblur</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element loses focus.</description>
+      </attribute>
+      <attribute>
+         <name>onfocus</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element receives focus.</description>
+      </attribute>
+      <attribute>
+         <name>onchange</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element is modified.</description>
+      </attribute>
+      <attribute>
+         <name>tabindex</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies the position of this element within the tab order of the document.</description>
+      </attribute>
+      <attribute>
+         <name>readonly</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        HTML: When true, indicates that this component cannot be modified by the user.
+        The element may receive focus unless it has also been disabled.
+    </description>
+      </attribute>
+      <attribute>
+         <name>disabled</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: When true, this element cannot receive focus.</description>
+      </attribute>
+      <attribute>
+         <name>datafld</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>Reserved for future use.</description>
+      </attribute>
+      <attribute>
+         <name>datasrc</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>Reserved for future use.</description>
+      </attribute>
+      <attribute>
+         <name>dataformatas</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>Reserved for future use.</description>
+      </attribute>
+      <!-- "multiple" cannot be set manually -->
+      <!-- "name" cannot be set manually -->
+      <!-- "size" cannot be set directly for it is a MenuRenderer specific attribute -->
+      <!-- ListboxRenderer attributes -->
+      <attribute>
+         <name>size</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>see JSF Spec.</description>
+      </attribute>
+      <attribute>
+         <name>enabledClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+      </attribute>
+      <attribute>
+         <name>disabledClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+      </attribute>
+   </tag>
+   <tag>
+      <name>selectManyMenu</name>
+      <tag-class>org.apache.myfaces.taglib.html.HtmlSelectManyMenuTag</tag-class>
+      <body-content>JSP</body-content>
+      <description>
+            Allow the user to select zero or more items from a set of available
+            options. This is presented as a drop-down "combo-box" which allows
+            multiple rows in the list to be selected simultaneously.
+            &lt;p&gt;
+            The set of available options is defined by adding child
+            f:selectItem or f:selectItems components to this component.
+            &lt;p&gt;
+            Renders as an HTML select element, with the choices made up of 
+            child f:selectItem or f:selectItems elements. The multiple
+            attribute is set and the size attribute is set to 1.
+            &lt;p&gt;
+            The value attribute must be a value-binding expression to a
+            property of type List, Object array or primitive array. That
+            "collection" is expected to contain objects of the same type as
+            SelectItem.getValue() returns for the child SelectItem objects.
+            On rendering, any child whose value is in the list will be
+            selected initially. During the update phase, the property is set
+            to contain a "collection" of values for those child SelectItem
+            objects that are currently selected.
+            &lt;p&gt;
+            Unless otherwise specified, all attributes accept static values
+            or EL expressions.
+            
+        </description>
+      <!-- UISelectMany attributes -->
+      <!-- UIInput attributes -->
+      <!-- UIOutput attributes -->
+      <!-- UIComponent attributes -->
+      <attribute>
+         <name>id</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        The developer-assigned ID of this component.  The ID must be unique
+        within the scope of the tag's enclosing naming container (e.g. 
+        h:form or f:subview).  This value must be a static value.
+    </description>
+      </attribute>
+      <attribute>
+         <name>binding</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        Identifies a backing bean property (of type UIComponent or appropriate
+        subclass) to bind to this component instance.  This value must be an
+        EL expression.
+    </description>
+      </attribute>
+      <attribute>
+         <name>rendered</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that indicates whether this component should be rendered.
+        Default value: true.
+    </description>
+      </attribute>
+      <attribute>
+         <name>value</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>The initial value of this component.</description>
+      </attribute>
+      <attribute>
+         <name>converter</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        An expression that specifies the Converter for this component.  
+        If the value binding expression is a String, the String is used
+        as an ID to look up a Converter. If the value binding expression
+        is a Converter, uses that instance as the converter.
+            
+        The value can either be a static value (ID case only) or an EL expression.
+    </description>
+      </attribute>
+      <attribute>
+         <name>immediate</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that identifies the phase during which value change
+        events should fire. During normal event processing, value change
+        events are fired during the "invoke application" phase of request
+        processing. If this attribute is set to "true", these methods are
+        fired instead at the end of the "apply request values" phase.
+    </description>
+      </attribute>
+      <attribute>
+         <name>required</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that indicates whether an input value is required.
+        If this value is true, and no input value is provided, the error
+        message javax.faces.component.UIInput.REQUIRED is posted.
+    </description>
+      </attribute>
+      <attribute>
+         <name>validator</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A method binding EL expression, accepting FacesContext, UIComponent,
+        and Object parameters, and returning void, that validates the
+        component's local value.
+    </description>
+      </attribute>
+      <attribute>
+         <name>valueChangeListener</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A method binding EL expression, accepting a ValueChangeEvent parameter
+        and returning void. The specified method is invoked if this component
+        is modified. The phase that this handler is fired in can be controlled
+        via the immediate attribute.
+    </description>
+      </attribute>
+      <!-- HTML 4.0 universal attributes -->
+      <attribute>
+         <name>dir</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The direction of text display, either 'ltr' (left-to-right) or 'rtl' (right-to-left).</description>
+      </attribute>
+      <attribute>
+         <name>lang</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The base language of this document.</description>
+      </attribute>
+      <attribute>
+         <name>style</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: CSS styling instructions.</description>
+      </attribute>
+      <attribute>
+         <name>title</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: An advisory title for this element.  Often used by the user agent as a tooltip.</description>
+      </attribute>
+      <attribute>
+         <name>styleClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The CSS class for this element.  Corresponds to the HTML 'class' attribute.</description>
+      </attribute>
+      <!-- HTML 4.0 event-handler attributes -->
+      <attribute>
+         <name>onclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is clicked.</description>
+      </attribute>
+      <attribute>
+         <name>ondblclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is double-clicked.</description>
+      </attribute>
+      <attribute>
+         <name>onmousedown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is released over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseover</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved into this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmousemove</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved while it is in this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseout</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moves out of this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeypress</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeydown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed down over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeyup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is released over this element.</description>
+      </attribute>
+      <!-- HTML 4.0 select attributes -->
+      <attribute>
+         <name>onblur</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element loses focus.</description>
+      </attribute>
+      <attribute>
+         <name>onfocus</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element receives focus.</description>
+      </attribute>
+      <attribute>
+         <name>onchange</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element is modified.</description>
+      </attribute>
+      <attribute>
+         <name>tabindex</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies the position of this element within the tab order of the document.</description>
+      </attribute>
+      <attribute>
+         <name>readonly</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        HTML: When true, indicates that this component cannot be modified by the user.
+        The element may receive focus unless it has also been disabled.
+    </description>
+      </attribute>
+      <attribute>
+         <name>disabled</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: When true, this element cannot receive focus.</description>
+      </attribute>
+      <attribute>
+         <name>datafld</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>Reserved for future use.</description>
+      </attribute>
+      <attribute>
+         <name>datasrc</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>Reserved for future use.</description>
+      </attribute>
+      <attribute>
+         <name>dataformatas</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>Reserved for future use.</description>
+      </attribute>
+      <!-- "multiple" cannot be set manually -->
+      <!-- "name" cannot be set manually -->
+      <!-- "size" cannot be set directly for it is a MenuRenderer specific attribute -->
+      <attribute>
+         <name>enabledClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+      </attribute>
+      <attribute>
+         <name>disabledClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+      </attribute>
+   </tag>
+   <tag>
+      <name>selectOneListbox</name>
+      <tag-class>org.apache.myfaces.taglib.html.HtmlSelectOneListboxTag</tag-class>
+      <body-content>JSP</body-content>
+      <description>
+            Allow the user to choose one option from a set of options.
+            &lt;p&gt;
+            Rendered as a listbox with the MULTIPLE attribute set to false.
+            &lt;p&gt;
+            The available choices are defined via child f:selectItem or
+            f:selectItems elements. The size of the listbox defaults to the
+            number of available choices; if size is explicitly set to a
+            smaller value, then scrollbars will be rendered. If size is set
+            to 1 then a "drop-down menu" (aka "combo-box") is rendered, though
+            if this is the intent then selectOneMenu should be used instead.
+            &lt;p&gt;
+            The value attribute of this component is read to determine
+            which of the available options is initially selected; its value
+            should match the "value" property of one of the child SelectItem
+            objects.
+            &lt;p&gt;
+            On submit of the enclosing form, the value attribute's bound
+            property is updated to contain the "value" property from the
+            chosen SelectItem.
+            &lt;p&gt;
+            Unless otherwise specified, all attributes accept static values
+            or EL expressions.
+            
+        </description>
+      <!-- UISelectOne attributes -->
+      <!-- UIInput attributes -->
+      <!-- UIOutput attributes -->
+      <!-- UIComponent attributes -->
+      <attribute>
+         <name>id</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        The developer-assigned ID of this component.  The ID must be unique
+        within the scope of the tag's enclosing naming container (e.g. 
+        h:form or f:subview).  This value must be a static value.
+    </description>
+      </attribute>
+      <attribute>
+         <name>binding</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        Identifies a backing bean property (of type UIComponent or appropriate
+        subclass) to bind to this component instance.  This value must be an
+        EL expression.
+    </description>
+      </attribute>
+      <attribute>
+         <name>rendered</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that indicates whether this component should be rendered.
+        Default value: true.
+    </description>
+      </attribute>
+      <attribute>
+         <name>value</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>The initial value of this component.</description>
+      </attribute>
+      <attribute>
+         <name>converter</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        An expression that specifies the Converter for this component.  
+        If the value binding expression is a String, the String is used
+        as an ID to look up a Converter. If the value binding expression
+        is a Converter, uses that instance as the converter.
+            
+        The value can either be a static value (ID case only) or an EL expression.
+    </description>
+      </attribute>
+      <attribute>
+         <name>immediate</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that identifies the phase during which value change
+        events should fire. During normal event processing, value change
+        events are fired during the "invoke application" phase of request
+        processing. If this attribute is set to "true", these methods are
+        fired instead at the end of the "apply request values" phase.
+    </description>
+      </attribute>
+      <attribute>
+         <name>required</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that indicates whether an input value is required.
+        If this value is true, and no input value is provided, the error
+        message javax.faces.component.UIInput.REQUIRED is posted.
+    </description>
+      </attribute>
+      <attribute>
+         <name>validator</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A method binding EL expression, accepting FacesContext, UIComponent,
+        and Object parameters, and returning void, that validates the
+        component's local value.
+    </description>
+      </attribute>
+      <attribute>
+         <name>valueChangeListener</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A method binding EL expression, accepting a ValueChangeEvent parameter
+        and returning void. The specified method is invoked if this component
+        is modified. The phase that this handler is fired in can be controlled
+        via the immediate attribute.
+    </description>
+      </attribute>
+      <!-- HTML 4.0 universal attributes -->
+      <attribute>
+         <name>dir</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The direction of text display, either 'ltr' (left-to-right) or 'rtl' (right-to-left).</description>
+      </attribute>
+      <attribute>
+         <name>lang</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The base language of this document.</description>
+      </attribute>
+      <attribute>
+         <name>style</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: CSS styling instructions.</description>
+      </attribute>
+      <attribute>
+         <name>title</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: An advisory title for this element.  Often used by the user agent as a tooltip.</description>
+      </attribute>
+      <attribute>
+         <name>styleClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The CSS class for this element.  Corresponds to the HTML 'class' attribute.</description>
+      </attribute>
+      <!-- HTML 4.0 event-handler attributes -->
+      <attribute>
+         <name>onclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is clicked.</description>
+      </attribute>
+      <attribute>
+         <name>ondblclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is double-clicked.</description>
+      </attribute>
+      <attribute>
+         <name>onmousedown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is released over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseover</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved into this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmousemove</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved while it is in this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseout</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moves out of this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeypress</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeydown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed down over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeyup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is released over this element.</description>
+      </attribute>
+      <!-- HTML 4.0 select attributes -->
+      <attribute>
+         <name>onblur</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element loses focus.</description>
+      </attribute>
+      <attribute>
+         <name>onfocus</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element receives focus.</description>
+      </attribute>
+      <attribute>
+         <name>onchange</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element is modified.</description>
+      </attribute>
+      <attribute>
+         <name>tabindex</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies the position of this element within the tab order of the document.</description>
+      </attribute>
+      <attribute>
+         <name>readonly</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        HTML: When true, indicates that this component cannot be modified by the user.
+        The element may receive focus unless it has also been disabled.
+    </description>
+      </attribute>
+      <attribute>
+         <name>disabled</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: When true, this element cannot receive focus.</description>
+      </attribute>
+      <attribute>
+         <name>datafld</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>Reserved for future use.</description>
+      </attribute>
+      <attribute>
+         <name>datasrc</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>Reserved for future use.</description>
+      </attribute>
+      <attribute>
+         <name>dataformatas</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>Reserved for future use.</description>
+      </attribute>
+      <!-- "multiple" cannot be set manually -->
+      <!-- "name" cannot be set manually -->
+      <!-- "size" cannot be set directly for it is a MenuRenderer specific attribute -->
+      <!-- ListboxRenderer attributes -->
+      <attribute>
+         <name>size</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>see JSF Spec.</description>
+      </attribute>
+      <attribute>
+         <name>enabledClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+      </attribute>
+      <attribute>
+         <name>disabledClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+      </attribute>
+   </tag>
+   <!-- selectOneMenu -->
+   <tag>
+      <name>selectOneMenu</name>
+      <tag-class>org.apache.myfaces.taglib.html.HtmlSelectOneMenuTag</tag-class>
+      <body-content>JSP</body-content>
+      <description>
+            Allow the user to choose one option from a set of options.
+            &lt;p&gt;
+            Renders a drop-down menu (aka "combo-box") containing a set of
+            choices, of which only one can be chosen at a time. The available
+            choices are defined via child f:selectItem or f:selectItems
+            elements.
+            &lt;p&gt;
+            The value attribute of this component is read to determine
+            which of the available options is initially selected; its value
+            should match the "value" property of one of the child SelectItem
+            objects.
+            &lt;p&gt;
+            On submit of the enclosing form, the value attribute's bound property
+            is updated to contain the "value" property from the chosen SelectItem.
+            &lt;p&gt;
+            Unless otherwise specified, all attributes accept static values
+            or EL expressions.
+            
+        </description>
+      <!-- all standard attributes of the selectOneMenu tag -->
+      <!-- UISelectOne attributes -->
+      <!-- UIInput attributes -->
+      <!-- UIOutput attributes -->
+      <!-- UIComponent attributes -->
+      <attribute>
+         <name>id</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        The developer-assigned ID of this component.  The ID must be unique
+        within the scope of the tag's enclosing naming container (e.g. 
+        h:form or f:subview).  This value must be a static value.
+    </description>
+      </attribute>
+      <attribute>
+         <name>binding</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        Identifies a backing bean property (of type UIComponent or appropriate
+        subclass) to bind to this component instance.  This value must be an
+        EL expression.
+    </description>
+      </attribute>
+      <attribute>
+         <name>rendered</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that indicates whether this component should be rendered.
+        Default value: true.
+    </description>
+      </attribute>
+      <attribute>
+         <name>value</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>The initial value of this component.</description>
+      </attribute>
+      <attribute>
+         <name>converter</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        An expression that specifies the Converter for this component.  
+        If the value binding expression is a String, the String is used
+        as an ID to look up a Converter. If the value binding expression
+        is a Converter, uses that instance as the converter.
+            
+        The value can either be a static value (ID case only) or an EL expression.
+    </description>
+      </attribute>
+      <attribute>
+         <name>immediate</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that identifies the phase during which value change
+        events should fire. During normal event processing, value change
+        events are fired during the "invoke application" phase of request
+        processing. If this attribute is set to "true", these methods are
+        fired instead at the end of the "apply request values" phase.
+    </description>
+      </attribute>
+      <attribute>
+         <name>required</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that indicates whether an input value is required.
+        If this value is true, and no input value is provided, the error
+        message javax.faces.component.UIInput.REQUIRED is posted.
+    </description>
+      </attribute>
+      <attribute>
+         <name>validator</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A method binding EL expression, accepting FacesContext, UIComponent,
+        and Object parameters, and returning void, that validates the
+        component's local value.
+    </description>
+      </attribute>
+      <attribute>
+         <name>valueChangeListener</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A method binding EL expression, accepting a ValueChangeEvent parameter
+        and returning void. The specified method is invoked if this component
+        is modified. The phase that this handler is fired in can be controlled
+        via the immediate attribute.
+    </description>
+      </attribute>
+      <!-- HTML 4.0 universal attributes -->
+      <attribute>
+         <name>dir</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The direction of text display, either 'ltr' (left-to-right) or 'rtl' (right-to-left).</description>
+      </attribute>
+      <attribute>
+         <name>lang</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The base language of this document.</description>
+      </attribute>
+      <attribute>
+         <name>style</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: CSS styling instructions.</description>
+      </attribute>
+      <attribute>
+         <name>title</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: An advisory title for this element.  Often used by the user agent as a tooltip.</description>
+      </attribute>
+      <attribute>
+         <name>styleClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The CSS class for this element.  Corresponds to the HTML 'class' attribute.</description>
+      </attribute>
+      <!-- HTML 4.0 event-handler attributes -->
+      <attribute>
+         <name>onclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is clicked.</description>
+      </attribute>
+      <attribute>
+         <name>ondblclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is double-clicked.</description>
+      </attribute>
+      <attribute>
+         <name>onmousedown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is released over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseover</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved into this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmousemove</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved while it is in this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseout</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moves out of this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeypress</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeydown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed down over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeyup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is released over this element.</description>
+      </attribute>
+      <!-- HTML 4.0 select attributes -->
+      <attribute>
+         <name>onblur</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element loses focus.</description>
+      </attribute>
+      <attribute>
+         <name>onfocus</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element receives focus.</description>
+      </attribute>
+      <attribute>
+         <name>onchange</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element is modified.</description>
+      </attribute>
+      <attribute>
+         <name>tabindex</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies the position of this element within the tab order of the document.</description>
+      </attribute>
+      <attribute>
+         <name>readonly</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        HTML: When true, indicates that this component cannot be modified by the user.
+        The element may receive focus unless it has also been disabled.
+    </description>
+      </attribute>
+      <attribute>
+         <name>disabled</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: When true, this element cannot receive focus.</description>
+      </attribute>
+      <attribute>
+         <name>datafld</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>Reserved for future use.</description>
+      </attribute>
+      <attribute>
+         <name>datasrc</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>Reserved for future use.</description>
+      </attribute>
+      <attribute>
+         <name>dataformatas</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>Reserved for future use.</description>
+      </attribute>
+      <!-- "multiple" cannot be set manually -->
+      <!-- "name" cannot be set manually -->
+      <!-- "size" cannot be set directly for it is a MenuRenderer specific attribute -->
+      <attribute>
+         <name>enabledClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+      </attribute>
+      <attribute>
+         <name>disabledClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+      </attribute>
+   </tag>
+   <!-- selectOneRadio -->
+   <tag>
+      <name>selectOneRadio</name>
+      <tag-class>org.apache.myfaces.taglib.html.HtmlSelectOneRadioTag</tag-class>
+      <body-content>JSP</body-content>
+      <description>
+            Allow the user to choose one option from a set of options.
+            &lt;p&gt;
+            Renders as an HTML table element, containing an input element for
+            each child f:selectItem or f:selectItems elements.  The input
+            elements are rendered as type radio.
+            &lt;p&gt;
+            The value attribute of this component is read to determine
+            which of the available options is initially selected; its value should
+            match the "value" property of one of the child SelectItem objects.
+            &lt;p&gt;
+            On submit of the enclosing form, the value attribute's bound property
+            is updated to contain the "value" property from the chosen SelectItem.
+            &lt;p&gt;
+            Unless otherwise specified, all attributes accept static values
+            or EL expressions.
+            
+        </description>
+      <!-- all standard attributes of the selectOneRadio tag -->
+      <!-- UISelectOne attributes -->
+      <!-- UIInput attributes -->
+      <!-- UIOutput attributes -->
+      <!-- UIComponent attributes -->
+      <attribute>
+         <name>id</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        The developer-assigned ID of this component.  The ID must be unique
+        within the scope of the tag's enclosing naming container (e.g. 
+        h:form or f:subview).  This value must be a static value.
+    </description>
+      </attribute>
+      <attribute>
+         <name>binding</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        Identifies a backing bean property (of type UIComponent or appropriate
+        subclass) to bind to this component instance.  This value must be an
+        EL expression.
+    </description>
+      </attribute>
+      <attribute>
+         <name>rendered</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that indicates whether this component should be rendered.
+        Default value: true.
+    </description>
+      </attribute>
+      <attribute>
+         <name>value</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>The initial value of this component.</description>
+      </attribute>
+      <attribute>
+         <name>converter</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        An expression that specifies the Converter for this component.  
+        If the value binding expression is a String, the String is used
+        as an ID to look up a Converter. If the value binding expression
+        is a Converter, uses that instance as the converter.
+            
+        The value can either be a static value (ID case only) or an EL expression.
+    </description>
+      </attribute>
+      <attribute>
+         <name>immediate</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that identifies the phase during which value change
+        events should fire. During normal event processing, value change
+        events are fired during the "invoke application" phase of request
+        processing. If this attribute is set to "true", these methods are
+        fired instead at the end of the "apply request values" phase.
+    </description>
+      </attribute>
+      <attribute>
+         <name>required</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A boolean value that indicates whether an input value is required.
+        If this value is true, and no input value is provided, the error
+        message javax.faces.component.UIInput.REQUIRED is posted.
+    </description>
+      </attribute>
+      <attribute>
+         <name>validator</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A method binding EL expression, accepting FacesContext, UIComponent,
+        and Object parameters, and returning void, that validates the
+        component's local value.
+    </description>
+      </attribute>
+      <attribute>
+         <name>valueChangeListener</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        A method binding EL expression, accepting a ValueChangeEvent parameter
+        and returning void. The specified method is invoked if this component
+        is modified. The phase that this handler is fired in can be controlled
+        via the immediate attribute.
+    </description>
+      </attribute>
+      <!-- HTML 4.0 universal attributes -->
+      <attribute>
+         <name>dir</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The direction of text display, either 'ltr' (left-to-right) or 'rtl' (right-to-left).</description>
+      </attribute>
+      <attribute>
+         <name>lang</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: The base language of this document.</description>
+      </attribute>
+      <attribute>
+         <name>style</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: CSS styling instructions.</description>
+      </attribute>
+      <attribute>
+         <name>title</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: An advisory title for this element.  Often used by the user agent as a tooltip.</description>
+      </attribute>
+      <attribute>
+         <name>styleClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>The CSS class for this element.  Corresponds to the HTML 'class' attribute.</description>
+      </attribute>
+      <!-- HTML 4.0 event-handler attributes -->
+      <attribute>
+         <name>onclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is clicked.</description>
+      </attribute>
+      <attribute>
+         <name>ondblclick</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the element is double-clicked.</description>
+      </attribute>
+      <attribute>
+         <name>onmousedown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is released over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseover</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved into this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmousemove</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moved while it is in this element.</description>
+      </attribute>
+      <attribute>
+         <name>onmouseout</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when the pointing device is moves out of this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeypress</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeydown</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is pressed down over this element.</description>
+      </attribute>
+      <attribute>
+         <name>onkeyup</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>HTML: Script to be invoked when a key is released over this element.</description>
+      </attribute>
+      <!-- HTML 4.0 input attributes for type "radio" -->
+      <attribute>
+         <name>accesskey</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Sets the access key for this element.</description>
+      </attribute>
+      <attribute>
+         <name>alt</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies alternative text that can be used by a browser that can't show this element.</description>
+      </attribute>
+      <attribute>
+         <name>disabled</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: When true, this element cannot receive focus.</description>
+      </attribute>
+      <attribute>
+         <name>onblur</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element loses focus.</description>
+      </attribute>
+      <attribute>
+         <name>onfocus</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element receives focus.</description>
+      </attribute>
+      <attribute>
+         <name>onchange</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element is modified.</description>
+      </attribute>
+      <attribute>
+         <name>onselect</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies a script to be invoked when the element is selected.</description>
+      </attribute>
+      <attribute>
+         <name>readonly</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+        HTML: When true, indicates that this component cannot be modified by the user.
+        The element may receive focus unless it has also been disabled.
+    </description>
+      </attribute>
+      <attribute>
+         <name>tabindex</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>HTML: Specifies the position of this element within the tab order of the document.</description>
+      </attribute>
+      <attribute>
+         <name>datafld</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>Reserved for future use.</description>
+      </attribute>
+      <attribute>
+         <name>datasrc</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>Reserved for future use.</description>
+      </attribute>
+      <attribute>
+         <name>dataformatas</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <description>Reserved for future use.</description>
+      </attribute>
+      <!-- RadioRenderer attributes -->
+      <attribute>
+         <name>layout</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>
+                Orientation of the options list. Valid values are 
+                "pageDirection" for a vertical layout, or "lineDirection" for
+                 horizontal. The default value is "lineDirection". 
+            </description>
+      </attribute>
+      <attribute>
+         <name>border</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <type>java.lang.String</type>
+         <description>Width in pixels of the border to be drawn around the table containing the options list.</description>
+      </attribute>
+      <attribute>
+         <name>enabledClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+      </attribute>
+      <attribute>
+         <name>disabledClass</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+      </attribute>
+   </tag>
+</taglib>
diff --git a/jsf/tests/org.eclipse.jst.jsf.designtime.tests/.settings/org.eclipse.jdt.core.prefs b/jsf/tests/org.eclipse.jst.jsf.designtime.tests/.settings/org.eclipse.jdt.core.prefs
index 7254127..daddec6 100644
--- a/jsf/tests/org.eclipse.jst.jsf.designtime.tests/.settings/org.eclipse.jdt.core.prefs
+++ b/jsf/tests/org.eclipse.jst.jsf.designtime.tests/.settings/org.eclipse.jdt.core.prefs
@@ -1,7 +1,61 @@
-#Tue Apr 10 09:03:49 PDT 2007
+#Fri Jul 13 13:50:02 PDT 2007
 eclipse.preferences.version=1
 org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
 org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nullReference=ignore
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
 org.eclipse.jdt.core.compiler.source=1.5
diff --git a/jsf/tests/org.eclipse.jst.jsf.designtime.tests/META-INF/MANIFEST.MF b/jsf/tests/org.eclipse.jst.jsf.designtime.tests/META-INF/MANIFEST.MF
index 41321a5..17c49d6 100644
--- a/jsf/tests/org.eclipse.jst.jsf.designtime.tests/META-INF/MANIFEST.MF
+++ b/jsf/tests/org.eclipse.jst.jsf.designtime.tests/META-INF/MANIFEST.MF
@@ -16,7 +16,12 @@
  org.eclipse.jdt.core;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.emf.ecore;bundle-version="[2.2.0,2.4.0)",
  org.eclipse.core.commands;bundle-version="[3.2.0,4.0.0)",
- org.eclipse.ui;bundle-version="[3.2.0,4.0.0)"
+ org.eclipse.ui;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.jst.jsf.facesconfig,
+ org.eclipse.wst.common.modulecore,
+ org.eclipse.wst.sse.core,
+ org.eclipse.jface.text,
+ org.eclipse.ui.editors
 Eclipse-LazyStart: true
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Export-Package: org.eclipse.jst.jsf.designtime.tests;x-internal:=true
diff --git a/jsf/tests/org.eclipse.jst.jsf.designtime.tests/src/org/eclipse/jst/jsf/designtime/tests/AllTests.java b/jsf/tests/org.eclipse.jst.jsf.designtime.tests/src/org/eclipse/jst/jsf/designtime/tests/AllTests.java
index 0e6b755..bac75b7 100644
--- a/jsf/tests/org.eclipse.jst.jsf.designtime.tests/src/org/eclipse/jst/jsf/designtime/tests/AllTests.java
+++ b/jsf/tests/org.eclipse.jst.jsf.designtime.tests/src/org/eclipse/jst/jsf/designtime/tests/AllTests.java
@@ -33,6 +33,10 @@
         suite.addTestSuite(TestResourceBundleMapSource.class);
         suite.addTestSuite(TestDefaultPropertyResolver.class);
         suite.addTestSuite(TestAbstractDataModelVariableFactory.class);
+        suite.addTestSuite(TestDefaultDTMethodResolver.class);
+        suite.addTestSuite(TestDefaultDTVariableResolver.class);
+        suite.addTestSuite(TestDTJSPExternalContext.class);
+        suite.addTestSuite(TestJSPDefaultSymbolFactory.class);
         
         //$JUnit-END$
         return suite;
diff --git a/jsf/tests/org.eclipse.jst.jsf.designtime.tests/src/org/eclipse/jst/jsf/designtime/tests/TestDTJSPExternalContext.java b/jsf/tests/org.eclipse.jst.jsf.designtime.tests/src/org/eclipse/jst/jsf/designtime/tests/TestDTJSPExternalContext.java
new file mode 100644
index 0000000..ff3e256
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.designtime.tests/src/org/eclipse/jst/jsf/designtime/tests/TestDTJSPExternalContext.java
@@ -0,0 +1,197 @@
+package org.eclipse.jst.jsf.designtime.tests;
+
+import java.io.ByteArrayInputStream;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.jst.jsf.context.symbol.IInstanceSymbol;
+import org.eclipse.jst.jsf.context.symbol.ISymbol;
+import org.eclipse.jst.jsf.context.symbol.SymbolFactory;
+import org.eclipse.jst.jsf.context.symbol.source.ISymbolConstants;
+import org.eclipse.jst.jsf.core.IJSFCoreConstants;
+import org.eclipse.jst.jsf.core.tests.util.JSFFacetedTestEnvironment;
+import org.eclipse.jst.jsf.designtime.DesignTimeApplicationManager;
+import org.eclipse.jst.jsf.designtime.context.DTJSPExternalContext;
+import org.eclipse.jst.jsf.designtime.context.IDTExternalContext;
+import org.eclipse.jst.jsf.test.util.JDTTestEnvironment;
+import org.eclipse.jst.jsf.test.util.JSFTestUtil;
+import org.eclipse.jst.jsf.test.util.TestFileResource;
+import org.eclipse.jst.jsf.test.util.WebProjectTestEnvironment;
+
+import junit.framework.TestCase;
+
+public class TestDTJSPExternalContext extends TestCase 
+{
+	private IFile _testJSP1;
+	private JSFFacetedTestEnvironment _jsfFactedTestEnvironment;
+
+	protected void setUp() throws Exception 
+	{
+        super.setUp();
+        JSFTestUtil.setValidationEnabled(false);
+        JSFTestUtil.setInternetProxyPreferences(true, "www-proxy.us.oracle.com","80");
+
+        final WebProjectTestEnvironment  projectTestEnvironment = 
+            new WebProjectTestEnvironment("TestDTJSPExternalContext"+getName());
+        projectTestEnvironment.createProject(false);
+
+        JDTTestEnvironment jdtTestEnvironment = 
+        	new JDTTestEnvironment(projectTestEnvironment);
+
+        final TestFileResource input = new TestFileResource();
+        input.load(DesignTimeTestsPlugin.getDefault().getBundle(), 
+        		"/testdata/bundle1.resources.data");
+        jdtTestEnvironment.addResourceFile("src"
+        		, new ByteArrayInputStream(input.toBytes())
+        		, "bundles", "bundle1.properties");
+        
+        IResource res = projectTestEnvironment.loadResourceInWebRoot(DesignTimeTestsPlugin.getDefault().getBundle()
+        		, "/testdata/testdata1.jsp.data", "testdata1.jsp");
+        _testJSP1 = (IFile) res;
+
+        _jsfFactedTestEnvironment = new JSFFacetedTestEnvironment(projectTestEnvironment);
+        _jsfFactedTestEnvironment.initialize(IJSFCoreConstants.FACET_VERSION_1_1);	
+    }
+
+	protected void tearDown() throws Exception 
+	{
+		super.tearDown();
+	}
+
+	public void testDefaultDoGetMapForScopeInt() 
+	{
+		final DesignTimeApplicationManager manager = 
+			DesignTimeApplicationManager.getInstance(_testJSP1.getProject());
+		
+		{
+			final IDTExternalContext externalContext = 
+				manager.getFacesContext(_testJSP1).getDTExternalContext(_testJSP1);
+	
+			Map<String, ISymbol> requestMap = externalContext.getRequestMap();
+			Collection<ISymbol> symbols = requestMap.values();
+			// there is a bundle defined in the test JSP
+			// also a data table row variable
+			assertEquals(2, symbols.size());
+			assertContainsVariable(symbols,"bundle");
+			assertContainsVariable(symbols,"row");
+		}
+		
+		{
+			final TestableDTJSPExternalContext externalContext =
+				new TestableDTJSPExternalContext(_testJSP1);
+		
+			Map<String, ISymbol> requestMap = externalContext.getRequestMap();
+			Collection<ISymbol> symbols = requestMap.values();
+			assertEquals(1, symbols.size());
+			assertContainsVariable(symbols,"requestSymbol");
+
+			Map<String, ISymbol> sessionMap = externalContext.getSessionMap();
+			symbols = sessionMap.values();
+			assertEquals(1, symbols.size());
+			assertContainsVariable(symbols,"sessionSymbol");
+
+			Map<String, ISymbol> applicationMap = externalContext.getApplicationMap();
+			symbols = applicationMap.values();
+			assertEquals(1, symbols.size());
+			assertContainsVariable(symbols,"applicationSymbol");
+
+			Map<String, ISymbol> noneMap = externalContext.getNoneMap();
+			symbols = noneMap.values();
+			assertEquals(1, symbols.size());
+			assertContainsVariable(symbols,"noneSymbol");
+			
+			externalContext.trace(System.out);
+		}
+	}
+
+
+	private void assertContainsVariable(Collection<ISymbol> variables, String name)
+	{
+		for (ISymbol variable : variables)
+		{
+			if (name.equals(variable.getName()))
+			{
+				assertTrue(variable instanceof IInstanceSymbol);
+				return;
+			}
+		}
+		
+		fail("Expected variable not found: "+name);
+	}
+	
+	private class TestableDTJSPExternalContext extends DTJSPExternalContext
+	{
+		protected TestableDTJSPExternalContext(IAdaptable jspFile) 
+		{
+			super(jspFile);
+		}
+
+		@Override
+		protected Map<String, ISymbol> doGetMapForScope(int scopeMask) 
+		{
+			switch(scopeMask)
+			{
+				case ISymbolConstants.SYMBOL_SCOPE_REQUEST:
+					return initRequestMap();
+					
+				case ISymbolConstants.SYMBOL_SCOPE_SESSION:
+					return initSessionMap();
+					
+				case ISymbolConstants.SYMBOL_SCOPE_APPLICATION:
+					return initApplicationMap();
+					
+				case ISymbolConstants.SYMBOL_SCOPE_NONE:
+					return initNoneMap();
+			}
+			
+			throw new IllegalArgumentException();
+		}
+		
+		private Map<String, ISymbol> initRequestMap()
+		{
+			final Map<String, ISymbol> map = new HashMap<String, ISymbol>();
+			ISymbol  symbol = SymbolFactory.eINSTANCE.createIComponentSymbol();
+			symbol.setName("requestSymbol");
+			map.put("requestSymbol", symbol);
+			
+			return map;
+		}
+		
+		private Map<String, ISymbol> initSessionMap()
+		{
+			final Map<String, ISymbol> map = new HashMap<String, ISymbol>();
+
+			ISymbol  symbol = SymbolFactory.eINSTANCE.createIComponentSymbol();
+			symbol.setName("sessionSymbol");
+			map.put("sessionSymbol", symbol);
+			
+			return map;
+		}
+		
+		private Map<String, ISymbol> initApplicationMap()
+		{
+			final Map<String, ISymbol> map = new HashMap<String, ISymbol>();
+
+			ISymbol  symbol = SymbolFactory.eINSTANCE.createIComponentSymbol();
+			symbol.setName("applicationSymbol");
+			map.put("applicationSymbol", symbol);
+			
+			return map;
+		}
+
+		private Map<String, ISymbol> initNoneMap()
+		{
+			final Map<String, ISymbol> map = new HashMap<String, ISymbol>();
+
+			ISymbol  symbol = SymbolFactory.eINSTANCE.createIComponentSymbol();
+			symbol.setName("noneSymbol");
+			map.put("noneSymbol", symbol);
+			
+			return map;
+		}
+	}
+}
diff --git a/jsf/tests/org.eclipse.jst.jsf.designtime.tests/src/org/eclipse/jst/jsf/designtime/tests/TestDefaultDTMethodResolver.java b/jsf/tests/org.eclipse.jst.jsf.designtime.tests/src/org/eclipse/jst/jsf/designtime/tests/TestDefaultDTMethodResolver.java
new file mode 100644
index 0000000..56a29de
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.designtime.tests/src/org/eclipse/jst/jsf/designtime/tests/TestDefaultDTMethodResolver.java
@@ -0,0 +1,123 @@
+package org.eclipse.jst.jsf.designtime.tests;
+
+import junit.framework.TestCase;
+
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jst.jsf.context.symbol.IBeanInstanceSymbol;
+import org.eclipse.jst.jsf.context.symbol.IJavaTypeDescriptor2;
+import org.eclipse.jst.jsf.context.symbol.IMethodSymbol;
+import org.eclipse.jst.jsf.context.symbol.ISymbol;
+import org.eclipse.jst.jsf.context.symbol.SymbolFactory;
+import org.eclipse.jst.jsf.core.IJSFCoreConstants;
+import org.eclipse.jst.jsf.core.tests.util.JSFFacetedTestEnvironment;
+import org.eclipse.jst.jsf.designtime.el.DefaultDTMethodResolver;
+import org.eclipse.jst.jsf.test.util.JDTTestEnvironment;
+import org.eclipse.jst.jsf.test.util.JSFTestUtil;
+import org.eclipse.jst.jsf.test.util.WebProjectTestEnvironment;
+
+public class TestDefaultDTMethodResolver extends TestCase 
+{
+    private JDTTestEnvironment              _jdtTestEnvironment;
+    private JSFFacetedTestEnvironment       _jsfFactedTestEnvironment;
+
+    private IType                           _methodBeanType;
+    
+    private final static String     SRC_FOLDER_NAME = "src";
+    private final static String     PACKAGE_NAME = "com.test";
+    private final static String     TESTBEAN1_NAME = "MethodBean";
+    
+    @Override
+	protected void setUp() throws Exception
+	{
+        super.setUp();
+        JSFTestUtil.setValidationEnabled(false);
+        JSFTestUtil.setInternetProxyPreferences(true, "www-proxy.us.oracle.com","80");
+
+        final WebProjectTestEnvironment  projectTestEnvironment = 
+            new WebProjectTestEnvironment("TestDefaultMethodResolver"+getName());
+        projectTestEnvironment.createProject(false);
+
+        _jsfFactedTestEnvironment = new JSFFacetedTestEnvironment(projectTestEnvironment);
+        _jsfFactedTestEnvironment.initialize(IJSFCoreConstants.FACET_VERSION_1_1);
+        
+        _jdtTestEnvironment = new JDTTestEnvironment(projectTestEnvironment);
+
+        JSFTestUtil.loadSourceClass(
+                DesignTimeTestsPlugin.getDefault().getBundle(), 
+                    "/testdata/MethodBean.java.data", TESTBEAN1_NAME, SRC_FOLDER_NAME, PACKAGE_NAME, _jdtTestEnvironment);
+        _methodBeanType = 
+            _jdtTestEnvironment.getJavaProject().findType(PACKAGE_NAME+"."+TESTBEAN1_NAME);
+        assertNotNull(_methodBeanType);
+	}
+
+	@Override
+	protected void tearDown() throws Exception 
+	{
+		super.tearDown();
+		
+        _jdtTestEnvironment.getJavaProject().getProject().delete(true, null);
+	}
+
+	public void testGetMethod() 
+	{
+        final IBeanInstanceSymbol symbol = SymbolFactory.eINSTANCE.createIBeanInstanceSymbol();
+        symbol.setName("myBean2");
+        final IJavaTypeDescriptor2 typeDesc = SymbolFactory.eINSTANCE.createIJavaTypeDescriptor2();
+        typeDesc.setType(_methodBeanType);
+        symbol.setTypeDescriptor(typeDesc);
+
+        DefaultDTMethodResolver  methodResolver = new DefaultDTMethodResolver();
+        
+        IMethodSymbol methodSymbol = methodResolver.getMethod(symbol, "actionMethod");
+        assertNotNull(methodSymbol);
+        assertEquals("actionMethod", methodSymbol.getName());
+        assertEquals("()Ljava.lang.String;", methodSymbol.getSignature());
+        
+        methodSymbol = methodResolver.getMethod(symbol, "actionMethodWithParam");
+        assertNotNull(methodSymbol);
+        assertEquals("actionMethodWithParam", methodSymbol.getName());
+        assertEquals("(Ljava.lang.String;)Ljava.lang.String;", methodSymbol.getSignature());
+        
+        // method not found
+        methodSymbol = methodResolver.getMethod(symbol, "notAMethod");
+        assertNull(methodSymbol);
+	}
+
+	public void testGetMethods() 
+	{
+        final IBeanInstanceSymbol symbol = SymbolFactory.eINSTANCE.createIBeanInstanceSymbol();
+        symbol.setName("myBean2");
+        final IJavaTypeDescriptor2 typeDesc = SymbolFactory.eINSTANCE.createIJavaTypeDescriptor2();
+        typeDesc.setType(_methodBeanType);
+        symbol.setTypeDescriptor(typeDesc);
+
+        DefaultDTMethodResolver  methodResolver = new DefaultDTMethodResolver();
+
+        ISymbol[] symbols = methodResolver.getMethods(symbol);
+        assertNotNull(symbols);
+        assertEquals(11, symbols.length);
+        assertContains(symbols, "actionMethod", "()Ljava.lang.String;");
+        assertContains(symbols, "actionMethodWithParam", "(Ljava.lang.String;)Ljava.lang.String;");
+	}
+
+	private void assertContains(ISymbol[] methods, String name, String signature)
+	{
+		IMethodSymbol methodSymbol = null;
+		
+		for (int i = 0; i < methods.length; i++)
+		{
+			ISymbol symbol = methods[i];
+			
+			if (name.equals(symbol.getName()))
+			{
+				assertTrue(symbol instanceof IMethodSymbol);
+				if (((IMethodSymbol)symbol).getSignature().equals(signature))
+				{
+					methodSymbol = (IMethodSymbol) symbol;
+				}
+			}
+		}
+		
+		assertNotNull(methodSymbol);
+	}
+}
diff --git a/jsf/tests/org.eclipse.jst.jsf.designtime.tests/src/org/eclipse/jst/jsf/designtime/tests/TestDefaultDTVariableResolver.java b/jsf/tests/org.eclipse.jst.jsf.designtime.tests/src/org/eclipse/jst/jsf/designtime/tests/TestDefaultDTVariableResolver.java
new file mode 100644
index 0000000..7bdf4f6
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.designtime.tests/src/org/eclipse/jst/jsf/designtime/tests/TestDefaultDTVariableResolver.java
@@ -0,0 +1,214 @@
+package org.eclipse.jst.jsf.designtime.tests;
+
+import java.io.ByteArrayInputStream;
+
+import junit.framework.TestCase;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jst.jsf.context.symbol.IBeanInstanceSymbol;
+import org.eclipse.jst.jsf.context.symbol.IComponentSymbol;
+import org.eclipse.jst.jsf.context.symbol.IInstanceSymbol;
+import org.eclipse.jst.jsf.context.symbol.IJavaTypeDescriptor2;
+import org.eclipse.jst.jsf.context.symbol.IMapTypeDescriptor;
+import org.eclipse.jst.jsf.context.symbol.ISymbol;
+import org.eclipse.jst.jsf.context.symbol.ITypeDescriptor;
+import org.eclipse.jst.jsf.core.IJSFCoreConstants;
+import org.eclipse.jst.jsf.core.tests.util.JSFFacetedTestEnvironment;
+import org.eclipse.jst.jsf.designtime.DesignTimeApplicationManager;
+import org.eclipse.jst.jsf.designtime.el.DefaultDTVariableResolver;
+import org.eclipse.jst.jsf.facesconfig.emf.FacesConfigFactory;
+import org.eclipse.jst.jsf.facesconfig.emf.FacesConfigType;
+import org.eclipse.jst.jsf.facesconfig.emf.ManagedBeanClassType;
+import org.eclipse.jst.jsf.facesconfig.emf.ManagedBeanNameType;
+import org.eclipse.jst.jsf.facesconfig.emf.ManagedBeanScopeType;
+import org.eclipse.jst.jsf.facesconfig.emf.ManagedBeanType;
+import org.eclipse.jst.jsf.facesconfig.util.FacesConfigArtifactEdit;
+import org.eclipse.jst.jsf.test.util.JDTTestEnvironment;
+import org.eclipse.jst.jsf.test.util.JSFTestUtil;
+import org.eclipse.jst.jsf.test.util.TestFileResource;
+import org.eclipse.jst.jsf.test.util.WebProjectTestEnvironment;
+
+public class TestDefaultDTVariableResolver extends TestCase 
+{
+    private IType                           _testBean1Type;
+	private JSFFacetedTestEnvironment 	_jsfFactedTestEnvironment;
+	private JDTTestEnvironment 			_jdtTestEnvironment;
+	private IFile						_testJSP1;
+
+    private final static String     SRC_FOLDER_NAME = "src";
+    private final static String     PACKAGE_NAME = "com.test";
+    private final static String     TESTBEAN1_NAME = "TestBean1";
+
+	
+	protected void setUp() throws Exception 
+	{
+        super.setUp();
+        JSFTestUtil.setValidationEnabled(false);
+        JSFTestUtil.setInternetProxyPreferences(true, "www-proxy.us.oracle.com","80");
+
+        final WebProjectTestEnvironment  projectTestEnvironment = 
+            new WebProjectTestEnvironment("TestDefaultPropertyResolver"+getName());
+        projectTestEnvironment.createProject(false);
+
+        IResource res = projectTestEnvironment.loadResourceInWebRoot(DesignTimeTestsPlugin.getDefault().getBundle()
+        		, "/testdata/testdata1.jsp.data", "testdata1.jsp");
+        _testJSP1 = (IFile) res;
+        
+        _jsfFactedTestEnvironment = new JSFFacetedTestEnvironment(projectTestEnvironment);
+        _jsfFactedTestEnvironment.initialize(IJSFCoreConstants.FACET_VERSION_1_1);
+
+        final IProject project = projectTestEnvironment.getTestProject();
+        
+        FacesConfigArtifactEdit edit = null;
+        
+        try
+        {
+        	edit = FacesConfigArtifactEdit.getFacesConfigArtifactEditForWrite(project, null);
+        
+        	FacesConfigType model = edit.getFacesConfig();
+        	ManagedBeanClassType beanClass = FacesConfigFactory.eINSTANCE.createManagedBeanClassType();
+        	beanClass.setTextContent("com.test.TestBean1");
+
+        	ManagedBeanNameType beanName = FacesConfigFactory.eINSTANCE.createManagedBeanNameType();
+        	beanName.setTextContent("testBean1");
+        	
+        	ManagedBeanScopeType beanScope = FacesConfigFactory.eINSTANCE.createManagedBeanScopeType();
+        	beanScope.setTextContent("session");
+        	
+        	ManagedBeanType bean = FacesConfigFactory.eINSTANCE.createManagedBeanType();
+        	bean.setManagedBeanClass(beanClass);
+        	bean.setManagedBeanName(beanName);
+        	bean.setManagedBeanScope(beanScope);
+        	
+        	model.getManagedBean().add(bean);
+        	
+        	edit.save(null);
+        }
+        finally
+        {
+        	if (edit != null)
+        	{
+        		edit.dispose();
+        	}
+        }
+        
+        _jdtTestEnvironment = new JDTTestEnvironment(projectTestEnvironment);
+        
+        final TestFileResource input = new TestFileResource();
+        input.load(DesignTimeTestsPlugin.getDefault().getBundle(), 
+        		"/testdata/bundle1.resources.data");
+        _jdtTestEnvironment.addResourceFile("src"
+        		, new ByteArrayInputStream(input.toBytes())
+        		, "bundles", "bundle1.properties");
+
+        JSFTestUtil.loadSourceClass(
+                DesignTimeTestsPlugin.getDefault().getBundle(), 
+                    "/testdata/TestBean1.java.data", TESTBEAN1_NAME, SRC_FOLDER_NAME, PACKAGE_NAME, _jdtTestEnvironment);
+        _testBean1Type = _jdtTestEnvironment.getJavaProject().findType(PACKAGE_NAME+"."+TESTBEAN1_NAME);
+        assertNotNull(_testBean1Type);
+	}
+
+	protected void tearDown() throws Exception 
+	{
+		super.tearDown();
+	}
+
+	public void testResolveVariable() 
+	{
+		checkBuiltinVariables();
+		checkSymbolMaps();
+		checkManagedBeanVariable();
+	}
+
+	private void checkBuiltinVariables()
+	{
+        final DesignTimeApplicationManager manager =
+        	DesignTimeApplicationManager.getInstance
+        		(_jdtTestEnvironment.getProjectEnvironment().getTestProject());
+
+		DefaultDTVariableResolver  variableResolver = new DefaultDTVariableResolver();
+		ISymbol symbol = variableResolver.resolveVariable
+			(manager.getFacesContext(_testJSP1), "applicationScope", _testJSP1);
+		assertNotNull(symbol);
+	}
+	
+	private void checkSymbolMaps()
+	{
+        final DesignTimeApplicationManager manager =
+        	DesignTimeApplicationManager.getInstance
+        		(_jdtTestEnvironment.getProjectEnvironment().getTestProject());
+
+		DefaultDTVariableResolver  variableResolver = new DefaultDTVariableResolver();
+		ISymbol symbol = variableResolver.resolveVariable
+			(manager.getFacesContext(_testJSP1), "bundle", _testJSP1);
+		assertNotNull(symbol);
+		assertTrue(symbol instanceof IComponentSymbol);
+		
+		IComponentSymbol compSymbol = (IComponentSymbol) symbol;
+		assertEquals("bundle", compSymbol.getName());
+		ITypeDescriptor typeDesc = compSymbol.getTypeDescriptor();
+		assertTrue(typeDesc instanceof IMapTypeDescriptor);
+	}
+	
+	private void checkManagedBeanVariable()
+	{
+        final DesignTimeApplicationManager manager =
+        	DesignTimeApplicationManager.getInstance
+        		(_jdtTestEnvironment.getProjectEnvironment().getTestProject());
+
+		DefaultDTVariableResolver  variableResolver = new DefaultDTVariableResolver();
+		ISymbol symbol = variableResolver.resolveVariable
+			(manager.getFacesContext(_testJSP1), "testBean1", _testJSP1);
+		assertNotNull(symbol);
+		assertTrue(symbol instanceof IBeanInstanceSymbol);
+		
+		IBeanInstanceSymbol compSymbol = (IBeanInstanceSymbol) symbol;
+		assertEquals("testBean1", compSymbol.getName());
+		ITypeDescriptor typeDesc = compSymbol.getTypeDescriptor();
+		assertTrue(typeDesc instanceof IJavaTypeDescriptor2);
+		assertEquals("Lcom.test.TestBean1;", typeDesc.getTypeSignature());
+	}
+	
+	public void testGetAllVariables() 
+	{
+        final DesignTimeApplicationManager manager =
+        	DesignTimeApplicationManager.getInstance
+        		(_jdtTestEnvironment.getProjectEnvironment().getTestProject());
+
+		DefaultDTVariableResolver  variableResolver = new DefaultDTVariableResolver();
+		
+		ISymbol[] variables = variableResolver.getAllVariables
+			(manager.getFacesContext(_testJSP1), _testJSP1);
+		
+		assertContainsVariable(variables, "applicationScope");
+		assertContainsVariable(variables, "sessionScope");
+		assertContainsVariable(variables, "requestScope");
+		assertContainsVariable(variables, "cookie");
+		assertContainsVariable(variables, "facesContext");
+		assertContainsVariable(variables, "header");
+		assertContainsVariable(variables, "headerValues");
+		assertContainsVariable(variables, "initParam");
+		assertContainsVariable(variables, "param");
+		assertContainsVariable(variables, "paramValues");
+		assertContainsVariable(variables, "view");
+		assertContainsVariable(variables, "testBean1");
+		assertContainsVariable(variables, "bundle");
+	}
+
+	private void assertContainsVariable(ISymbol[] variables, String name)
+	{
+		for (ISymbol variable : variables)
+		{
+			if (name.equals(variable.getName()))
+			{
+				assertTrue(variable instanceof IInstanceSymbol);
+				return;
+			}
+		}
+		
+		fail("Expected variable not found: "+name);
+	}
+}
diff --git a/jsf/tests/org.eclipse.jst.jsf.designtime.tests/src/org/eclipse/jst/jsf/designtime/tests/TestDefaultPropertyResolver.java b/jsf/tests/org.eclipse.jst.jsf.designtime.tests/src/org/eclipse/jst/jsf/designtime/tests/TestDefaultPropertyResolver.java
index beaec75..4a6745a 100644
--- a/jsf/tests/org.eclipse.jst.jsf.designtime.tests/src/org/eclipse/jst/jsf/designtime/tests/TestDefaultPropertyResolver.java
+++ b/jsf/tests/org.eclipse.jst.jsf.designtime.tests/src/org/eclipse/jst/jsf/designtime/tests/TestDefaultPropertyResolver.java
@@ -11,6 +11,7 @@
  ********************************************************************************/
 package org.eclipse.jst.jsf.designtime.tests;
 
+import java.io.ByteArrayInputStream;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -20,7 +21,9 @@
 import org.eclipse.jdt.core.Signature;
 import org.eclipse.jst.jsf.common.internal.types.TypeConstants;
 import org.eclipse.jst.jsf.common.util.JDTBeanIntrospector;
+import org.eclipse.jst.jsf.common.util.JDTBeanProperty;
 import org.eclipse.jst.jsf.context.symbol.IBeanInstanceSymbol;
+import org.eclipse.jst.jsf.context.symbol.IBoundedMapTypeDescriptor;
 import org.eclipse.jst.jsf.context.symbol.IComponentSymbol;
 import org.eclipse.jst.jsf.context.symbol.IJavaTypeDescriptor2;
 import org.eclipse.jst.jsf.context.symbol.IMapTypeDescriptor;
@@ -31,8 +34,10 @@
 import org.eclipse.jst.jsf.core.IJSFCoreConstants;
 import org.eclipse.jst.jsf.core.tests.util.JSFFacetedTestEnvironment;
 import org.eclipse.jst.jsf.designtime.el.DefaultDTPropertyResolver;
+import org.eclipse.jst.jsf.designtime.internal.symbols.ResourceBundleMapSourceFactory;
 import org.eclipse.jst.jsf.test.util.JDTTestEnvironment;
 import org.eclipse.jst.jsf.test.util.JSFTestUtil;
+import org.eclipse.jst.jsf.test.util.TestFileResource;
 import org.eclipse.jst.jsf.test.util.WebProjectTestEnvironment;
 
 /**
@@ -75,16 +80,19 @@
         final WebProjectTestEnvironment  projectTestEnvironment = 
             new WebProjectTestEnvironment("TestDefaultPropertyResolver"+getName());
         projectTestEnvironment.createProject(false);
-//        _facesConfigFile = (IFile) projectTestEnvironment.
-//            loadResourceInWebRoot(DesignTimeTestsPlugin.getDefault().getBundle(),
-//                                  "/testdata/faces-config.xml.data", 
-//                                  "/WEB-INF/faces-config.xml");
 
         _jsfFactedTestEnvironment = new JSFFacetedTestEnvironment(projectTestEnvironment);
         _jsfFactedTestEnvironment.initialize(IJSFCoreConstants.FACET_VERSION_1_1);
         
         _jdtTestEnvironment = new JDTTestEnvironment(projectTestEnvironment);
 
+        final TestFileResource input = new TestFileResource();
+        input.load(DesignTimeTestsPlugin.getDefault().getBundle(), 
+        		"/testdata/bundle1.resources.data");
+        _jdtTestEnvironment.addResourceFile(SRC_FOLDER_NAME
+        		, new ByteArrayInputStream(input.toBytes())
+        		, "bundles", "bundle1.properties");
+        
         JSFTestUtil.loadSourceClass(
                 DesignTimeTestsPlugin.getDefault().getBundle(), 
                     "/testdata/TestBean1.java.data", TESTBEAN1_NAME, SRC_FOLDER_NAME, PACKAGE_NAME, _jdtTestEnvironment);
@@ -158,7 +166,7 @@
     public void testSanity()
     {
         JDTBeanIntrospector  beanIntrospector = new JDTBeanIntrospector(_testBean1Type);
-        Map props = beanIntrospector.getProperties();
+        Map<String, JDTBeanProperty> props = beanIntrospector.getProperties();
         assertEquals(NUM_PROPERTIES_TEST_BEAN_1, props.size());
         assertTrue(props.containsKey("stringProp1"));
         assertTrue(props.containsKey("booleanIsProp1"));
@@ -211,10 +219,10 @@
         DefaultDTPropertyResolver propResolver = new DefaultDTPropertyResolver();
         ISymbol[]  properties = propResolver.getAllProperties(symbol);
         assertEquals(NUM_PROPERTIES_TEST_BEAN_1, properties.length);
-        Map  checkProps = new HashMap();
-        for (int i = 0; i < properties.length; i++)
+        Map<String, ISymbol>  checkProps = new HashMap<String, ISymbol>();
+        for (ISymbol propSymbol : properties)
         {
-            checkProps.put(properties[i].getName(), properties[i]);
+            checkProps.put(propSymbol.getName(), propSymbol);
         }
         
         assertTrue(checkProps.containsKey("stringProp1"));
@@ -251,7 +259,7 @@
         IJavaTypeDescriptor2 typeDesc = SymbolFactory.eINSTANCE.createIJavaTypeDescriptor2();
         typeDesc.setType(_testMapBean1Type);
         symbol.setTypeDescriptor(typeDesc);
-        
+
         DefaultDTPropertyResolver propResolver = new DefaultDTPropertyResolver();
         ISymbol[]  properties = propResolver.getAllProperties(symbol);
         // there no design-time identifiable properties
@@ -273,7 +281,7 @@
             assertEquals(TypeConstants.TYPE_JAVAOBJECT, ((IPropertySymbol)someProperty1).getTypeDescriptor().getTypeSignature());
         }
     }
-    
+
     /**
      * Test a component with map source
      */
@@ -282,7 +290,7 @@
         final IComponentSymbol symbol = SymbolFactory.eINSTANCE.createIComponentSymbol();
         symbol.setName("myComponentSymbol");
         final IMapTypeDescriptor typeDesc = SymbolFactory.eINSTANCE.createIMapTypeDescriptor();
-        final Map mapSource = new HashMap();
+        final Map<String, String> mapSource = new HashMap<String, String>();
         mapSource.put("prop1", "propValue1");
         mapSource.put("prop2", "propValue2");
         mapSource.put("dotted.property", "dottedPropertyValue");
@@ -352,7 +360,7 @@
             assertEquals(2, properties.length);  // should have defined property plus class
             
             // check props
-            final Map  gotProps  = new HashMap();
+            final Map<String, IPropertySymbol>  gotProps  = new HashMap<String, IPropertySymbol>();
             
             for (int i = 0; i < properties.length; i++)
             {
@@ -584,6 +592,9 @@
         
         IPropertySymbol unboundedProp = (IPropertySymbol) propResolver.getProperty(listProp, 0);
         assertEquals(TypeConstants.TYPE_JAVAOBJECT, unboundedProp.getTypeDescriptor().getTypeSignature());
+        
+        // list base symbols do not have non-numeric keys
+        assertNull(propResolver.getProperty(listProp, "anyKey"));
     }
     
     public void testGenericListProperty()
@@ -615,6 +626,80 @@
         assertEquals(TypeConstants.TYPE_STRING, unboundedProp.getTypeDescriptor().getTypeSignature());
     }
     
+    public void testBoundedTypeDescriptor()
+    {
+    	final IComponentSymbol symbol = 
+    		SymbolFactory.eINSTANCE.createIComponentSymbol();
+        symbol.setName("componentSymbol");
+        final IBoundedMapTypeDescriptor typeDesc = 
+        	SymbolFactory.eINSTANCE.createIBoundedMapTypeDescriptor();
+        typeDesc.setMapSource(new HashMap<String, String>());
+        symbol.setTypeDescriptor(typeDesc);
+        
+        DefaultDTPropertyResolver propResolver = new DefaultDTPropertyResolver();
+        ISymbol propSymbol = propResolver.getProperty(symbol, "anyProp");
+        
+        assertNotNull(propSymbol);
+        assertTrue(propSymbol instanceof IPropertySymbol);
+        assertEquals(TypeConstants.TYPE_JAVAOBJECT, 
+        	((IPropertySymbol)propSymbol).getTypeDescriptor().getTypeSignature());
+    }
+
+    public void testDottedPropertyNames() throws Exception
+    {
+    	checkDottedBundleNames();
+    	// TODO: should add coverage for dotted, non-bundles...
+    }
+    
+    private void checkDottedBundleNames() throws Exception
+    {
+        Map map = 
+        	ResourceBundleMapSourceFactory.getResourceBundleMapSource
+        		(_jdtTestEnvironment.getProjectEnvironment().getTestProject()
+        				, "bundles.bundle1");
+        assertNotNull(map);
+        assertEquals(3, map.size());
+
+        final IMapTypeDescriptor typeDesc = 
+            SymbolFactory.eINSTANCE.createIMapTypeDescriptor();
+        typeDesc.setMapSource(map);
+        final IComponentSymbol symbol = 
+            SymbolFactory.eINSTANCE.createIComponentSymbol();
+        symbol.setName("dottedMapSource");
+        symbol.setTypeDescriptor(typeDesc);
+
+        DefaultDTPropertyResolver propResolver = new DefaultDTPropertyResolver();
+        {
+	        ISymbol oneDot = propResolver.getProperty(symbol, "one");
+	        assertNotNull(oneDot);
+	        assertTrue(oneDot instanceof IPropertySymbol);
+	        assertTrue(((IPropertySymbol)oneDot).isIntermediate());
+
+	        oneDot = propResolver.getProperty(symbol, "one.dot");
+	        assertNotNull(oneDot);
+	        assertTrue(oneDot instanceof IPropertySymbol);
+	        assertFalse(((IPropertySymbol)oneDot).isIntermediate());
+        }
+
+        {
+        	ISymbol twoDots = propResolver.getProperty(symbol, "two");
+            assertNotNull(twoDots);
+            assertTrue(twoDots instanceof IPropertySymbol);
+	        assertTrue(((IPropertySymbol)twoDots).isIntermediate());
+
+        	twoDots = propResolver.getProperty(symbol, "two.dot");
+            assertNotNull(twoDots);
+            assertTrue(twoDots instanceof IPropertySymbol);
+	        assertTrue(((IPropertySymbol)twoDots).isIntermediate());
+
+        	twoDots = propResolver.getProperty(symbol, "two.dot.property");
+            assertNotNull(twoDots);
+            assertTrue(twoDots instanceof IPropertySymbol);
+	        assertFalse(((IPropertySymbol)twoDots).isIntermediate());
+
+        }
+    }
+    
     private ISymbol findSymbol(final String name, ISymbol[] symbols)
     {
         for (ISymbol symbol : symbols)
diff --git a/jsf/tests/org.eclipse.jst.jsf.designtime.tests/src/org/eclipse/jst/jsf/designtime/tests/TestDesignTimeApplicationManager.java b/jsf/tests/org.eclipse.jst.jsf.designtime.tests/src/org/eclipse/jst/jsf/designtime/tests/TestDesignTimeApplicationManager.java
new file mode 100644
index 0000000..87866f7
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.designtime.tests/src/org/eclipse/jst/jsf/designtime/tests/TestDesignTimeApplicationManager.java
@@ -0,0 +1,117 @@
+package org.eclipse.jst.jsf.designtime.tests;
+
+import java.io.ByteArrayInputStream;
+
+import junit.framework.TestCase;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.jst.jsf.core.IJSFCoreConstants;
+import org.eclipse.jst.jsf.core.tests.util.JSFFacetedTestEnvironment;
+import org.eclipse.jst.jsf.designtime.DesignTimeApplicationManager;
+import org.eclipse.jst.jsf.designtime.context.DTFacesContext;
+import org.eclipse.jst.jsf.test.util.JDTTestEnvironment;
+import org.eclipse.jst.jsf.test.util.JSFTestUtil;
+import org.eclipse.jst.jsf.test.util.TestFileResource;
+import org.eclipse.jst.jsf.test.util.WebProjectTestEnvironment;
+
+public class TestDesignTimeApplicationManager extends TestCase 
+{
+	private IFile 						_testJSP;
+	private JSFFacetedTestEnvironment 	_jsfFactedTestEnvironment;
+
+
+	protected void setUp() throws Exception 
+	{
+        super.setUp();
+        JSFTestUtil.setValidationEnabled(false);
+        JSFTestUtil.setInternetProxyPreferences(true, "www-proxy.us.oracle.com","80");
+
+        final WebProjectTestEnvironment  projectTestEnvironment = 
+            new WebProjectTestEnvironment("TestDesignTimeApplicationManager"+getName());
+        projectTestEnvironment.createProject(false);
+
+        final JDTTestEnvironment jdtTestEnvironment = 
+        	new JDTTestEnvironment(projectTestEnvironment);
+
+        final TestFileResource input = new TestFileResource();
+        input.load(DesignTimeTestsPlugin.getDefault().getBundle(), 
+        		"/testdata/bundle1.resources.data");
+        jdtTestEnvironment.addResourceFile("src"
+        		, new ByteArrayInputStream(input.toBytes())
+        		, "bundles", "bundle1.properties");
+        
+        final IResource res = 
+        	projectTestEnvironment.loadResourceInWebRoot(DesignTimeTestsPlugin.getDefault().getBundle()
+        		, "/testdata/testdata1.jsp.data", "testdata1.jsp");
+        _testJSP = (IFile) res;
+
+        _jsfFactedTestEnvironment = new JSFFacetedTestEnvironment(projectTestEnvironment);
+        _jsfFactedTestEnvironment.initialize(IJSFCoreConstants.FACET_VERSION_1_1);
+    }
+
+	protected void tearDown() throws Exception {
+		super.tearDown();
+	}
+
+	public void testGetInstance() {
+		//fail("Not yet implemented");
+	}
+
+	public void testGetFacesContext() 
+	{
+		final DesignTimeApplicationManager  manager = 
+			DesignTimeApplicationManager.getInstance(_testJSP.getProject());
+		
+		final DTFacesContext facesContext = manager.getFacesContext(_testJSP);
+		assertNotNull(facesContext);
+	}
+
+//	public void testSetExternalContextProvider() 
+//	{
+//		final DesignTimeApplicationManager  manager = 
+//			DesignTimeApplicationManager.getInstance(_testJSP.getProject());
+//
+//		manager.setExternalContextProvider(resolverPluginId);
+//	}
+//
+//	public void testGetExternalContextProvider() {
+//		//fail("Not yet implemented");
+//	}
+//
+//	public void testGetVariableResolver() {
+//		//fail("Not yet implemented");
+//	}
+//
+//	public void testSetVariableResolverProvider() {
+//		//fail("Not yet implemented");
+//	}
+//
+//	public void testGetVariableResolverProvider() {
+//		//fail("Not yet implemented");
+//	}
+//
+//	public void testGetPropertyResolver() {
+//		//fail("Not yet implemented");
+//	}
+//
+//	public void testSetPropertyResolverProvider() {
+//		//fail("Not yet implemented");
+//	}
+//
+//	public void testGetPropertyResolverProvider() {
+//		//fail("Not yet implemented");
+//	}
+//
+//	public void testGetMethodResolver() {
+//		//fail("Not yet implemented");
+//	}
+//
+//	public void testSetMethodResolverProvider() {
+//		//fail("Not yet implemented");
+//	}
+//
+//	public void testGetMethodResolverProvider() {
+//		//fail("Not yet implemented");
+//	}
+}
diff --git a/jsf/tests/org.eclipse.jst.jsf.designtime.tests/src/org/eclipse/jst/jsf/designtime/tests/TestJSPDefaultSymbolFactory.java b/jsf/tests/org.eclipse.jst.jsf.designtime.tests/src/org/eclipse/jst/jsf/designtime/tests/TestJSPDefaultSymbolFactory.java
new file mode 100644
index 0000000..ebe68cc
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.designtime.tests/src/org/eclipse/jst/jsf/designtime/tests/TestJSPDefaultSymbolFactory.java
@@ -0,0 +1,120 @@
+package org.eclipse.jst.jsf.designtime.tests;
+
+import java.io.ByteArrayInputStream;
+import java.util.ArrayList;
+
+import junit.framework.TestCase;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.jst.jsf.context.structureddocument.IStructuredDocumentContext;
+import org.eclipse.jst.jsf.context.structureddocument.IStructuredDocumentContextFactory;
+import org.eclipse.jst.jsf.context.symbol.IInstanceSymbol;
+import org.eclipse.jst.jsf.context.symbol.ISymbol;
+import org.eclipse.jst.jsf.context.symbol.source.ISymbolConstants;
+import org.eclipse.jst.jsf.core.IJSFCoreConstants;
+import org.eclipse.jst.jsf.core.tests.util.JSFFacetedTestEnvironment;
+import org.eclipse.jst.jsf.designtime.internal.jsp.JSPDefaultSymbolFactory;
+import org.eclipse.jst.jsf.test.util.JDTTestEnvironment;
+import org.eclipse.jst.jsf.test.util.JSFTestUtil;
+import org.eclipse.jst.jsf.test.util.TestFileResource;
+import org.eclipse.jst.jsf.test.util.WebProjectTestEnvironment;
+import org.eclipse.wst.sse.core.StructuredModelManager;
+import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
+import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
+
+public class TestJSPDefaultSymbolFactory extends TestCase 
+{
+	private IFile 						_testJSP;
+	private JSFFacetedTestEnvironment 	_jsfFactedTestEnvironment;
+	private IStructuredModel 			_structuredModel;
+	private IStructuredDocument 		_structuredDocument;
+
+	protected void setUp() throws Exception 
+	{
+        super.setUp();
+        JSFTestUtil.setValidationEnabled(false);
+        JSFTestUtil.setInternetProxyPreferences(true, "www-proxy.us.oracle.com","80");
+
+        final WebProjectTestEnvironment  projectTestEnvironment = 
+            new WebProjectTestEnvironment("TestJSPDefaultSymbolFactory"+getName());
+        projectTestEnvironment.createProject(false);
+
+        final JDTTestEnvironment jdtTestEnvironment = 
+        	new JDTTestEnvironment(projectTestEnvironment);
+
+        final TestFileResource input = new TestFileResource();
+        input.load(DesignTimeTestsPlugin.getDefault().getBundle(), 
+        		"/testdata/bundle1.resources.data");
+        jdtTestEnvironment.addResourceFile("src"
+        		, new ByteArrayInputStream(input.toBytes())
+        		, "bundles", "bundle1.properties");
+        
+        final IResource res = 
+        	projectTestEnvironment.loadResourceInWebRoot(DesignTimeTestsPlugin.getDefault().getBundle()
+        		, "/testdata/testdata1.jsp.data", "testdata1.jsp");
+        _testJSP = (IFile) res;
+
+        _jsfFactedTestEnvironment = new JSFFacetedTestEnvironment(projectTestEnvironment);
+        _jsfFactedTestEnvironment.initialize(IJSFCoreConstants.FACET_VERSION_1_1);
+        
+        _structuredModel = StructuredModelManager.getModelManager().getModelForRead(_testJSP);
+        _structuredDocument = _structuredModel.getStructuredDocument();
+
+    }
+
+	protected void tearDown() throws Exception 
+	{
+		super.tearDown();
+		_structuredModel.releaseFromRead();
+	}
+
+	public void testSupports()
+	{
+		JSPDefaultSymbolFactory factory = new JSPDefaultSymbolFactory();
+
+		// must be a structured document context
+		assertFalse(factory.supports(_testJSP));
+
+		final IStructuredDocumentContext context =
+			IStructuredDocumentContextFactory.INSTANCE
+				.getContext(_structuredDocument, 0);
+
+		// must work for a JSP document context
+		assertTrue(factory.supports(context));
+	}
+
+	public void testCreate()
+	{
+		final JSPDefaultSymbolFactory factory = new JSPDefaultSymbolFactory();
+
+		final IStructuredDocumentContext context =
+			IStructuredDocumentContextFactory.INSTANCE
+				.getContext(_structuredDocument, 0);
+
+		ISymbol var =
+			factory.create("notAVariable"
+				, ISymbolConstants.SYMBOL_SCOPE_REQUEST, context, new ArrayList());
+		assertNull(var);
+
+		var = factory.create("bundle"
+			, ISymbolConstants.SYMBOL_SCOPE_REQUEST
+			, IStructuredDocumentContextFactory.INSTANCE.getContext(_structuredDocument, 569)
+			, new ArrayList());
+		
+		// load bundle introduces a variable
+		assertNotNull(var);
+		assertTrue(var instanceof IInstanceSymbol);
+		assertEquals("bundle", var.getName());
+		
+		var = factory.create("row"
+				, ISymbolConstants.SYMBOL_SCOPE_REQUEST
+				, IStructuredDocumentContextFactory.INSTANCE.getContext(_structuredDocument, 1397)
+				, new ArrayList());
+		
+		// data table introduces a variable
+		assertNotNull(var);
+		assertTrue(var instanceof IInstanceSymbol);
+		assertEquals("row", var.getName());
+	}
+}
diff --git a/jsf/tests/org.eclipse.jst.jsf.designtime.tests/src/org/eclipse/jst/jsf/designtime/tests/TestStartupHandler.java b/jsf/tests/org.eclipse.jst.jsf.designtime.tests/src/org/eclipse/jst/jsf/designtime/tests/TestStartupHandler.java
new file mode 100644
index 0000000..cba6c99
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.designtime.tests/src/org/eclipse/jst/jsf/designtime/tests/TestStartupHandler.java
@@ -0,0 +1,83 @@
+package org.eclipse.jst.jsf.designtime.tests;
+
+import java.io.ByteArrayInputStream;
+
+import junit.framework.TestCase;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.jst.jsf.core.IJSFCoreConstants;
+import org.eclipse.jst.jsf.core.tests.util.JSFFacetedTestEnvironment;
+import org.eclipse.jst.jsf.designtime.internal.jsp.StartupHandler;
+import org.eclipse.jst.jsf.test.util.JDTTestEnvironment;
+import org.eclipse.jst.jsf.test.util.JSFTestUtil;
+import org.eclipse.jst.jsf.test.util.TestFileResource;
+import org.eclipse.jst.jsf.test.util.WebProjectTestEnvironment;
+import org.eclipse.ui.IEditorDescriptor;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorRegistry;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.ide.IDE;
+import org.eclipse.ui.ide.ResourceUtil;
+
+/**
+ * Some basic coverage of the editor open listener registered by the
+ * StartupHandler
+ * 
+ * @author cbateman
+ *
+ */
+public class TestStartupHandler extends TestCase 
+{
+	private IFile _testJSP1;
+	private JSFFacetedTestEnvironment _jsfFactedTestEnvironment;
+
+	protected void setUp() throws Exception 
+	{
+        super.setUp();
+        JSFTestUtil.setValidationEnabled(false);
+        JSFTestUtil.setInternetProxyPreferences(true, "www-proxy.us.oracle.com","80");
+
+        final WebProjectTestEnvironment  projectTestEnvironment = 
+            new WebProjectTestEnvironment("TestDTJSPExternalContext"+getName());
+        projectTestEnvironment.createProject(false);
+
+        JDTTestEnvironment jdtTestEnvironment = 
+        	new JDTTestEnvironment(projectTestEnvironment);
+
+        final TestFileResource input = new TestFileResource();
+        input.load(DesignTimeTestsPlugin.getDefault().getBundle(), 
+        		"/testdata/bundle1.resources.data");
+        jdtTestEnvironment.addResourceFile("src"
+        		, new ByteArrayInputStream(input.toBytes())
+        		, "bundles", "bundle1.properties");
+        
+        IResource res = projectTestEnvironment.loadResourceInWebRoot(DesignTimeTestsPlugin.getDefault().getBundle()
+        		, "/testdata/testdata1.jsp.data", "testdata1.jsp");
+        _testJSP1 = (IFile) res;
+
+        _jsfFactedTestEnvironment = new JSFFacetedTestEnvironment(projectTestEnvironment);
+        _jsfFactedTestEnvironment.initialize(IJSFCoreConstants.FACET_VERSION_1_1);	
+    }
+
+	protected void tearDown() throws Exception 
+	{
+		super.tearDown();
+	}
+
+	public void testLaunchEditor() throws Exception
+	{
+		final IWorkbenchPage  curPage = 
+			PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+		final IEditorPart editor =
+			IDE.openEditor
+				(curPage
+				, _testJSP1);
+		assertNotNull(editor);
+		final IEditorPart foundEditor = ResourceUtil.findEditor(curPage, _testJSP1);
+		assertEquals(editor, foundEditor);
+		
+		StartupHandler handler;
+	}
+}
diff --git a/jsf/tests/org.eclipse.jst.jsf.designtime.tests/testdata/MethodBean.java.data b/jsf/tests/org.eclipse.jst.jsf.designtime.tests/testdata/MethodBean.java.data
new file mode 100644
index 0000000..b657a03
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.designtime.tests/testdata/MethodBean.java.data
@@ -0,0 +1,14 @@
+
+
+public class MethodBean
+{
+    public String actionMethod()
+    {
+        return "chicken";
+    }
+
+    public String actionMethodWithParam(String arg)
+    {
+        return arg;
+    }
+}
diff --git a/jsf/tests/org.eclipse.jst.jsf.designtime.tests/testdata/testdata1.jsp.data b/jsf/tests/org.eclipse.jst.jsf.designtime.tests/testdata/testdata1.jsp.data
new file mode 100644
index 0000000..b784cba
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.designtime.tests/testdata/testdata1.jsp.data
@@ -0,0 +1,54 @@
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+<%--
+The taglib directive below imports the JSTL library. If you uncomment it,
+you must also add the JSTL library to the project. The Add Library... action
+on Libraries node in Projects view can be used to add the JSTL 1.1 library.
+--%>
+
+<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
+<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+   "http://www.w3.org/TR/html4/loose.dtd">
+<f:view>
+	<f:loadBundle var="bundle" basename="bundles.bundle1"/>
+
+<html>
+  <head>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+        <title><h:outputText value="#{bundle['page.title']}"/></title>
+  <link rel="stylesheet" href="style/style.css" media="screen"/>
+    </head>
+    <body>
+	<h:form id="mainForm">
+    <h1><h:outputText value="#{bundle['page.header']}"/></h1>
+    	<h:messages/>
+		<h:panelGrid columns="2">
+    		<h:outputLabel for="userId" value="Username:"/>
+	    	<h:inputText id="userId" value="#{loginRequest.id}"/>
+	    	<h:outputLabel for="password" value="Password:"/>
+			<h:inputSecret id="password" value="#{loginRequest.passwordPlainText}"/>
+    	</h:panelGrid>
+   		<h:commandButton action="#{appController.loginActions}" value="#{bundle['login.button.value']}"/><br>
+		<h:dataTable var="row" border="1">
+			<h:column id="column1">
+				<f:facet name="header">
+					<h:outputText value="column1"></h:outputText>
+				</f:facet>
+			</h:column>
+			<h:column id="column2">
+				<f:facet name="header">
+					<h:outputText value="column2"></h:outputText>
+				</f:facet>
+			</h:column>
+		</h:dataTable>
+	</h:form>
+    
+    </body>
+</html>
+</f:view>
+
+