[jboss-svn-commits] JBL Code SVN: r9502 - in labs/jbosslabs/trunk/portal-extensions: jbosswiki/forge-wiki/src/java/org/jboss/wiki and 10 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Feb 14 17:31:10 EST 2007


Author: szimano
Date: 2007-02-14 17:31:10 -0500 (Wed, 14 Feb 2007)
New Revision: 9502

Added:
   labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/portlet/RequestInvocationHandler.java
   labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/WEB-INF/tomahawk.taglib.xml
   labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/WEB-INF/tomahawk.tld
   labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/views/posting_new_body.xhtml
   labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/portlet/
   labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/portlet/MultipartRequestWrapper.java
Modified:
   labs/jbosslabs/trunk/portal-extensions/configuration/to-copy/server/default/deploy/jboss-portal.sar/portal-server.war/WEB-INF/web.xml
   labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/WikiPortletOld.java
   labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/helper/WikiHelper.java
   labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/portlet/WikiPortletMyFaces.java
   labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/ui/WikiEdit.java
   labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/WEB-INF/web.xml
   labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/views/wiki_attach.xhtml
   labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/etc/org/jboss/wiki/wikiPlugins.properties
   labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileDSCommons.java
   labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileDirWikiPageDictionary.java
   labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/JBossPortalCredentials.java
   labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/TrailPlugin.java
   labs/jbosslabs/trunk/portal-extensions/portal-default/src/web/WEB-INF/default-object.xml
Log:
wiki controller + theme and context modifications

Modified: labs/jbosslabs/trunk/portal-extensions/configuration/to-copy/server/default/deploy/jboss-portal.sar/portal-server.war/WEB-INF/web.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/configuration/to-copy/server/default/deploy/jboss-portal.sar/portal-server.war/WEB-INF/web.xml	2007-02-14 20:38:26 UTC (rev 9501)
+++ labs/jbosslabs/trunk/portal-extensions/configuration/to-copy/server/default/deploy/jboss-portal.sar/portal-server.war/WEB-INF/web.xml	2007-02-14 22:31:10 UTC (rev 9502)
@@ -47,7 +47,7 @@
    	<servlet-class>org.jboss.forge.portal.WrongLoginServlet</servlet-class>
    	<init-param>
 			<param-name>LOGIN_FAILED</param-name>
-			<param-value>/portal/portal/default/login/LoginWindow?action=2&amp;loginFailed=loginFailed</param-value>
+			<param-value>/portal/default/login/LoginWindow?action=2&amp;loginFailed=loginFailed</param-value>
 			<description>Page with information that the login was failed</description>
 	</init-param>
    </servlet>
@@ -62,12 +62,12 @@
 		<servlet-class>org.jboss.forge.portal.ShowLoginPageServlet</servlet-class>
 		<init-param>
 			<param-name>LOGIN_PAGE</param-name>
-			<param-value>portal/default/login</param-value>
+			<param-value>/portal/default/login</param-value>
 			<description>Login page that will get forwarded (dispatched) to</description>
 		</init-param>
 		<init-param>
 			<param-name>LOGOUT_PAGE</param-name>
-			<param-value>/portal</param-value>
+			<param-value>/</param-value>
 			<description>Logout page that will get forwarded to</description>
 		</init-param>
 	</servlet>
@@ -349,7 +349,7 @@
       <form-login-config>
          <form-login-page>/showLogin</form-login-page>
          <!-- <form-error-page>/portal/auth/portal/default/login/LoginWindow?action=1&amp;loginFailed=loginFailed</form-error-page>-->      
-         <form-error-page>/portal/loginFailed</form-error-page>
+         <form-error-page>/loginFailed</form-error-page>
       </form-login-config>
    </login-config>
 

Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/WikiPortletOld.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/WikiPortletOld.java	2007-02-14 20:38:26 UTC (rev 9501)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/WikiPortletOld.java	2007-02-14 22:31:10 UTC (rev 9502)
@@ -41,6 +41,7 @@
 
 import org.apache.commons.fileupload.FileItem;
 import org.apache.commons.fileupload.FileUploadException;
+import org.apache.commons.fileupload.disk.DiskFileItemFactory;
 import org.apache.commons.fileupload.portlet.PortletFileUpload;
 import org.jboss.logging.Logger;
 import org.jboss.wiki.exceptions.EditSessionExpired;
@@ -122,7 +123,8 @@
 		WikiContext wikiContext = null;
 
 		if (PortletFileUpload.isMultipartContent(rReq)) {
-			PortletFileUpload dfu = new PortletFileUpload();
+			DiskFileItemFactory factory = new DiskFileItemFactory();
+			PortletFileUpload dfu = new PortletFileUpload(factory);
 
 			// maximum allowed file upload size (10 MB)
 			dfu.setSizeMax(10 * 1000 * 1000);

Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/helper/WikiHelper.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/helper/WikiHelper.java	2007-02-14 20:38:26 UTC (rev 9501)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/helper/WikiHelper.java	2007-02-14 22:31:10 UTC (rev 9502)
@@ -22,6 +22,7 @@
 
 package org.jboss.wiki.helper;
 
+import java.io.File;
 import java.util.MissingResourceException;
 import java.util.ResourceBundle;
 
@@ -59,6 +60,10 @@
 	private static final String WIKI_COMMON_SESSION = "#{wikiCommon}";
 
 	private static final String BUNDLE_NAME = "Messages";
+	
+	private static ThreadLocal<File> file = new ThreadLocal<File>();
+	
+	private static ThreadLocal<String> fileName = new ThreadLocal<String>();
 
 	public static WikiEngine getWikiEngine() {
 		if (wikiEngine == null) {
@@ -117,24 +122,53 @@
 		return (WikiCommonSession) fc.getApplication().createValueBinding(
 				WIKI_COMMON_SESSION).getValue(fc);
 	}
-	
+
+	public static Object getBean(String name) {
+		FacesContext fc = FacesContext.getCurrentInstance();
+		return fc.getApplication().createValueBinding(name).getValue(fc);
+	}
+
 	public static void addMessage(String message) {
 		FacesContext facesContext = FacesContext.getCurrentInstance();
 		facesContext.addMessage(null, new FacesMessage(message));
 	}
-	
+
 	public static String getMessage(String key) {
 		FacesContext facesContext = FacesContext.getCurrentInstance();
 		String resourceStr;
-		
+
 		try {
-			ResourceBundle messages = ResourceBundle.getBundle(BUNDLE_NAME, facesContext.getViewRoot().getLocale());
+			ResourceBundle messages = ResourceBundle.getBundle(BUNDLE_NAME,
+					facesContext.getViewRoot().getLocale());
 			resourceStr = messages.getString(key);
 		} catch (MissingResourceException e) {
 			log.error(e.getMessage(), e);
 			return key;
 		}
+
+		return resourceStr;
+	}
+	
+	public static void setFile(File f) {
+		file.set(f);
+	}
+	
+	public static File getFile() {
+		File f = file.get();
 		
-		return resourceStr;
-	}	
+		file.set(null);
+		
+		return f;
+	}
+
+	public static void setFileName(String fn) {
+		fileName.set(fn);
+	}
+	
+	public static String getFileName() {
+		String fn = fileName.get();
+		fileName.set(null);
+		
+		return fn;
+	}
 }

Added: labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/portlet/RequestInvocationHandler.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/portlet/RequestInvocationHandler.java	                        (rev 0)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/portlet/RequestInvocationHandler.java	2007-02-14 22:31:10 UTC (rev 9502)
@@ -0,0 +1,76 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.wiki.portlet;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.util.Map;
+
+import javax.portlet.ActionRequest;
+
+/**
+ * RequestInvocationHandler.java
+ * 
+ * @author <a href="mailto:tomasz.szymanski at jboss.com">Tomasz Szymanski</a>
+ */
+
+public class RequestInvocationHandler implements InvocationHandler {
+
+	private ActionRequest request;
+
+	private Map<String, String> paramMap;
+
+	public RequestInvocationHandler(ActionRequest request,
+			Map<String, String> paramMap) {
+		this.request = request;
+		this.paramMap = paramMap;
+	}
+
+	public Object invoke(Object proxy, Method method, Object[] args)
+			throws Throwable {
+
+		Class c = paramMap.getClass();
+
+		if (method.getName().equals("getParameter")) {
+
+			Method m = c.getMethod("get", new Class[] { Object.class });
+			return m.invoke(paramMap, args);
+		} else if (method.getName().equals("getParameterMap")) {
+			Method m = RequestInvocationHandler.class.getMethod("getParamMap",
+					new Class[] {});
+			return m.invoke(this, args);
+		} else if (method.getName().equals("getParameterNames()")) {
+			Method m = c.getMethod("keySet", new Class[] {});
+			return m.invoke(paramMap, args);
+		} else if (method.getName().equals("getParameterValues")) {
+			Method m = c.getMethod("values", new Class[] {});
+			return m.invoke(paramMap, args);
+		} else {
+			return method.invoke(request, args);
+		}
+	}
+
+	public Map<String, String> getParamMap() {
+		return paramMap;
+	}
+}

Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/portlet/WikiPortletMyFaces.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/portlet/WikiPortletMyFaces.java	2007-02-14 20:38:26 UTC (rev 9501)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/portlet/WikiPortletMyFaces.java	2007-02-14 22:31:10 UTC (rev 9502)
@@ -22,18 +22,29 @@
 
 package org.jboss.wiki.portlet;
 
+import java.io.File;
 import java.io.IOException;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
 import java.util.Map;
 
 import javax.faces.context.FacesContext;
 import javax.portlet.ActionRequest;
 import javax.portlet.ActionResponse;
 import javax.portlet.PortletException;
+import javax.portlet.PortletSecurityException;
 import javax.portlet.RenderRequest;
 import javax.portlet.RenderResponse;
 
+import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.fileupload.FileUploadException;
+import org.apache.commons.fileupload.disk.DiskFileItemFactory;
+import org.apache.commons.fileupload.portlet.PortletFileUpload;
 import org.apache.myfaces.portlet.MyFacesGenericPortlet;
 import org.jboss.logging.Logger;
+import org.jboss.wiki.helper.WikiHelper;
+import org.jboss.wiki.ui.WikiEdit;
 
 /**
  * WikiPortletMyFaces.java
@@ -42,9 +53,12 @@
  */
 
 public class WikiPortletMyFaces extends MyFacesGenericPortlet {
-	
-	private static final Logger log = Logger.getLogger(WikiPortletMyFaces.class);
-	
+
+	private static final String WINDOWS_FILE_NAME = "\\w:\\\\.+";
+
+	private static final Logger log = Logger
+			.getLogger(WikiPortletMyFaces.class);
+
 	protected void facesRender(RenderRequest request, RenderResponse response)
 			throws PortletException, java.io.IOException {
 		if (sessionTimedOut(request)
@@ -57,47 +71,141 @@
 
 		super.facesRender(request, response);
 	}
-	
+
 	/**
-     * Called by the portlet container to allow the portlet to process an action request.
-     */
-    public void processAction(ActionRequest request, ActionResponse response)
-            throws PortletException, IOException
-    {
-        if (sessionTimedOut(request)) return;
-        
-        setPortletRequestFlag(request);
-        
-        this.prepareParams(request, response);
+	 * Called by the portlet container to allow the portlet to process an action
+	 * request.
+	 */
+	public void processAction(ActionRequest request, ActionResponse response)
+			throws PortletException, IOException {
+		if (sessionTimedOut(request))
+			return;
 
-        FacesContext facesContext = facesContext(request, response);
-        
-        try
-        {
-            lifecycle.execute(facesContext);
+		setPortletRequestFlag(request);
 
-            if (!facesContext.getResponseComplete())
-            {
-                response.setRenderParameter(VIEW_ID, facesContext.getViewRoot().getViewId());
-            }
+		// parse and setup any attachments if they are sent in
+		if ((request.getContentType() != null)
+				&& request.getContentType().startsWith("multipart/form-data")) {
 
-            request.getPortletSession().setAttribute(CURRENT_FACES_CONTEXT, facesContext);
-        }
-        catch (Throwable e)
-        {
-            facesContext.release();
-            handleExceptionFromLifecycle(e);
-        }
-    }
+			Map paramMap = new HashMap(request.getParameterMap());
 
+			this.processAttachments(request, response, paramMap);
+
+			request = new MultipartRequestWrapper(request, paramMap);
+
+		} else {
+			this.prepareParams(request, response);
+		}
+
+		FacesContext facesContext = facesContext(request, response);
+
+		try {
+			lifecycle.execute(facesContext);
+
+			if (!facesContext.getResponseComplete()) {
+				response.setRenderParameter(VIEW_ID, facesContext.getViewRoot()
+						.getViewId());
+			}
+
+			request.getPortletSession().setAttribute(CURRENT_FACES_CONTEXT,
+					facesContext);
+		} catch (Throwable e) {
+			facesContext.release();
+			handleExceptionFromLifecycle(e);
+		}
+	}
+
+	private void processAttachments(ActionRequest request,
+			ActionResponse response, Map paramMap) {
+		if (PortletFileUpload.isMultipartContent(request)) {
+
+			DiskFileItemFactory factory = new DiskFileItemFactory();
+			PortletFileUpload dfu = new PortletFileUpload(factory);
+
+			// maximum allowed file upload size (10 MB)
+			dfu.setSizeMax(10 * 1000 * 1000);
+
+			try {
+				// get the FileItems
+				List fileItems = dfu.parseRequest(request);
+				Iterator iter = fileItems.iterator();
+				while (iter.hasNext()) {
+					FileItem item = (FileItem) iter.next();
+					if (item.isFormField()) {
+						// pass along to render request
+						String fieldName = item.getFieldName();
+						String value = item.getString();
+						response.setRenderParameter(fieldName, value);
+						paramMap.put(fieldName, new String[] { value });
+
+						log.info("new render param: " + fieldName + " = "
+								+ value);
+					} else {
+						// write the uploaded file to a new location
+						String fieldName = item.getFieldName();
+						String fileName = item.getName();
+
+						// change windows names (remove c:\bull\shit\)
+						if (fileName.matches(WINDOWS_FILE_NAME)) {
+							fileName = fileName.substring(fileName
+									.lastIndexOf('\\') + 1, fileName.length());
+						}
+
+						if (fileName.length() == 0) {
+							throw new FileUploadException("Wrong file name: "
+									+ item.getName());
+						}
+
+						// delete spaces
+
+						while (fileName.indexOf(' ') != -1) {
+							Character chr = fileName.charAt(fileName
+									.indexOf(' ') + 1);
+
+							fileName = fileName.substring(0, fileName
+									.indexOf(' '))
+									+ (char) Character.toUpperCase(chr)
+									+ fileName.substring(
+											fileName.indexOf(' ') + 2, fileName
+													.length());
+						}
+
+						String tempDir = System.getProperty("java.io.tmpdir");
+						String serverFileName = fieldName + fileName
+								+ "-portlet.tmp";
+
+						File serverFile = new File(tempDir, serverFileName);
+
+						item.write(serverFile);
+
+						log.info("serverFileName : " + tempDir + "/"
+								+ serverFileName + " filename: " + fileName);
+
+						// save file
+						WikiHelper.setFile(serverFile);
+						WikiHelper.setFileName(fileName);
+					}
+				}
+			} catch (FileUploadException fue) {
+				String msg = "File Upload Exception: " + fue.getMessage();
+				response.setRenderParameter("error", msg);
+				getPortletContext().log(msg, fue);
+			} catch (Exception e) {
+				String msg = "Exception: " + e.getMessage();
+				response.setRenderParameter("error", msg);
+				getPortletContext().log(msg, e);
+			}
+		}
+	}
+
 	private void prepareParams(ActionRequest request, ActionResponse response) {
 		Map<String, String> paramMap = request.getParameterMap();
-		
+
 		for (String key : paramMap.keySet()) {
 			response.setRenderParameter(key, request.getParameter(key));
-			log.info("Param: "+key+" = "+request.getParameter(key));
+			log.info("Param: " + key + " = " + request.getParameter(key));
 		}
-		
+
 		// add plugin parameters
 		int i = 1;
 		while (request.getParameter("var" + i) != null) {
@@ -106,4 +214,5 @@
 			i++;
 		}
 	}
+
 }

Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/ui/WikiEdit.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/ui/WikiEdit.java	2007-02-14 20:38:26 UTC (rev 9501)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/ui/WikiEdit.java	2007-02-14 22:31:10 UTC (rev 9502)
@@ -22,9 +22,10 @@
 
 package org.jboss.wiki.ui;
 
+import java.io.File;
+import java.io.FileInputStream;
 import java.io.IOException;
 
-import org.apache.myfaces.custom.fileupload.UploadedFile;
 import org.jboss.logging.Logger;
 import org.jboss.wiki.WikiContext;
 import org.jboss.wiki.WikiEngine;
@@ -50,9 +51,9 @@
 	private Integer editSessionId;
 
 	private String pageContent;
-	
-	private UploadedFile newFile;
 
+	private File newFile;
+
 	public WikiEdit() {
 		attributesExtractor = WikiHelper.getAttributesExtractor(WikiHelper
 				.getRequest(), WikiHelper.getResponse());
@@ -113,25 +114,47 @@
 		this.editSessionId = Integer.valueOf(editSessionId);
 	}
 
-	public UploadedFile getNewFile() {
+	public File getNewFile() {
 		return newFile;
 	}
 
-	public void setNewFile(UploadedFile newFile) {
+	public void setNewFile(File newFile) {
 		this.newFile = newFile;
 	}
-	
+
 	public String addFile() {
 		WikiEngine wikiEngine = WikiHelper.getWikiEngine();
-		
-		try {
-			wikiEngine.addAttachment(newFile.getInputStream(), newFile.getName(), getWikiPage(), attributesExtractor.getCredentials().getName(), WikiHelper.getWikiCommonSession()
-					.getLangCode());
-		} catch (IOException e) {
-			log.error(e);
-			WikiHelper.addMessage(WikiHelper.getMessage("upload_error"));
+
+		String fileName = null;
+
+		log
+				.info("\n\n\n !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ADDING FILE: "
+						+ newFile);
+
+		if (newFile == null) {
+			// look for file
+			newFile = WikiHelper.getFile();
+			fileName = WikiHelper.getFileName();
 		}
-		
+
+		if (newFile != null && fileName != null) {
+
+			try {
+
+				wikiEngine.addAttachment(new FileInputStream(newFile),
+						fileName, getWikiPage(), attributesExtractor
+								.getCredentials().getName(), WikiHelper
+								.getWikiCommonSession().getLangCode());
+
+				newFile.delete();
+			} catch (IOException e) {
+				log.error(e);
+				WikiHelper.addMessage(WikiHelper.getMessage("upload_error"));
+			}
+		} else {
+			log.info("file not added: " + newFile);
+		}
+
 		return "goback";
 	}
 }

Added: labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/WEB-INF/tomahawk.taglib.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/WEB-INF/tomahawk.taglib.xml	                        (rev 0)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/WEB-INF/tomahawk.taglib.xml	2007-02-14 22:31:10 UTC (rev 9502)
@@ -0,0 +1,444 @@
+<?xml version="1.0"?>
+<!DOCTYPE facelet-taglib PUBLIC "-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN" "facelet-taglib_1_0.dtd">
+<facelet-taglib>
+    <!-- author: thomas.jachmann at mindmatters.de -->
+    <namespace>http://myfaces.apache.org/tomahawk</namespace>
+    <tag>
+        <tag-name>commandButton</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlCommandButton</component-type>
+            <renderer-type>org.apache.myfaces.Button</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>commandLink</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlCommandLink</component-type>
+            <renderer-type>org.apache.myfaces.Link</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>dataTable</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlDataTable</component-type>
+            <renderer-type>org.apache.myfaces.Table</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>inputHidden</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlInputHidden</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>inputSecret</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlInputSecret</component-type>
+            <renderer-type>org.apache.myfaces.Secret</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>inputText</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlInputText</component-type>
+            <renderer-type>org.apache.myfaces.Text</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>inputHelpText</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlInputTextHelp</component-type>
+            <renderer-type>org.apache.myfaces.TextHelp</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>inputTextarea</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlInputTextarea</component-type>
+            <renderer-type>org.apache.myfaces.Textarea</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>graphicImage</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlGraphicImage</component-type>
+            <renderer-type>org.apache.myfaces.Image</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>message</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlMessage</component-type>
+            <renderer-type>org.apache.myfaces.Message</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>messages</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlMessages</component-type>
+            <renderer-type>org.apache.myfaces.Messages</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>outputLabel</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlOutputLabel</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>outputText</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlOutputText</component-type>
+            <renderer-type>org.apache.myfaces.Text</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>panelGrid</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlPanelGrid</component-type>
+            <renderer-type>org.apache.myfaces.Grid</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>panelGroup</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlPanelGroup</component-type>
+            <renderer-type>org.apache.myfaces.Group</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>selectOneMenu</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlSelectOneMenu</component-type>
+            <renderer-type>org.apache.myfaces.Menu</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>selectManyMenu</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlSelectManyMenu</component-type>
+            <renderer-type>org.apache.myfaces.Menu</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>selectOneRadio</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlSelectOneRadio</component-type>
+            <renderer-type>org.apache.myfaces.Radio</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>selectBooleanCheckbox</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlSelectBooleanCheckbox</component-type>
+            <renderer-type>org.apache.myfaces.Checkbox</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>selectManyCheckbox</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlSelectManyCheckbox</component-type>
+            <renderer-type>org.apache.myfaces.Checkbox</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>selectOneListbox</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlSelectOneListbox</component-type>
+            <renderer-type>org.apache.myfaces.Listbox</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>selectManyListbox</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlSelectManyListbox</component-type>
+            <renderer-type>org.apache.myfaces.Listbox</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>inputCalendar</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlInputCalendar</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>jsValueChangeListener</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.JsValueChangeListener</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>jsValueSet</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlJsValueSet</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>checkbox</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlCheckbox</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>commandNavigation</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlCommandNavigation</component-type>
+            <renderer-type>org.apache.myfaces.Navigation</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>commandSortHeader</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlCommandSortHeader</component-type>
+            <renderer-type>org.apache.myfaces.SortHeader</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>dataList</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlDataList</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>dataScroller</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlDataScroller</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>inputDate</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlInputDate</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>inputFileUpload</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlInputFileUpload</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>inputHtml</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.InputHtml</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>navigationMenuItem</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.NavigationMenuItem</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>navigationMenuItems</tag-name>
+        <component>
+            <component-type>javax.faces.SelectItems</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>jscookMenu</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.JSCookMenu</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>panelLayout</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlPanelLayout</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>panelNavigation</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlPanelNavigation</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>panelTab</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlPanelTab</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>panelTabbedPane</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlPanelTabbedPane</component-type>
+        </component>
+    </tag>
+    <!-- deactivated since there's no component! tag>
+    <tag-name>tabChangeListener</tag-name>
+    <component>
+    <component-type></component-type>
+    </component>
+    </tag-->
+    <tag>
+        <tag-name>collapsiblePanel</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlCollapsiblePanel</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>selectOneCountry</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.SelectOneCountry</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>selectOneLanguage</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.SelectOneLanguage</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>stylesheet</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.Stylesheet</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>div</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.Div</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>htmlTag</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlTag</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>radio</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlRadio</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>tree</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlTree</component-type>
+            <renderer-type>org.apache.myfaces.HtmlTree</renderer-type>
+        </component>
+    </tag>
+    <!-- deactivated since there's no component! tag>
+    <tag-name>treeSelectionListener</tag-name>
+    <component>
+    <component-type></component-type>
+    </component>
+    </tag-->
+    <!-- deactivated since there's no component! tag>
+    <tag-name>iconProvider</tag-name>
+    <component>
+    <component-type></component-type>
+    </component>
+    </tag-->
+    <tag>
+        <tag-name>treeColumn</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlTreeColumn</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>treeCheckbox</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlTreeCheckbox</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>tree2</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlTree2</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>panelStack</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlPanelStack</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>popup</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlPopup</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>newspaperTable</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlNewspaperTable</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>aliasBean</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.AliasBean</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>aliasBeansScope</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.AliasBeansScope</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>buffer</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.Buffer</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>saveState</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.SaveState</component-type>
+        </component>
+    </tag>
+    <!-- deactivated since there's no component! tag>
+    <tag-name>updateActionListener</tag-name>
+    <component>
+    <component-type></component-type>
+    </component>
+    </tag-->
+    <tag>
+        <tag-name>validateCreditCard</tag-name>
+        <validator>
+            <validator-id>org.apache.myfaces.validator.CreditCard</validator-id>
+        </validator>
+    </tag>
+    <tag>
+        <tag-name>validateEmail</tag-name>
+        <validator>
+            <validator-id>org.apache.myfaces.validator.Email</validator-id>
+        </validator>
+    </tag>
+    <tag>
+        <tag-name>validateEqual</tag-name>
+        <validator>
+            <validator-id>org.apache.myfaces.validator.Equal</validator-id>
+        </validator>
+    </tag>
+    <tag>
+        <tag-name>swapImage</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlSwapImage</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>columns</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlColumns</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>column</tag-name>
+        <component>
+            <component-type>org.apache.myfaces.HtmlColumn</component-type>
+        </component>
+    </tag>
+    <!-- additional validators (note: not in tld, so no code completion) -->
+    <tag>
+        <tag-name>validateRegExpr</tag-name>
+        <validator>
+            <validator-id>org.apache.myfaces.validator.RegExpr</validator-id>
+        </validator>
+    </tag>
+</facelet-taglib>
\ No newline at end of file

Added: labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/WEB-INF/tomahawk.tld
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/WEB-INF/tomahawk.tld	                        (rev 0)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/WEB-INF/tomahawk.tld	2007-02-14 22:31:10 UTC (rev 9502)
@@ -0,0 +1,9147 @@
+<?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>
+
+    <tlib-version>1.0.10</tlib-version>
+    <jsp-version>1.2</jsp-version>
+    <short-name>t</short-name>
+    <uri>http://myfaces.apache.org/tomahawk</uri>
+    <description>
+        MyFaces subproject that contains components and other goodies to be used with any JSF implementation.
+    </description>
+
+<!--     Extended standard components     -->
+
+    <!-- commandButton -->
+    <tag>
+        <name>commandButton</name>
+        <tag-class>org.apache.myfaces.taglib.html.ext.HtmlCommandButtonTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            Extends standard commandButton by user role support.
+        </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>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+        <attribute>
+            <name>action</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>MethodBinding pointing at the application action to be invoked, if this UIComponent is activated by the user, during the Apply Request Values or Invoke Application phase of the request processing lifecycle, depending on the value of the immediate property.</description>
+        </attribute>
+        <attribute>
+            <name>actionListener</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>MethodBinding pointing at method acception an ActionEvent with return type void.</description>
+        </attribute>
+        <attribute>
+            <name>immediate</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>True means, that the default ActionListener should be executed immediately (i.e. during Apply Request Values phase of the request processing lifecycle), rather than waiting until the Invoke Application phase.</description>
+        </attribute>
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Initial value to set when rendered for the first time.</description>
+        </attribute>
+
+        <!-- HTML 4.0 universal attributes -->
+        <attribute><name>dir</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>lang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>style</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>title</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>styleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Corresponds to the HTML class attribute.</description>
+        </attribute>
+
+        <!-- HTML 4.0 event-handler attributes -->
+        <attribute><name>onclick</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>ondblclick</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousedown</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseup</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseover</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousemove</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseout</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeypress</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeydown</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeyup</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <!-- HTML 4.0 button attributes -->
+        <attribute><name>accesskey</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>alt</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>disabled</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>onblur</name>      <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>onchange</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>onfocus</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>onselect</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>size</name>        <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>tabindex</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>type</name>        <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+
+        <!-- HtmlCommandButton attributes -->
+        <attribute>
+            <name>image</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>enabledOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, no hyperlink is rendered but all nested
+                tags (=body) are rendered.
+            </description>
+        </attribute>
+        <attribute>
+            <name>visibleOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, nothing is rendered and the body of this tag
+                will be skipped.
+            </description>
+        </attribute>
+
+                <!-- 
+        This attribute indicates that the component should be forced to use the specified id instead of 
+        using the one that faces generates.  Components contained within a "list" will include a '[n]'  
+        suffix where 'n' is the row index (unless the forceIdIndex attribute is set to false).
+        -->
+        <attribute>
+            <name>forceId</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will force the use of the specified id when rendering.</description>
+        </attribute>        
+
+        <!-- 
+        If the component is contained within an "list" (such as dataTable), this attribute indicates whether or not a 
+        '[n]' suffix should be added where 'n' is the row index.  Default is true.  The attribute is ignored if forceId 
+        is false (or not specified)
+        -->
+        <attribute>
+            <name>forceIdIndex</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>
+                If false, this component will not append a '[n]' suffix (where 'n' is the row index) to components 
+                that are contained within a "list."  This value will be true by default and the value will be ignored if 
+                the value of forceId is false (or not specified.)
+            </description>
+        </attribute>        
+
+    </tag>
+
+    <!-- commandLink -->
+    <tag>
+        <name>commandLink</name>
+        <tag-class>org.apache.myfaces.taglib.html.ext.HtmlCommandLinkTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            Extends standard commandLink by user role support and the HTML target attribute.
+        </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>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+        <attribute>
+            <name>action</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>MethodBinding pointing at the application action to be invoked, if this UIComponent is activated by the user, during the Apply Request Values or Invoke Application phase of the request processing lifecycle, depending on the value of the immediate property.</description>
+        </attribute>
+        <attribute>
+            <name>actionListener</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>MethodBinding pointing at method acception an ActionEvent with return type void.</description>
+        </attribute>
+        <attribute>
+            <name>immediate</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>True means, that the default ActionListener should be executed immediately (i.e. during Apply Request Values phase of the request processing lifecycle), rather than waiting until the Invoke Application phase.</description>
+        </attribute>
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Initial value to set when rendered for the first time.</description>
+        </attribute>
+
+        <!-- HTML 4.0 universal attributes -->
+        <attribute><name>dir</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>lang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>style</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>title</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>styleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Corresponds to the HTML class attribute.</description>
+        </attribute>
+
+        <!-- HTML 4.0 event-handler attributes -->
+        <attribute><name>onclick</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>ondblclick</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousedown</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseup</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseover</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousemove</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseout</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeypress</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeydown</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeyup</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <!-- HTML 4.0 anchor (=a) attributes -->
+        <attribute><name>accesskey</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>charset</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>coords</name>      <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <!-- "href" is a special LinkRenderer attribute -->
+        <attribute><name>hreflang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <!-- "name" cannot be set by user -->
+        <attribute><name>rel</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>rev</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>shape</name>       <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>tabindex</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>type</name>        <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <!--todo: is in JSF API of HtmlCommandLink and HtmlOutputLink, but there is no corresponding tag in HTML 4.0.. What to do?-->
+        <attribute>
+            <name>onblur</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <!--todo: is in JSF API of HtmlCommandLink and HtmlOutputLink, but there is no corresponding tag in HTML 4.0.. What to do?-->
+        <attribute>
+            <name>onfocus</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>target</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>enabledOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, no hyperlink is rendered but all nested
+                tags (=body) are rendered.
+            </description>
+        </attribute>
+        <attribute>
+            <name>visibleOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, nothing is rendered and the body of this tag
+                will be skipped.
+            </description>
+        </attribute>
+
+                <!-- 
+        This attribute indicates that the component should be forced to use the specified id instead of 
+        using the one that faces generates.  Components contained within a "list" will include a '[n]'  
+        suffix where 'n' is the row index (unless the forceIdIndex attribute is set to false).
+        -->
+        <attribute>
+            <name>forceId</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will force the use of the specified id when rendering.</description>
+        </attribute>        
+
+        <!-- 
+        If the component is contained within an "list" (such as dataTable), this attribute indicates whether or not a 
+        '[n]' suffix should be added where 'n' is the row index.  Default is true.  The attribute is ignored if forceId 
+        is false (or not specified)
+        -->
+        <attribute>
+            <name>forceIdIndex</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>
+                If false, this component will not append a '[n]' suffix (where 'n' is the row index) to components 
+                that are contained within a "list."  This value will be true by default and the value will be ignored if 
+                the value of forceId is false (or not specified.)
+            </description>
+        </attribute>        
+
+    </tag>
+
+    <!-- dataTable -->
+    <tag>
+        <name>dataTable</name>
+        <tag-class>org.apache.myfaces.taglib.html.ext.HtmlDataTableTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            Extended data_table that adds some additional features to the standard
+            data_table action: see attribute descriptions for preserveDataModel,
+            sortColumn, sortAscending and preserveSort.
+        </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>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+
+        <!-- HTML 4.0 universal attributes -->
+        <attribute><name>dir</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>lang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>style</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>title</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>styleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Corresponds to the HTML class attribute.</description>
+        </attribute>
+
+        <!-- HTML 4.0 event-handler attributes -->
+        <attribute><name>onclick</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>ondblclick</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousedown</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseup</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseover</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousemove</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseout</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeypress</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeydown</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeyup</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <!-- HTML 4.0 table attributes -->
+        <attribute><name>align</name>           <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>border</name>          <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>bgcolor</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>cellpadding</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>cellspacing</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>datafld</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>datasrc</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>dataformatas</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>frame</name>           <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>rules</name>           <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>summary</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>width</name>           <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <!-- UIData attributes -->
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Supported types see JSF Spec 4.1.3</description>
+        </attribute>
+        <attribute>
+            <name>var</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>rows</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>first</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <!-- TableRenderer attributes -->
+        <attribute>
+            <name>columnClasses</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>footerClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>headerClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>rowClasses</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+
+        <!-- MyFaces extensions -->
+                <!-- 
+        This attribute indicates that the component should be forced to use the specified id instead of 
+        using the one that faces generates.  Components contained within a "list" will include a '[n]'  
+        suffix where 'n' is the row index (unless the forceIdIndex attribute is set to false).
+        -->
+        <attribute>
+            <name>forceId</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will force the use of the specified id when rendering.</description>
+        </attribute>        
+
+        <!-- 
+        If the component is contained within an "list" (such as dataTable), this attribute indicates whether or not a 
+        '[n]' suffix should be added where 'n' is the row index.  Default is true.  The attribute is ignored if forceId 
+        is false (or not specified)
+        -->
+        <attribute>
+            <name>forceIdIndex</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>
+                If false, this component will not append a '[n]' suffix (where 'n' is the row index) to components 
+                that are contained within a "list."  This value will be true by default and the value will be ignored if 
+                the value of forceId is false (or not specified.)
+            </description>
+        </attribute>        
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>enabledOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, no hyperlink is rendered but all nested
+                tags (=body) are rendered.
+            </description>
+        </attribute>
+        <attribute>
+            <name>visibleOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, nothing is rendered and the body of this tag
+                will be skipped.
+            </description>
+        </attribute>
+
+        <attribute>
+            <name>preserveDataModel</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Indicates whether the state of the whole DataModel should be saved and
+                restored.
+                Default: false
+            </description>
+        </attribute>
+        <attribute>
+            <name>forceIdIndexFormula</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+				A formula that overrides the defaut row index in the construction of table's
+				body components.
+				Example : #{myRowVar.key}
+				Warning, the EL should evaluate to a unique value for each row !
+            </description>
+        </attribute>
+        <attribute>
+            <name>sortColumn</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Value reference to a model property that gives the current sort column name.
+            </description>
+        </attribute>
+        <attribute>
+            <name>sortAscending</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Value reference to a model property that gives the current sort direction.
+            </description>
+        </attribute>
+        <attribute>
+            <name>preserveSort</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Indicates whether the state of the sortColumn and sortAscending attribute
+                should be saved and restored and written back to the model during the
+                update model phase.
+                Default: true
+            </description>
+        </attribute>
+        <attribute>
+            <name>renderedIfEmpty</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Indicates whether this table should be rendered if the underlying DataModel is
+                empty.
+                You could as well use rendered="#{not empty bean.list}", but this one causes
+                the getList method of your model bean beeing called up to five times per
+                request, which is not optimal when the list is backed by a DB table.
+                Using renderedIfEmpty="false" solves this problem, because the MyFaces
+                extended HtmlDataTable automatically caches the DataModel and calles the
+                model getter only once per request.
+                Default: true
+            </description>
+        </attribute>
+        <attribute>
+            <name>rowIndexVar</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                A parameter name, under which the current rowIndex is set in request scope
+                similar to the var parameter.
+            </description>
+        </attribute>
+        <attribute>
+            <name>rowCountVar</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                A parameter name, under which the rowCount is set in request scope
+                similar to the var parameter.
+            </description>
+        </attribute>
+        <attribute>
+            <name>previousRowDataVar</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                A parameter name, under which the previous RowData Object is set in request scope
+                similar to the rowIndexVar and rowCountVar parameters.
+                Mind that the value of this request scope attribute is null in the first row
+                or when isRowAvailable returns false for the previous row.
+            </description>
+        </attribute>
+        <attribute>
+            <name>rowOnClick</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Defines a JavaScript onclick event handler for each table row
+            </description>
+        </attribute>
+        <attribute>
+            <name>rowOnDblClick</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Defines a JavaScript ondblclick event handler for each table row
+            </description>
+        </attribute>
+        <attribute>
+            <name>rowOnMouseDown</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Defines a JavaScript onmpusedown event handler for each table row
+            </description>
+        </attribute>
+        <attribute>
+            <name>rowOnMouseUp</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Defines a JavaScript onmouseup event handler for each table row
+            </description>
+        </attribute>
+        <attribute>
+            <name>rowOnMouseOver</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Defines a JavaScript onmouseover event handler for each table row
+            </description>
+        </attribute>
+        <attribute>
+            <name>rowOnMouseMove</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Defines a JavaScript onmousemove event handler for each table row
+            </description>
+        </attribute>
+        <attribute>
+            <name>rowOnMouseOut</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Defines a JavaScript onmouseout event handler for each table row
+            </description>
+        </attribute>
+        <attribute>
+            <name>rowOnKeyPress</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Defines a JavaScript onkeypress event handler for each table row
+            </description>
+        </attribute>
+        <attribute>
+            <name>rowOnKeyDown</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Defines a JavaScript onkeydown event handler for each table row
+            </description>
+        </attribute>
+        <attribute>
+            <name>rowOnKeyUp</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Defines a JavaScript onkeyup event handler for each table row
+            </description>
+        </attribute>
+        <attribute>
+            <name>rowId</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                The id to use for &lt;tr&gt; elements that are generated by the table.
+            </description>
+        </attribute>        
+        <attribute>
+            <name>rowStyleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Corresponds to the HTML class attribute for the row tr tag.</description>
+        </attribute>
+        <attribute>
+            <name>rowStyle</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Corresponds to the HTML style attribute for the row tr tag.</description>
+        </attribute>
+     </tag>
+
+    <!-- inputHidden -->
+    <tag>
+        <name>inputHidden</name>
+        <tag-class>org.apache.myfaces.taglib.html.ext.HtmlInputHiddenTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            Extends standard inputHidden by providing additional MyFaces goodies.
+        </description>
+                <!-- UIInput attributes -->
+                <!-- UIOutput attributes -->
+        <!-- UIComponent attributes -->
+        <attribute>
+            <name>id</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Initial value to set when rendered for the first time.</description>
+        </attribute>
+        <attribute>
+            <name>converter</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Id of Converter to be used or reference to a Converter.</description>
+        </attribute>
+
+        <attribute>
+            <name>immediate</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description> Flag indicating that this component's value must be converted and validated immediately (that is, during Apply Request Values phase), rather than waiting until Process Validations phase.</description>
+        </attribute>
+        <attribute>
+            <name>required</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will be checked for non-empty input.</description>
+        </attribute>
+        <attribute>
+            <name>validator</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>MethodBinding pointing at a method that will be called during Process Validations phase of the request processing lifecycle, to validate the current value of this component.</description>
+        </attribute>
+        <attribute>
+            <name>valueChangeListener</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Listener for value changes.</description>
+        </attribute>
+
+                <!-- 
+        This attribute indicates that the component should be forced to use the specified id instead of 
+        using the one that faces generates.  Components contained within a "list" will include a '[n]'  
+        suffix where 'n' is the row index (unless the forceIdIndex attribute is set to false).
+        -->
+        <attribute>
+            <name>forceId</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will force the use of the specified id when rendering.</description>
+        </attribute>        
+
+        <!-- 
+        If the component is contained within an "list" (such as dataTable), this attribute indicates whether or not a 
+        '[n]' suffix should be added where 'n' is the row index.  Default is true.  The attribute is ignored if forceId 
+        is false (or not specified)
+        -->
+        <attribute>
+            <name>forceIdIndex</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>
+                If false, this component will not append a '[n]' suffix (where 'n' is the row index) to components 
+                that are contained within a "list."  This value will be true by default and the value will be ignored if 
+                the value of forceId is false (or not specified.)
+            </description>
+        </attribute>        
+
+    </tag>
+
+    <!-- inputSecret -->
+    <tag>
+        <name>inputSecret</name>
+        <tag-class>org.apache.myfaces.taglib.html.ext.HtmlInputSecretTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            Extends standard inputSecret.
+        </description>
+         <attribute><name>datafld</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>datasrc</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>dataformatas</name><required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+                <!-- UIInput attributes -->
+                <!-- UIOutput attributes -->
+        <!-- UIComponent attributes -->
+        <attribute>
+            <name>id</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Initial value to set when rendered for the first time.</description>
+        </attribute>
+        <attribute>
+            <name>converter</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Id of Converter to be used or reference to a Converter.</description>
+        </attribute>
+
+        <attribute>
+            <name>immediate</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description> Flag indicating that this component's value must be converted and validated immediately (that is, during Apply Request Values phase), rather than waiting until Process Validations phase.</description>
+        </attribute>
+        <attribute>
+            <name>required</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will be checked for non-empty input.</description>
+        </attribute>
+        <attribute>
+            <name>validator</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>MethodBinding pointing at a method that will be called during Process Validations phase of the request processing lifecycle, to validate the current value of this component.</description>
+        </attribute>
+        <attribute>
+            <name>valueChangeListener</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Listener for value changes.</description>
+        </attribute>
+
+        <!-- HTML 4.0 input attributes -->
+        <attribute><name>accesskey</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>align</name>       <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>alt</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>disabled</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>maxlength</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>onblur</name>      <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>onchange</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>onfocus</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>onselect</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>readonly</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>size</name>        <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>tabindex</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <!-- HTML 4.0 universal attributes -->
+        <attribute><name>dir</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>lang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>style</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>title</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>styleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Corresponds to the HTML class attribute.</description>
+        </attribute>
+
+        <!-- HTML 4.0 event-handler attributes -->
+        <attribute><name>onclick</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>ondblclick</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousedown</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseup</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseover</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousemove</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseout</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeypress</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeydown</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeyup</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>enabledOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, no hyperlink is rendered but all nested
+                tags (=body) are rendered.
+            </description>
+        </attribute>
+        <attribute>
+            <name>visibleOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, nothing is rendered and the body of this tag
+                will be skipped.
+            </description>
+        </attribute>
+
+                <!-- 
+        This attribute indicates that the component should be forced to use the specified id instead of 
+        using the one that faces generates.  Components contained within a "list" will include a '[n]'  
+        suffix where 'n' is the row index (unless the forceIdIndex attribute is set to false).
+        -->
+        <attribute>
+            <name>forceId</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will force the use of the specified id when rendering.</description>
+        </attribute>        
+
+        <!-- 
+        If the component is contained within an "list" (such as dataTable), this attribute indicates whether or not a 
+        '[n]' suffix should be added where 'n' is the row index.  Default is true.  The attribute is ignored if forceId 
+        is false (or not specified)
+        -->
+        <attribute>
+            <name>forceIdIndex</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>
+                If false, this component will not append a '[n]' suffix (where 'n' is the row index) to components 
+                that are contained within a "list."  This value will be true by default and the value will be ignored if 
+                the value of forceId is false (or not specified.)
+            </description>
+        </attribute>        
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>displayValueOnly</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If true, renders only the value of the component, but no input widget.
+                Default is false.
+            </description>
+        </attribute>
+        <attribute>
+            <name>displayValueOnlyStyle</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Style used when displayValueOnly is true.
+            </description>
+        </attribute>
+        <attribute>
+            <name>displayValueOnlyStyleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Style class used when displayValueOnly is true.
+            </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>
+
+    <!-- inputText -->
+    <tag>
+        <name>inputText</name>
+        <tag-class>org.apache.myfaces.taglib.html.ext.HtmlInputTextTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            Extends standard inputText by user role support.
+        </description>
+        <attribute><name>datafld</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>datasrc</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>dataformatas</name><required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+                <!-- 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>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Initial value to set when rendered for the first time.</description>
+        </attribute>
+        <attribute>
+            <name>converter</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Id of Converter to be used or reference to a Converter.</description>
+        </attribute>
+
+        <attribute>
+            <name>immediate</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description> Flag indicating that this component's value must be converted and validated immediately (that is, during Apply Request Values phase), rather than waiting until Process Validations phase.</description>
+        </attribute>
+        <attribute>
+            <name>required</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will be checked for non-empty input.</description>
+        </attribute>
+        <attribute>
+            <name>validator</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>MethodBinding pointing at a method that will be called during Process Validations phase of the request processing lifecycle, to validate the current value of this component.</description>
+        </attribute>
+        <attribute>
+            <name>valueChangeListener</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Listener for value changes.</description>
+        </attribute>
+
+        <!-- HTML 4.0 universal attributes -->
+        <attribute><name>dir</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>lang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>style</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>title</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>styleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Corresponds to the HTML class attribute.</description>
+        </attribute>
+
+        <!-- HTML 4.0 event-handler attributes -->
+        <attribute><name>onclick</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>ondblclick</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousedown</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseup</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseover</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousemove</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseout</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeypress</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeydown</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeyup</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <!-- HTML 4.0 input attributes -->
+        <attribute><name>accesskey</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>align</name>       <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>alt</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>disabled</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>maxlength</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>onblur</name>      <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>onchange</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>onfocus</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>onselect</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>readonly</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>size</name>        <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>tabindex</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>enabledOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, no hyperlink is rendered but all nested
+                tags (=body) are rendered.
+            </description>
+        </attribute>
+        <attribute>
+            <name>visibleOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, nothing is rendered and the body of this tag
+                will be skipped.
+            </description>
+        </attribute>
+
+                <!-- 
+        This attribute indicates that the component should be forced to use the specified id instead of 
+        using the one that faces generates.  Components contained within a "list" will include a '[n]'  
+        suffix where 'n' is the row index (unless the forceIdIndex attribute is set to false).
+        -->
+        <attribute>
+            <name>forceId</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will force the use of the specified id when rendering.</description>
+        </attribute>        
+
+        <!-- 
+        If the component is contained within an "list" (such as dataTable), this attribute indicates whether or not a 
+        '[n]' suffix should be added where 'n' is the row index.  Default is true.  The attribute is ignored if forceId 
+        is false (or not specified)
+        -->
+        <attribute>
+            <name>forceIdIndex</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>
+                If false, this component will not append a '[n]' suffix (where 'n' is the row index) to components 
+                that are contained within a "list."  This value will be true by default and the value will be ignored if 
+                the value of forceId is false (or not specified.)
+            </description>
+        </attribute>        
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>displayValueOnly</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If true, renders only the value of the component, but no input widget.
+                Default is false.
+            </description>
+        </attribute>
+        <attribute>
+            <name>displayValueOnlyStyle</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Style used when displayValueOnly is true.
+            </description>
+        </attribute>
+        <attribute>
+            <name>displayValueOnlyStyleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Style class used when displayValueOnly is true.
+            </description>
+        </attribute>        
+    </tag>
+
+    <!-- inputTextHelp -->
+    <tag>
+        <name>inputTextHelp</name>
+        <tag-class>org.apache.myfaces.custom.inputTextHelp.HtmlInputTextHelpTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            Extends standard inputText by helptext support.
+        </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>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Initial value to set when rendered for the first time.</description>
+        </attribute>
+        <attribute>
+            <name>converter</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Id of Converter to be used or reference to a Converter.</description>
+        </attribute>
+
+        <attribute>
+            <name>immediate</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description> Flag indicating that this component's value must be converted and validated immediately (that is, during Apply Request Values phase), rather than waiting until Process Validations phase.</description>
+        </attribute>
+        <attribute>
+            <name>required</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will be checked for non-empty input.</description>
+        </attribute>
+        <attribute>
+            <name>validator</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>MethodBinding pointing at a method that will be called during Process Validations phase of the request processing lifecycle, to validate the current value of this component.</description>
+        </attribute>
+        <attribute>
+            <name>valueChangeListener</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Listener for value changes.</description>
+        </attribute>
+
+        <!-- HTML 4.0 universal attributes -->
+        <attribute><name>dir</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>lang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>style</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>title</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>styleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Corresponds to the HTML class attribute.</description>
+        </attribute>
+
+        <!-- HTML 4.0 event-handler attributes -->
+        <attribute><name>onclick</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>ondblclick</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousedown</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseup</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseover</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousemove</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseout</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeypress</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeydown</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeyup</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <!-- HTML 4.0 input attributes -->
+        <attribute><name>accesskey</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>align</name>       <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>alt</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>disabled</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>maxlength</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>onblur</name>      <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>onchange</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>onfocus</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>onselect</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>readonly</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>size</name>        <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>tabindex</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>enabledOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, no hyperlink is rendered but all nested
+                tags (=body) are rendered.
+            </description>
+        </attribute>
+        <attribute>
+            <name>visibleOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, nothing is rendered and the body of this tag
+                will be skipped.
+            </description>
+        </attribute>
+
+                <!-- 
+        This attribute indicates that the component should be forced to use the specified id instead of 
+        using the one that faces generates.  Components contained within a "list" will include a '[n]'  
+        suffix where 'n' is the row index (unless the forceIdIndex attribute is set to false).
+        -->
+        <attribute>
+            <name>forceId</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will force the use of the specified id when rendering.</description>
+        </attribute>        
+
+        <!-- 
+        If the component is contained within an "list" (such as dataTable), this attribute indicates whether or not a 
+        '[n]' suffix should be added where 'n' is the row index.  Default is true.  The attribute is ignored if forceId 
+        is false (or not specified)
+        -->
+        <attribute>
+            <name>forceIdIndex</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>
+                If false, this component will not append a '[n]' suffix (where 'n' is the row index) to components 
+                that are contained within a "list."  This value will be true by default and the value will be ignored if 
+                the value of forceId is false (or not specified.)
+            </description>
+        </attribute>        
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>displayValueOnly</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If true, renders only the value of the component, but no input widget.
+                Default is false.
+            </description>
+        </attribute>
+        <attribute>
+            <name>displayValueOnlyStyle</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Style used when displayValueOnly is true.
+            </description>
+        </attribute>
+        <attribute>
+            <name>displayValueOnlyStyleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Style class used when displayValueOnly is true.
+            </description>
+        </attribute>        
+        <!-- Attributes for HtmlInputText with Helptext -->
+        <attribute>
+            <name>helpText</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <name>selectText</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+    </tag>
+
+    <!-- inputTextarea -->
+    <tag>
+        <name>inputTextarea</name>
+        <tag-class>org.apache.myfaces.taglib.html.ext.HtmlInputTextareaTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            Extends standard inputTextarea by user role support.
+        </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>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Initial value to set when rendered for the first time.</description>
+        </attribute>
+        <attribute>
+            <name>converter</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Id of Converter to be used or reference to a Converter.</description>
+        </attribute>
+
+        <attribute>
+            <name>immediate</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description> Flag indicating that this component's value must be converted and validated immediately (that is, during Apply Request Values phase), rather than waiting until Process Validations phase.</description>
+        </attribute>
+        <attribute>
+            <name>required</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will be checked for non-empty input.</description>
+        </attribute>
+        <attribute>
+            <name>validator</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>MethodBinding pointing at a method that will be called during Process Validations phase of the request processing lifecycle, to validate the current value of this component.</description>
+        </attribute>
+        <attribute>
+            <name>valueChangeListener</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Listener for value changes.</description>
+        </attribute>
+
+        <!-- HTML 4.0 textarea attributes -->
+        <attribute><name>accesskey</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>cols</name>        <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>datafld</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>datasrc</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>dataformatas</name><required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>disabled</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>onblur</name>      <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>onchange</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>onfocus</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>onselect</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>readonly</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>rows</name>        <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>tabindex</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+
+        <!-- HTML 4.0 universal attributes -->
+        <attribute><name>dir</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>lang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>style</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>title</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>styleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Corresponds to the HTML class attribute.</description>
+        </attribute>
+
+        <!-- HTML 4.0 event-handler attributes -->
+        <attribute><name>onclick</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>ondblclick</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousedown</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseup</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseover</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousemove</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseout</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeypress</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeydown</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeyup</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>enabledOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, no hyperlink is rendered but all nested
+                tags (=body) are rendered.
+            </description>
+        </attribute>
+        <attribute>
+            <name>visibleOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, nothing is rendered and the body of this tag
+                will be skipped.
+            </description>
+        </attribute>
+
+                <!-- 
+        This attribute indicates that the component should be forced to use the specified id instead of 
+        using the one that faces generates.  Components contained within a "list" will include a '[n]'  
+        suffix where 'n' is the row index (unless the forceIdIndex attribute is set to false).
+        -->
+        <attribute>
+            <name>forceId</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will force the use of the specified id when rendering.</description>
+        </attribute>        
+
+        <!-- 
+        If the component is contained within an "list" (such as dataTable), this attribute indicates whether or not a 
+        '[n]' suffix should be added where 'n' is the row index.  Default is true.  The attribute is ignored if forceId 
+        is false (or not specified)
+        -->
+        <attribute>
+            <name>forceIdIndex</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>
+                If false, this component will not append a '[n]' suffix (where 'n' is the row index) to components 
+                that are contained within a "list."  This value will be true by default and the value will be ignored if 
+                the value of forceId is false (or not specified.)
+            </description>
+        </attribute>        
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>displayValueOnly</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If true, renders only the value of the component, but no input widget.
+                Default is false.
+            </description>
+        </attribute>
+        <attribute>
+            <name>displayValueOnlyStyle</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Style used when displayValueOnly is true.
+            </description>
+        </attribute>
+        <attribute>
+            <name>displayValueOnlyStyleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Style class used when displayValueOnly is true.
+            </description>
+        </attribute>        
+    </tag>
+
+     <!-- graphicImage -->
+    <tag>
+        <name>graphicImage</name>
+        <tag-class>org.apache.myfaces.taglib.html.ext.HtmlGraphicImageTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            Extends standard graphicImage.
+        </description>
+                <!-- UIGraphic attributes -->
+        <!-- UIComponent attributes -->
+        <attribute>
+            <name>id</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+        <attribute>
+            <name>url</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>URL of the image (see JSF.4.1.5).</description>
+        </attribute>
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>URL of the image (see JSF.4.1.5).</description>
+        </attribute>
+
+        <!-- HTML 4.0 universal attributes -->
+        <attribute><name>dir</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>lang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>style</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>title</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>styleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Corresponds to the HTML class attribute.</description>
+        </attribute>
+
+        <!-- HTML 4.0 event-handler attributes -->
+        <attribute><name>onclick</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>ondblclick</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousedown</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseup</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseover</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousemove</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseout</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeypress</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeydown</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeyup</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <!-- HTML 4.0 img attributes that are not part of the JSF 1.1 specification -->
+        <attribute>
+            <name>align</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <name>border</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <name>hspace</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <name>vspace</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+        </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>
+        </attribute>
+        <attribute>
+            <name>height</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <name>ismap</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <name>longdesc</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+        </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>
+        </attribute>
+        <attribute>
+            <name>width</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+        </attribute>
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>enabledOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, no hyperlink is rendered but all nested
+                tags (=body) are rendered.
+            </description>
+        </attribute>
+        <attribute>
+            <name>visibleOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, nothing is rendered and the body of this tag
+                will be skipped.
+            </description>
+        </attribute>
+
+                <!-- 
+        This attribute indicates that the component should be forced to use the specified id instead of 
+        using the one that faces generates.  Components contained within a "list" will include a '[n]'  
+        suffix where 'n' is the row index (unless the forceIdIndex attribute is set to false).
+        -->
+        <attribute>
+            <name>forceId</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will force the use of the specified id when rendering.</description>
+        </attribute>        
+
+        <!-- 
+        If the component is contained within an "list" (such as dataTable), this attribute indicates whether or not a 
+        '[n]' suffix should be added where 'n' is the row index.  Default is true.  The attribute is ignored if forceId 
+        is false (or not specified)
+        -->
+        <attribute>
+            <name>forceIdIndex</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>
+                If false, this component will not append a '[n]' suffix (where 'n' is the row index) to components 
+                that are contained within a "list."  This value will be true by default and the value will be ignored if 
+                the value of forceId is false (or not specified.)
+            </description>
+        </attribute>        
+
+    </tag>
+
+    <!-- message -->
+    <tag>
+        <name>message</name>
+        <tag-class>org.apache.myfaces.taglib.html.ext.HtmlMessageTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            MyFaces extension to the standard messages tag: see summaryDetailSeparator attribute
+        </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>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+        <attribute>
+            <name>for</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>The client identifier of the component for which this component represents associated message(s).</description>
+        </attribute>
+        <attribute>
+            <name>showSummary</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Indicates whether the summary of the associated message(s) should be displayed.
+                         Default is: true</description>
+        </attribute>
+        <attribute>
+            <name>showDetail</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Indicates whether the detail of the associated message(s) should be displayed.
+                         Default is: false</description>
+        </attribute>
+
+
+        <!-- HTML 4.0 universal attributes -->
+        <attribute><name>dir</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>lang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>style</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>title</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>styleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Corresponds to the HTML class attribute.</description>
+        </attribute>
+
+        <!-- HTML 4.0 event-handler attributes -->
+        <attribute><name>onclick</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>ondblclick</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousedown</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseup</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseover</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousemove</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseout</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeypress</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeydown</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeyup</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></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>
+
+        <!-- MyFaces extensions -->
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>enabledOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, no hyperlink is rendered but all nested
+                tags (=body) are rendered.
+            </description>
+        </attribute>
+        <attribute>
+            <name>visibleOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, nothing is rendered and the body of this tag
+                will be skipped.
+            </description>
+        </attribute>
+
+                <!-- 
+        This attribute indicates that the component should be forced to use the specified id instead of 
+        using the one that faces generates.  Components contained within a "list" will include a '[n]'  
+        suffix where 'n' is the row index (unless the forceIdIndex attribute is set to false).
+        -->
+        <attribute>
+            <name>forceId</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will force the use of the specified id when rendering.</description>
+        </attribute>        
+
+        <!-- 
+        If the component is contained within an "list" (such as dataTable), this attribute indicates whether or not a 
+        '[n]' suffix should be added where 'n' is the row index.  Default is true.  The attribute is ignored if forceId 
+        is false (or not specified)
+        -->
+        <attribute>
+            <name>forceIdIndex</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>
+                If false, this component will not append a '[n]' suffix (where 'n' is the row index) to components 
+                that are contained within a "list."  This value will be true by default and the value will be ignored if 
+                the value of forceId is false (or not specified.)
+            </description>
+        </attribute>        
+
+        <attribute>
+            <name>summaryFormat</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If present, instead of rendering the message summary, a MessageFormat with this
+                attribute as pattern is created. The format method of this MessageFormat is
+                called with the message summary as the first argument and the label of the
+                associated component (if any) as the second argument.
+                Example: "{0}:"
+            </description>
+        </attribute>
+        <attribute>
+            <name>detailFormat</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If present, instead of rendering the message detail, a MessageFormat with this
+                attribute as pattern is created. The format method of this MessageFormat is
+                called with the message detail as the first argument and the label of the
+                associated component (if any) as the second argument.
+                Example: "The input in field {1} is wrong: {0}"
+            </description>
+        </attribute>
+        <attribute>
+            <name>replaceIdWithLabel</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If present, all occurrences of the id of the component for which the message
+                is rendered will be replaced by the label. Standard is true for the extended
+                message renderer.
+            </description>
+        </attribute>
+    </tag>
+
+    <!-- messages -->
+    <tag>
+        <name>messages</name>
+        <tag-class>org.apache.myfaces.taglib.html.ext.HtmlMessagesTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            MyFaces extension to the standard messages tag: see showInputLabel attribute
+        </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>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+        <attribute>
+            <name>showSummary</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Indicates whether the summary of the message(s) should be displayed.
+                         Default is: true</description>
+        </attribute>
+        <attribute>
+            <name>showDetail</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Indicates whether the detail of the message(s) should be displayed.
+                         Default is: false</description>
+        </attribute>
+        <attribute>
+            <name>globalOnly</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Indicates whether only global messages (that is, messages with no associated client identifier) should be rendered.
+                         Default is: false</description>
+        </attribute>
+
+        <!-- HTML 4.0 universal attributes -->
+        <attribute><name>dir</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>lang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>style</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>title</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>styleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Corresponds to the HTML class attribute.</description>
+        </attribute>
+
+        <!-- HTML 4.0 event-handler attributes -->
+        <attribute><name>onclick</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>ondblclick</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousedown</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseup</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseover</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousemove</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseout</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeypress</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeydown</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeyup</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></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>
+
+        <!-- MyFaces extensions -->
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>enabledOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, no hyperlink is rendered but all nested
+                tags (=body) are rendered.
+            </description>
+        </attribute>
+        <attribute>
+            <name>visibleOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, nothing is rendered and the body of this tag
+                will be skipped.
+            </description>
+        </attribute>
+
+                <!-- 
+        This attribute indicates that the component should be forced to use the specified id instead of 
+        using the one that faces generates.  Components contained within a "list" will include a '[n]'  
+        suffix where 'n' is the row index (unless the forceIdIndex attribute is set to false).
+        -->
+        <attribute>
+            <name>forceId</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will force the use of the specified id when rendering.</description>
+        </attribute>        
+
+        <!-- 
+        If the component is contained within an "list" (such as dataTable), this attribute indicates whether or not a 
+        '[n]' suffix should be added where 'n' is the row index.  Default is true.  The attribute is ignored if forceId 
+        is false (or not specified)
+        -->
+        <attribute>
+            <name>forceIdIndex</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>
+                If false, this component will not append a '[n]' suffix (where 'n' is the row index) to components 
+                that are contained within a "list."  This value will be true by default and the value will be ignored if 
+                the value of forceId is false (or not specified.)
+            </description>
+        </attribute>        
+
+        <attribute>
+            <name>summaryFormat</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If present, instead of rendering the message summary, a MessageFormat with this
+                attribute as pattern is created. The format method of this MessageFormat is
+                called with the message summary as the first argument and the label of the
+                associated component (if any) as the second argument.
+                Example: "{0}:" or "{0} in field {1}"
+            </description>
+        </attribute>
+        <attribute>
+            <name>globalSummaryFormat</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Like summaryFormat, but applies to global messages (i.e. messages not associated
+                with a component). If no globalSummaryFormat is given, the summaryFormat is used for
+                global messages.
+                Example: "{0}:"
+            </description>
+        </attribute>
+        <attribute>
+            <name>detailFormat</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If present, instead of rendering the message detail, a MessageFormat with this
+                attribute as pattern is created. The format method of this MessageFormat is
+                called with the message detail as the first argument and the label of the
+                associated component (if any) as the second argument.
+                Example: "The input in field {1} is wrong: {0}"
+            </description>
+        </attribute>
+        <attribute>
+            <name>replaceIdWithLabel</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If present, all occurrences of the id of the component for which the message
+                is rendered will be replaced by the label.
+            </description>
+        </attribute>
+    </tag>
+
+    <!-- outputLabel -->
+    <tag>
+        <name>outputLabel</name>
+        <tag-class>org.apache.myfaces.taglib.html.ext.HtmlOutputLabelTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            Extends standard outputLabel by user role support.
+        </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>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Initial value to set when rendered for the first time.</description>
+        </attribute>
+        <attribute>
+            <name>converter</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Id of Converter to be used or reference to a Converter.</description>
+        </attribute>
+
+        <!-- HTML 4.0 universal attributes -->
+        <attribute><name>dir</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>lang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>style</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>title</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>styleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Corresponds to the HTML class attribute.</description>
+        </attribute>
+
+        <!-- HTML 4.0 event-handler attributes -->
+        <attribute><name>onclick</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>ondblclick</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousedown</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseup</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseover</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousemove</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseout</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeypress</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeydown</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeyup</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <!-- HTML 4.0 label attributes -->
+        <attribute><name>accesskey</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <!-- "for" is a specific LabelRenderer attribute -->
+        <attribute><name>onblur</name>      <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onfocus</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <!-- LabelRenderer attributes -->
+        <attribute>
+          <name>for</name>
+          <required>false</required>
+          <rtexprvalue>false</rtexprvalue>
+        </attribute>
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>enabledOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, no hyperlink is rendered but all nested
+                tags (=body) are rendered.
+            </description>
+        </attribute>
+        <attribute>
+            <name>visibleOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, nothing is rendered and the body of this tag
+                will be skipped.
+            </description>
+        </attribute>
+
+                <!-- 
+        This attribute indicates that the component should be forced to use the specified id instead of 
+        using the one that faces generates.  Components contained within a "list" will include a '[n]'  
+        suffix where 'n' is the row index (unless the forceIdIndex attribute is set to false).
+        -->
+        <attribute>
+            <name>forceId</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will force the use of the specified id when rendering.</description>
+        </attribute>        
+
+        <!-- 
+        If the component is contained within an "list" (such as dataTable), this attribute indicates whether or not a 
+        '[n]' suffix should be added where 'n' is the row index.  Default is true.  The attribute is ignored if forceId 
+        is false (or not specified)
+        -->
+        <attribute>
+            <name>forceIdIndex</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>
+                If false, this component will not append a '[n]' suffix (where 'n' is the row index) to components 
+                that are contained within a "list."  This value will be true by default and the value will be ignored if 
+                the value of forceId is false (or not specified.)
+            </description>
+        </attribute>        
+
+    </tag>
+
+    <!-- outputText -->
+    <tag>
+        <name>outputText</name>
+        <tag-class>org.apache.myfaces.taglib.html.ext.HtmlOutputTextTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            Extends standard outputText by user role support.
+        </description>
+                <!-- all standard attributes of the outputText tag -->
+                <!-- UIOutput attributes -->
+        <!-- UIComponent attributes -->
+        <attribute>
+            <name>id</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Initial value to set when rendered for the first time.</description>
+        </attribute>
+        <attribute>
+            <name>converter</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Id of Converter to be used or reference to a Converter.</description>
+        </attribute>
+
+        <!-- HTML 4.0 universal attributes -->
+        <attribute><name>dir</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>lang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>style</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>title</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>styleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Corresponds to the HTML class attribute.</description>
+        </attribute>
+
+        <!-- HTML 4.0 event-handler attributes -->
+        <attribute><name>onclick</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>ondblclick</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousedown</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseup</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseover</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousemove</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseout</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeypress</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeydown</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeyup</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <!-- HtmlOutputText attributes -->
+        <attribute>
+            <name>escape</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Indicates whether rendered markup should be escaped.
+                Default: true
+            </description>
+        </attribute>
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>enabledOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, no hyperlink is rendered but all nested
+                tags (=body) are rendered.
+            </description>
+        </attribute>
+        <attribute>
+            <name>visibleOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, nothing is rendered and the body of this tag
+                will be skipped.
+            </description>
+        </attribute>
+
+                <!-- 
+        This attribute indicates that the component should be forced to use the specified id instead of 
+        using the one that faces generates.  Components contained within a "list" will include a '[n]'  
+        suffix where 'n' is the row index (unless the forceIdIndex attribute is set to false).
+        -->
+        <attribute>
+            <name>forceId</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will force the use of the specified id when rendering.</description>
+        </attribute>        
+
+        <!-- 
+        If the component is contained within an "list" (such as dataTable), this attribute indicates whether or not a 
+        '[n]' suffix should be added where 'n' is the row index.  Default is true.  The attribute is ignored if forceId 
+        is false (or not specified)
+        -->
+        <attribute>
+            <name>forceIdIndex</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>
+                If false, this component will not append a '[n]' suffix (where 'n' is the row index) to components 
+                that are contained within a "list."  This value will be true by default and the value will be ignored if 
+                the value of forceId is false (or not specified.)
+            </description>
+        </attribute>        
+
+    </tag>
+
+    <!-- panelGrid -->
+    <tag>
+        <name>panelGrid</name>
+        <tag-class>org.apache.myfaces.taglib.html.ext.HtmlPanelGridTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            Extends standard panelGrid by user role support.
+        </description>
+                        <!-- UIPanel attributes -->
+        <!-- UIComponent attributes -->
+        <attribute>
+            <name>id</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+
+        <!-- HTML 4.0 universal attributes -->
+        <attribute><name>dir</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>lang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>style</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>title</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>styleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Corresponds to the HTML class attribute.</description>
+        </attribute>
+
+        <!-- HTML 4.0 event-handler attributes -->
+        <attribute><name>onclick</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>ondblclick</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousedown</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseup</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseover</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousemove</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseout</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeypress</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeydown</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeyup</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <!-- HTML 4.0 table attributes -->
+        <attribute><name>align</name>           <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>border</name>          <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>bgcolor</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>cellpadding</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>cellspacing</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>datafld</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>datasrc</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>dataformatas</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>frame</name>           <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>rules</name>           <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>summary</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>width</name>           <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <!-- GridRenderer attributes -->
+        <attribute>
+            <name>columnClasses</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>columns</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>footerClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>headerClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>rowClasses</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>enabledOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, no hyperlink is rendered but all nested
+                tags (=body) are rendered.
+            </description>
+        </attribute>
+        <attribute>
+            <name>visibleOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, nothing is rendered and the body of this tag
+                will be skipped.
+            </description>
+        </attribute>
+
+                <!-- 
+        This attribute indicates that the component should be forced to use the specified id instead of 
+        using the one that faces generates.  Components contained within a "list" will include a '[n]'  
+        suffix where 'n' is the row index (unless the forceIdIndex attribute is set to false).
+        -->
+        <attribute>
+            <name>forceId</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will force the use of the specified id when rendering.</description>
+        </attribute>        
+
+        <!-- 
+        If the component is contained within an "list" (such as dataTable), this attribute indicates whether or not a 
+        '[n]' suffix should be added where 'n' is the row index.  Default is true.  The attribute is ignored if forceId 
+        is false (or not specified)
+        -->
+        <attribute>
+            <name>forceIdIndex</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>
+                If false, this component will not append a '[n]' suffix (where 'n' is the row index) to components 
+                that are contained within a "list."  This value will be true by default and the value will be ignored if 
+                the value of forceId is false (or not specified.)
+            </description>
+        </attribute>        
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>displayValueOnly</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If true, renders only the value of the component, but no input widget.
+                Default is false.
+            </description>
+        </attribute>
+        <attribute>
+            <name>displayValueOnlyStyle</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Style used when displayValueOnly is true.
+            </description>
+        </attribute>
+        <attribute>
+            <name>displayValueOnlyStyleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Style class used when displayValueOnly is true.
+            </description>
+        </attribute>        
+    </tag>
+
+    <!-- panelGroup -->
+    <tag>
+        <name>panelGroup</name>
+        <tag-class>org.apache.myfaces.taglib.html.ext.HtmlPanelGroupTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            Extends standard panelGroup by user role support.
+        </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>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+
+        <!-- HTML 4.0 universal attributes -->
+        <attribute><name>dir</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>lang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>style</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>title</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>styleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Corresponds to the HTML class attribute.</description>
+        </attribute>
+
+        <!-- HTML 4.0 event-handler attributes -->
+        <attribute><name>onclick</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>ondblclick</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousedown</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseup</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseover</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousemove</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseout</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeypress</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeydown</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeyup</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>enabledOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, no hyperlink is rendered but all nested
+                tags (=body) are rendered.
+            </description>
+        </attribute>
+        <attribute>
+            <name>visibleOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, nothing is rendered and the body of this tag
+                will be skipped.
+            </description>
+        </attribute>
+
+                <!-- 
+        This attribute indicates that the component should be forced to use the specified id instead of 
+        using the one that faces generates.  Components contained within a "list" will include a '[n]'  
+        suffix where 'n' is the row index (unless the forceIdIndex attribute is set to false).
+        -->
+        <attribute>
+            <name>forceId</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will force the use of the specified id when rendering.</description>
+        </attribute>        
+
+        <!-- 
+        If the component is contained within an "list" (such as dataTable), this attribute indicates whether or not a 
+        '[n]' suffix should be added where 'n' is the row index.  Default is true.  The attribute is ignored if forceId 
+        is false (or not specified)
+        -->
+        <attribute>
+            <name>forceIdIndex</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>
+                If false, this component will not append a '[n]' suffix (where 'n' is the row index) to components 
+                that are contained within a "list."  This value will be true by default and the value will be ignored if 
+                the value of forceId is false (or not specified.)
+            </description>
+        </attribute>        
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>displayValueOnly</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If true, renders only the value of the component, but no input widget.
+                Default is false.
+            </description>
+        </attribute>
+        <attribute>
+            <name>displayValueOnlyStyle</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Style used when displayValueOnly is true.
+            </description>
+        </attribute>
+        <attribute>
+            <name>displayValueOnlyStyleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Style class used when displayValueOnly is true.
+            </description>
+        </attribute>        
+    </tag>
+
+    <!-- selectOneMenu -->
+    <tag>
+        <name>selectOneMenu</name>
+        <tag-class>org.apache.myfaces.taglib.html.ext.HtmlSelectOneMenuTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            Extends standard selectOneMenu by user role support.
+        </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>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Initial value to set when rendered for the first time.</description>
+        </attribute>
+        <attribute>
+            <name>converter</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Id of Converter to be used or reference to a Converter.</description>
+        </attribute>
+
+        <attribute>
+            <name>immediate</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description> Flag indicating that this component's value must be converted and validated immediately (that is, during Apply Request Values phase), rather than waiting until Process Validations phase.</description>
+        </attribute>
+        <attribute>
+            <name>required</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will be checked for non-empty input.</description>
+        </attribute>
+        <attribute>
+            <name>validator</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>MethodBinding pointing at a method that will be called during Process Validations phase of the request processing lifecycle, to validate the current value of this component.</description>
+        </attribute>
+        <attribute>
+            <name>valueChangeListener</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Listener for value changes.</description>
+        </attribute>
+
+
+        <!-- HTML 4.0 universal attributes -->
+        <attribute><name>dir</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>lang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>style</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>title</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>styleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Corresponds to the HTML class attribute.</description>
+        </attribute>
+
+        <!-- HTML 4.0 event-handler attributes -->
+        <attribute><name>onclick</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>ondblclick</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousedown</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseup</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseover</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousemove</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseout</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeypress</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeydown</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeyup</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <!-- HTML 4.0 select attributes -->
+        <attribute><name>datafld</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>datasrc</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>dataformatas</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>disabled</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <!-- "multiple" cannot be set manually -->
+        <!-- "name" cannot be set manually -->
+        <attribute><name>onblur</name>      <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onchange</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onfocus</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <!-- "size" cannot be set directly for it is a MenuRenderer specific attribute -->
+        <attribute><name>tabindex</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>readonly</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Flag indicating that this component will prohibit
+          changes by the user.  The element may receive focus
+          unless it has also been disabled.</description>
+        </attribute>
+        <attribute><name>enabledClass</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+         <attribute><name>disabledClass</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>enabledOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, no hyperlink is rendered but all nested
+                tags (=body) are rendered.
+            </description>
+        </attribute>
+        <attribute>
+            <name>visibleOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, nothing is rendered and the body of this tag
+                will be skipped.
+            </description>
+        </attribute>
+
+                <!-- 
+        This attribute indicates that the component should be forced to use the specified id instead of 
+        using the one that faces generates.  Components contained within a "list" will include a '[n]'  
+        suffix where 'n' is the row index (unless the forceIdIndex attribute is set to false).
+        -->
+        <attribute>
+            <name>forceId</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will force the use of the specified id when rendering.</description>
+        </attribute>        
+
+        <!-- 
+        If the component is contained within an "list" (such as dataTable), this attribute indicates whether or not a 
+        '[n]' suffix should be added where 'n' is the row index.  Default is true.  The attribute is ignored if forceId 
+        is false (or not specified)
+        -->
+        <attribute>
+            <name>forceIdIndex</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>
+                If false, this component will not append a '[n]' suffix (where 'n' is the row index) to components 
+                that are contained within a "list."  This value will be true by default and the value will be ignored if 
+                the value of forceId is false (or not specified.)
+            </description>
+        </attribute>        
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>displayValueOnly</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If true, renders only the value of the component, but no input widget.
+                Default is false.
+            </description>
+        </attribute>
+        <attribute>
+            <name>displayValueOnlyStyle</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Style used when displayValueOnly is true.
+            </description>
+        </attribute>
+        <attribute>
+            <name>displayValueOnlyStyleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Style class used when displayValueOnly is true.
+            </description>
+        </attribute>        
+    </tag>
+
+    <!-- selectManyMenu -->
+    <tag>
+        <name>selectManyMenu</name>
+        <tag-class>org.apache.myfaces.taglib.html.ext.HtmlSelectManyMenuTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            Extends standard selectManyMenu by user role support.
+        </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>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Initial value to set when rendered for the first time.</description>
+        </attribute>
+        <attribute>
+            <name>converter</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Id of Converter to be used or reference to a Converter.</description>
+        </attribute>
+
+        <attribute>
+            <name>immediate</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description> Flag indicating that this component's value must be converted and validated immediately (that is, during Apply Request Values phase), rather than waiting until Process Validations phase.</description>
+        </attribute>
+        <attribute>
+            <name>required</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will be checked for non-empty input.</description>
+        </attribute>
+        <attribute>
+            <name>validator</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>MethodBinding pointing at a method that will be called during Process Validations phase of the request processing lifecycle, to validate the current value of this component.</description>
+        </attribute>
+        <attribute>
+            <name>valueChangeListener</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Listener for value changes.</description>
+        </attribute>
+
+
+        <!-- HTML 4.0 universal attributes -->
+        <attribute><name>dir</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>lang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>style</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>title</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>styleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Corresponds to the HTML class attribute.</description>
+        </attribute>
+
+        <!-- HTML 4.0 event-handler attributes -->
+        <attribute><name>onclick</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>ondblclick</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousedown</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseup</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseover</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousemove</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseout</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeypress</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeydown</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeyup</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <!-- HTML 4.0 select attributes -->
+        <attribute><name>datafld</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>datasrc</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>dataformatas</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>disabled</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <!-- "multiple" cannot be set manually -->
+        <!-- "name" cannot be set manually -->
+        <attribute><name>onblur</name>      <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onchange</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onfocus</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <!-- "size" cannot be set directly for it is a MenuRenderer specific attribute -->
+        <attribute><name>tabindex</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>readonly</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Flag indicating that this component will prohibit
+          changes by the user.  The element may receive focus
+          unless it has also been disabled.</description>
+        </attribute>
+        <attribute><name>enabledClass</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+         <attribute><name>disabledClass</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>enabledOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, no hyperlink is rendered but all nested
+                tags (=body) are rendered.
+            </description>
+        </attribute>
+        <attribute>
+            <name>visibleOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, nothing is rendered and the body of this tag
+                will be skipped.
+            </description>
+        </attribute>
+
+                <!-- 
+        This attribute indicates that the component should be forced to use the specified id instead of 
+        using the one that faces generates.  Components contained within a "list" will include a '[n]'  
+        suffix where 'n' is the row index (unless the forceIdIndex attribute is set to false).
+        -->
+        <attribute>
+            <name>forceId</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will force the use of the specified id when rendering.</description>
+        </attribute>        
+
+        <!-- 
+        If the component is contained within an "list" (such as dataTable), this attribute indicates whether or not a 
+        '[n]' suffix should be added where 'n' is the row index.  Default is true.  The attribute is ignored if forceId 
+        is false (or not specified)
+        -->
+        <attribute>
+            <name>forceIdIndex</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>
+                If false, this component will not append a '[n]' suffix (where 'n' is the row index) to components 
+                that are contained within a "list."  This value will be true by default and the value will be ignored if 
+                the value of forceId is false (or not specified.)
+            </description>
+        </attribute>        
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>displayValueOnly</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If true, renders only the value of the component, but no input widget.
+                Default is false.
+            </description>
+        </attribute>
+        <attribute>
+            <name>displayValueOnlyStyle</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Style used when displayValueOnly is true.
+            </description>
+        </attribute>
+        <attribute>
+            <name>displayValueOnlyStyleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Style class used when displayValueOnly is true.
+            </description>
+        </attribute>        
+    </tag>
+
+    <!-- selectOneRadio -->
+    <tag>
+        <name>selectOneRadio</name>
+        <tag-class>org.apache.myfaces.taglib.html.ext.HtmlSelectOneRadioTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            Extends standard selectOneRadio by user role support.
+            Additionally this extended selectOneRadio accepts a layout attribute
+            of value "spread" (see custom radio tag).
+        </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>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Initial value to set when rendered for the first time.</description>
+        </attribute>
+        <attribute>
+            <name>converter</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Id of Converter to be used or reference to a Converter.</description>
+        </attribute>
+
+        <attribute>
+            <name>immediate</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description> Flag indicating that this component's value must be converted and validated immediately (that is, during Apply Request Values phase), rather than waiting until Process Validations phase.</description>
+        </attribute>
+        <attribute>
+            <name>required</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will be checked for non-empty input.</description>
+        </attribute>
+        <attribute>
+            <name>validator</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>MethodBinding pointing at a method that will be called during Process Validations phase of the request processing lifecycle, to validate the current value of this component.</description>
+        </attribute>
+        <attribute>
+            <name>valueChangeListener</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Listener for value changes.</description>
+        </attribute>
+
+
+        <!-- HTML 4.0 universal attributes -->
+        <attribute><name>dir</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>lang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>style</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>title</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>styleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Corresponds to the HTML class attribute.</description>
+        </attribute>
+
+        <!-- HTML 4.0 event-handler attributes -->
+        <attribute><name>onclick</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>ondblclick</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousedown</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseup</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseover</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousemove</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseout</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeypress</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeydown</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeyup</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <!-- HTML 4.0 input attributes for type "radio" -->
+        <attribute><name>accesskey</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>alt</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>datafld</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>datasrc</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>dataformatas</name><required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>disabled</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>onblur</name>      <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>onchange</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>onfocus</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>onselect</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>readonly</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>tabindex</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+
+        <!-- RadioRenderer attributes -->
+        <attribute>
+            <name>layout</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>see JSF Spec. 8.5.10</description>
+        </attribute>
+        <attribute>
+            <name>border</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>see JSF Spec. 8.5.10</description>
+        </attribute>
+        <attribute><name>enabledClass</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+         <attribute><name>disabledClass</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>enabledOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, no hyperlink is rendered but all nested
+                tags (=body) are rendered.
+            </description>
+        </attribute>
+        <attribute>
+            <name>visibleOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, nothing is rendered and the body of this tag
+                will be skipped.
+            </description>
+        </attribute>
+
+                <!-- 
+        This attribute indicates that the component should be forced to use the specified id instead of 
+        using the one that faces generates.  Components contained within a "list" will include a '[n]'  
+        suffix where 'n' is the row index (unless the forceIdIndex attribute is set to false).
+        -->
+        <attribute>
+            <name>forceId</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will force the use of the specified id when rendering.</description>
+        </attribute>        
+
+        <!-- 
+        If the component is contained within an "list" (such as dataTable), this attribute indicates whether or not a 
+        '[n]' suffix should be added where 'n' is the row index.  Default is true.  The attribute is ignored if forceId 
+        is false (or not specified)
+        -->
+        <attribute>
+            <name>forceIdIndex</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>
+                If false, this component will not append a '[n]' suffix (where 'n' is the row index) to components 
+                that are contained within a "list."  This value will be true by default and the value will be ignored if 
+                the value of forceId is false (or not specified.)
+            </description>
+        </attribute>        
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>displayValueOnly</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If true, renders only the value of the component, but no input widget.
+                Default is false.
+            </description>
+        </attribute>
+        <attribute>
+            <name>displayValueOnlyStyle</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Style used when displayValueOnly is true.
+            </description>
+        </attribute>
+        <attribute>
+            <name>displayValueOnlyStyleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Style class used when displayValueOnly is true.
+            </description>
+        </attribute>        
+    </tag>
+
+    <!-- selectBooleanCheckbox -->
+    <tag>
+        <name>selectBooleanCheckbox</name>
+        <tag-class>org.apache.myfaces.taglib.html.ext.HtmlSelectBooleanCheckboxTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            Extends standard selectBooleanCheckbox by user role support.
+        </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>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Initial value to set when rendered for the first time.</description>
+        </attribute>
+        <attribute>
+            <name>converter</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Id of Converter to be used or reference to a Converter.</description>
+        </attribute>
+
+        <attribute>
+            <name>immediate</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description> Flag indicating that this component's value must be converted and validated immediately (that is, during Apply Request Values phase), rather than waiting until Process Validations phase.</description>
+        </attribute>
+        <attribute>
+            <name>required</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will be checked for non-empty input.</description>
+        </attribute>
+        <attribute>
+            <name>validator</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>MethodBinding pointing at a method that will be called during Process Validations phase of the request processing lifecycle, to validate the current value of this component.</description>
+        </attribute>
+        <attribute>
+            <name>valueChangeListener</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Listener for value changes.</description>
+        </attribute>
+
+
+        <!-- HTML 4.0 universal attributes -->
+        <attribute><name>dir</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>lang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>style</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>title</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>styleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Corresponds to the HTML class attribute.</description>
+        </attribute>
+
+        <!-- HTML 4.0 event-handler attributes -->
+        <attribute><name>onclick</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>ondblclick</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousedown</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseup</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseover</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousemove</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseout</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeypress</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeydown</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeyup</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <!-- HTML 4.0 input attributes for type "checkbox" -->
+        <attribute><name>accesskey</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>alt</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>datafld</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>datasrc</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>dataformatas</name><required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>disabled</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>onblur</name>      <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>onchange</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>onfocus</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>onselect</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>readonly</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>tabindex</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>enabledOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, no hyperlink is rendered but all nested
+                tags (=body) are rendered.
+            </description>
+        </attribute>
+        <attribute>
+            <name>visibleOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, nothing is rendered and the body of this tag
+                will be skipped.
+            </description>
+        </attribute>
+
+                <!-- 
+        This attribute indicates that the component should be forced to use the specified id instead of 
+        using the one that faces generates.  Components contained within a "list" will include a '[n]'  
+        suffix where 'n' is the row index (unless the forceIdIndex attribute is set to false).
+        -->
+        <attribute>
+            <name>forceId</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will force the use of the specified id when rendering.</description>
+        </attribute>        
+
+        <!-- 
+        If the component is contained within an "list" (such as dataTable), this attribute indicates whether or not a 
+        '[n]' suffix should be added where 'n' is the row index.  Default is true.  The attribute is ignored if forceId 
+        is false (or not specified)
+        -->
+        <attribute>
+            <name>forceIdIndex</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>
+                If false, this component will not append a '[n]' suffix (where 'n' is the row index) to components 
+                that are contained within a "list."  This value will be true by default and the value will be ignored if 
+                the value of forceId is false (or not specified.)
+            </description>
+        </attribute>        
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>displayValueOnly</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If true, renders only the value of the component, but no input widget.
+                Default is false.
+            </description>
+        </attribute>
+        <attribute>
+            <name>displayValueOnlyStyle</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Style used when displayValueOnly is true.
+            </description>
+        </attribute>
+        <attribute>
+            <name>displayValueOnlyStyleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Style class used when displayValueOnly is true.
+            </description>
+        </attribute>        
+    </tag>
+
+    <!-- selectManyCheckbox -->
+    <tag>
+        <name>selectManyCheckbox</name>
+        <tag-class>org.apache.myfaces.taglib.html.ext.HtmlSelectManyCheckboxTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            Extends standard selectManyCheckbox by user role support.
+            Additionally this extended selectManyCheckbox accepts a layout attribute
+            of value "spread" (see custom checkbox tag).
+        </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>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Initial value to set when rendered for the first time.</description>
+        </attribute>
+        <attribute>
+            <name>converter</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Id of Converter to be used or reference to a Converter.</description>
+        </attribute>
+
+        <attribute>
+            <name>immediate</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description> Flag indicating that this component's value must be converted and validated immediately (that is, during Apply Request Values phase), rather than waiting until Process Validations phase.</description>
+        </attribute>
+        <attribute>
+            <name>required</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will be checked for non-empty input.</description>
+        </attribute>
+        <attribute>
+            <name>validator</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>MethodBinding pointing at a method that will be called during Process Validations phase of the request processing lifecycle, to validate the current value of this component.</description>
+        </attribute>
+        <attribute>
+            <name>valueChangeListener</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Listener for value changes.</description>
+        </attribute>
+
+
+        <!-- HTML 4.0 universal attributes -->
+        <attribute><name>dir</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>lang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>style</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>title</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>styleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Corresponds to the HTML class attribute.</description>
+        </attribute>
+
+        <!-- HTML 4.0 event-handler attributes -->
+        <attribute><name>onclick</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>ondblclick</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousedown</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseup</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseover</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousemove</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseout</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeypress</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeydown</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeyup</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <!-- HTML 4.0 input attributes for type "checkbox" -->
+        <attribute><name>accesskey</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>alt</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>datafld</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>datasrc</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>dataformatas</name><required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>disabled</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>onblur</name>      <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>onchange</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>onfocus</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>onselect</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>readonly</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>tabindex</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+
+        <!-- CheckboxListRenderer attributes -->
+        <attribute>
+            <name>layout</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>see JSF Spec. 8.5.9</description>
+        </attribute>
+        <!--TODO: disabledClass, enabledClass -->
+        <attribute><name>enabledClass</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+         <attribute><name>disabledClass</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <attribute>
+            <name>layoutWidth</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                A number representing the amount of checkbox rows if
+                the layout is lineDirection and checkbox columns if
+                the layout is pageDirection.
+            </description>
+        </attribute>
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>enabledOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, no hyperlink is rendered but all nested
+                tags (=body) are rendered.
+            </description>
+        </attribute>
+        <attribute>
+            <name>visibleOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, nothing is rendered and the body of this tag
+                will be skipped.
+            </description>
+        </attribute>
+
+                <!-- 
+        This attribute indicates that the component should be forced to use the specified id instead of 
+        using the one that faces generates.  Components contained within a "list" will include a '[n]'  
+        suffix where 'n' is the row index (unless the forceIdIndex attribute is set to false).
+        -->
+        <attribute>
+            <name>forceId</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will force the use of the specified id when rendering.</description>
+        </attribute>        
+
+        <!-- 
+        If the component is contained within an "list" (such as dataTable), this attribute indicates whether or not a 
+        '[n]' suffix should be added where 'n' is the row index.  Default is true.  The attribute is ignored if forceId 
+        is false (or not specified)
+        -->
+        <attribute>
+            <name>forceIdIndex</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>
+                If false, this component will not append a '[n]' suffix (where 'n' is the row index) to components 
+                that are contained within a "list."  This value will be true by default and the value will be ignored if 
+                the value of forceId is false (or not specified.)
+            </description>
+        </attribute>        
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>displayValueOnly</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If true, renders only the value of the component, but no input widget.
+                Default is false.
+            </description>
+        </attribute>
+        <attribute>
+            <name>displayValueOnlyStyle</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Style used when displayValueOnly is true.
+            </description>
+        </attribute>
+        <attribute>
+            <name>displayValueOnlyStyleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Style class used when displayValueOnly is true.
+            </description>
+        </attribute>        
+    </tag>
+
+    <!-- selectOneListbox -->
+    <tag>
+        <name>selectOneListbox</name>
+        <tag-class>org.apache.myfaces.taglib.html.ext.HtmlSelectOneListboxTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            Extends standard selectOneListbox by user role support.
+        </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>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Initial value to set when rendered for the first time.</description>
+        </attribute>
+        <attribute>
+            <name>converter</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Id of Converter to be used or reference to a Converter.</description>
+        </attribute>
+
+        <attribute>
+            <name>immediate</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description> Flag indicating that this component's value must be converted and validated immediately (that is, during Apply Request Values phase), rather than waiting until Process Validations phase.</description>
+        </attribute>
+        <attribute>
+            <name>required</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will be checked for non-empty input.</description>
+        </attribute>
+        <attribute>
+            <name>validator</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>MethodBinding pointing at a method that will be called during Process Validations phase of the request processing lifecycle, to validate the current value of this component.</description>
+        </attribute>
+        <attribute>
+            <name>valueChangeListener</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Listener for value changes.</description>
+        </attribute>
+
+
+        <!-- HTML 4.0 universal attributes -->
+        <attribute><name>dir</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>lang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>style</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>title</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>styleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Corresponds to the HTML class attribute.</description>
+        </attribute>
+
+        <!-- HTML 4.0 event-handler attributes -->
+        <attribute><name>onclick</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>ondblclick</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousedown</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseup</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseover</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousemove</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseout</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeypress</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeydown</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeyup</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <!-- HTML 4.0 select attributes -->
+        <attribute><name>datafld</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>datasrc</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>dataformatas</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>disabled</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <!-- "multiple" cannot be set manually -->
+        <!-- "name" cannot be set manually -->
+        <attribute><name>onblur</name>      <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onchange</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onfocus</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <!-- "size" cannot be set directly for it is a MenuRenderer specific attribute -->
+        <attribute><name>tabindex</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>readonly</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Flag indicating that this component will prohibit
+          changes by the user.  The element may receive focus
+          unless it has also been disabled.</description>
+        </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>
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>enabledOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, no hyperlink is rendered but all nested
+                tags (=body) are rendered.
+            </description>
+        </attribute>
+        <attribute>
+            <name>visibleOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, nothing is rendered and the body of this tag
+                will be skipped.
+            </description>
+        </attribute>
+
+                <!-- 
+        This attribute indicates that the component should be forced to use the specified id instead of 
+        using the one that faces generates.  Components contained within a "list" will include a '[n]'  
+        suffix where 'n' is the row index (unless the forceIdIndex attribute is set to false).
+        -->
+        <attribute>
+            <name>forceId</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will force the use of the specified id when rendering.</description>
+        </attribute>        
+
+        <!-- 
+        If the component is contained within an "list" (such as dataTable), this attribute indicates whether or not a 
+        '[n]' suffix should be added where 'n' is the row index.  Default is true.  The attribute is ignored if forceId 
+        is false (or not specified)
+        -->
+        <attribute>
+            <name>forceIdIndex</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>
+                If false, this component will not append a '[n]' suffix (where 'n' is the row index) to components 
+                that are contained within a "list."  This value will be true by default and the value will be ignored if 
+                the value of forceId is false (or not specified.)
+            </description>
+        </attribute>        
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>displayValueOnly</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If true, renders only the value of the component, but no input widget.
+                Default is false.
+            </description>
+        </attribute>
+        <attribute>
+            <name>displayValueOnlyStyle</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Style used when displayValueOnly is true.
+            </description>
+        </attribute>
+        <attribute>
+            <name>displayValueOnlyStyleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Style class used when displayValueOnly is true.
+            </description>
+        </attribute>        
+    </tag>
+
+    <!-- selectManyListbox -->
+    <tag>
+        <name>selectManyListbox</name>
+        <tag-class>org.apache.myfaces.taglib.html.ext.HtmlSelectManyListboxTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            Extends standard selectManyListbox by user role support.
+        </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>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Initial value to set when rendered for the first time.</description>
+        </attribute>
+        <attribute>
+            <name>converter</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Id of Converter to be used or reference to a Converter.</description>
+        </attribute>
+
+        <attribute>
+            <name>immediate</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description> Flag indicating that this component's value must be converted and validated immediately (that is, during Apply Request Values phase), rather than waiting until Process Validations phase.</description>
+        </attribute>
+        <attribute>
+            <name>required</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will be checked for non-empty input.</description>
+        </attribute>
+        <attribute>
+            <name>validator</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>MethodBinding pointing at a method that will be called during Process Validations phase of the request processing lifecycle, to validate the current value of this component.</description>
+        </attribute>
+        <attribute>
+            <name>valueChangeListener</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Listener for value changes.</description>
+        </attribute>
+
+
+        <!-- HTML 4.0 universal attributes -->
+        <attribute><name>dir</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>lang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>style</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>title</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>styleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Corresponds to the HTML class attribute.</description>
+        </attribute>
+
+        <!-- HTML 4.0 event-handler attributes -->
+        <attribute><name>onclick</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>ondblclick</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousedown</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseup</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseover</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousemove</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseout</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeypress</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeydown</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeyup</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <!-- HTML 4.0 select attributes -->
+        <attribute><name>datafld</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>datasrc</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>dataformatas</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>disabled</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <!-- "multiple" cannot be set manually -->
+        <!-- "name" cannot be set manually -->
+        <attribute><name>onblur</name>      <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onchange</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onfocus</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <!-- "size" cannot be set directly for it is a MenuRenderer specific attribute -->
+        <attribute><name>tabindex</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>readonly</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Flag indicating that this component will prohibit
+          changes by the user.  The element may receive focus
+          unless it has also been disabled.</description>
+        </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>
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>enabledOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, no hyperlink is rendered but all nested
+                tags (=body) are rendered.
+            </description>
+        </attribute>
+        <attribute>
+            <name>visibleOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, nothing is rendered and the body of this tag
+                will be skipped.
+            </description>
+        </attribute>
+
+                <!-- 
+        This attribute indicates that the component should be forced to use the specified id instead of 
+        using the one that faces generates.  Components contained within a "list" will include a '[n]'  
+        suffix where 'n' is the row index (unless the forceIdIndex attribute is set to false).
+        -->
+        <attribute>
+            <name>forceId</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will force the use of the specified id when rendering.</description>
+        </attribute>        
+
+        <!-- 
+        If the component is contained within an "list" (such as dataTable), this attribute indicates whether or not a 
+        '[n]' suffix should be added where 'n' is the row index.  Default is true.  The attribute is ignored if forceId 
+        is false (or not specified)
+        -->
+        <attribute>
+            <name>forceIdIndex</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>
+                If false, this component will not append a '[n]' suffix (where 'n' is the row index) to components 
+                that are contained within a "list."  This value will be true by default and the value will be ignored if 
+                the value of forceId is false (or not specified.)
+            </description>
+        </attribute>        
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>displayValueOnly</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If true, renders only the value of the component, but no input widget.
+                Default is false.
+            </description>
+        </attribute>
+        <attribute>
+            <name>displayValueOnlyStyle</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Style used when displayValueOnly is true.
+            </description>
+        </attribute>
+        <attribute>
+            <name>displayValueOnlyStyleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Style class used when displayValueOnly is true.
+            </description>
+        </attribute>        
+    </tag>
+
+<!--     Custom components     -->
+
+    <!-- calendar -->
+    <tag>
+        <name>inputCalendar</name>
+        <tag-class>org.apache.myfaces.custom.calendar.HtmlInputCalendarTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            Provides a calendar.
+        </description>
+                <!-- UIInput attributes -->
+                <!-- UIOutput attributes -->
+        <!-- UIComponent attributes -->
+        <attribute>
+            <name>id</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Initial value to set when rendered for the first time.</description>
+        </attribute>
+        <attribute>
+            <name>converter</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Id of Converter to be used or reference to a Converter.</description>
+        </attribute>
+
+        <attribute>
+            <name>immediate</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description> Flag indicating that this component's value must be converted and validated immediately (that is, during Apply Request Values phase), rather than waiting until Process Validations phase.</description>
+        </attribute>
+        <attribute>
+            <name>required</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will be checked for non-empty input.</description>
+        </attribute>
+        <attribute>
+            <name>validator</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>MethodBinding pointing at a method that will be called during Process Validations phase of the request processing lifecycle, to validate the current value of this component.</description>
+        </attribute>
+        <attribute>
+            <name>valueChangeListener</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Listener for value changes.</description>
+        </attribute>
+
+        <!-- HTML 4.0 event-handler attributes -->
+        <attribute><name>onclick</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>ondblclick</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousedown</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseup</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseover</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousemove</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseout</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeypress</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeydown</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeyup</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <!-- HTML 4.0 universal attributes -->
+        <attribute><name>dir</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>lang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>style</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>title</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>styleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Corresponds to the HTML class attribute.</description>
+        </attribute>
+
+        <!-- HTML 4.0 input attributes -->
+        <attribute><name>accesskey</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>align</name>       <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>alt</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>disabled</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>maxlength</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>onblur</name>      <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>onchange</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>onfocus</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>onselect</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>readonly</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>size</name>        <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>tabindex</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>enabledOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, no hyperlink is rendered but all nested
+                tags (=body) are rendered.
+            </description>
+        </attribute>
+        <attribute>
+            <name>visibleOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, nothing is rendered and the body of this tag
+                will be skipped.
+            </description>
+        </attribute>
+
+                <!-- 
+        This attribute indicates that the component should be forced to use the specified id instead of 
+        using the one that faces generates.  Components contained within a "list" will include a '[n]'  
+        suffix where 'n' is the row index (unless the forceIdIndex attribute is set to false).
+        -->
+        <attribute>
+            <name>forceId</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will force the use of the specified id when rendering.</description>
+        </attribute>        
+
+        <!-- 
+        If the component is contained within an "list" (such as dataTable), this attribute indicates whether or not a 
+        '[n]' suffix should be added where 'n' is the row index.  Default is true.  The attribute is ignored if forceId 
+        is false (or not specified)
+        -->
+        <attribute>
+            <name>forceIdIndex</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>
+                If false, this component will not append a '[n]' suffix (where 'n' is the row index) to components 
+                that are contained within a "list."  This value will be true by default and the value will be ignored if 
+                the value of forceId is false (or not specified.)
+            </description>
+        </attribute>        
+
+        <attribute>
+            <name>monthYearRowClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>CSS class to be used for the header-row showing month and year.</description>
+        </attribute>
+        <attribute>
+            <name>weekRowClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>CSS class to be used for the header-row showing the week-days.</description>
+        </attribute>
+        <attribute>
+            <name>dayCellClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>CSS class to be used for the cells showing days.</description>
+        </attribute>
+        <attribute>
+            <name>currentDayCellClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>CSS class to be used for the cell of the currently selected date.</description>
+        </attribute>
+        <attribute>
+            <name>renderAsPopup</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Render the input-calendar as a java-script popup on client.</description>
+        </attribute>
+        <attribute>
+            <name>addResources</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Automatically add the input-calendar scripts and css files to the header - set that to false to provide the scripts yourself.</description>
+        </attribute>
+        <attribute>
+            <name>popupDateFormat</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Defines the date format used by the java-script popup on client.</description>
+        </attribute>
+        <attribute>
+            <name>popupButtonString</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Defines the string displayed on the button which leads to the calendar-popup-window (... by default).</description>
+        </attribute>
+        <attribute>
+            <name>popupGotoString</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Set the string for "Go To Current Month"</description>
+        </attribute>
+        <attribute>
+            <name>popupTodayString</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Set the string for "Today is"</description>
+        </attribute>
+        <attribute>
+            <name>popupWeekString</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Set the string for "Wk"</description>
+        </attribute>
+        <attribute>
+            <name>popupScrollLeftMessage</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Set the string for scrolling to the left.</description>
+        </attribute>
+        <attribute>
+            <name>popupScrollRightMessage</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Set the string for scrolling to the right.</description>
+        </attribute>
+        <attribute>
+            <name>popupSelectMonthMessage</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Set the string for "Click to select a month".</description>
+        </attribute>
+        <attribute>
+            <name>popupSelectYearMessage</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Set the string for "Click to select a year".</description>
+        </attribute>
+        <attribute>
+            <name>popupSelectDateMessage</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Set the string for "Select [date] as date" (do not replace [date], it will be replaced by the current date).</description>
+		</attribute>
+        <attribute>
+            <name>renderPopupButtonAsImage</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>If true, renders a calendar icon instead of the button to pop up the calendar.</description>
+        </attribute>
+    </tag>
+
+    <!-- jsValueChangeListener -->
+    <tag>
+        <name>jsValueChangeListener</name>
+        <tag-class>org.apache.myfaces.custom.jslistener.JsValueChangeListenerTag</tag-class>
+        <body-content>empty</body-content>
+        <description>Value change listener on client side.</description>
+        <attribute>
+          <name>for</name>
+          <required>false</required>
+          <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+          <name>property</name>
+          <required>false</required>
+          <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+          <name>expressionValue</name>
+          <required>true</required>
+          <rtexprvalue>false</rtexprvalue>
+        </attribute>
+    </tag>
+
+    <!-- jsValueSet -->
+    <tag>
+        <name>jsValueSet</name>
+        <tag-class>org.apache.myfaces.custom.jsvalueset.HtmlJsValueSetTag</tag-class>
+        <body-content>empty</body-content>
+        <description>Setting a value from the model in java-script so that it can be used (e.g. by the value change listener) afterwards.</description>
+        <attribute>
+          <name>name</name>
+          <required>true</required>
+          <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+          <name>value</name>
+          <required>true</required>
+          <rtexprvalue>false</rtexprvalue>
+        </attribute>
+    </tag>
+
+    <!-- checkbox -->
+    <tag>
+        <name>checkbox</name>
+        <tag-class>org.apache.myfaces.custom.checkbox.HtmlCheckboxTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            Renders a HTML input of type "checkbox". The associated SelectItem comes from
+            an extended selectManyCheckbox component with layout "spread". The selectManyCheckbox
+            is referenced by the "for" attribute.
+            All HTML pass-through attributes for this input are taken from the associated
+            selectManyCheckbox.
+        </description>
+        <!-- UIComponent attributes -->
+        <attribute>
+            <name>id</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>enabledOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, no hyperlink is rendered but all nested
+                tags (=body) are rendered.
+            </description>
+        </attribute>
+        <attribute>
+            <name>visibleOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, nothing is rendered and the body of this tag
+                will be skipped.
+            </description>
+        </attribute>
+
+        <!-- HtmlCheckbox attributes -->
+        <attribute>
+            <name>for</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                id of the referenced extended selectManyCheckbox component
+            </description>
+        </attribute>
+        <attribute>
+            <name>index</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                n-th SelectItem of referenced UISelectMany starting with 0.
+            </description>
+        </attribute>
+    </tag>
+
+    <!-- commandNavigation2 -->
+    <tag>
+        <name>commandNavigation2</name>
+        <tag-class>org.apache.myfaces.custom.navmenu.htmlnavmenu.HtmlCommandNavigationItemTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            Must be nested inside a panel_navigation action and renders a
+            clickable navigation item.
+            This action is derived from the standard command_link action and
+            has equal attributes.
+            (Replaces former "navigation_item" tag.)
+        </description>
+        <!--TODO: make id attribute mandatory -->
+                <!-- UICommand attributes -->
+        <!-- UIComponent attributes -->
+        <attribute>
+            <name>id</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+        <attribute>
+            <name>action</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>MethodBinding pointing at the application action to be invoked, if this UIComponent is activated by the user, during the Apply Request Values or Invoke Application phase of the request processing lifecycle, depending on the value of the immediate property.</description>
+        </attribute>
+        <attribute>
+            <name>actionListener</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>MethodBinding pointing at method acception an ActionEvent with return type void.</description>
+        </attribute>
+        <attribute>
+            <name>immediate</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>True means, that the default ActionListener should be executed immediately (i.e. during Apply Request Values phase of the request processing lifecycle), rather than waiting until the Invoke Application phase.</description>
+        </attribute>
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Initial value to set when rendered for the first time.</description>
+        </attribute>
+
+        <!-- HTML 4.0 universal attributes -->
+        <attribute><name>dir</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>lang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>style</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>title</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>styleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Corresponds to the HTML class attribute.</description>
+        </attribute>
+
+        <!-- HTML 4.0 event-handler attributes -->
+        <attribute><name>onclick</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>ondblclick</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousedown</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseup</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseover</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousemove</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseout</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeypress</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeydown</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeyup</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <!-- HTML 4.0 anchor (=a) attributes -->
+        <attribute><name>accesskey</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>charset</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>coords</name>      <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <!-- "href" is a special LinkRenderer attribute -->
+        <attribute><name>hreflang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <!-- "name" cannot be set by user -->
+        <attribute><name>rel</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>rev</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>shape</name>       <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>tabindex</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>type</name>        <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <!--todo: is in JSF API of HtmlCommandLink and HtmlOutputLink, but there is no corresponding tag in HTML 4.0.. What to do?-->
+        <attribute>
+            <name>onblur</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <!--todo: is in JSF API of HtmlCommandLink and HtmlOutputLink, but there is no corresponding tag in HTML 4.0.. What to do?-->
+        <attribute>
+            <name>onfocus</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>target</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>enabledOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, no hyperlink is rendered but all nested
+                tags (=body) are rendered.
+            </description>
+        </attribute>
+        <attribute>
+            <name>visibleOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, nothing is rendered and the body of this tag
+                will be skipped.
+            </description>
+        </attribute>
+
+        <!-- HtmlCommandLink attributes -->
+        <!--TODO: is in JSF API, but there is no corresponding tag in HTML 4.0.. What to do?-->
+        <attribute>
+            <name>onblur</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <!--TODO: is in JSF API, but there is no corresponding tag in HTML 4.0.. What to do?-->
+        <attribute>
+            <name>onfocus</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <!-- TODO attributes image, label - old todo.. still necessary?-->
+    </tag>
+
+    <!-- commandNavigation -->
+    <tag>
+        <name>commandNavigation</name>
+        <tag-class>org.apache.myfaces.custom.navigation.HtmlCommandNavigationTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            Must be nested inside a panel_navigation action and renders a
+            clickable navigation item.
+            This action is derived from the standard command_link action and
+            has equal attributes.
+            (Replaces former "navigation_item" tag.)
+        </description>
+        <!--TODO: make id attribute mandatory -->
+                <!-- UICommand attributes -->
+        <!-- UIComponent attributes -->
+        <attribute>
+            <name>id</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+        <attribute>
+            <name>action</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>MethodBinding pointing at the application action to be invoked, if this UIComponent is activated by the user, during the Apply Request Values or Invoke Application phase of the request processing lifecycle, depending on the value of the immediate property.</description>
+        </attribute>
+        <attribute>
+            <name>actionListener</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>MethodBinding pointing at method acception an ActionEvent with return type void.</description>
+        </attribute>
+        <attribute>
+            <name>immediate</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>True means, that the default ActionListener should be executed immediately (i.e. during Apply Request Values phase of the request processing lifecycle), rather than waiting until the Invoke Application phase.</description>
+        </attribute>
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Initial value to set when rendered for the first time.</description>
+        </attribute>
+
+        <!-- HTML 4.0 universal attributes -->
+        <attribute><name>dir</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>lang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>style</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>title</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>styleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Corresponds to the HTML class attribute.</description>
+        </attribute>
+
+        <!-- HTML 4.0 event-handler attributes -->
+        <attribute><name>onclick</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>ondblclick</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousedown</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseup</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseover</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousemove</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseout</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeypress</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeydown</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeyup</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <!-- HTML 4.0 anchor (=a) attributes -->
+        <attribute><name>accesskey</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>charset</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>coords</name>      <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <!-- "href" is a special LinkRenderer attribute -->
+        <attribute><name>hreflang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <!-- "name" cannot be set by user -->
+        <attribute><name>rel</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>rev</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>shape</name>       <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>tabindex</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>type</name>        <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <!--todo: is in JSF API of HtmlCommandLink and HtmlOutputLink, but there is no corresponding tag in HTML 4.0.. What to do?-->
+        <attribute>
+            <name>onblur</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <!--todo: is in JSF API of HtmlCommandLink and HtmlOutputLink, but there is no corresponding tag in HTML 4.0.. What to do?-->
+        <attribute>
+            <name>onfocus</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>target</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>enabledOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, no hyperlink is rendered but all nested
+                tags (=body) are rendered.
+            </description>
+        </attribute>
+        <attribute>
+            <name>visibleOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, nothing is rendered and the body of this tag
+                will be skipped.
+            </description>
+        </attribute>
+
+        <!-- HtmlCommandLink attributes -->
+        <!--TODO: is in JSF API, but there is no corresponding tag in HTML 4.0.. What to do?-->
+        <attribute>
+            <name>onblur</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <!--TODO: is in JSF API, but there is no corresponding tag in HTML 4.0.. What to do?-->
+        <attribute>
+            <name>onfocus</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <!-- TODO attributes image, label - old todo.. still necessary?-->
+    </tag>
+
+    <!-- commandSortHeader -->
+    <tag>
+        <name>commandSortHeader</name>
+        <tag-class>org.apache.myfaces.custom.sortheader.HtmlCommandSortHeaderTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            Clickable sort column header.
+            Must be nested inside an extended data_table tag.
+            This tag is derived from the standard command_link tag and
+            has the additional attributes columnName and arrow.
+            Note: In contrary to normal command links the default for the "immediate"
+            attribute is "true".
+        </description>
+                <!-- UICommand attributes -->
+        <!-- UIComponent attributes -->
+        <attribute>
+            <name>id</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+        <attribute>
+            <name>action</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>MethodBinding pointing at the application action to be invoked, if this UIComponent is activated by the user, during the Apply Request Values or Invoke Application phase of the request processing lifecycle, depending on the value of the immediate property.</description>
+        </attribute>
+        <attribute>
+            <name>actionListener</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>MethodBinding pointing at method acception an ActionEvent with return type void.</description>
+        </attribute>
+        <attribute>
+            <name>immediate</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>True means, that the default ActionListener should be executed immediately (i.e. during Apply Request Values phase of the request processing lifecycle), rather than waiting until the Invoke Application phase.</description>
+        </attribute>
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Initial value to set when rendered for the first time.</description>
+        </attribute>
+
+        <!-- HTML 4.0 universal attributes -->
+        <attribute><name>dir</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>lang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>style</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>title</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>styleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Corresponds to the HTML class attribute.</description>
+        </attribute>
+
+        <!-- HTML 4.0 event-handler attributes -->
+        <attribute><name>onclick</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>ondblclick</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousedown</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseup</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseover</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousemove</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseout</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeypress</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeydown</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeyup</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <!-- HTML 4.0 anchor (=a) attributes -->
+        <attribute><name>accesskey</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>charset</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>coords</name>      <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <!-- "href" is a special LinkRenderer attribute -->
+        <attribute><name>hreflang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <!-- "name" cannot be set by user -->
+        <attribute><name>rel</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>rev</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>shape</name>       <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>tabindex</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>type</name>        <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <!--todo: is in JSF API of HtmlCommandLink and HtmlOutputLink, but there is no corresponding tag in HTML 4.0.. What to do?-->
+        <attribute>
+            <name>onblur</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <!--todo: is in JSF API of HtmlCommandLink and HtmlOutputLink, but there is no corresponding tag in HTML 4.0.. What to do?-->
+        <attribute>
+            <name>onfocus</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>target</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>enabledOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, no hyperlink is rendered but all nested
+                tags (=body) are rendered.
+            </description>
+        </attribute>
+        <attribute>
+            <name>visibleOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, nothing is rendered and the body of this tag
+                will be skipped.
+            </description>
+        </attribute>
+
+        <!-- HtmlCommandSortHeader attributes -->
+        <attribute>
+            <name>columnName</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                The name of this column.
+                This name must uniquely identify this column among all other (sortable) columns
+                in the same data_table.
+                The sortColumn attribute of the embedding data_table reflects the current
+                sort column (see extended data_table).
+            </description>
+        </attribute>
+        <attribute>
+            <name>arrow</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Indicates whether an arrow, that shows the sort direction should be rendered.
+                Default: false
+            </description>
+        </attribute>
+    </tag>
+
+    <!-- dataList -->
+    <tag>
+        <name>dataList</name>
+        <tag-class>org.apache.myfaces.custom.datalist.HtmlDataListTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            Similar to dataTable, but does not render a table. Instead the layout
+            attribute controls how each dataRow is rendered.
+        </description>
+                <!-- UIPanel attributes -->
+        <!-- UIComponent attributes -->
+        <attribute>
+            <name>id</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+
+        <!-- HTML 4.0 universal attributes -->
+        <attribute><name>dir</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>lang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>style</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>title</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>styleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Corresponds to the HTML class attribute.</description>
+        </attribute>
+
+        <!-- HTML 4.0 event-handler attributes -->
+        <attribute><name>onclick</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>ondblclick</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousedown</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseup</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseover</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousemove</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseout</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeypress</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeydown</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeyup</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+                <!-- 
+        This attribute indicates that the component should be forced to use the specified id instead of 
+        using the one that faces generates.  Components contained within a "list" will include a '[n]'  
+        suffix where 'n' is the row index (unless the forceIdIndex attribute is set to false).
+        -->
+        <attribute>
+            <name>forceId</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will force the use of the specified id when rendering.</description>
+        </attribute>        
+
+        <!-- 
+        If the component is contained within an "list" (such as dataTable), this attribute indicates whether or not a 
+        '[n]' suffix should be added where 'n' is the row index.  Default is true.  The attribute is ignored if forceId 
+        is false (or not specified)
+        -->
+        <attribute>
+            <name>forceIdIndex</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>
+                If false, this component will not append a '[n]' suffix (where 'n' is the row index) to components 
+                that are contained within a "list."  This value will be true by default and the value will be ignored if 
+                the value of forceId is false (or not specified.)
+            </description>
+        </attribute>        
+
+        <!-- UIData attributes -->
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Supported types see JSF Spec 4.1.3</description>
+        </attribute>
+        <attribute>
+            <name>var</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>rows</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>first</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>enabledOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, no hyperlink is rendered but all nested
+                tags (=body) are rendered.
+            </description>
+        </attribute>
+        <attribute>
+            <name>visibleOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, nothing is rendered and the body of this tag
+                will be skipped.
+            </description>
+        </attribute>
+
+        <attribute>
+            <name>layout</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                simple|unorderedList|orderedList
+                simple = for each dataRow all children are simply rendered
+                unorderedList = the list is rendered as HTML unordered list (= bullet list)
+                orderedList = the list is rendered as HTML ordered list
+                Default: simple
+            </description>
+        </attribute>
+        <attribute>
+            <name>rowIndexVar</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                A parameter name, under which the current rowIndex is set in request scope
+                similar to the var parameter.
+            </description>
+        </attribute>
+        <attribute>
+            <name>rowCountVar</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                A parameter name, under which the rowCount is set in request scope
+                similar to the var parameter.
+            </description>
+        </attribute>
+     </tag>
+
+    <!-- dataScroller -->
+    <tag>
+        <name>dataScroller</name>
+        <tag-class>org.apache.myfaces.custom.datascroller.HtmlDataScrollerTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            Scroller for UIData components eg. dataTable
+            Must be nested inside footer facet of dataTable OR for attribute must be given
+            so that corresponding uiData can be found
+        </description>
+        <!-- UIComponent attributes -->
+        <attribute>
+            <name>id</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>enabledOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, no hyperlink is rendered but all nested
+                tags (=body) are rendered.
+            </description>
+        </attribute>
+        <attribute>
+            <name>visibleOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, nothing is rendered and the body of this tag
+                will be skipped.
+            </description>
+        </attribute>
+
+        <attribute>
+            <name>for</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>fastStep</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>step (pages) used for fastforward and fastrewind</description>
+        </attribute>
+        <attribute>
+            <name>pageIndexVar</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                A parameter name, under which the actual page index is set in request scope
+                similar to the var parameter.
+            </description>
+        </attribute>
+        <attribute>
+            <name>pageCountVar</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                A parameter name, under which the actual page count is set in request scope
+                similar to the var parameter.
+            </description>
+        </attribute>
+        <attribute>
+            <name>rowsCountVar</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                A parameter name, under which the actual rows count is set in request scope
+                similar to the var parameter.
+            </description>
+        </attribute>
+        <attribute>
+            <name>displayedRowsCountVar</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                A parameter name, under which the actual displayed rows count is set in request scope
+                similar to the var parameter.
+            </description>
+        </attribute>
+        <attribute>
+            <name>firstRowIndexVar</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                A parameter name, under which the actual first displayed row index is set in request scope
+                similar to the var parameter.
+            </description>
+        </attribute>
+        <attribute>
+            <name>lastRowIndexVar</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                A parameter name, under which the actual last displayed row index is set in request scope
+                similar to the var parameter.
+            </description>
+        </attribute>
+        <attribute>
+            <name>styleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                styleClass for scroller table
+            </description>
+        </attribute>
+        <attribute>
+            <name>style</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                style for scroller table
+            </description>
+        </attribute>
+        <attribute>
+            <name>paginator</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If set true, then the paginator gets rendered
+            </description>
+        </attribute>
+        <attribute>
+            <name>paginatorMaxPages</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                The maximum amount of pages to be displayed in the paginator.
+            </description>
+        </attribute>
+        <attribute>
+            <name>paginatorTableClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                styleclass for pagingator
+            </description>
+        </attribute>
+        <attribute>
+            <name>paginatorTableStyle</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                style for pagingator
+            </description>
+        </attribute>
+        <attribute>
+            <name>paginatorColumnClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                styleClass for paginator's column
+            </description>
+        </attribute>
+        <attribute>
+            <name>paginatorColumnStyle</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                style for paginator's column
+            </description>
+        </attribute>
+        <attribute>
+            <name>paginatorActiveColumnClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                styleClass for paginator's column with pageIndex = currentPageIndex
+            </description>
+        </attribute>
+        <attribute>
+            <name>paginatorActiveColumnStyle</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                style for paginator's column with pageIndex = currentPageIndex
+            </description>
+        </attribute>
+        <attribute>
+            <name>renderFacetsIfSinglePage</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If set to false, the facets aren't renderd if all the lines are contained on a single page.
+                Default is true.
+            </description>
+        </attribute>
+        <attribute>
+            <name>immediate</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>True means, that the default ActionListener should be executed immediately (i.e. during Apply Request Values phase of the request processing lifecycle), rather than waiting until the Invoke Application phase.</description>
+        </attribute>
+        <attribute>
+            <name>actionListener</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>MethodBinding pointing at method acception an ActionEvent with return type void.</description>
+        </attribute>
+     </tag>
+
+    <!-- inputDate -->
+    <tag>
+        <name>inputDate</name>
+        <tag-class>org.apache.myfaces.custom.date.HtmlInputDateTag</tag-class>
+        <body-content>JSP</body-content>
+                <!-- UIInput attributes -->
+                <!-- UIOutput attributes -->
+        <!-- UIComponent attributes -->
+        <attribute>
+            <name>id</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Initial value to set when rendered for the first time.</description>
+        </attribute>
+        <attribute>
+            <name>converter</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Id of Converter to be used or reference to a Converter.</description>
+        </attribute>
+
+        <attribute>
+            <name>immediate</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description> Flag indicating that this component's value must be converted and validated immediately (that is, during Apply Request Values phase), rather than waiting until Process Validations phase.</description>
+        </attribute>
+        <attribute>
+            <name>required</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will be checked for non-empty input.</description>
+        </attribute>
+        <attribute>
+            <name>validator</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>MethodBinding pointing at a method that will be called during Process Validations phase of the request processing lifecycle, to validate the current value of this component.</description>
+        </attribute>
+        <attribute>
+            <name>valueChangeListener</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Listener for value changes.</description>
+        </attribute>
+
+        <!-- HTML 4.0 universal attributes -->
+        <attribute><name>dir</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>lang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>style</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>title</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>styleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Corresponds to the HTML class attribute.</description>
+        </attribute>
+
+        <!-- HTML 4.0 event-handler attributes -->
+        <attribute><name>onclick</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>ondblclick</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousedown</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseup</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseover</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousemove</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseout</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeypress</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeydown</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeyup</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <!-- HTML 4.0 input attributes -->
+        <attribute><name>accesskey</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>align</name>       <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>alt</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>disabled</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>maxlength</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>onblur</name>      <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>onchange</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>onfocus</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>onselect</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>readonly</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>size</name>        <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>tabindex</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+		<!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>enabledOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, no hyperlink is rendered but all nested
+                tags (=body) are rendered.
+            </description>
+        </attribute>
+        <attribute>
+            <name>visibleOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, nothing is rendered and the body of this tag
+                will be skipped.
+            </description>
+        </attribute>
+
+		<!-- type == date | time | both -->
+        <attribute>
+	        <name>type</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+	        <name>popupCalendar</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>timeZone</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+    </tag>
+
+    <!-- inputFileUpload -->
+    <tag>
+        <name>inputFileUpload</name>
+        <tag-class>org.apache.myfaces.custom.fileupload.HtmlInputFileUploadTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            You must enable the MultiPart Filter to make this component
+            work (see web.xml). Also, don't forget to set the form's attribute
+            "enctype" to "multipart/form-data".
+            See "examples/web/fileupload.jsp" for an example!
+        </description>
+                <!-- UIInput attributes -->
+                <!-- UIOutput attributes -->
+        <!-- UIComponent attributes -->
+        <attribute>
+            <name>id</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Initial value to set when rendered for the first time.</description>
+        </attribute>
+        <attribute>
+            <name>converter</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Id of Converter to be used or reference to a Converter.</description>
+        </attribute>
+
+        <attribute>
+            <name>immediate</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description> Flag indicating that this component's value must be converted and validated immediately (that is, during Apply Request Values phase), rather than waiting until Process Validations phase.</description>
+        </attribute>
+        <attribute>
+            <name>required</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will be checked for non-empty input.</description>
+        </attribute>
+        <attribute>
+            <name>validator</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>MethodBinding pointing at a method that will be called during Process Validations phase of the request processing lifecycle, to validate the current value of this component.</description>
+        </attribute>
+        <attribute>
+            <name>valueChangeListener</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Listener for value changes.</description>
+        </attribute>
+
+        <!-- HTML 4.0 universal attributes -->
+        <attribute><name>dir</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>lang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>style</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>title</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>styleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Corresponds to the HTML class attribute.</description>
+        </attribute>
+
+        <!-- HTML 4.0 event-handler attributes -->
+        <attribute><name>onclick</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>ondblclick</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousedown</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseup</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseover</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousemove</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseout</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeypress</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeydown</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeyup</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <!-- HTML 4.0 input attributes -->
+        <attribute><name>accesskey</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>align</name>       <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>alt</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>disabled</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>maxlength</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>onblur</name>      <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>onchange</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>onfocus</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>onselect</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>readonly</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>size</name>        <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <attribute><name>tabindex</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue><type>java.lang.String</type></attribute>
+        <!-- HTML 4.0 input type="file" attributes -->
+        <attribute>
+            <name>accept</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+	        <name>storage</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+    </tag>
+
+    <!-- inputHtml -->
+    <tag>
+        <name>inputHtml</name>
+        <tag-class>org.apache.myfaces.custom.inputHtml.InputHtmlTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            An inline HTML based word processor based on the Kupu library. See http://kupu.oscom.org
+            Right now, the support is limited to one editor per page
+            (but you can use tabs to have multiple editors, but only one rendered at a time).
+        </description>
+                <!-- UIInput attributes -->
+                <!-- UIOutput attributes -->
+        <!-- UIComponent attributes -->
+        <attribute>
+            <name>id</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Initial value to set when rendered for the first time.</description>
+        </attribute>
+        <attribute>
+            <name>converter</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Id of Converter to be used or reference to a Converter.</description>
+        </attribute>
+
+        <attribute>
+            <name>immediate</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description> Flag indicating that this component's value must be converted and validated immediately (that is, during Apply Request Values phase), rather than waiting until Process Validations phase.</description>
+        </attribute>
+        <attribute>
+            <name>required</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will be checked for non-empty input.</description>
+        </attribute>
+        <attribute>
+            <name>validator</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>MethodBinding pointing at a method that will be called during Process Validations phase of the request processing lifecycle, to validate the current value of this component.</description>
+        </attribute>
+        <attribute>
+            <name>valueChangeListener</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Listener for value changes.</description>
+        </attribute>
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>enabledOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, no hyperlink is rendered but all nested
+                tags (=body) are rendered.
+            </description>
+        </attribute>
+        <attribute>
+            <name>visibleOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, nothing is rendered and the body of this tag
+                will be skipped.
+            </description>
+        </attribute>
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>displayValueOnly</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If true, renders only the value of the component, but no input widget.
+                Default is false.
+            </description>
+        </attribute>
+        <attribute>
+            <name>displayValueOnlyStyle</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Style used when displayValueOnly is true.
+            </description>
+        </attribute>
+        <attribute>
+            <name>displayValueOnlyStyleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Style class used when displayValueOnly is true.
+            </description>
+        </attribute>        
+        <attribute>
+	        <name>style</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+	        <name>styleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+	        <name>fallback</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+            	Use a text area instead of the javascript HTML editor.
+            	Default is false.
+            	Use with caution.
+            </description>
+        </attribute>
+        <attribute>
+	        <name>type</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+            	The type of the value. It can be either fragment for an HTML fragment (default)
+            	or document for a full HTML document, with head, title, body, ... tags.
+            </description>
+        </attribute>
+       	<attribute>
+	        <name>allowEditSource</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+            	Allows the user to edit the HTML source code.
+            	Default is true.
+            </description>
+       	</attribute>
+		<attribute>
+	        <name>allowExternalLinks</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+            	Allows the user to insert external links.
+            	Default is true.
+            </description>
+       	</attribute>
+       	<attribute>
+	        <name>addKupuLogo</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+            	Show the Kupu Logo in the buttons bar.
+            	Default is true.
+            </description>
+       	</attribute>
+       	<attribute>
+	        <name>showAllToolBoxes</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+			<description>
+            	Shortcut to avoid setting all the showXXToolBox to true.
+            	Default is false.
+            </description>
+        </attribute>
+       	<attribute>
+	        <name>showPropertiesToolBox</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+			<description>
+            	Show the Properties tool box next to the text.
+            	Default is false.
+            </description>
+        </attribute>
+       	<attribute>
+	        <name>showLinksToolBox</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+			<description>
+            	Show the Links tool box next to the text.
+            	Default is false.
+            </description>
+        </attribute>
+       	<attribute>
+	        <name>showImagesToolBox</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+			<description>
+            	Show the Images tool box next to the text.
+            	Default is false.
+            </description>
+        </attribute>
+       	<attribute>
+	        <name>showTablesToolBox</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+			<description>
+            	Show the Tables tool box next to the text.
+            	Default is false.
+            </description>
+        </attribute>
+		<attribute>
+	        <name>showCleanupExpressionsToolBox</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+			<description>
+            	Show the Cleanup Expressions tool box next to the text.
+            	Default is false.
+            </description>
+        </attribute>
+       	<attribute>
+	        <name>showDebugToolBox</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+			<description>
+            	Show the Debug tool box next to the text.
+            	Default is false.
+            </description>
+        </attribute>
+    </tag>
+
+    <!-- navigationMenu, jscookMenu -->
+    <tag>
+        <name>navigationMenuItem</name>
+        <tag-class>org.apache.myfaces.custom.navmenu.HtmlNavigationMenuItemTag</tag-class>
+        <body-content>JSP</body-content>
+        <!-- UISelectItem attributes -->
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</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>id</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <name>itemDescription</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <name>itemLabel</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <name>itemValue</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Value reference pointing at a javax.faces.model.SelectItem instance.</description>
+        </attribute>
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>enabledOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, no hyperlink is rendered but all nested
+                tags (=body) are rendered.
+            </description>
+        </attribute>
+        <attribute>
+            <name>visibleOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, nothing is rendered and the body of this tag
+                will be skipped.
+            </description>
+        </attribute>
+
+        <!-- navigationMenuItem attributes -->
+        <attribute>
+            <name>icon</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>split</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>action</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+    </tag>
+    <tag>
+        <name>navigationMenuItems</name>
+        <tag-class>org.apache.myfaces.custom.navmenu.HtmlNavigationMenuItemsTag</tag-class>
+        <body-content>empty</body-content>
+        <!-- UISelectItems attributes -->
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+        <attribute>
+            <name>id</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Value reference pointing at a List or Array of javax.faces.model.SelectItem instances.</description>
+        </attribute>
+
+    </tag>
+    <tag>
+        <name>jscookMenu</name>
+        <tag-class>org.apache.myfaces.custom.navmenu.jscookmenu.HtmlJSCookMenuTag</tag-class>
+        <body-content>JSP</body-content>
+        <!-- UIComponent attributes -->
+        <attribute>
+            <name>id</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>enabledOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, no hyperlink is rendered but all nested
+                tags (=body) are rendered.
+            </description>
+        </attribute>
+        <attribute>
+            <name>visibleOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, nothing is rendered and the body of this tag
+                will be skipped.
+            </description>
+        </attribute>
+
+                <attribute>
+            <name>javascriptLocation</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>
+                An alternate location to find javascript resources.  If no values is specified, javascript will
+                be loaded from the resources directory using AddResource and ExtensionsFilter.
+            </description>
+        </attribute>
+
+        <attribute>
+            <name>imageLocation</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>
+                An alternate location to find image resources.  If no values is specified, images will
+                be loaded from the resources directory using AddResource and ExtensionsFilter.
+            </description>
+        </attribute>
+
+        <attribute>
+            <name>styleLocation</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>
+                An alternate location to find stylesheet resources.  If no values is specified, stylesheets will
+                be loaded from the resources directory using AddResource and ExtensionsFilter.
+            </description>
+        </attribute>
+
+        <!-- jscookMenu attributes -->
+        <attribute>
+            <name>layout</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>theme</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+    </tag>
+
+    <!-- panelLayout -->
+    <tag>
+        <name>panelLayout</name>
+        <tag-class>org.apache.myfaces.custom.layout.HtmlPanelLayoutTag</tag-class>
+        <body-content>JSP</body-content>
+                <!-- UIPanel attributes -->
+        <!-- UIComponent attributes -->
+        <attribute>
+            <name>id</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+
+        <!-- HTML 4.0 universal attributes -->
+        <attribute><name>dir</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>lang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>style</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>title</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>styleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Corresponds to the HTML class attribute.</description>
+        </attribute>
+
+        <!-- HTML 4.0 event-handler attributes -->
+        <attribute><name>onclick</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>ondblclick</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousedown</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseup</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseover</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousemove</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseout</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeypress</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeydown</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeyup</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <!-- HTML 4.0 table attributes -->
+        <attribute><name>align</name>           <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>border</name>          <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>bgcolor</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>cellpadding</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>cellspacing</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>datafld</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>datasrc</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>dataformatas</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>frame</name>           <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>rules</name>           <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>summary</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>width</name>           <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <attribute>
+            <name>layout</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>
+                layout           | header | navigation | body  | footer
+                =================|========|============|=======|========
+                classic (Default)| top    | left       | right | bottom
+                navigationRight  | top    | right      | left  | bottom
+                upsideDown       | bottom | left       | right | top
+            </description>
+        </attribute>
+        <attribute>
+            <name>headerClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>CSS class to be used for the table cell.</description>
+        </attribute>
+        <attribute>
+            <name>navigationClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>CSS class to be used for the table cell.</description>
+        </attribute>
+        <attribute>
+            <name>bodyClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>CSS class to be used for the table cell.</description>
+        </attribute>
+        <attribute>
+            <name>footerClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>CSS class to be used for the table cell.</description>
+        </attribute>
+        <attribute>
+            <name>headerStyle</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>CSS style to be used for the table cell.</description>
+        </attribute>
+        <attribute>
+            <name>navigationStyle</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>CSS style to be used for the table cell.</description>
+        </attribute>
+        <attribute>
+            <name>bodyStyle</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>CSS style to be used for the table cell.</description>
+        </attribute>
+        <attribute>
+            <name>footerStyle</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>CSS style to be used for the table cell.</description>
+        </attribute>
+    </tag>
+
+    <!-- panelNavigation2 -->
+    <tag>
+        <name>panelNavigation2</name>
+        <tag-class>org.apache.myfaces.custom.navmenu.htmlnavmenu.HtmlPanelNavigationMenuTag</tag-class>
+        <body-content>JSP</body-content>
+                <!-- UIPanel attributes -->
+        <!-- UIComponent attributes -->
+        <attribute>
+            <name>id</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+
+        <!-- HTML 4.0 universal attributes -->
+        <attribute><name>dir</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>lang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>style</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>title</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>styleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Corresponds to the HTML class attribute.</description>
+        </attribute>
+
+        <!-- HTML 4.0 event-handler attributes -->
+        <attribute><name>onclick</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>ondblclick</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousedown</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseup</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseover</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousemove</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseout</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeypress</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeydown</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeyup</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <!-- HTML 4.0 table attributes -->
+        <attribute><name>align</name>           <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>border</name>          <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>bgcolor</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>cellpadding</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>cellspacing</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>datafld</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>datasrc</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>dataformatas</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>frame</name>           <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>rules</name>           <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>summary</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>width</name>           <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <attribute>
+            <name>itemClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                The CSS class of closed navigation items.
+            </description>
+        </attribute>
+        <attribute>
+            <name>openItemClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                The CSS class of open navigation items.
+            </description>
+        </attribute>
+        <attribute>
+            <name>activeItemClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                The CSS class of the active navigation item.
+            </description>
+        </attribute>
+        <attribute>
+            <name>separatorClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                The CSS class for the td element of a separator.
+            </description>
+        </attribute>
+        <attribute>
+            <name>itemStyle</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                The CSS Style of closed navigation items.
+            </description>
+        </attribute>
+        <attribute>
+            <name>openItemStyle</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                The CSS Style of open navigation items.
+            </description>
+        </attribute>
+        <attribute>
+            <name>activeItemStyle</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                The CSS Style of the active navigation item.
+            </description>
+        </attribute>
+        <attribute>
+            <name>separatorStyle</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                The CSS Style for the td element of a separator.
+            </description>
+        </attribute>
+        <attribute>
+            <name>layout</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Table or List Layout (default is Table) 
+            </description>
+        </attribute>
+    </tag>
+
+    <!-- panelNavigation -->
+    <tag>
+        <name>panelNavigation</name>
+        <tag-class>org.apache.myfaces.custom.navigation.HtmlPanelNavigationTag</tag-class>
+        <body-content>JSP</body-content>
+                <!-- UIPanel attributes -->
+        <!-- UIComponent attributes -->
+        <attribute>
+            <name>id</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+
+        <!-- HTML 4.0 universal attributes -->
+        <attribute><name>dir</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>lang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>style</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>title</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>styleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Corresponds to the HTML class attribute.</description>
+        </attribute>
+
+        <!-- HTML 4.0 event-handler attributes -->
+        <attribute><name>onclick</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>ondblclick</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousedown</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseup</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseover</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousemove</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseout</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeypress</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeydown</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeyup</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <!-- HTML 4.0 table attributes -->
+        <attribute><name>align</name>           <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>border</name>          <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>bgcolor</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>cellpadding</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>cellspacing</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>datafld</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>datasrc</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>dataformatas</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>frame</name>           <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>rules</name>           <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>summary</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>width</name>           <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <attribute>
+            <name>itemClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                The CSS class of closed navigation items.
+            </description>
+        </attribute>
+        <attribute>
+            <name>openItemClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                The CSS class of open navigation items.
+            </description>
+        </attribute>
+        <attribute>
+            <name>activeItemClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                The CSS class of the active navigation item.
+            </description>
+        </attribute>
+        <attribute>
+            <name>separatorClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                The CSS class for the td element of a separator.
+            </description>
+        </attribute>
+        <attribute>
+            <name>itemStyle</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                The CSS Style of closed navigation items.
+            </description>
+        </attribute>
+        <attribute>
+            <name>openItemStyle</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                The CSS Style of open navigation items.
+            </description>
+        </attribute>
+        <attribute>
+            <name>activeItemStyle</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                The CSS Style of the active navigation item.
+            </description>
+        </attribute>
+        <attribute>
+            <name>separatorStyle</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                The CSS Style for the td element of a separator.
+            </description>
+        </attribute>
+    </tag>
+
+    <!-- panelTab -->
+    <tag>
+        <name>panelTab</name>
+        <tag-class>org.apache.myfaces.custom.tabbedpane.HtmlPanelTabTag</tag-class>
+        <body-content>JSP</body-content>
+                <!-- UIPanel attributes -->
+        <!-- UIComponent attributes -->
+        <attribute>
+            <name>id</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+
+        <!-- HTML 4.0 universal attributes -->
+        <attribute><name>dir</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>lang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>style</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>title</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>styleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Corresponds to the HTML class attribute.</description>
+        </attribute>
+
+        <!-- HTML 4.0 event-handler attributes -->
+        <attribute><name>onclick</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>ondblclick</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousedown</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseup</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseover</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousemove</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseout</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeypress</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeydown</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeyup</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>enabledOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, no hyperlink is rendered but all nested
+                tags (=body) are rendered.
+            </description>
+        </attribute>
+        <attribute>
+            <name>visibleOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, nothing is rendered and the body of this tag
+                will be skipped.
+            </description>
+        </attribute>
+
+        <attribute>
+            <name>label</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Label of this tab.
+            </description>
+        </attribute>
+    </tag>
+
+    <!-- panelTabbedPane -->
+    <tag>
+        <name>panelTabbedPane</name>
+        <tag-class>org.apache.myfaces.custom.tabbedpane.HtmlPanelTabbedPaneTag</tag-class>
+        <body-content>JSP</body-content>
+                <!-- UIPanel attributes -->
+        <!-- UIComponent attributes -->
+        <attribute>
+            <name>id</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+
+        <!-- HTML 4.0 universal attributes -->
+        <attribute><name>dir</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>lang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>style</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>title</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>styleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Corresponds to the HTML class attribute.</description>
+        </attribute>
+
+        <!-- HTML 4.0 event-handler attributes -->
+        <attribute><name>onclick</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>ondblclick</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousedown</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseup</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseover</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousemove</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseout</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeypress</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeydown</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeyup</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <!-- HTML 4.0 table attributes -->
+        <attribute><name>align</name>           <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>border</name>          <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>bgcolor</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>cellpadding</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>cellspacing</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>datafld</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>datasrc</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>dataformatas</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>frame</name>           <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>rules</name>           <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>summary</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>width</name>           <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>enabledOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, no hyperlink is rendered but all nested
+                tags (=body) are rendered.
+            </description>
+        </attribute>
+        <attribute>
+            <name>visibleOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, nothing is rendered and the body of this tag
+                will be skipped.
+            </description>
+        </attribute>
+
+        <attribute>
+            <name>selectedIndex</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Index of tab that is selected by default.
+            </description>
+        </attribute>
+        <attribute>
+            <name>activeTabStyleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Style class of the active tab cell.
+            </description>
+        </attribute>
+        <attribute>
+            <name>inactiveTabStyleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Style class of the inactive tab cells.
+            </description>
+        </attribute>
+        <attribute>
+            <name>disabledTabStyleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Style class of the disabled tab cells.
+            </description>
+        </attribute>
+        <attribute>
+            <name>activeSubStyleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Style class of the active tab sub cell.
+            </description>
+        </attribute>
+        <attribute>
+            <name>inactiveSubStyleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Style class of the inactive tab sub cells.
+            </description>
+        </attribute>
+        <attribute>
+            <name>tabContentStyleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Style class of the active tab content cell.
+            </description>
+        </attribute>
+    </tag>
+
+    <!-- tab change listener -->
+    <tag>
+        <name>tabChangeListener</name>
+        <tag-class>org.apache.myfaces.custom.tabbedpane.TabChangeListenerTag</tag-class>
+        <body-content>empty</body-content>
+        <attribute>
+            <name>type</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+    </tag>
+
+
+    <!-- collapsiblePanel -->
+    <tag>
+        <name>collapsiblePanel</name>
+        <tag-class>org.apache.myfaces.custom.collapsiblepanel.HtmlCollapsiblePanelTag</tag-class>
+        <body-content>JSP</body-content>
+                <!-- UIPanel attributes -->
+        <!-- UIComponent attributes -->
+        <attribute>
+            <name>id</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+
+        <!-- HTML 4.0 universal attributes -->
+        <attribute><name>dir</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>lang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>style</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>title</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>styleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Corresponds to the HTML class attribute.</description>
+        </attribute>
+
+        <!-- HTML 4.0 event-handler attributes -->
+        <attribute><name>onclick</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>ondblclick</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousedown</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseup</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseover</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousemove</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseout</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeypress</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeydown</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeyup</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>enabledOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, no hyperlink is rendered but all nested
+                tags (=body) are rendered.
+            </description>
+        </attribute>
+        <attribute>
+            <name>visibleOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, nothing is rendered and the body of this tag
+                will be skipped.
+            </description>
+        </attribute>
+
+        <attribute>
+            <name>collapsed</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+               Boolean value indicating whether the panel should be collapsed by default.
+            </description>
+        </attribute>
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Label for collapsible panel.
+            </description>
+        </attribute>
+    </tag>
+
+	<!-- selectOneCountry -->
+    <tag>
+        <name>selectOneCountry</name>
+        <tag-class>org.apache.myfaces.custom.selectOneCountry.SelectOneCountryTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            A localized list of countries choose box.
+            The value binds to the country ISO 3166 code.
+            This is the same code as for java.util.Locale.getCountry().
+			The official codes list is available here :
+			http://www.iso.ch/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html
+        </description>
+        <attribute>
+            <name>maxLength</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+               Integer equals to the maximum number of characters in the country name.
+            </description>
+        </attribute>
+                <!-- 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>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Initial value to set when rendered for the first time.</description>
+        </attribute>
+        <attribute>
+            <name>converter</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Id of Converter to be used or reference to a Converter.</description>
+        </attribute>
+
+        <attribute>
+            <name>immediate</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description> Flag indicating that this component's value must be converted and validated immediately (that is, during Apply Request Values phase), rather than waiting until Process Validations phase.</description>
+        </attribute>
+        <attribute>
+            <name>required</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will be checked for non-empty input.</description>
+        </attribute>
+        <attribute>
+            <name>validator</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>MethodBinding pointing at a method that will be called during Process Validations phase of the request processing lifecycle, to validate the current value of this component.</description>
+        </attribute>
+        <attribute>
+            <name>valueChangeListener</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Listener for value changes.</description>
+        </attribute>
+
+
+        <!-- HTML 4.0 universal attributes -->
+        <attribute><name>dir</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>lang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>style</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>title</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>styleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Corresponds to the HTML class attribute.</description>
+        </attribute>
+
+        <!-- HTML 4.0 event-handler attributes -->
+        <attribute><name>onclick</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>ondblclick</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousedown</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseup</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseover</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousemove</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseout</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeypress</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeydown</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeyup</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <!-- HTML 4.0 select attributes -->
+        <attribute><name>datafld</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>datasrc</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>dataformatas</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>disabled</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <!-- "multiple" cannot be set manually -->
+        <!-- "name" cannot be set manually -->
+        <attribute><name>onblur</name>      <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onchange</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onfocus</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <!-- "size" cannot be set directly for it is a MenuRenderer specific attribute -->
+        <attribute><name>tabindex</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>readonly</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Flag indicating that this component will prohibit
+          changes by the user.  The element may receive focus
+          unless it has also been disabled.</description>
+        </attribute>
+        <attribute><name>enabledClass</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+         <attribute><name>disabledClass</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>enabledOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, no hyperlink is rendered but all nested
+                tags (=body) are rendered.
+            </description>
+        </attribute>
+        <attribute>
+            <name>visibleOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, nothing is rendered and the body of this tag
+                will be skipped.
+            </description>
+        </attribute>
+
+                <!-- 
+        This attribute indicates that the component should be forced to use the specified id instead of 
+        using the one that faces generates.  Components contained within a "list" will include a '[n]'  
+        suffix where 'n' is the row index (unless the forceIdIndex attribute is set to false).
+        -->
+        <attribute>
+            <name>forceId</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will force the use of the specified id when rendering.</description>
+        </attribute>        
+
+        <!-- 
+        If the component is contained within an "list" (such as dataTable), this attribute indicates whether or not a 
+        '[n]' suffix should be added where 'n' is the row index.  Default is true.  The attribute is ignored if forceId 
+        is false (or not specified)
+        -->
+        <attribute>
+            <name>forceIdIndex</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>
+                If false, this component will not append a '[n]' suffix (where 'n' is the row index) to components 
+                that are contained within a "list."  This value will be true by default and the value will be ignored if 
+                the value of forceId is false (or not specified.)
+            </description>
+        </attribute>        
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>displayValueOnly</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If true, renders only the value of the component, but no input widget.
+                Default is false.
+            </description>
+        </attribute>
+        <attribute>
+            <name>displayValueOnlyStyle</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Style used when displayValueOnly is true.
+            </description>
+        </attribute>
+        <attribute>
+            <name>displayValueOnlyStyleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Style class used when displayValueOnly is true.
+            </description>
+        </attribute>        
+    </tag>
+
+    <!-- selectOneLanguage -->
+    <tag>
+        <name>selectOneLanguage</name>
+        <tag-class>org.apache.myfaces.custom.selectOneLanguage.SelectOneLanguageTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            A localized list of languages choose box.
+            The value binds to the language ISO 639 code (lowercase).
+            This is the same code as for java.util.Locale.getLanguage().
+			The official codes list is available here :
+			http://www.loc.gov/standards/iso639-2/englangn.html
+        </description>
+        <attribute>
+            <name>maxLength</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+               Integer equals to the maximum number of characters in the language name.
+            </description>
+        </attribute>
+                <!-- 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>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Initial value to set when rendered for the first time.</description>
+        </attribute>
+        <attribute>
+            <name>converter</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Id of Converter to be used or reference to a Converter.</description>
+        </attribute>
+
+        <attribute>
+            <name>immediate</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description> Flag indicating that this component's value must be converted and validated immediately (that is, during Apply Request Values phase), rather than waiting until Process Validations phase.</description>
+        </attribute>
+        <attribute>
+            <name>required</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will be checked for non-empty input.</description>
+        </attribute>
+        <attribute>
+            <name>validator</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>MethodBinding pointing at a method that will be called during Process Validations phase of the request processing lifecycle, to validate the current value of this component.</description>
+        </attribute>
+        <attribute>
+            <name>valueChangeListener</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Listener for value changes.</description>
+        </attribute>
+
+
+        <!-- HTML 4.0 universal attributes -->
+        <attribute><name>dir</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>lang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>style</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>title</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>styleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Corresponds to the HTML class attribute.</description>
+        </attribute>
+
+        <!-- HTML 4.0 event-handler attributes -->
+        <attribute><name>onclick</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>ondblclick</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousedown</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseup</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseover</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousemove</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseout</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeypress</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeydown</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeyup</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <!-- HTML 4.0 select attributes -->
+        <attribute><name>datafld</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>datasrc</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>dataformatas</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>disabled</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <!-- "multiple" cannot be set manually -->
+        <!-- "name" cannot be set manually -->
+        <attribute><name>onblur</name>      <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onchange</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onfocus</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <!-- "size" cannot be set directly for it is a MenuRenderer specific attribute -->
+        <attribute><name>tabindex</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>readonly</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Flag indicating that this component will prohibit
+          changes by the user.  The element may receive focus
+          unless it has also been disabled.</description>
+        </attribute>
+        <attribute><name>enabledClass</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+         <attribute><name>disabledClass</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>enabledOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, no hyperlink is rendered but all nested
+                tags (=body) are rendered.
+            </description>
+        </attribute>
+        <attribute>
+            <name>visibleOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, nothing is rendered and the body of this tag
+                will be skipped.
+            </description>
+        </attribute>
+
+                <!-- 
+        This attribute indicates that the component should be forced to use the specified id instead of 
+        using the one that faces generates.  Components contained within a "list" will include a '[n]'  
+        suffix where 'n' is the row index (unless the forceIdIndex attribute is set to false).
+        -->
+        <attribute>
+            <name>forceId</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will force the use of the specified id when rendering.</description>
+        </attribute>        
+
+        <!-- 
+        If the component is contained within an "list" (such as dataTable), this attribute indicates whether or not a 
+        '[n]' suffix should be added where 'n' is the row index.  Default is true.  The attribute is ignored if forceId 
+        is false (or not specified)
+        -->
+        <attribute>
+            <name>forceIdIndex</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>
+                If false, this component will not append a '[n]' suffix (where 'n' is the row index) to components 
+                that are contained within a "list."  This value will be true by default and the value will be ignored if 
+                the value of forceId is false (or not specified.)
+            </description>
+        </attribute>        
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>displayValueOnly</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If true, renders only the value of the component, but no input widget.
+                Default is false.
+            </description>
+        </attribute>
+        <attribute>
+            <name>displayValueOnlyStyle</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Style used when displayValueOnly is true.
+            </description>
+        </attribute>
+        <attribute>
+            <name>displayValueOnlyStyleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Style class used when displayValueOnly is true.
+            </description>
+        </attribute>        
+    </tag>
+
+	<!-- stylesheet -->
+
+	<tag>
+		<name>stylesheet</name>
+		<tag-class>org.apache.myfaces.custom.stylesheet.StylesheetTag</tag-class>
+		<body-content>JSP</body-content>
+		<description>a component, which renders the path to a common CSS-file</description>
+		<!-- UIComponent attributes -->
+        <attribute>
+            <name>id</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+		<!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>enabledOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, no hyperlink is rendered but all nested
+                tags (=body) are rendered.
+            </description>
+        </attribute>
+        <attribute>
+            <name>visibleOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, nothing is rendered and the body of this tag
+                will be skipped.
+            </description>
+        </attribute>
+
+		<attribute>
+			<name>path</name>
+			<required>true</required>
+			<rtexprvalue>false</rtexprvalue>
+			<description>
+				URL for CSS-file.
+			</description>
+		</attribute>
+	</tag>
+
+	<!-- div -->
+
+	<tag>
+		<name>div</name>
+		<tag-class>org.apache.myfaces.custom.div.DivTag</tag-class>
+		<body-content>JSP</body-content>
+		<description>Places a div around its children</description>
+		<!-- UIComponent attributes -->
+        <attribute>
+            <name>id</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+                <!-- 
+        This attribute indicates that the component should be forced to use the specified id instead of 
+        using the one that faces generates.  Components contained within a "list" will include a '[n]'  
+        suffix where 'n' is the row index (unless the forceIdIndex attribute is set to false).
+        -->
+        <attribute>
+            <name>forceId</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will force the use of the specified id when rendering.</description>
+        </attribute>        
+
+        <!-- 
+        If the component is contained within an "list" (such as dataTable), this attribute indicates whether or not a 
+        '[n]' suffix should be added where 'n' is the row index.  Default is true.  The attribute is ignored if forceId 
+        is false (or not specified)
+        -->
+        <attribute>
+            <name>forceIdIndex</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>
+                If false, this component will not append a '[n]' suffix (where 'n' is the row index) to components 
+                that are contained within a "list."  This value will be true by default and the value will be ignored if 
+                the value of forceId is false (or not specified.)
+            </description>
+        </attribute>        
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>enabledOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, no hyperlink is rendered but all nested
+                tags (=body) are rendered.
+            </description>
+        </attribute>
+        <attribute>
+            <name>visibleOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, nothing is rendered and the body of this tag
+                will be skipped.
+            </description>
+        </attribute>
+
+		<attribute>
+			<name>style</name>
+			<required>false</required>
+			<rtexprvalue>false</rtexprvalue>
+			<description>
+				The style to use for this div.
+			</description>
+		</attribute>
+		<attribute>
+			<name>styleClass</name>
+			<required>false</required>
+			<rtexprvalue>false</rtexprvalue>
+			<description>
+				The class to use for this div.
+			</description>
+		</attribute>
+	</tag>
+
+	<!-- htmlTag -->
+
+	<tag>
+		<name>htmlTag</name>
+		<tag-class>org.apache.myfaces.custom.htmlTag.HtmlTagTag</tag-class>
+		<body-content>JSP</body-content>
+		<description>Places the given HTML tag div around its children</description>
+		<!-- UIComponent attributes -->
+        <attribute>
+            <name>id</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+                <!-- 
+        This attribute indicates that the component should be forced to use the specified id instead of 
+        using the one that faces generates.  Components contained within a "list" will include a '[n]'  
+        suffix where 'n' is the row index (unless the forceIdIndex attribute is set to false).
+        -->
+        <attribute>
+            <name>forceId</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If true, this component will force the use of the specified id when rendering.</description>
+        </attribute>        
+
+        <!-- 
+        If the component is contained within an "list" (such as dataTable), this attribute indicates whether or not a 
+        '[n]' suffix should be added where 'n' is the row index.  Default is true.  The attribute is ignored if forceId 
+        is false (or not specified)
+        -->
+        <attribute>
+            <name>forceIdIndex</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>
+                If false, this component will not append a '[n]' suffix (where 'n' is the row index) to components 
+                that are contained within a "list."  This value will be true by default and the value will be ignored if 
+                the value of forceId is false (or not specified.)
+            </description>
+        </attribute>        
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>enabledOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, no hyperlink is rendered but all nested
+                tags (=body) are rendered.
+            </description>
+        </attribute>
+        <attribute>
+            <name>visibleOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, nothing is rendered and the body of this tag
+                will be skipped.
+            </description>
+        </attribute>
+
+        <attribute>
+            <name>value</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+				The name of the tag. For example, use h1 to generate an h1 tag.
+			</description>
+        </attribute>
+		<attribute>
+			<name>style</name>
+			<required>false</required>
+			<rtexprvalue>false</rtexprvalue>
+			<description>
+				The style to use for this tag.
+			</description>
+		</attribute>
+		<attribute>
+			<name>styleClass</name>
+			<required>false</required>
+			<rtexprvalue>false</rtexprvalue>
+			<description>
+				The class to use for this tag.
+			</description>
+		</attribute>
+	</tag>
+
+
+    <!-- radio -->
+    <tag>
+        <name>radio</name>
+        <tag-class>org.apache.myfaces.custom.radio.HtmlRadioTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            Renders a HTML input of type "radio". The associated SelectItem comes from
+            an extended selectOneRadio component with layout "spread". The selectOneRadio
+            is referenced by the "for" attribute.
+            All HTML pass-through attributes for this input are taken from the associated
+            selectOneRadio.
+        </description>
+        <!-- UIComponent attributes -->
+        <attribute>
+            <name>id</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>enabledOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, no hyperlink is rendered but all nested
+                tags (=body) are rendered.
+            </description>
+        </attribute>
+        <attribute>
+            <name>visibleOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, nothing is rendered and the body of this tag
+                will be skipped.
+            </description>
+        </attribute>
+
+        <!-- HtmlRadio attributes -->
+        <attribute>
+            <name>for</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                 id of the referenced extended selectOneRadio component
+            </description>
+        </attribute>
+        <attribute>
+            <name>index</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                n-th SelectItem of referenced UISelectOne starting with 0.
+            </description>
+        </attribute>
+    </tag>
+
+   <!-- tree -->
+    <tag>
+        <name>tree</name>
+        <tag-class>org.apache.myfaces.custom.tree.taglib.TreeTag</tag-class>
+        <body-content>JSP</body-content>
+        <attribute>
+            <name>id</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>value</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>var</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>styleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>nodeClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>selectedNodeClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>headerClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>footerClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>rowClasses</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>columnClasses</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>iconClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>iconLine</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>iconNoline</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>iconChildFirst</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>iconChildMiddle</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>iconChildLast</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>iconNodeOpen</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>iconNodeOpenFirst</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>iconNodeOpenMiddle</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>iconNodeOpenLast</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>iconNodeClose</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>iconNodeCloseFirst</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>iconNodeCloseMiddle</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>iconNodeCloseLast</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>expandRoot</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>expireListeners</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Time interval the tree will remain registered as a TreeModelListener without being accessed</description>
+        </attribute>
+    </tag>
+
+    <tag>
+        <name>treeSelectionListener</name>
+        <tag-class>org.apache.myfaces.custom.tree.taglib.TreeSelectionListenerTag</tag-class>
+        <body-content>empty</body-content>
+        <attribute>
+            <name>type</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+    </tag>
+
+    <tag>
+        <name>iconProvider</name>
+        <tag-class>org.apache.myfaces.custom.tree.taglib.IconProviderTag</tag-class>
+        <body-content>empty</body-content>
+        <attribute>
+            <name>type</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+    </tag>
+
+    <!-- tree column -->
+    <tag>
+        <name>treeColumn</name>
+        <tag-class>org.apache.myfaces.custom.tree.taglib.TreeColumnTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            Renders a HTML input of type "treeColumn". This tag outlines the column where
+            the tree structure will be render as part of the tree table.
+        </description>
+        <!-- UIComponent attributes -->
+        <attribute>
+            <name>id</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+    </tag>
+
+    <!-- tree checkbox -->
+    <tag>
+        <name>treeCheckbox</name>
+        <tag-class>org.apache.myfaces.custom.tree.taglib.TreeCheckboxTag</tag-class>
+        <body-content>empty</body-content>
+        <description>
+            Renders a HTML input of type "treeCheckbox". The associated comes from
+            the treeCheckbox itemLabel and itemValue.  The selected items come from an extended
+            selectManyCheckbox component with layout "spread". The selectManyCheckbox
+            is referenced by the "for" attribute.
+            All HTML pass-through attributes for this input are taken from the associated
+            selectManyCheckbox.
+        </description>
+        <!-- UISelectItem attributes -->
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</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>id</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <name>itemDescription</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <name>itemLabel</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <name>itemValue</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Value reference pointing at a javax.faces.model.SelectItem instance.</description>
+        </attribute>
+
+        <!-- HtmlTreeCheckbox attributes -->
+        <attribute>
+            <name>for</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                id of the referenced extended selectManyCheckbox component
+            </description>
+        </attribute>
+    </tag>
+
+   <!-- tree2 -->
+    <tag>
+        <name>tree2</name>
+        <tag-class>org.apache.myfaces.custom.tree2.TreeTag</tag-class>
+        <body-content>JSP</body-content>
+        <attribute>
+            <name>value</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>var</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>varNodeToggler</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>showNav</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Show the "plus" and "minus" navigation icons (default is true.) Value is ignored if
+                clientSideToggle is true.
+            </description>
+        </attribute>
+        <attribute>
+            <name>showLines</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Show the connecting lines (default is true.)</description>
+        </attribute>
+        <attribute>
+            <name>clientSideToggle</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Perform client-side toggling of expand/collapse state via javascript (default is true.)</description>
+        </attribute>
+        <attribute>
+            <name>showRootNode</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Include the root node when rendering the tree (default is true.)</description>
+        </attribute>
+        <attribute>
+            <name>preserveToggle</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Preserve changes in client-side toggle information between requests (default is true.)</description>
+        </attribute>
+                <attribute>
+            <name>javascriptLocation</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>
+                An alternate location to find javascript resources.  If no values is specified, javascript will
+                be loaded from the resources directory using AddResource and ExtensionsFilter.
+            </description>
+        </attribute>
+
+        <attribute>
+            <name>imageLocation</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>
+                An alternate location to find image resources.  If no values is specified, images will
+                be loaded from the resources directory using AddResource and ExtensionsFilter.
+            </description>
+        </attribute>
+
+        <attribute>
+            <name>styleLocation</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>
+                An alternate location to find stylesheet resources.  If no values is specified, stylesheets will
+                be loaded from the resources directory using AddResource and ExtensionsFilter.
+            </description>
+        </attribute>
+
+        <!-- UIComponent attributes -->
+        <attribute>
+            <name>id</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+    </tag>
+
+    <!-- panelStack -->
+    <tag>
+        <name>panelStack</name>
+        <tag-class>org.apache.myfaces.custom.panelstack.PanelStackTag</tag-class>
+        <body-content>JSP</body-content>
+        <attribute>
+            <name>id</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>selectedPanel</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Id of the child to be rendered.</description>
+        </attribute>
+    </tag>
+
+    <!-- popup -->
+    <tag>
+        <name>popup</name>
+        <tag-class>org.apache.myfaces.custom.popup.HtmlPopupTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            Renders a popup which displays on a mouse event.
+        </description>
+        <attribute>
+            <name>displayAtDistanceX</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Pop the panel up in horizontal distance of x pixels from
+                event.
+            </description>
+        </attribute>
+        <attribute>
+            <name>displayAtDistanceY</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Pop the panel up in vertical distance of y pixels from
+                event.
+            </description>
+        </attribute>
+        <attribute>
+            <name>closePopupOnExitingElement</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Close the popup when the triggering element is left.
+            </description>
+        </attribute>
+        <attribute>
+            <name>closePopupOnExitingPopup</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Close the popup when the popup itself is left.
+            </description>
+        </attribute>
+                <!-- UIPanel attributes -->
+        <!-- UIComponent attributes -->
+        <attribute>
+            <name>id</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+
+        <!-- HTML 4.0 universal attributes -->
+        <attribute><name>dir</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>lang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>style</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>title</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>styleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Corresponds to the HTML class attribute.</description>
+        </attribute>
+
+        <!-- HTML 4.0 event-handler attributes -->
+        <attribute><name>onclick</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>ondblclick</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousedown</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseup</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseover</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousemove</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseout</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeypress</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeydown</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeyup</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <!-- MyFaces extension: user role attributes -->
+        <attribute>
+            <name>enabledOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, no hyperlink is rendered but all nested
+                tags (=body) are rendered.
+            </description>
+        </attribute>
+        <attribute>
+            <name>visibleOnUserRole</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                If user is in given role, this component will be rendered
+                normally. If not, nothing is rendered and the body of this tag
+                will be skipped.
+            </description>
+        </attribute>
+
+     </tag>
+
+
+    <!-- newspaperTable -->
+    <tag>
+        <name>newspaperTable</name>
+        <tag-class>org.apache.myfaces.custom.newspaper.HtmlNewspaperTableTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            A data table for rendering long skinny tables as short wide table by
+            wrapping the table over a specified number of columns.
+        </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>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+
+        <!-- HTML 4.0 universal attributes -->
+        <attribute><name>dir</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>lang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>style</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>title</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>styleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Corresponds to the HTML class attribute.</description>
+        </attribute>
+
+        <!-- HTML 4.0 event-handler attributes -->
+        <attribute><name>onclick</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>ondblclick</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousedown</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseup</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseover</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousemove</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseout</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeypress</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeydown</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeyup</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <!-- HTML 4.0 table attributes -->
+        <attribute><name>align</name>           <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>border</name>          <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>bgcolor</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>cellpadding</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>cellspacing</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>datafld</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>datasrc</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>dataformatas</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>frame</name>           <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>rules</name>           <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>summary</name>         <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>width</name>           <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <!-- UIData attributes -->
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Supported types see JSF Spec 4.1.3</description>
+        </attribute>
+        <attribute>
+            <name>var</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>rows</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>first</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <!-- TableRenderer attributes -->
+        <attribute>
+            <name>columnClasses</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>footerClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>headerClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>rowClasses</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+
+        <attribute>
+            <name>newspaperColumns</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                The number of columns to wrap the table over.
+                Default: 1
+            </description>
+        </attribute>
+     </tag>
+
+
+
+<!--     Custom non-component tags     -->
+
+	<!-- aliasBean -->
+    <tag>
+        <name>aliasBean</name>
+        <tag-class>org.apache.myfaces.custom.aliasbean.AliasBeanTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            A tag that defines a new bean (alias) with a given value.
+            This allows you to design a subform with a generic (fictive) beans and to include it in all the pages where you use it.
+			You just need to make an alias to the real bean named after the generic bean before including the subform.
+
+			When used within an aliasBeansScope tag, this tag adds the alias to the aliasBeansScope.
+			This makes configuration with multiple aliasBeans easier to write.
+        </description>
+        <attribute>
+            <name>id</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>alias</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                The bean that will be set to the given value.
+                Example : #{holder}
+            </description>
+        </attribute>
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                The value that the alias can be set to.
+				This can be a string (like "toto") or a reference to an existing bean (like "#{myBean.member1}").
+            </description>
+        </attribute>
+    </tag>
+    <tag>
+        <name>aliasBeansScope</name>
+        <tag-class>org.apache.myfaces.custom.aliasbean.AliasBeansScopeTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            This is like an aliasBean tag, but instead of the alias/value attributes, you configure the aliases
+            by adding aliasBean tags in the body.
+
+            The aliasBeans should be declared right after this tag.
+        </description>
+        <attribute>
+            <name>id</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+    </tag>
+
+    <!-- bufferBean -->
+    <tag>
+        <name>buffer</name>
+        <tag-class>org.apache.myfaces.custom.buffer.BufferTag</tag-class>
+        <body-content>JSP</body-content>
+        <attribute>
+            <name>into</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+    </tag>
+
+    <!-- saveState -->
+    <tag>
+        <name>saveState</name>
+        <tag-class>org.apache.myfaces.custom.savestate.SaveStateTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            saveState enables you to persist beans and values longer than
+            request scope, but shorter than session scope. It is ideal for
+            persisting backing beans and values with the same scope as your view
+            components. It does this by saving the target state with the
+            component tree.
+        </description>
+        <attribute>
+            <name>id</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>value</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+    </tag>
+
+    <!-- updateActionListener -->
+    <tag>
+        <name>updateActionListener</name>
+        <tag-class>org.apache.myfaces.custom.updateactionlistener.UpdateActionListenerTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            Registers a org.apache.myfaces.custom.updateactionlistener.UpdateActionListener at the
+            parent component.
+        </description>
+        <attribute>
+            <name>property</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>value</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>converter</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+    </tag>
+
+
+<!-- validators -->
+
+
+        <!-- creditCard -->
+    <tag>
+        <name>validateCreditCard</name>
+        <tag-class>org.apache.myfaces.custom.creditcardvalidator.ValidateCreditCardTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+			A custom validator for creditCards, based upons Jakarta Commons.
+        </description>
+
+        <attribute>
+            <name>none</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+				none of the given cardtypes is allowed.
+            </description>
+        </attribute>
+        <attribute>
+            <name>amex</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+				american express cards
+            </description>
+        </attribute>
+        <attribute>
+            <name>visa</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+				validation for visa
+            </description>
+        </attribute>
+        <attribute>
+            <name>mastercard</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+				validation for mastercard
+            </description>
+        </attribute>
+        <attribute>
+            <name>discover</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+				validation for discover
+            </description>
+        </attribute>
+    </tag>
+
+    <!-- Validator for Email -->
+     <tag>
+        <name>validateEmail</name>
+        <tag-class>org.apache.myfaces.custom.emailvalidator.ValidateEmailTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+			A custom validator for email address format, based upons Jakarta Commons.
+        </description>
+	</tag>
+
+    <!-- Validator for ISBN -->
+     <!--tag>
+        <name>validateISBN</name>
+        <tag-class>org.apache.myfaces.custom.isbnvalidator.ValidateISBNTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+			A custom validator for isbn codes, based upons Jakarta Commons.
+        </description>
+	</tag -->
+
+    <!-- Validator for Regular Expressions -->
+    <tag>
+        <name>validateRegExpr</name>
+        <tag-class>org.apache.myfaces.custom.regexprvalidator.ValidateRegExprTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+			A custom validator for reg. expr., based upons Jakarta Commons.
+        </description>
+
+        <attribute>
+            <name>pattern</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+				the pattern, which is the base of the validation
+            </description>
+        </attribute>
+	</tag>
+
+    <!-- Validator for Equal -->
+     <tag>
+        <name>validateEqual</name>
+        <tag-class>org.apache.myfaces.custom.equalvalidator.ValidateEqualTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+			A custom validator for validations against foreign component values.
+        </description>
+
+        <attribute>
+            <name>for</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+				the id of the foreign component, which is needed for the validation
+            </description>
+        </attribute>
+	</tag>
+
+    <!-- swap_image -->
+    <tag>
+        <name>swapImage</name>
+        <tag-class>org.apache.myfaces.custom.swapimage.HtmlSwapImageTag</tag-class>
+        <body-content>JSP</body-content>
+        <attribute>
+            <name>swapImageUrl</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+				the url of the image displayed onmouseover
+            </description>
+        </attribute>
+        <attribute>
+            <name>activeImageUrl</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+				activeImage will be rendered if: swapImage is a direct child of commandNavigation
+                and the commandNavigation.isActive
+            </description>
+        </attribute>
+                <!-- UIGraphic attributes -->
+        <!-- UIComponent attributes -->
+        <attribute>
+            <name>id</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+        <attribute>
+            <name>url</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>URL of the image (see JSF.4.1.5).</description>
+        </attribute>
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>URL of the image (see JSF.4.1.5).</description>
+        </attribute>
+
+        <!-- HTML 4.0 universal attributes -->
+        <attribute><name>dir</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>lang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>style</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>title</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>styleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Corresponds to the HTML class attribute.</description>
+        </attribute>
+
+        <!-- HTML 4.0 img attributes that are not part of the JSF 1.1 specification -->
+        <attribute>
+            <name>align</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <name>border</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <name>hspace</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <name>vspace</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+        </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>
+        </attribute>
+        <attribute>
+            <name>height</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <name>ismap</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <name>longdesc</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+        </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>
+        </attribute>
+        <attribute>
+            <name>width</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+        </attribute>
+
+        <attribute><name>onclick</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>ondblclick</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeypress</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeydown</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeyup</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+    </tag>
+
+	<!-- columns -->
+    <tag>
+        <name>columns</name>
+        <tag-class>org.apache.myfaces.custom.crosstable.HtmlColumnsTag</tag-class>
+        <body-content>JSP</body-content>
+        <!-- UIComponent attributes -->
+        <attribute>
+            <name>id</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+        <!-- UIColumn attributes -->
+        <attribute>
+            <name>value</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Supported types see JSF Spec 4.1.3</description>
+        </attribute>
+        <attribute>
+            <name>var</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <!-- HTML 4.0 universal attributes -->
+        <attribute><name>dir</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>lang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>style</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>title</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>styleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Corresponds to the HTML class attribute.</description>
+        </attribute>
+
+        <!-- HTML 4.0 event-handler attributes -->
+        <attribute><name>onclick</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>ondblclick</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousedown</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseup</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseover</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousemove</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseout</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeypress</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeydown</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeyup</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        
+        <!-- header attributes -->
+        <attribute><name>headerdir</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>headerlang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>headerstyle</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>headertitle</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>headerstyleClass</name><required>false</required><rtexprvalue>false</rtexprvalue><description>Corresponds to the HTML class attribute.</description></attribute>
+        <attribute><name>headeronclick</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>headerondblclick</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>headeronmousedown</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>headeronmouseup</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>headeronmouseover</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>headeronmousemove</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>headeronmouseout</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>headeronkeypress</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>headeronkeydown</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>headeronkeyup</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <!-- footer attributes -->
+        <attribute><name>footerdir</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>footerlang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>footerstyle</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>footertitle</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>footerstyleClass</name><required>false</required><rtexprvalue>false</rtexprvalue><description>Corresponds to the HTML class attribute.</description></attribute>
+        <attribute><name>footeronclick</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>footerondblclick</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>footeronmousedown</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>footeronmouseup</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>footeronmouseover</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>footeronmousemove</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>footeronmouseout</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>footeronkeypress</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>footeronkeydown</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>footeronkeyup</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <attribute>
+            <name>width</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>This attribute can be used to set the width of the &lt;TD&gt; elements</description>
+        </attribute>        
+     </tag>
+
+
+  <!-- column -->
+    <tag>
+        <name>column</name>
+        <tag-class>org.apache.myfaces.custom.column.HtmlColumnTag</tag-class>
+        <body-content>JSP</body-content>
+        <!-- UIComponent attributes -->
+        <attribute>
+            <name>id</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Every component may have an unique id. Automatically created if omitted.</description>
+        </attribute>
+        <attribute>
+            <name>rendered</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>If false, this component will not be rendered.</description>
+        </attribute>
+        <attribute>
+            <name>binding</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <type>java.lang.String</type>
+            <description>Component binding.</description>
+        </attribute>
+
+        <!-- UIColumn attributes -->
+        <!-- HTML 4.0 universal attributes -->
+        <attribute><name>dir</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>lang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>style</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>title</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute>
+            <name>styleClass</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>Corresponds to the HTML class attribute.</description>
+        </attribute>
+
+        <!-- HTML 4.0 event-handler attributes -->
+        <attribute><name>onclick</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>ondblclick</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousedown</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseup</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseover</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmousemove</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onmouseout</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeypress</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeydown</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>onkeyup</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        
+        <!-- header attributes -->
+        <attribute><name>headerdir</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>headerlang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>headerstyle</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>headertitle</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>headerstyleClass</name><required>false</required><rtexprvalue>false</rtexprvalue><description>Corresponds to the HTML class attribute.</description></attribute>
+        <attribute><name>headeronclick</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>headerondblclick</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>headeronmousedown</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>headeronmouseup</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>headeronmouseover</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>headeronmousemove</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>headeronmouseout</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>headeronkeypress</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>headeronkeydown</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>headeronkeyup</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <!-- footer attributes -->
+        <attribute><name>footerdir</name>     <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>footerlang</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>footerstyle</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>footertitle</name>   <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>footerstyleClass</name><required>false</required><rtexprvalue>false</rtexprvalue><description>Corresponds to the HTML class attribute.</description></attribute>
+        <attribute><name>footeronclick</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>footerondblclick</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>footeronmousedown</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>footeronmouseup</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>footeronmouseover</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>footeronmousemove</name><required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>footeronmouseout</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>footeronkeypress</name> <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>footeronkeydown</name>  <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+        <attribute><name>footeronkeyup</name>    <required>false</required>  <rtexprvalue>false</rtexprvalue></attribute>
+
+        <attribute>
+            <name>width</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>This attribute can be used to set the width of the &lt;TD&gt; elements</description>
+        </attribute>        
+     </tag>
+
+</taglib>
\ No newline at end of file

Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/WEB-INF/web.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/WEB-INF/web.xml	2007-02-14 20:38:26 UTC (rev 9501)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/WEB-INF/web.xml	2007-02-14 22:31:10 UTC (rev 9502)
@@ -48,6 +48,11 @@
         <param-value>true</param-value>
     </context-param>
 
+	<context-param>
+      <param-name>facelets.LIBRARIES</param-name>
+      <param-value>/WEB-INF/tomahawk.taglib.xml</param-value>
+	</context-param>
+	
     <!-- <context-param>
         <param-name>facelets.LIBRARIES</param-name>
         <param-value>/WEB-INF/wiki.taglib.xml</param-value>

Added: labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/views/posting_new_body.xhtml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/views/posting_new_body.xhtml	                        (rev 0)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/views/posting_new_body.xhtml	2007-02-14 22:31:10 UTC (rev 9502)
@@ -0,0 +1,651 @@
+<!--
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2005, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+-->
+
+<div  xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:c="http://java.sun.com/jstl/core"
+      xmlns:h="http://java.sun.com/jsf/html"      
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:t="http://myfaces.apache.org/tomahawk"
+      xmlns:forums="http://www.jboss.com/products/jbossportal/forums"
+      class="bb"
+>
+<ui:composition template="/views/common/common.xhtml">
+<ui:define name="mainContent">
+
+
+<script language="JavaScript" type="text/javascript">
+&lt;!--
+// bbCode control by
+// subBlue design
+// www.subBlue.com
+
+// Startup variables
+var imageTag = false;
+var theSelection = false;
+
+// Check for Browser &amp; Platform for PC &amp; IE specific bits
+// More details from: http://www.mozilla.org/docs/web-developer/sniffer/browser_type.html
+var clientPC = navigator.userAgent.toLowerCase(); // Get client info
+var clientVer = parseInt(navigator.appVersion); // Get browser version
+
+var is_ie = ((clientPC.indexOf("msie") != -1) &amp;&amp; (clientPC.indexOf("opera") == -1));
+var is_nav = ((clientPC.indexOf('mozilla')!=-1) &amp;&amp; (clientPC.indexOf('spoofer')==-1)
+                &amp;&amp; (clientPC.indexOf('compatible') == -1) &amp;&amp; (clientPC.indexOf('opera')==-1)
+                &amp;&amp; (clientPC.indexOf('webtv')==-1) &amp;&amp; (clientPC.indexOf('hotjava')==-1));
+var is_moz = 0;
+
+var is_win = ((clientPC.indexOf("win")!=-1) || (clientPC.indexOf("16bit") != -1));
+var is_mac = (clientPC.indexOf("mac")!=-1);
+
+// Helpline messages
+b_help = "${resource.bbcode_b_help}";
+i_help = "${resource.bbcode_i_help}";
+u_help = "${resource.bbcode_u_help}";
+q_help = "${resource.bbcode_q_help}";
+c_help = "${resource.bbcode_c_help}";
+l_help = "${resource.bbcode_l_help}";
+o_help = "${resource.bbcode_o_help}";
+p_help = "${resource.bbcode_p_help}";
+w_help = "${resource.bbcode_w_help}";
+a_help = "${resource.bbcode_a_help}";
+s_help = "${resource.bbcode_s_help}";
+f_help = "${resource.bbcode_f_help}";
+
+// Define the bbCode tags
+bbcode = new Array();
+bbtags = new Array('[b]','[/b]','[i]','[/i]','[u]','[/u]','[quote]','[/quote]','[code]','[/code]','[list]','[/list]','[list=]','[/list]','[img]','[/img]','[url]','[/url]');
+imageTag = false;
+
+// Shows the help messages in the helpline window
+function helpline(help) {
+	document.post.helpbox.value = eval(help + "_help");
+}
+
+
+// Replacement for arrayname.length property
+function getarraysize(thearray) {
+	for (i = 0; i &lt; thearray.length; i++) {
+		if ((thearray[i] == "undefined") || (thearray[i] == "") || (thearray[i] == null))
+			return i;
+		}
+	return thearray.length;
+}
+
+// Replacement for arrayname.push(value) not implemented in IE until version 5.5
+// Appends element to the array
+function arraypush(thearray,value) {
+	thearray[ getarraysize(thearray) ] = value;
+}
+
+// Replacement for arrayname.pop() not implemented in IE until version 5.5
+// Removes and returns the last element of an array
+function arraypop(thearray) {
+	thearraysize = getarraysize(thearray);
+	retval = thearray[thearraysize - 1];
+	delete thearray[thearraysize - 1];
+	return retval;
+}
+
+
+function checkForm() {
+
+	formErrors = false;    
+
+	if (document.post["post:message"].value.length &lt; 2) {
+		formErrors = "${resource.Empty_message}";
+	}
+
+	if (formErrors) {
+		alert(formErrors);
+		return false;
+	} else {
+		bbstyle(-1);
+		//formObj.preview.disabled = true;
+		//formObj.submit.disabled = true;
+		return true;
+	}
+}
+
+function emoticon(text) {
+	var txtarea = document.post["post:message"];
+	text = ' ' + text + ' ';
+	if (txtarea.createTextRange &amp;&amp; txtarea.caretPos) {
+		var caretPos = txtarea.caretPos;
+		caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? caretPos.text + text + ' ' : caretPos.text + text;
+		txtarea.focus();
+	} else {
+		txtarea.value  += text;
+		txtarea.focus();
+	}
+}
+
+function bbfontstyle(bbopen, bbclose) {
+	var txtarea = document.post["post:message"];
+
+	if ((clientVer &gt;= 4) &amp;&amp; is_ie &amp;&amp; is_win) {
+		theSelection = document.selection.createRange().text;
+		if (!theSelection) {
+			txtarea.value += bbopen + bbclose;
+			txtarea.focus();
+			return;
+		}
+		document.selection.createRange().text = bbopen + theSelection + bbclose;
+		txtarea.focus();
+		return;
+	}
+	else if (txtarea.selectionEnd &amp;&amp; (txtarea.selectionEnd - txtarea.selectionStart &gt; 0))
+	{
+		mozWrap(txtarea, bbopen, bbclose);
+		return;
+	}
+	else
+	{
+		txtarea.value += bbopen + bbclose;
+		txtarea.focus();
+	}
+	storeCaret(txtarea);
+}
+
+
+function bbstyle(bbnumber) {
+	var txtarea = document.post["post:message"];
+
+	txtarea.focus();
+	donotinsert = false;
+	theSelection = false;
+	bblast = 0;
+
+	if (bbnumber == -1) { // Close all open tags &amp; default button names
+		while (bbcode[0]) {
+			butnumber = arraypop(bbcode) - 1;
+			txtarea.value += bbtags[butnumber + 1];
+			buttext = eval('document.post.addbbcode' + butnumber + '.value');
+			eval('document.post.addbbcode' + butnumber + '.value ="' + buttext.substr(0,(buttext.length - 1)) + '"');
+		}
+		imageTag = false; // All tags are closed including image tags :D
+		txtarea.focus();
+		return;
+	}
+
+	if ((clientVer &gt;= 4) &amp;&amp; is_ie &amp;&amp; is_win)
+	{
+		theSelection = document.selection.createRange().text; // Get text selection
+		if (theSelection) {
+			// Add tags around selection
+			document.selection.createRange().text = bbtags[bbnumber] + theSelection + bbtags[bbnumber+1];
+			txtarea.focus();
+			theSelection = '';
+			return;
+		}
+	}
+	else if (txtarea.selectionEnd &amp;&amp; (txtarea.selectionEnd - txtarea.selectionStart &gt; 0))
+	{
+		mozWrap(txtarea, bbtags[bbnumber], bbtags[bbnumber+1]);
+		return;
+	}
+	
+	// Find last occurance of an open tag the same as the one just clicked
+	for (i = 0; i &lt; bbcode.length; i++) {
+		if (bbcode[i] == bbnumber+1) {
+			bblast = i;
+			donotinsert = true;
+		}
+	}
+
+	if (donotinsert) {		// Close all open tags up to the one just clicked &amp; default button names
+		while (bbcode[bblast]) {
+				butnumber = arraypop(bbcode) - 1;
+				txtarea.value += bbtags[butnumber + 1];
+				buttext = eval('document.post.addbbcode' + butnumber + '.value');
+				eval('document.post.addbbcode' + butnumber + '.value ="' + buttext.substr(0,(buttext.length - 1)) + '"');
+				imageTag = false;
+			}
+			txtarea.focus();
+			return;
+	} else { // Open tags
+	
+		if (imageTag &amp;&amp; (bbnumber != 14)) {		// Close image tag before adding another
+			txtarea.value += bbtags[15];
+			lastValue = arraypop(bbcode) - 1;	// Remove the close image tag from the list
+			document.post.addbbcode14.value = "Img";	// Return button back to normal state
+			imageTag = false;
+		}
+		
+		// Open tag
+		txtarea.value += bbtags[bbnumber];
+		if ((bbnumber == 14) &amp;&amp; (imageTag == false)) imageTag = 1; // Check to stop additional tags after an unclosed image tag
+		arraypush(bbcode,bbnumber+1);
+		eval('document.post.addbbcode'+bbnumber+'.value += "*"');
+		txtarea.focus();
+		return;
+	}
+	storeCaret(txtarea);
+}
+
+// From http://www.massless.org/mozedit/
+function mozWrap(txtarea, open, close)
+{
+	var selLength = txtarea.textLength;
+	var selStart = txtarea.selectionStart;
+	var selEnd = txtarea.selectionEnd;
+	if (selEnd == 1 || selEnd == 2) 
+		selEnd = selLength;
+
+	var s1 = (txtarea.value).substring(0,selStart);
+	var s2 = (txtarea.value).substring(selStart, selEnd)
+	var s3 = (txtarea.value).substring(selEnd, selLength);
+	txtarea.value = s1 + open + s2 + close + s3;
+	return;
+}
+
+// Insert at Claret position. Code from
+// http://www.faqts.com/knowledge_base/view.phtml/aid/1052/fid/130
+function storeCaret(textEl) {
+	if (textEl.createTextRange) textEl.caretPos = document.selection.createRange().duplicate();
+}
+
+function selectOption(optionVal)
+{
+	document.post.o.value = optionVal;
+}
+
+function selectAttachment(attachmentVal)
+{
+	document.post.ATTACHMENT.value = attachmentVal;
+}
+
+//--&gt;
+</script>
+
+	<c:if test="#{newTopic.preview}">
+   			<ui:include src="/views/topics/posting_new_preview.xhtml"/>
+   			<br clear="all"/>
+	</c:if>
+
+
+<table border="0" cellpadding="3" cellspacing="1" width="100%" class="forumline">
+	<h:form id="post" enctype="multipart/form-data">		
+	    <!-- keeps the forum where this topic is being created in context, this is a control parameter -->
+		<input type="hidden" name="f" value="#{newTopic.forumId}"/>	      	
+				
+	    <!-- add Subject -->
+		<tr>
+	   		<td class="row1" width="22%">
+	   			<span class="gen">
+	   				<b>${resource.Subject}</b>
+	   			</span>
+	   		</td>
+	   		<td class="row2" width="78%">
+	   			<span class="gen">					
+					<h:inputText value="#{newTopic.subject}" size="45" maxlength="200" style="width:450px" tabindex="2" styleClass="post"/>
+				</span>
+	   		</td>
+		</tr>
+		
+		
+		<!-- Add Message -->
+		<tr>
+			<td class="row1" valign="top">
+			   <table width="100%" border="0" cellspacing="0" cellpadding="1">
+			      <tr>
+			         <td><span class="gen"><b>${resource.Message_body}</b></span></td>
+			      </tr>
+			      <tr>
+			         <td valign="middle" align="center"><br/>
+			            <table width="100" border="0" cellspacing="0" cellpadding="5">
+			               <tr align="center">
+			                  <td colspan="" class="gensmall"><b></b></td>
+			               </tr>			               			               
+			            </table>
+			         </td>
+			      </tr>
+			   </table>
+			</td>
+			<td class="row2" valign="top"><span class="gen"> <span class="genmed"> 
+			</span>
+			<table width="450" border="0" cellspacing="0" cellpadding="2">
+	         <tr align="center" valign="middle">
+	            <td><span class="genmed">
+				  <input type="button" class="button" accesskey="b" name="addbbcode0" value=" B "
+	                  style="font-weight:bold; width: 30px" onClick="bbstyle(0)" onMouseOver="helpline('b')"/>
+				  </span></td>
+	            <td><span class="genmed">
+				  <input type="button" class="button" accesskey="i" name="addbbcode2" value=" i "
+	                  style="font-style:italic; width: 30px" onClick="bbstyle(2)" onMouseOver="helpline('i')"/>
+				  </span></td>
+	            <td><span class="genmed">
+				  <input type="button" class="button" accesskey="u" name="addbbcode4" value=" u "
+	                  style="text-decoration: underline; width: 30px" onClick="bbstyle(4)" onMouseOver="helpline('u')"/>
+				  </span></td>
+	            <td><span class="genmed">
+				  <input type="button" class="button" accesskey="q" name="addbbcode6" value="Quote" style="width: 50px"
+	                  onClick="bbstyle(6)" onMouseOver="helpline('q')"/>
+				  </span></td>
+	            <td><span class="genmed">
+				  <input type="button" class="button" accesskey="c" name="addbbcode8" value="Code" style="width: 40px"
+	                  onClick="bbstyle(8)" onMouseOver="helpline('c')"/>
+				  </span></td>
+	            <td><span class="genmed">
+				  <input type="button" class="button" accesskey="l" name="addbbcode10" value="List" style="width: 40px"
+	                  onClick="bbstyle(10)" onMouseOver="helpline('l')"/>
+				  </span></td>
+	            <td><span class="genmed">
+				  <input type="button" class="button" accesskey="o" name="addbbcode12" value="List=" style="width: 40px"
+	                  onClick="bbstyle(12)" onMouseOver="helpline('o')"/>
+				  </span></td>
+	            <td><span class="genmed">
+				  <input type="button" class="button" accesskey="p" name="addbbcode14" value="Img" style="width: 40px"
+	                  onClick="bbstyle(14)" onMouseOver="helpline('p')"/>
+				  </span></td>
+	            <td><span class="genmed">
+				  <input type="button" class="button" accesskey="w" name="addbbcode16" value="URL"
+	                  style="text-decoration: underline; width: 40px" onClick="bbstyle(16)" onMouseOver="helpline('w')"/>
+				  </span></td>
+	         </tr>
+	         <tr>
+	            <td colspan="9">
+	               <table width="100%" border="0" cellspacing="0" cellpadding="0">
+	                  <tr>
+	                     <td><span class="genmed"> &#160;${resource.Font_color}:
+						<select name="addbbcode18"
+	                       onChange="bbfontstyle('[color=' + this.form.addbbcode18.options[this.form.addbbcode18.selectedIndex].value + ']', '[/color]');this.selectedIndex=0;"
+	                       onMouseOver="helpline('s')">
+	                  <option style="color:black; background-color: " value=""
+	                          class="genmed">${resource.color_default}</option>
+	                  <option style="color:darkred; background-color: " value="darkred"
+	                          class="genmed">${resource.color_dark_red}</option>
+	                  <option style="color:red; background-color: " value="red"
+	                          class="genmed">${resource.color_red}</option>
+	                  <option style="color:orange; background-color: " value="orange"
+	                          class="genmed">${resource.color_orange}</option>
+	                  <option style="color:brown; background-color: " value="brown"
+	                          class="genmed">${resource.color_brown}</option>
+	                  <option style="color:yellow; background-color: " value="yellow"
+	                          class="genmed">${resource.color_yellow}</option>
+	                  <option style="color:green; background-color: " value="green"
+	                          class="genmed">${resource.color_green}</option>
+	                  <option style="color:olive; background-color: " value="olive"
+	                          class="genmed">${resource.color_olive}</option>
+	                  <option style="color:cyan; background-color: " value="cyan"
+	                          class="genmed">${resource.color_cyan}</option>
+	                  <option style="color:blue; background-color: " value="blue"
+	                          class="genmed">${resource.color_blue}</option>
+	                  <option style="color:darkblue; background-color: " value="darkblue"
+	                          class="genmed">${resource.color_dark_blue}</option>
+	                  <option style="color:indigo; background-color: " value="indigo"
+	                          class="genmed">${resource.color_indigo}</option>
+	                  <option style="color:violet; background-color: " value="violet"
+	                          class="genmed">${resource.color_violet}</option>
+	                  <option style="color:white; background-color: " value="white"
+	                          class="genmed">${resource.color_white}</option>
+	                  <option style="color:black; background-color: " value="black"
+	                          class="genmed">${resource.color_black}</option>
+	                  </select> &#160;${resource.Font_size}:<select name="addbbcode20"
+	                                                              onChange="bbfontstyle('[size=' + this.form.addbbcode20.options[this.form.addbbcode20.selectedIndex].value + ']', '[/size]')"
+	                                                              onMouseOver="helpline('f')">
+	                        <option value="7" class="genmed">${resource.font_tiny}</option>
+	                        <option value="9" class="genmed">${resource.font_small}</option>
+	                        <option value="12" class="genmed" selected="true">${resource.font_normal}</option>
+	                        <option value="18" class="genmed">${resource.font_large}</option>
+	                        <option value="24" class="genmed">${resource.font_huge}</option>
+	                     </select>
+						</span></td>
+	                     <td nowrap="nowrap" align="right"><span class="gensmall"><a href="javascript:bbstyle(-1)"
+	                                                                                 class="genmed"
+	                                                                                 onMouseOver="helpline('a')">${resource.Close_Tags}</a></span>
+	                     </td>
+	                  </tr>
+	               </table>
+	            </td>
+	         </tr>
+	         <tr>
+	            <td colspan="9"><span class="gensmall">
+				  <input type="text" name="helpbox" size="45" maxlength="100" style="width:450px; font-size:10px"
+	                  class="helpline" value="${resource.Styles_tip}"/>
+				  </span></td>
+	         </tr>
+	         <tr>
+	            <td colspan="9">
+	              <span class="gen">
+					  <h:inputTextarea id="message" value="#{newTopic.message}" rows="15" cols="35" 
+					  style="width:450px" 
+					  tabindex="3" styleClass="post"
+		              onselect="storeCaret(this);" onkeyup="storeCaret(this);" onclick="storeCaret(this);">			              	
+		              </h:inputTextarea>	              
+				  </span>
+				</td>
+	         </tr>
+	      </table>
+		  </span>
+		 </td>
+	</tr>
+	
+	<!-- Add Options -->
+	<tr>
+	   <td class="row1" valign="top">
+	   	<span class="gen">
+	   		<b>${resource.Options}</b>
+	   	</span>
+	   </td>
+	   <td class="row2"><span class="gen"> </span>
+	      <table cellspacing="0" cellpadding="1" border="0">		         		         		         		         		         		         	         
+	            <tr>
+	               <td></td>
+	               <td>
+	               <span class="gen">
+	         	    	<span class="gen">${resource.Post_topic_as}:
+	         	    	    <h:selectOneRadio value="#{newTopic.topicType}" styleClass="gen">
+			            		<f:selectItem itemValue="0" itemLabel="Normal">
+			            			<f:verbatim>&#160;&#160;&#160;</f:verbatim>
+			            		</f:selectItem>			            		
+			            		<f:selectItem itemValue="1" itemLabel="Sticky">
+			            			<f:verbatim>&#160;&#160;&#160;</f:verbatim>
+			            		</f:selectItem>			            		
+			            		<f:selectItem itemValue="2" itemLabel="Announcement">
+			            			<f:verbatim>&#160;&#160;&#160;</f:verbatim>
+			            		</f:selectItem>			            		
+		            		</h:selectOneRadio>
+		            	</span>
+		            </span>
+	         	   </td>
+	            </tr>	         
+	      </table>
+	   </td>
+	</tr>
+
+
+	<!-- poll ui -->		
+	<forums:isAllowed fragment="acl://managePoll">	
+	<tr>
+   		<th class="thHead" colspan="2">${resource.Add_poll}</th>
+		</tr>
+		<tr>
+		   <td class="row1" colspan="2"><span class="gensmall">${resource.Add_poll_explain}</span></td>
+		</tr>
+		
+		
+		<!-- setup poll question -->
+		<tr>
+		   <td class="row1"><span class="gen"><b>${resource.Poll_question}</b></span></td>
+		   <td class="row2">
+		   		<span class="genmed">   			
+		   			<h:inputText value="#{newTopic.question}" size="50" maxlength="255" styleClass="post"/>
+		   		</span>
+		   </td>
+		</tr>
+		
+		
+		<!-- update poll options already added -->
+		<input type="hidden" name="o"/>
+		<c:forEach items="${newTopic.options}" var="optionRow" varStatus="idx">
+		   <tr>
+		      <td class="row1"><span class="gen"><b>${resource.Poll_option}</b></span></td>
+		      <td class="row2">
+		      		<span class="genmed">
+			            <input type="text" id="option_${idx.index}" name="option_${idx.index}" value="${optionRow}" size="50" class="post" maxlength="255"/>
+		            </span>&#160;            
+		            <h:commandButton action="#{newTopic.updateOption}" value="${resource.Update}" styleClass="liteoption"
+                            onclick="selectOption(${idx.index});"/>
+		            <h:commandButton action="#{newTopic.deleteOption}" value="${resource.Delete}" styleClass="liteoption"
+		            onclick="selectOption(${idx.index});"/>            
+		      </td>
+		   </tr>
+		</c:forEach>
+		
+		
+		<!-- add poll options -->
+		<tr>
+		   <td class="row1"><span class="gen"><b>${resource.Poll_option}</b></span></td>
+		   <td class="row2">
+		   	<span class="genmed">   		
+		   		<h:inputText value="#{newTopic.option}" size="50" maxlength="255" styleClass="post"/>
+		   	</span> &#160;   	
+		   	<h:commandButton action="#{newTopic.addOption}" value="${resource.Add_option}" styleClass="liteoption"/>
+		   </td>
+		</tr>
+		
+		
+		<!-- setup poll duration -->
+		<tr>
+		   <td class="row1">
+		   	<span class="gen"><b>${resource.Poll_for}</b></span>
+		   </td>
+		   <td class="row2">
+		   	<span class="genmed">   		
+		   		<h:inputText value="#{newTopic.activeDuration}" size="3" maxlength="3" styleClass="post"/>
+		   	</span>&#160;
+		    <span class="gen"><b>${resource.Days}</b></span> &#160; <span class="gensmall">${resource.Poll_for_explain}</span>
+		   </td>
+		</tr>
+		</forums:isAllowed>
+		
+	
+		<!-- attachment ui -->	
+		<forums:isAllowed fragment="acl://managePostAttachments">				
+		<tr>
+   			<th class="thHead" colspan="2">${resource.Add_attachment_title}</th>
+		</tr>
+		
+		<tr>
+		   <td class="row1" colspan="2">
+		   	<span class="gensmall">
+		   		${resource.Add_attachment_explain}<br/>
+		   	</span>
+		   </td>
+		</tr>
+		
+		
+		<!-- upload button -->
+		<tr>
+		   <td class="row1"><span class="gen"><b>${resource.File_name}</b></span></td>
+		   <td class="row2">
+		   	<span class="genmed">   		
+		   		<t:inputFileUpload value="#{newTopic.attachment}" size="40" styleClass="post"/>
+		   	</span>
+		   </td>
+		</tr>
+		
+		
+		<!-- comment -->
+		<tr>
+		   <td class="row1"><span class="gen"><b>${resource.File_comment}</b></span></td>
+		   <td class="row2">
+		   	<span class="genmed">   		
+		   		<h:inputTextarea value="#{newTopic.attachmentComment}" rows="3" cols="35" styleClass="post"/>
+		   	</span>
+		    <span class="gen">    	
+		    	<h:commandButton action="#{newTopic.addAttachment}" value="${resource.Add_attachment}" styleClass="liteoption"/>
+		    </span>
+		   </td>
+		</tr>
+		
+		<c:if test="#{newTopic.numberOfAttachments>0}">
+
+		<tr>
+		   <th class="thHead" colspan="2">${resource.Posted_attachments}</th>
+		</tr>
+		
+		<!-- uploaded list of attachments -->
+		<input type="hidden" name="ATTACHMENT"/>
+		<c:forEach items="#{newTopic.attachments}" var="attachRow" varStatus="idx">
+		   <tr>
+		      <td class="row1"><span class="gen"><b>${resource.File_name}</b></span></td>
+		      <td class="row2"><span class="gen">${attachRow.fileName}</span></td>
+		   </tr>
+		   <tr>
+		      <td class="row1"><span class="gen"><b>${resource.File_comment}</b></span></td>
+		      <td class="row2">
+			      <span class="genmed">	      	
+			      	<h:inputTextarea id="attachment_${idx.index}" value="#{attachRow.comment}" rows="3" cols="35" styleClass="post"/>   			
+			      </span>
+		      </td>
+		   </tr>
+		   <tr>
+		      <td class="row1"><span class="gen"><b>${resource.Options}</b></span></td>
+		      <td class="row2"><span class="genmed">			 	   	
+					&#160; 			
+					<h:commandButton action="#{newTopic.updateAttachment}" value="${resource.Update_comment}" styleClass="liteoption"
+                                        onclick="selectAttachment('${idx.index}');"/>	
+					&#160; 			
+					<h:commandButton action="#{newTopic.deleteAttachment}" value="${resource.Delete_attachment}" styleClass="liteoption" 
+					onclick="selectAttachment('${idx.index}');"/>            		
+		       </span>
+		      </td>
+		   </tr>   
+		</c:forEach>		
+		</c:if>	   	
+		</forums:isAllowed>
+	
+	
+	  <!-- hookup the buttons -->	
+	  <tr>
+	   <td class="catBottom" colspan="2" align="center" height="28"> 	   	  
+	      <h:commandButton action="#{newTopic.preview}" value="${resource.Preview}" 
+	      onclick="return checkForm(this.parentNode)" 
+	      styleClass="mainoption"
+	      tabindex="5"/>
+	      &#160;
+	      <!--TODO: Missing execution of javascript checking form - onclick="return checkForm(this.parentNode)" -->
+	      <h:commandButton action="#{newTopic.execute}" value="${resource.Submit}" 	      
+	      styleClass="mainoption"
+	      accesskey="s" tabindex="6"/>	      	
+	      &#160;
+	      <h:commandButton action="#{newTopic.cancel}" value="${resource.Cancel}" accesskey="c" tabindex="7" styleClass="mainoption"/>	      
+	   </td>
+	</tr>
+	
+	<table width="100%" cellspacing="2" border="0" align="center" cellpadding="2">
+	   <tr>
+	      <td align="right" valign="top"><span class="gensmall"></span></td>
+	   </tr>
+	</table>
+	
+</h:form>
+</table>
+
+</ui:define>
+</ui:composition>
+
+</div>
\ No newline at end of file

Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/views/wiki_attach.xhtml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/views/wiki_attach.xhtml	2007-02-14 20:38:26 UTC (rev 9501)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/views/wiki_attach.xhtml	2007-02-14 22:31:10 UTC (rev 9502)
@@ -11,12 +11,11 @@
        		<h:outputText value="#{wikiDiff.diff}" escape="false"/>
 		</h:panelGroup>
 		
-		<h:form>
+		<h:form id="uploadForm" enctype="multipart/form-data">
 			<t:inputFileUpload id="file"
             	value="#{wikiEdit.newFile}"
-            	storage="file"
             	required="true"/>
-            <h:commandButton value="#{msg.addFile}" action="#{wikiEdit.addFile}" />
+            <t:commandButton value="#{msg.addFile}" action="#{wikiEdit.addFile}" />
 		</h:form>
 		
 		<h:form>

Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/etc/org/jboss/wiki/wikiPlugins.properties
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/etc/org/jboss/wiki/wikiPlugins.properties	2007-02-14 20:38:26 UTC (rev 9501)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/etc/org/jboss/wiki/wikiPlugins.properties	2007-02-14 22:31:10 UTC (rev 9502)
@@ -7,7 +7,7 @@
 #wikiHome = /portal/index.html?ctrl:id=window.default.WikiPortletWindow&ctrl:type=action
 #wikiHome = /portal/index.html?ctrl:cmd=action&ctrl:window=default.wiki.WikiPortletWindow
 #wikiHome = /portal/portal/default/wiki/WikiPortletWindow?action=1
-wikiHome = /portal/portal/default/wiki/WikiPortletWindow?action=1&org.apache.myfaces.portlet.MyFacesGenericPortlet.VIEW_ID=%2Fviews%2Fwiki_view.xhtml
+wikiHome = /portal/default/wiki/WikiPortletWindow?action=1&org.apache.myfaces.portlet.MyFacesGenericPortlet.VIEW_ID=%2Fviews%2Fwiki_view.xhtml
 #number of days that should be included in recent changes plugin
 recentDays = 30
 notification.fromEmail = do-not-reply at labs.jboss.org

Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileDSCommons.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileDSCommons.java	2007-02-14 20:38:26 UTC (rev 9501)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileDSCommons.java	2007-02-14 22:31:10 UTC (rev 9502)
@@ -25,14 +25,18 @@
 import java.net.URLDecoder;
 import java.net.URLEncoder;
 
+import org.jboss.logging.Logger;
+
 public class FileDSCommons {
 
 	private static final String SLASH = "/";
-	
+
 	private static final String ENCODING = "UTF-8";
-	
+
 	private static String translatedSlash;
 
+	private final static Logger log = Logger.getLogger(FileDSCommons.class);
+
 	static {
 		try {
 			translatedSlash = URLEncoder.encode(SLASH, ENCODING);
@@ -41,12 +45,11 @@
 			e.printStackTrace();
 		}
 	}
-	
+
 	public static String translateToFileName(String pageName) {
-		System.out.println(pageName);
-		
 		try {
-			return URLEncoder.encode(pageName, ENCODING).replaceAll(translatedSlash, SLASH);
+			return URLEncoder.encode(pageName, ENCODING).replaceAll(
+					translatedSlash, SLASH);
 		} catch (UnsupportedEncodingException e) {
 			e.printStackTrace();
 			return pageName;
@@ -56,7 +59,8 @@
 	public static String translateToPageName(String fileName) {
 
 		try {
-			return URLDecoder.decode(fileName.replaceAll(SLASH, translatedSlash), ENCODING);
+			return URLDecoder.decode(fileName
+					.replaceAll(SLASH, translatedSlash), ENCODING);
 		} catch (UnsupportedEncodingException e) {
 			e.printStackTrace();
 			return fileName;

Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileDirWikiPageDictionary.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileDirWikiPageDictionary.java	2007-02-14 20:38:26 UTC (rev 9501)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileDirWikiPageDictionary.java	2007-02-14 22:31:10 UTC (rev 9502)
@@ -100,7 +100,7 @@
 	}
 
 	public String getRealName(String uid) {
-		log.info("Real: "+uid + " = "+root.getRealName(getQueue(uid)));
+		log.debug("Real: "+uid + " = "+root.getRealName(getQueue(uid)));
 		return root.getRealName(getQueue(uid));
 	}
 
@@ -116,7 +116,7 @@
 	}
 
 	public String getUid(String realName) {
-		log.info("Uid: "+realName + " = "+root.getUid(getQueue(realName)));
+		log.debug("Uid: "+realName + " = "+root.getUid(getQueue(realName)));
 		return root.getUid(getQueue(realName));
 	}
 
@@ -233,7 +233,7 @@
 			
 			String newPageUid = uidQueue.poll();
 
-			log.info("renaming: "+newPageUid+" to "+newName);
+			log.debug("renaming: "+newPageUid+" to "+newName);
 			
 			if (childrenRev.get(newName) != null) {
 				throw new PageRenamingException("There is already a page("

Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/JBossPortalCredentials.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/JBossPortalCredentials.java	2007-02-14 20:38:26 UTC (rev 9501)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/JBossPortalCredentials.java	2007-02-14 22:31:10 UTC (rev 9502)
@@ -38,6 +38,7 @@
 import org.jboss.portal.identity.UserProfileModule;
 import org.jboss.portlet.JBossActionRequest;
 import org.jboss.portlet.JBossRenderRequest;
+import org.jboss.wiki.portlet.MultipartRequestWrapper;
 
 /**
  * JBossPortalCredentials.java
@@ -55,7 +56,7 @@
 	
 	private final static Logger log = Logger.getLogger(JBossPortalCredentials.class);
 	
-	private static final String ADMIN_ROLE_NAME = "admin";
+	private static final String ADMIN_ROLE_NAME = "Admin";
 
 	public JBossPortalCredentials () throws NamingException {
 		userModule = (UserModule)new InitialContext().lookup("java:portal/UserModule");
@@ -110,7 +111,7 @@
 		}
 		
 		try {
-			return membershipModule.findRoleMembers(ADMIN_ROLE_NAME, 0, 1, user.getUserName()).size() == 1;
+			return membershipModule.getUsers(roleModule.findRoleByName(ADMIN_ROLE_NAME)).contains(user);
 		} catch (IdentityException e) {
 			log.error(e);
 			return false;
@@ -139,6 +140,10 @@
 	@Override
 	public void setParam(Object param) {
 		
+		if (param instanceof MultipartRequestWrapper) {
+			param  = ((MultipartRequestWrapper)param).getRequest();
+		}
+		
 		if (param instanceof JBossActionRequest) {
 			JBossActionRequest jrReq = (JBossActionRequest) param;
 

Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/TrailPlugin.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/TrailPlugin.java	2007-02-14 20:38:26 UTC (rev 9501)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/TrailPlugin.java	2007-02-14 22:31:10 UTC (rev 9502)
@@ -31,8 +31,6 @@
 	public WikiPage process(WikiPage wikiPage, WikiSession wikiSession) {
 		String trailAttrName = wikiPage.getLangCode()+":TRAIL";
 		
-		log.info("trail");
-		
 		WikiPage newPage = null;
 		try {
 			newPage = (WikiPage) wikiPage.clone();
@@ -42,7 +40,7 @@
 
 		String trail = "["+wikiEngine.getUid(newPage.getName(), newPage.getLangCode())+"] ";
 		
-		log.info("Show trail: " + trail);
+		log.debug("Show trail: " + trail);
 		
 		if (wikiSession.getAttribute(trailAttrName) != null) {
 			String oldTrail = (String)wikiSession.getAttribute(trailAttrName);

Added: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/portlet/MultipartRequestWrapper.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/portlet/MultipartRequestWrapper.java	                        (rev 0)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/portlet/MultipartRequestWrapper.java	2007-02-14 22:31:10 UTC (rev 9502)
@@ -0,0 +1,246 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.wiki.portlet;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
+import java.security.Principal;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+import javax.portlet.ActionRequest;
+import javax.portlet.PortalContext;
+import javax.portlet.PortletMode;
+import javax.portlet.PortletPreferences;
+import javax.portlet.PortletSession;
+import javax.portlet.WindowState;
+
+/**
+ * MultipartRequestWrapper.java
+ * 
+ * @author <a href="mailto:tomasz.szymanski at jboss.com">Tomasz Szymanski</a>
+ */
+
+public class MultipartRequestWrapper implements ActionRequest {
+
+	private ActionRequest request;
+
+	private Map paramMap;
+
+	public MultipartRequestWrapper(ActionRequest request, Map paramMap) {
+		this.request = request;
+		this.paramMap = paramMap;
+	}
+
+	public String getCharacterEncoding() {
+		return request.getCharacterEncoding();
+	}
+
+	public int getContentLength() {
+		return request.getContentLength();
+	}
+
+	public String getContentType() {
+		return request.getContentType();
+	}
+
+	public InputStream getPortletInputStream() throws IOException {
+		return request.getPortletInputStream();
+	}
+
+	public BufferedReader getReader() throws UnsupportedEncodingException,
+			IOException {
+		return request.getReader();
+	}
+
+	public void setCharacterEncoding(String enc)
+			throws UnsupportedEncodingException {
+		request.setCharacterEncoding(enc);
+	}
+
+	public Object getAttribute(String name) {
+		return request.getAttribute(name);
+	}
+
+	public Enumeration getAttributeNames() {
+		return request.getAttributeNames();
+	}
+
+	public String getAuthType() {
+		return request.getAuthType();
+	}
+
+	public String getContextPath() {
+		return request.getContextPath();
+	}
+
+	public Locale getLocale() {
+		return request.getLocale();
+	}
+
+	public Enumeration getLocales() {
+		return request.getLocales();
+	}
+
+	public String getParameter(String name) {
+		if (name == null) {
+			return null;
+		}
+		String[] value = (String[]) paramMap.get(name);
+		return value == null ? null : value[0];
+	}
+
+	public Map getParameterMap() {
+		return paramMap;
+	}
+
+	public Enumeration getParameterNames() {
+		return new MyEnumeration(paramMap.keySet());
+	}
+
+	public String[] getParameterValues(String name) {
+		return (String[]) paramMap.get(name);
+	}
+
+	public PortalContext getPortalContext() {
+		return request.getPortalContext();
+	}
+
+	public PortletMode getPortletMode() {
+		return request.getPortletMode();
+	}
+
+	public PortletSession getPortletSession() {
+		return request.getPortletSession();
+	}
+
+	public PortletSession getPortletSession(boolean create) {
+		return request.getPortletSession(create);
+	}
+
+	public PortletPreferences getPreferences() {
+		return request.getPreferences();
+	}
+
+	public Enumeration getProperties(String name) {
+		return request.getProperties(name);
+	}
+
+	public String getProperty(String name) {
+		return request.getProperty(name);
+	}
+
+	public Enumeration getPropertyNames() {
+		return request.getPropertyNames();
+	}
+
+	public String getRemoteUser() {
+		return request.getRemoteUser();
+	}
+
+	public String getRequestedSessionId() {
+		return request.getRequestedSessionId();
+	}
+
+	public String getResponseContentType() {
+		return request.getResponseContentType();
+	}
+
+	public Enumeration getResponseContentTypes() {
+		return request.getResponseContentTypes();
+	}
+
+	public String getScheme() {
+		return request.getScheme();
+	}
+
+	public String getServerName() {
+		return request.getServerName();
+	}
+
+	public int getServerPort() {
+		return request.getServerPort();
+	}
+
+	public Principal getUserPrincipal() {
+		return request.getUserPrincipal();
+	}
+
+	public WindowState getWindowState() {
+		return request.getWindowState();
+	}
+
+	public boolean isPortletModeAllowed(PortletMode mode) {
+		return request.isPortletModeAllowed(mode);
+	}
+
+	public boolean isRequestedSessionIdValid() {
+		return request.isRequestedSessionIdValid();
+	}
+
+	public boolean isSecure() {
+		return request.isSecure();
+	}
+
+	public boolean isUserInRole(String role) {
+		return request.isUserInRole(role);
+	}
+
+	public boolean isWindowStateAllowed(WindowState state) {
+		return request.isWindowStateAllowed(state);
+	}
+
+	public void removeAttribute(String name) {
+		request.removeAttribute(name);
+	}
+
+	public void setAttribute(String name, Object o) {
+		request.setAttribute(name, o);
+	}
+
+	public Object getRequest() {
+		return request;
+	}
+
+}
+
+class MyEnumeration implements Enumeration {
+	private Iterator iter;
+
+	public MyEnumeration(Set set) {
+		this.iter = set.iterator();
+	}
+
+	public boolean hasMoreElements() {
+		return iter.hasNext();
+	}
+
+	public Object nextElement() {
+		return iter.next();
+	}
+}

Modified: labs/jbosslabs/trunk/portal-extensions/portal-default/src/web/WEB-INF/default-object.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/portal-default/src/web/WEB-INF/default-object.xml	2007-02-14 20:38:26 UTC (rev 9501)
+++ labs/jbosslabs/trunk/portal-extensions/portal-default/src/web/WEB-INF/default-object.xml	2007-02-14 22:31:10 UTC (rev 9502)
@@ -384,17 +384,17 @@
 			</window>
 		</page>
 	</deployment-->
-	<!--deployment>
+	<deployment>
 		<if-exists>overwrite</if-exists>
 		<parent-ref>default</parent-ref>
 		<page>
 			<page-name>admin</page-name>
-			<window>
+			<!--<window>
 				<window-name>FreezoneNavigationWindow</window-name>
 				<instance-ref>FreezoneNavigationInstance</instance-ref>
 				<region>left</region>
 				<height>0</height>
-			</window>
+			</window>-->
 			<window>
 				<window-name>RolePortletWindowDefaultAdmin</window-name>
 				<instance-ref>RolePortletInstance</instance-ref>
@@ -440,5 +440,5 @@
 				</policy-permission>
 			</security-constraint>
 		</page>
-	</deployment-->
+	</deployment>
 </deployments>




More information about the jboss-svn-commits mailing list