General test coverage improvement for frameworks and API.
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>