<?xml version='1.0' encoding='UTF-8'?>

<!--
 Copyright 2004 Sun Microsystems, Inc. All rights reserved.
 SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

<!-- =========== FULL CONFIGURATION FILE ================================== -->

<faces-config xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xi="http://www.w3.org/2001/XInclude"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-facesconfig_1_2.xsd"
    version="1.2">

    <!-- Generic User Interface Components -->


    <component>

        <component-type>javax.faces.Column</component-type>
        <component-class>javax.faces.component.UIColumn</component-class>
        <facet>
            <facet-name>header</facet-name>
        </facet>
        <facet>
            <facet-name>footer</facet-name>
        </facet>

        <xi:include href="uicolumn-props.xml" xpointer="xpointer(/root/*)"/>

        <component-extension>
            <component-family>javax.faces.Column</component-family>
        </component-extension>

    </component>

    <component>

        <component-type>javax.faces.Command</component-type>
        <component-class>javax.faces.component.UICommand</component-class>

        <xi:include href="uicommand-props.xml" xpointer="xpointer(/root/*)"/>

        <component-extension>
            <component-family>javax.faces.Command</component-family>
            <renderer-type>javax.faces.Button</renderer-type>
        </component-extension>

    </component>

    <component>

        <component-type>javax.faces.Data</component-type>
        <component-class>javax.faces.component.UIData</component-class>

        <xi:include href="uidata-props.xml" xpointer="xpointer(/root/*)"/>

        <component-extension>
            <component-family>javax.faces.Data</component-family>
            <renderer-type>javax.faces.Table</renderer-type>
        </component-extension>

    </component>

    <component>

        <component-type>javax.faces.Form</component-type>
        <component-class>javax.faces.component.UIForm</component-class>

        <xi:include href="uiform-props.xml" xpointer="xpointer(/root/*)"/>

        <component-extension>
            <component-family>javax.faces.Form</component-family>
            <renderer-type>javax.faces.Form</renderer-type>
        </component-extension>

    </component>

    <component>

        <component-type>javax.faces.Graphic</component-type>
        <component-class>javax.faces.component.UIGraphic</component-class>

        <xi:include href="uigraphic-props.xml" xpointer="xpointer(/root/*)"/>

        <component-extension>
            <component-family>javax.faces.Graphic</component-family>
            <renderer-type>javax.faces.Image</renderer-type>
        </component-extension>

    </component>

    <component>

        <component-type>javax.faces.Input</component-type>
        <component-class>javax.faces.component.UIInput</component-class>

        <xi:include href="uiinput-props.xml" xpointer="xpointer(/root/*)"/>

        <component-extension>
            <component-family>javax.faces.Input</component-family>
            <renderer-type>javax.faces.Text</renderer-type>
        </component-extension>

    </component>

    <component>

        <component-type>javax.faces.Message</component-type>
        <component-class>javax.faces.component.UIMessage</component-class>

        <xi:include href="uimessage-props.xml" xpointer="xpointer(/root/*)"/>

        <component-extension>
            <component-family>javax.faces.Message</component-family>
            <renderer-type>javax.faces.Message</renderer-type>
        </component-extension>

    </component>

    <component>

        <component-type>javax.faces.Messages</component-type>
        <component-class>javax.faces.component.UIMessages</component-class>

        <xi:include href="uimessages-props.xml" xpointer="xpointer(/root/*)"/>

        <component-extension>
            <component-family>javax.faces.Messages</component-family>
            <renderer-type>javax.faces.Messages</renderer-type>
        </component-extension>

    </component>

    <component>

        <component-type>javax.faces.NamingContainer</component-type>
        <component-class>javax.faces.component.UINamingContainer</component-class>

        <xi:include href="uinamingcontainer-props.xml" xpointer="xpointer(/root/*)"/>

        <component-extension>
            <component-family>javax.faces.NamingContainer</component-family>
        </component-extension>

    </component>

    <component>

        <component-type>javax.faces.Output</component-type>
        <component-class>javax.faces.component.UIOutput</component-class>

        <xi:include href="uioutput-props.xml" xpointer="xpointer(/root/*)"/>

        <component-extension>
            <component-family>javax.faces.Output</component-family>
            <renderer-type>javax.faces.Text</renderer-type>
        </component-extension>

    </component>

    <component>

        <component-type>javax.faces.Panel</component-type>
        <component-class>javax.faces.component.UIPanel</component-class>

        <xi:include href="uipanel-props.xml" xpointer="xpointer(/root/*)"/>

        <component-extension>
            <component-family>javax.faces.Panel</component-family>
        </component-extension>

    </component>

    <component>

        <component-type>javax.faces.Parameter</component-type>
        <component-class>javax.faces.component.UIParameter</component-class>

        <xi:include href="uiparameter-props.xml" xpointer="xpointer(/root/*)"/>

        <component-extension>
            <component-family>javax.faces.Parameter</component-family>
        </component-extension>

    </component>

    <component>

        <component-type>javax.faces.SelectBoolean</component-type>
        <component-class>javax.faces.component.UISelectBoolean</component-class>

        <xi:include href="uiselectboolean-props.xml" xpointer="xpointer(/root/*)"/>

        <component-extension>
            <component-family>javax.faces.SelectBoolean</component-family>
            <renderer-type>javax.faces.Checkbox</renderer-type>
        </component-extension>

    </component>

    <component>

        <component-type>javax.faces.SelectItem</component-type>
        <component-class>javax.faces.component.UISelectItem</component-class>

        <xi:include href="uiselectitem-props.xml" xpointer="xpointer(/root/*)"/>

        <component-extension>
            <component-family>javax.faces.SelectItem</component-family>
        </component-extension>

    </component>

    <component>

        <component-type>javax.faces.SelectItems</component-type>
        <component-class>javax.faces.component.UISelectItems</component-class>

        <xi:include href="uiselectitems-props.xml" xpointer="xpointer(/root/*)"/>

        <component-extension>
            <component-family>javax.faces.SelectItems</component-family>
        </component-extension>

    </component>

    <component>

        <component-type>javax.faces.SelectMany</component-type>
        <component-class>javax.faces.component.UISelectMany</component-class>

        <xi:include href="uiselectmany-props.xml" xpointer="xpointer(/root/*)"/>

        <component-extension>
            <component-family>javax.faces.SelectMany</component-family>
            <renderer-type>javax.faces.Listbox</renderer-type>
        </component-extension>

    </component>

    <component>

        <component-type>javax.faces.SelectOne</component-type>
        <component-class>javax.faces.component.UISelectOne</component-class>

        <xi:include href="uiselectone-props.xml" xpointer="xpointer(/root/*)"/>

        <component-extension>
            <component-family>javax.faces.SelectOne</component-family>
            <renderer-type>javax.faces.Menu</renderer-type>
        </component-extension>

    </component>

    <component>

        <component-type>javax.faces.ViewRoot</component-type>
        <component-class>javax.faces.component.UIViewRoot</component-class>

        <xi:include href="uiviewroot-props.xml" xpointer="xpointer(/root/*)"/>

        <component-extension>
            <component-family>javax.faces.ViewRoot</component-family>
        </component-extension>

    </component>


    <!-- Concrete HTML Components -->


    <component>

        <description>
            <![CDATA[<p>Represents an HTML <code>input</code> element
      for a button of type <code>submit</code> or <code>reset</code>.
      The label text is specified by the component value.</p>]]>
        </description>
        <display-name>Command Button</display-name>
        <component-type>javax.faces.HtmlCommandButton</component-type>
        <component-class>javax.faces.component.html.HtmlCommandButton</component-class>

        <xi:include href="uicommand-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="core-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="events-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="focus-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="i18n-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="input-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="command-button-props.xml" xpointer="xpointer(/root/*)"/>

        <component-extension>
            <base-component-type>javax.faces.Command</base-component-type>
            <renderer-type>javax.faces.Button</renderer-type>
        </component-extension>

    </component>

    <component>

        <description>
            <![CDATA[<p>Represents an HTML <code>a</code> element for a hyperlink that acts
      like a submit button.  This component must be placed inside
      a form, and requires JavaScript to be enabled in the client.</p>]]>
        </description>
        <display-name>Command Hyperlink</display-name>
        <component-type>javax.faces.HtmlCommandLink</component-type>
        <component-class>javax.faces.component.html.HtmlCommandLink</component-class>

        <xi:include href="uicommand-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="core-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="events-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="focus-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="i18n-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="link-props.xml" xpointer="xpointer(/root/*)"/>

        <component-extension>
            <base-component-type>javax.faces.Command</base-component-type>
            <renderer-type>javax.faces.Link</renderer-type>
        </component-extension>

    </component>

    <component>

        <description>
            <![CDATA[<p>Represents a set of repeating data (segregated into
      columns by child UIColumn components) that will
      be rendered in an HTML <code>table</code> element.</p>]]>
        </description>
        <display-name>Data Table</display-name>
        <component-type>javax.faces.HtmlDataTable</component-type>
        <component-class>javax.faces.component.html.HtmlDataTable</component-class>

        <xi:include href="uidata-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="core-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="events-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="i18n-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="table-props.xml" xpointer="xpointer(/root/*)"/>

        <component-extension>
            <base-component-type>javax.faces.Data</base-component-type>
            <renderer-type>javax.faces.Table</renderer-type>
        </component-extension>

    </component>

    <component>

        <description>
            <![CDATA[<p>Represents an HTML <code>form</code> element.  Child input components
      will be submitted unless they have been disabled.</p>]]>
        </description>
        <display-name>Form</display-name>
        <component-type>javax.faces.HtmlForm</component-type>
        <component-class>javax.faces.component.html.HtmlForm</component-class>

        <xi:include href="uiform-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="core-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="events-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="i18n-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="form-form-props.xml" xpointer="xpointer(/root/*)"/>

        <component-extension>
            <base-component-type>javax.faces.Form</base-component-type>
            <renderer-type>javax.faces.Form</renderer-type>
        </component-extension>

    </component>

    <component>

        <description>
            <![CDATA[<p>Represents an HTML <code>img</code> element, used to retrieve
      and render a graphical image.</p>]]>
        </description>
        <display-name>Graphic Image</display-name>
        <component-type>javax.faces.HtmlGraphicImage</component-type>
        <component-class>javax.faces.component.html.HtmlGraphicImage</component-class>

        <xi:include href="uigraphic-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="core-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="events-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="i18n-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="graphic-image-props.xml" xpointer="xpointer(/root/*)"/>

        <component-extension>
            <base-component-type>javax.faces.Graphic</base-component-type>
            <renderer-type>javax.faces.Image</renderer-type>
        </component-extension>

    </component>

    <component>

        <description>
            <![CDATA[<p>Represents an HTML <code>input</code> element
      of type <code>hidden</code>.</p>]]>
        </description>
        <display-name>Input Hidden</display-name>
        <component-type>javax.faces.HtmlInputHidden</component-type>
        <component-class>javax.faces.component.html.HtmlInputHidden</component-class>

        <xi:include href="uiinput-props.xml" xpointer="xpointer(/root/*)"/>

        <component-extension>
            <base-component-type>javax.faces.Input</base-component-type>
            <renderer-type>javax.faces.Hidden</renderer-type>
        </component-extension>

    </component>

    <component>

        <description>
            <![CDATA[<p>Represents an HTML <code>input</code> element
      of type <code>password</code>.  On a redisplay,
      any previously entered value will <em>not</em>
      be rendered (for security reasons) unless the
      <code>redisplay</code> property is set to
      <code>true</code>.</p>]]>
        </description>
        <display-name>Input Secret</display-name>
        <component-type>javax.faces.HtmlInputSecret</component-type>
        <component-class>javax.faces.component.html.HtmlInputSecret</component-class>

        <xi:include href="uiinput-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="core-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="events-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="focus-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="i18n-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="input-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="text-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="input-secret-props.xml" xpointer="xpointer(/root/*)"/>

        <component-extension>
            <base-component-type>javax.faces.Input</base-component-type>
            <renderer-type>javax.faces.Secret</renderer-type>
        </component-extension>

    </component>

    <component>

        <description>
            <![CDATA[<p>Represents an HTML <code>input</code> element
      of type <code>text</code>.</p>]]>
        </description>
        <display-name>Input Text</display-name>
        <component-type>javax.faces.HtmlInputText</component-type>
        <component-class>javax.faces.component.html.HtmlInputText</component-class>

        <xi:include href="uiinput-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="core-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="events-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="focus-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="i18n-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="input-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="text-props.xml" xpointer="xpointer(/root/*)"/>

        <component-extension>
            <base-component-type>javax.faces.Input</base-component-type>
            <renderer-type>javax.faces.Text</renderer-type>
        </component-extension>

    </component>

    <component>

        <description>
            <![CDATA[<p>Represents an HTML <code>textarea</code> element.</p>]]>
        </description>
        <display-name>Input Textarea</display-name>
        <component-type>javax.faces.HtmlInputTextarea</component-type>
        <component-class>javax.faces.component.html.HtmlInputTextarea</component-class>

        <xi:include href="uiinput-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="core-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="events-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="focus-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="i18n-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="input-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="input-textarea-props.xml" xpointer="xpointer(/root/*)"/>

        <component-extension>
            <base-component-type>javax.faces.Input</base-component-type>
            <renderer-type>javax.faces.Textarea</renderer-type>
        </component-extension>

    </component>

    <component>

        <display-name>Message</display-name>
        <component-type>javax.faces.HtmlMessage</component-type>
        <component-class>javax.faces.component.html.HtmlMessage</component-class>

        <xi:include href="uimessage-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="core-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="message-message-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="i18n-props.xml" xpointer="xpointer(/root/*)"/>

        <component-extension>
            <base-component-type>javax.faces.Message</base-component-type>
            <renderer-type>javax.faces.Message</renderer-type>
        </component-extension>

    </component>

    <component>

        <display-name>Messages</display-name>
        <component-type>javax.faces.HtmlMessages</component-type>
        <component-class>javax.faces.component.html.HtmlMessages</component-class>

        <xi:include href="uimessages-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="core-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="message-message-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="i18n-props.xml" xpointer="xpointer(/root/*)"/>

        <component-extension>
            <base-component-type>javax.faces.Messages</base-component-type>
            <renderer-type>javax.faces.Messages</renderer-type>
        </component-extension>

    </component>

    <component>

        <description>
            <![CDATA[<p>Represents a component that looks up a localized message in a
      resource bundle, optionally uses it as a
      <code>MessageFormat</code> pattern string and substitutes in
      parameter values from nested <em>UIParameter</em> components, and
      renders the result.  If the "dir" or "lang" attributes are
      present, render a <code>span</code> element and pass them through
      as attributes on the span.</p>]]>
        </description>
        <display-name>Output Format</display-name>
        <component-type>javax.faces.HtmlOutputFormat</component-type>
        <component-class>javax.faces.component.html.HtmlOutputFormat</component-class>

        <xi:include href="uioutput-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="core-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="output-format-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="i18n-props.xml" xpointer="xpointer(/root/*)"/>

        <component-extension>
            <base-component-type>javax.faces.Output</base-component-type>
            <renderer-type>javax.faces.Format</renderer-type>
        </component-extension>

    </component>

    <component>

        <description>
            <![CDATA[<p>Represents an HTML <code>label</code> element, used to define
      an accessible label for a corresponding input element.</p>]]>
        </description>
        <display-name>Output Label</display-name>
        <component-type>javax.faces.HtmlOutputLabel</component-type>
        <component-class>javax.faces.component.html.HtmlOutputLabel</component-class>

        <xi:include href="uioutput-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="core-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="events-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="focus-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="i18n-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="output-label-props.xml" xpointer="xpointer(/root/*)"/>

        <component-extension>
            <base-component-type>javax.faces.Output</base-component-type>
            <renderer-type>javax.faces.Label</renderer-type>
        </component-extension>

    </component>

    <component>

        <description>
            <![CDATA[<p>Represents an HTML <code>a</code> (hyperlink) element that may be
      used to link to an arbitrary URL defined by the <code>value</code>
      property.</p>]]>
        </description>
        <display-name>Output Hyperlink</display-name>
        <component-type>javax.faces.HtmlOutputLink</component-type>
        <component-class>javax.faces.component.html.HtmlOutputLink</component-class>

        <xi:include href="uioutput-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="core-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="events-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="focus-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="i18n-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="link-props.xml" xpointer="xpointer(/root/*)"/>

        <component-extension>
            <base-component-type>javax.faces.Output</base-component-type>
            <renderer-type>javax.faces.Link</renderer-type>
        </component-extension>

    </component>

    <component>

        <description>
            <![CDATA[<p>Renders the component value as text, optionally wrapping in a
      <code>span</code> element if I18N attributes, CSS styles or style
      classes are specified.</p>]]>
        </description>
        <display-name>Output Text</display-name>
        <component-type>javax.faces.HtmlOutputText</component-type>
        <component-class>javax.faces.component.html.HtmlOutputText</component-class>

        <xi:include href="uioutput-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="core-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="output-text-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="i18n-props.xml" xpointer="xpointer(/root/*)"/>

        <component-extension>
            <base-component-type>javax.faces.Output</base-component-type>
            <renderer-type>javax.faces.Text</renderer-type>
        </component-extension>

    </component>

    <component>

        <description>
            <![CDATA[<p>Renders child components in a table, starting a new
      row after the specified number of columns.</p>]]>
        </description>
        <display-name>Panel Grid</display-name>
        <component-type>javax.faces.HtmlPanelGrid</component-type>
        <component-class>javax.faces.component.html.HtmlPanelGrid</component-class>

        <xi:include href="uipanel-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="core-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="events-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="i18n-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="table-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="panel-grid-props.xml" xpointer="xpointer(/root/*)"/>

        <component-extension>
            <base-component-type>javax.faces.Panel</base-component-type>
            <renderer-type>javax.faces.Grid</renderer-type>
        </component-extension>

    </component>

    <component>

        <description>
            <![CDATA[<p>Causes all child components of this component
      to be rendered.  This is useful in scenarios
      where a parent component is expecting a single
      component to be present, but the application
      wishes to render more than one.</p>]]>
        </description>
        <display-name>Panel Group</display-name>
        <component-type>javax.faces.HtmlPanelGroup</component-type>
        <component-class>javax.faces.component.html.HtmlPanelGroup</component-class>

        <xi:include href="uipanel-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="panel-group-props.xml" xpointer="xpointer(/root/*)"/>

        <component-extension>
            <base-component-type>javax.faces.Panel</base-component-type>
            <renderer-type>javax.faces.Group</renderer-type>
        </component-extension>

    </component>

    <component>

        <description>
            <![CDATA[<p>Represents an HTML <code>input</code> element
      of type <code>checkbox</code>.  The checkbox will
      be rendered as checked, or not, based on the value
      of the <code>value</code> property.</p>]]>
        </description>
        <display-name>Checkbox</display-name>
        <component-type>javax.faces.HtmlSelectBooleanCheckbox</component-type>
        <component-class>javax.faces.component.html.HtmlSelectBooleanCheckbox</component-class>

        <xi:include href="uiselectboolean-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="core-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="events-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="focus-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="i18n-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="input-props.xml" xpointer="xpointer(/root/*)"/>

        <component-extension>
            <base-component-type>javax.faces.SelectBoolean</base-component-type>
            <renderer-type>javax.faces.Checkbox</renderer-type>
        </component-extension>

    </component>

    <component>

        <description>
            <![CDATA[<p>Represents a multiple-selection component that is rendered
      as a set of HTML <code>input</code> elements of type
      <code>checkbox</code>.</p>]]>
        </description>
        <display-name>Multi-Select Checkbox</display-name>
        <component-type>javax.faces.HtmlSelectManyCheckbox</component-type>
        <component-class>javax.faces.component.html.HtmlSelectManyCheckbox</component-class>

        <xi:include href="uiselectmany-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="core-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="events-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="focus-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="i18n-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="input-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="selectmany-checkbox-props.xml" xpointer="xpointer(/root/*)"/>

        <component-extension>
            <base-component-type>javax.faces.SelectMany</base-component-type>
            <renderer-type>javax.faces.Checkbox</renderer-type>
        </component-extension>

    </component>

    <component>

        <description>
            <![CDATA[<p>Represents a multiple-selection component that is rendered
      as an HTML <code>select</code> element, showing either all
      available options or the specified number of options.</p>]]>
        </description>
        <display-name>Multi-Select Listbox</display-name>
        <component-type>javax.faces.HtmlSelectManyListbox</component-type>
        <component-class>javax.faces.component.html.HtmlSelectManyListbox</component-class>

        <xi:include href="uiselectmany-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="core-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="events-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="focus-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="i18n-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="input-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="listbox-props.xml" xpointer="xpointer(/root/*)"/>

        <component-extension>
            <base-component-type>javax.faces.SelectMany</base-component-type>
            <renderer-type>javax.faces.Listbox</renderer-type>
        </component-extension>

    </component>

    <component>

        <description>
            <![CDATA[<p>Represents a multiple-selection component that is rendered
      as an HTML <code>select</code> element, showing a single
      available option at a time.</p>]]>
        </description>
        <display-name>Multi-Select Menu</display-name>
        <component-type>javax.faces.HtmlSelectManyMenu</component-type>
        <component-class>javax.faces.component.html.HtmlSelectManyMenu</component-class>

        <xi:include href="uiselectmany-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="core-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="events-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="focus-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="i18n-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="input-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="menu-props.xml" xpointer="xpointer(/root/*)"/>

        <component-extension>
            <base-component-type>javax.faces.SelectMany</base-component-type>
            <renderer-type>javax.faces.Menu</renderer-type>
        </component-extension>

    </component>

    <component>

        <description>
            <![CDATA[<p>Represents a single-selection component that is rendered
      as an HTML <code>select</code> element, showing either all
      available options or the specified number of options.</p>]]>
        </description>
        <display-name>Listbox</display-name>
        <component-type>javax.faces.HtmlSelectOneListbox</component-type>
        <component-class>javax.faces.component.html.HtmlSelectOneListbox</component-class>

        <xi:include href="uiselectone-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="core-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="events-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="focus-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="i18n-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="input-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="listbox-props.xml" xpointer="xpointer(/root/*)"/>

        <component-extension>
            <base-component-type>javax.faces.SelectOne</base-component-type>
            <renderer-type>javax.faces.Listbox</renderer-type>
        </component-extension>

    </component>

    <component>

        <description>
            <![CDATA[<p>Represents a single-selection component that is rendered
      as an HTML <code>select</code> element, showing a single
      available option at a time.</p>]]>
        </description>
        <display-name>Menu</display-name>
        <component-type>javax.faces.HtmlSelectOneMenu</component-type>
        <component-class>javax.faces.component.html.HtmlSelectOneMenu</component-class>

        <xi:include href="uiselectone-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="core-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="events-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="focus-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="i18n-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="input-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="menu-props.xml" xpointer="xpointer(/root/*)"/>

        <component-extension>
            <base-component-type>javax.faces.SelectOne</base-component-type>
            <renderer-type>javax.faces.Menu</renderer-type>
        </component-extension>

    </component>

    <component>

        <description>
            <![CDATA[<p>Represents a single-selection component that is rendered
      as a set of HTML <code>input</code> elements of type
      <code>radio</code>.</p>]]>
        </description>
        <display-name>Radio</display-name>
        <component-type>javax.faces.HtmlSelectOneRadio</component-type>
        <component-class>javax.faces.component.html.HtmlSelectOneRadio</component-class>

        <xi:include href="uiselectone-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="core-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="events-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="focus-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="i18n-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="input-props.xml" xpointer="xpointer(/root/*)"/>
        <xi:include href="selectone-radio-props.xml" xpointer="xpointer(/root/*)"/>

        <component-extension>
            <base-component-type>javax.faces.SelectOne</base-component-type>
            <renderer-type>javax.faces.Radio</renderer-type>
        </component-extension>

    </component>

    <!-- Standard HTML Renderkit -->

    <render-kit>

        <description>
            <![CDATA[
     The standard HTML RenderKit.  Please see the spec for additional
     details for the standard render-kit.

     <p>General notes on decoding</p>

     <ul>

     <p>Only Renderers for components which cause data to sent to the
     server on a page submit need to implement decode behavior.  In
     practical terms, this means Renderers for components that implement
     from <code>javax.faces.component.EditableValueHolder</code> or
     <code>javax.faces.component.ActionSource</code> or Renderers for
     <code>javax.faces.component.UIForm</code> components.  Renderers
     for components that do not send data to the server on page submit
     may choose to accept the no-op decode behavior of the
     <code>javax.faces.render.Renderer</code> abstract class.  In the
     Renderer descriptions that follow, the omission of a Decode
     Behavior section indicates that this Renderer does no decoding.</p>

     <p>If a Renderer chooses to implement decode behavior, it must
     consult the "disabled" and "readonly" attributes of the component
     to be rendered, if the value of either attribute is equal to,
     ignoring case, the string "true" (without the quotes) the decode
     method must take no action and return immediately.</p>

     </ul>

     <p>General notes on encoding</p>

     <ul>

     <p>If the value of the component's "rendered" property is false,
     the component, and its children must not be rendered.</p>

     <p>General notes regarding the <code>id</code> attribute</p>

     <ul>

     <p>All components, and therefore all tags for those components
     support the <code>id</code> attribute.  This attribute is optional.
     If not present its value is autogenerated by the implementation and
     used for internal purposes only.  If present, an <code>id</code>
     attribute must not start with the <code>String</code> listed as the
     value of the constant <code>UIViewRoot.UNIQUE_ID_PREFIX</code>, and
     it must be unique within the scope of the nearest component that is
     a <code>NamingContainer</code>.  </p>

     <p>All renderers must take the following action regarding the
     <code>id</code> attribute: If the value returned from
     <code>component.getId()</code> is non-<code>null</code> and does
     not start with <code>UIViewRoot.UNIQUE_ID_PREFIX</code>, call
     <code>component.getClientId()</code> and render the result as the
     value of the <code>id</code> attribute in the markup for the
     component.  See the javadoc for
     <code>component.getClientId()</code> for details, particularly note
     that the Renderer has a chance to modify the client id before it is
     rendered. If the component doesn't generate any markup elements,
     include the <code>id</code> attribte on a "span" element that
     encloses the content for the component.</p>

    <p>In addition to any action already specified in the renderers, all
    renderers for <code>UIInput</code> components must take the
    following action regarding the <code>id</code> attribute: Call
    <code>component.getClientId()</code> and render the result as the
    value of the <code>name</code> attribute.  This may cause some
    renderers to have "id" and "name" attributes that have exactly the
    same value.</p>

    </ul>

    </ul>]]>

        </description>

        <renderer>

            <description><![CDATA[<p>Renders an HTML "input" element.</p>

      <p>Decode Behavior</p>

      <ul>

      <p>Obtain the <code>Map</code> from the "requestParameterMap"
      property of the <code>ExternalContext</code>.  If the value in the
      <code>Map</code> for the value of the "clientId" property of the
      component is <code>null</code>, create a String by concatenating
      the value of the "clientId" property of the component with the
      String ".x" (without the quotes).  Create another String in the
      same manner, but concatenate ".y" (without the quotes).  If
      <code>null</code> is the value in the <code>Map</code> for both
      Strings, return from <code>decode()</code>.  If the value in the
      <code>Map</code> for the value of the "clientId" property of the
      component is not <code>null</code>, get the value of the "type"
      attribute, and convert it to lower case.  If the result is equal
      to the String "reset" (without the quotes), return from
      <code>decode()</code>.  Otherwise, create a
      <code>javax.faces.event.ActionEvent</code> around the component,
      and pass it to the <code>queueEvent()</code> method of the
      component, which must be an instance of
      <code>UICommand</code>.</p>

      </ul>



      <p>Encode Behavior</p>

      <ul>

      <p>Render the clientId of the component as the value of the
      "name" attribute.  Render the current value of the component as
      the value of the "value" attribute.  If the "styleClass" attribute
      is specified, render its value as the value of the "class"
      attribute.</p>

      </ul>
            ]]>
            </description>
            <component-family>javax.faces.Command</component-family>
            <renderer-type>javax.faces.Button</renderer-type>
            <renderer-class>
                <xi:include href="standard-html-renderkit-impl.xml" xpointer="xpointer(/root/command-button-renderer-class/text())"/>
            </renderer-class>

            <xi:include href="core-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="events-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="focus-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="i18n-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="input-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="command-button-attrs.xml" xpointer="xpointer(/root/*)"/>

        </renderer>

        <renderer>

            <description><![CDATA[<p>Render an HTML "a" anchor element that acts like a
      form submit button when clicked.</p>

      <p>General Behaviour</p>

      <p>Both the encode and decode behavior require the ability to get
      the id/name for a hidden field whose value is set by the
      JavaScript form submit.  This name must be constructed as
      follows:</p>

      <ul>

      <li><p>Get the clientId for the form of which this component is a
      child.</p></li>

      <li><p>Append
      <code>NamingContainer.SEPARATOR_CHAR</code>.</p></li>

      <li><p>Append a constant string that is the same for all command
      link components in the tree.</p></li>

      </ul>

      <p>In the following text, this String is called
      hiddenFieldName.</p>

      <p>Decode Behavior</p>

      <ul>

      <p>Obtain the "clientId" property of the component.  Obtain the
      <code>Map</code> from the "requestParameterMap" property of the
      <code>ExternalContext</code>.  Derive hiddenFieldName as above.
      Get the entry in the <code>Map</code> under the key that is the
      hiddenFieldName.  If the there is no entry, or the entry is the
      empty String, or the entry is not equal to the value of the
      "clientId" property, return immediately.  If there is an entry,
      and its value is equal to the value of the "clientId" property,
      create a new <code>javax.faces.event.ActionEvent</code> instance
      around the component and call <code>queueActionEvent()</code> on
      the component, passing the event.</p>

      </ul>


      <p>Encode Behavior</p>

      <ul>

      <p>Render "#" as the value of the "href" attribute. Render the current
      value of the component as the link text if it is specified. Render
      javascript that is functionally equivalent to the following as the value
      of the "onclick" attribute:</p>

      <p><code>document.forms['CLIENT_ID']['hiddenFieldName'].value='CLIENT_ID';
      document.forms['CLIENT_ID']['PARAM1_NAME'].value='PARAM1_VALUE';
      document.forms['CLIENT_ID']['PARAM2_NAME'].value='PARAM2_VALUE';
      return false;</code></p>

      <p>document.forms['CLIENT_ID'].submit()" where hiddenFieldName is
      as described above, CLIENT_ID is the clientId of the UICommand
      component, PARAM*_NAME and PARAM*_VALUE are the names and values,
      respectively, of any nested UIParameter children.  The name and
      the value must be URLEncoded.  If the "styleClass" attribute is
      specified, render its value as the value of the "class" attribute.
      Render any non-UIParameter children as normal inside of the "a"
      element.  These will appear as the link text.  Allow the form
      renderer to output a single "input" element (for the entire page,
      regardless of how many command link components are in the page) of
      "type" "hidden" whose "name" is the value of hiddenFieldName, and
      which must not have a "value" attribute.  Multiple occurrences of
      command link components in the tree should not cause multiple
      hiddenFieldName hidden fields.  Allow the form renderer to output
      an "input" element of "type" "hidden" for each of the nested
      UIParameter children, taking the name property (but not the value)
      from each one in turn.</p>

      </ul>]]>
            </description>
            <component-family>javax.faces.Command</component-family>
            <renderer-type>javax.faces.Link</renderer-type>
            <renderer-class>
                <xi:include href="standard-html-renderkit-impl.xml" xpointer="xpointer(/root/command-link-renderer-class/text())"/>
            </renderer-class>

            <xi:include href="core-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="events-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="focus-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="i18n-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="link-attrs.xml" xpointer="xpointer(/root/*)"/>

            <renderer-extension>
                <renders-children>true</renders-children>
                <exclude-attributes>onclick</exclude-attributes>
            </renderer-extension>

        </renderer>

        <renderer>

            <description>
                <![CDATA[
      <p>Renders an HTML "table" element compliant with the HTML 401
      specification.  Please consult the javadoc for <code>UIData</code>
      to supplement this specification.  If the "styleClass" attribute
      is specified, render its value as the value of the "class"
      attribute on the "table" element.  Any pass-through attributes are
      also rendered on the "table" element.  </p>

     <p>Rendering the header</p>

     <ul>

      <p>If the <code>UIData</code> component has a "header" facet, or
      any of the child <code>UIColumn</code> components has a "header"
      facet, render a "thead" element.  If the <code>UIData</code>
      component has a "header" facet, encode its contents inside of "tr"
      and "th" elements, respectively.  Output the value of the
      "headerClass" attribute of the <code>UIData</code> component, if
      present, as the value of the "class" attribute on the "th".
      Output the number of child <code>UIColumn</code> components of the
      <code>UIData</code> component as the value of the "colspan"
      attribute on the "th".  Output "colgroup" as the value of the
      "scope" attribute on the "th" element. </p>

      <p>If any of the child <code>UIColumn</code> components has a
      "header" facet render a "tr" element.  For each
      <code>UIColumn</code> that actually has a "header" facet, render
      it inside of a "th" element.  Columns that don't have a "header"
      facet cause an empty "th" element to be rendered.  Output the
      value of the "headerClass" attribute of the <code>UIData</code>
      component, if present, as the value of the "class" attribute on
      the "th".  Output "col" as the value of the "colgroup" attribute
      on the "th" element.
      </p>

      <p>Close out the "thead" element.</p>

      </ul>

      <p>Rendering the footer</p>

      <ul>

      <p>Follow the same process as for the header, except replace
      "header" with "footer", "th" with "td", "thead" with "tfoot", and
      "headerClass" with "footerClass".  Do not render any "scope"
      attribute for the footer.</p>

      </ul>

      <p>Rendering the table body</p>

      <ul>

      <p>Render a "tbody" element.  Keep track of the result of the
      "rows" property on the <code>UIData</code> component.  Keep track
      of the number of rows we have rendered so far.  Iterate through
      the rows.  Set the "rowIndex" property of the <code>UIData</code>
      component to be correct as we iterate through the rows.  Stop
      rendering children and close out the "tbody" element if the
      "rowAvailable" property of the <code>UIData</code> returned false.
      Output a "tr" element.  Output the value of the "rowClasses" per
      the attribute description below.  For each <code>UIColumn</code>
      child, output a "td" element, attaching the value of the
      "columnClasses" attribute of the <code>UIData</code> component per
      the attribute description below.  Recursively encode each child of
      each <code>UIColumn</code> child.  Close out the "td" element.
      When done with the row, close out the "tr" element.  When done
      with all the rows, close out the "tbody" element.</p>

      </ul>

     <p>When done rendering all the rows, set the "rowIndex" property of
     the <code>UIData</code> to -1, and close out the "table"
     element.</p>
            ]]>
            </description>

            <component-family>javax.faces.Data</component-family>
            <renderer-type>javax.faces.Table</renderer-type>
            <renderer-class>
                <xi:include href="standard-html-renderkit-impl.xml" xpointer="xpointer(/root/data-table-renderer-class/text())"/>
            </renderer-class>
            <facet>
                <facet-name>header</facet-name>
            </facet>
            <facet>
                <facet-name>footer</facet-name>
            </facet>

            <xi:include href="core-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="events-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="i18n-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="table-attrs.xml" xpointer="xpointer(/root/*)"/>

            <renderer-extension>
                <renders-children>true</renders-children>
            </renderer-extension>

        </renderer>

        <renderer>

            <description><![CDATA[<p>Renders an HTML "form" element.</p>

      <p>Decode Behavior</p>

      <ul>

      <p>Obtain the <code>Map</code> from the "requestParameterMap"
      property of the <code>ExternalContext</code>.  If the map contains
      an entry for the "clientId" of this <code>UIForm</code> component,
      call <code>setSubmitted(true)</code> on the form, otherwise call
      <code>setSubmitted(false)</code> on the form.</p>

      </ul>



      <p>Encode Behavior</p>

      <ul>

      <p>The value of the "method" attribute must be "post".  The value
      of the "action" attribute must be the result of passing the view
      identifier of the current view to the <code>getActionURL()</code>
      method of the <code>ViewHandler</code> for this application, then
      passing that String to the <code>encodeActionURL()</code> method
      on the <code>ExternalContext</code>.  If the "styleClass"
      attribute is specified, render its value as the value of the
      "class" attribute.  Call <code>ViewHandler.writeState()</code>
      before the the close of the "form" element.  Render all the
      necessary hidden fields for all commandLink instances in the page
      just before the close of the "form" element.</p>

      </ul>]]>

            </description>
            <component-family>javax.faces.Form</component-family>
            <renderer-type>javax.faces.Form</renderer-type>
            <renderer-class>
                <xi:include href="standard-html-renderkit-impl.xml" xpointer="xpointer(/root/form-form-renderer-class/text())"/>
            </renderer-class>

            <xi:include href="core-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="events-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="i18n-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="form-form-attrs.xml" xpointer="xpointer(/root/*)"/>

            <renderer-extension>
                <tag-name>form</tag-name>
            </renderer-extension>

        </renderer>

        <renderer>

            <description><![CDATA[Renders an HTML "img" element.  Render the clientId
      as the value of the "id" attribute.  Render the value of the
      component as the value of the "src" attribute, after passing it
      to the <code>getResourceUR()</code> method of the <code>ViewHandler</code>
      for this application, and passing the result
      through the <code>encodeResourceURL()</code> method of the
      <code>ExternalContext</code>.  If present, render the value of the
      alt attribute as the value of the "alt" attribute.  If the
      "styleClass" attribute is specified, render its value as the value
      of the "class" attribute.]]></description>
            <component-family>javax.faces.Graphic</component-family>
            <renderer-type>javax.faces.Image</renderer-type>
            <renderer-class>
                <xi:include href="standard-html-renderkit-impl.xml" xpointer="xpointer(/root/graphic-image-renderer-class/text())"/>
            </renderer-class>

            <xi:include href="core-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="events-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="i18n-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="graphic-image-attrs.xml" xpointer="xpointer(/root/*)"/>

        </renderer>

        <renderer>

            <description><![CDATA[<p>Renders an HTML "input" element of type
      "hidden".</p>

      <p>Decode Behavior</p>

      <ul>

      <p>See the decode description for the <a
      href="javax.faces.Inputjavax.faces.Text.html#encode">Input
      Text</a> renderer.</p>

      </ul>

      <p>Encode Behavior</p>

      <ul>

      <p>Render the clientId of the component as the value of the
      "name" attribute.  Render the current value of the component as
      the value of the "value" attribute.</p>

      </ul>]]>

            </description>
            <component-family>javax.faces.Input</component-family>
            <renderer-type>javax.faces.Hidden</renderer-type>
            <renderer-class>
                <xi:include href="standard-html-renderkit-impl.xml" xpointer="xpointer(/root/input-hidden-renderer-class/text())"/>
            </renderer-class>

        </renderer>

        <renderer>

            <description><![CDATA[<p>Renders an HTML "input" element of "type" "password".</p>

      <p>Decode Behavior</p>

      <ul>

      <p>See the decode description for the <a
      href="javax.faces.Inputjavax.faces.Text.html#encode">Input
      Text</a> renderer.</p>

      </ul>

      <p>Encode Behavior</p>

      <ul>

      <p>
      Render the clientId of the component as the value of the "name"
      attribute.  Render the current value of the component as the value
      of the "value" attribute, if and only if the "redisplay" component
      attribute is the string "true".  If the "styleClass" attribute is
      specified, render its value as the value of the "class"
      attribute.</p>

      </ul>]]>

            </description>
            <component-family>javax.faces.Input</component-family>
            <renderer-type>javax.faces.Secret</renderer-type>
            <renderer-class>
                <xi:include href="standard-html-renderkit-impl.xml" xpointer="xpointer(/root/input-secret-renderer-class/text())"/>
            </renderer-class>

            <xi:include href="core-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="events-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="focus-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="i18n-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="input-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="text-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="input-attrs.xml" xpointer="xpointer(/root/*)"/>

        </renderer>

        <renderer>

            <description><![CDATA[<p>Renders an HTML "input"
      element of "type" "text".</p>

      <p><a name="decode">Decode Behavior</a></p>

      <ul>

      <p>Obtain the <code>Map</code> from the "requestParameterMap"
      property of the <code>ExternalContext</code>.  If the
      <code>Map</code> contains an entry for the "clientId" of the
      component, pass the value of the entry to the
      <code>setSubmittedValue()</code> method of the component, which
      must be an instance of <code>EditableValueHolder</code>.</p>

      </ul>

      <p>Encode Behavior</p>

      <ul>

      <p>  Render the clientId of the component as
      the value of the "name" attribute.  Render the current value of
      the component as the value of the "value" attribute.  If the
      "styleClass" attribute is specified, render its value as the value
      of the "class" attribute.
      </p>

      </ul>]]>

            </description>
            <component-family>javax.faces.Input</component-family>
            <renderer-type>javax.faces.Text</renderer-type>
            <renderer-class>
                <xi:include href="standard-html-renderkit-impl.xml" xpointer="xpointer(/root/input-text-renderer-class/text())"/>
            </renderer-class>

            <xi:include href="core-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="events-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="focus-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="i18n-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="input-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="text-attrs.xml" xpointer="xpointer(/root/*)"/>

        </renderer>

        <renderer>

            <description><![CDATA[<p>Renders an HTML "textarea" element.</p>

      <p>Decode Behavior</p>

      <ul>

      <p>See the encode description for the <a
      href="javax.faces.Inputjavax.faces.Text.html#encode">Input
      Text</a> renderer.</p>

      </ul>

      <p>Encode Behavior</p>

      <ul>

      <p>  Render the
      clientId as the value of the "name" attribute.  Render the current
      valu eof the component inside the "textarea"
      element.</p> </ul>]]> </description>
            <component-family>javax.faces.Input</component-family>
            <renderer-type>javax.faces.Textarea</renderer-type>
            <renderer-class>
                <xi:include href="standard-html-renderkit-impl.xml" xpointer="xpointer(/root/input-textarea-renderer-class/text())"/>
            </renderer-class>

            <xi:include href="core-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="events-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="focus-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="i18n-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="input-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="input-textarea-attrs.xml" xpointer="xpointer(/root/*)"/>

        </renderer>

        <renderer>

            <description><![CDATA[<p>Render a single message for a specific component.</p>

      <p>Set-up for Rendering</p>

      <ul>

        <p>Obtain the "summary" and "detail" properties from
        <code>UIMessage</code> component.  If not present, keep the
        empty string as the value, respectively.  Obtain the first
        <code>FacesMessage</code> to render from the component, using
        the "for" property of the <code>UIMessage</code>.  This will be
        the only message we render.  Obtain the severity style for this
        message.  If the severity of the message is
        <code>FacesMessage.SEVERITY_INFO</code>, the severity style
        comes from the value of the "infoStyle" attribute.  If the
        severity of the message is
        <code>FacesMessage.SEVERITY_WARN</code>, the severity style
        comes from the value of the "warnStyle" attribute, and so on for
        each of the severities, <code>INFO, WARN, ERROR</code> and
        <code>FATAL</code>.  The same rules apply for obtaining the
        severity style class, but instead of "infoStyle, warnStyle", etc
        use "infoClass, warnClass", etc.  Obtain the "style",
        "styleClass" and "layout" attributes from the
        <code>UIMessage</code> component.  If we have a "style"
        attribute and a severity style attribute, use the severity style
        attribute as the value of the "style" attribute.  If we have no
        "style" attribute, but do have a severity style, use the
        severity style as the value of the "style" attribute.  The same
        precedence rules apply for the style class.  Obtain the value of
        the <code>dir</code> and <code>lang</code> attributes.</p>

      </ul>

      <p>Rendering</p>

      <ul>

      <p>For the message renderer, we only render one row, for the first
      message.  For the messages renderer, we render as many rows as we
      have messages.  If any of the "dir", "lang", "style" or
      "styleClass" attributes has a non-null value (as determined
      above), render a "span" element, outputting the value of the
      "style" attribute as the the value of the "style" attribute, and
      outputting the value of the "styleClass" attribute as the value of
      the "class" attribute on the "span" element.  Output the "dir" and
      "lang" attributes as well, if they are present.  If the
      <code>UIMessage</code> has a "tooltip" attribute with the value of
      "true", and the <code>UIMessage</code> has "showSummary" and
      "showDetail" properties with the value "true", if we haven't
      already written out the "span", output the "summary" as the value
      of the "title" attribute on the "span".  If we haven't already
      written out a "title" attribute, and "showSummary" is true, output
      the summary.  If "showDetail" is true, output the detail.  Close
      out the span if necessary.</p>

      </ul>]]>

            </description>
            <component-family>javax.faces.Message</component-family>
            <renderer-type>javax.faces.Message</renderer-type>
            <renderer-class>
                <xi:include href="standard-html-renderkit-impl.xml" xpointer="xpointer(/root/message-message-renderer-class/text())"/>
            </renderer-class>

            <xi:include href="core-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="message-message-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="i18n-attrs.xml" xpointer="xpointer(/root/*)"/>

        </renderer>

        <renderer>

            <description>
                <![CDATA[
     <p>The same as for the Message renderer, but output all the
     messages.  If the value of the "layout" attribute is "table",
     render nested "table", "tr", and "td" elements, in that order,
     otherwise, don't render the table.  The component is a
     <code>UIMessages</code>, and there is no "for" attribute.
     Therefore, use either <code>null</code> to obtain the messages from
     the <code>FacesContext</code> or the empty string if the components
     "globalOnly" property is <code>true</code>.  If the layout was
     "table" close out the table elements.  </p>
            ]]>
            </description>

            <component-family>javax.faces.Messages</component-family>
            <renderer-type>javax.faces.Messages</renderer-type>
            <renderer-class>
                <xi:include href="standard-html-renderkit-impl.xml" xpointer="xpointer(/root/messages-messages-renderer-class/text())"/>
            </renderer-class>

            <xi:include href="core-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="messages-messages-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="i18n-attrs.xml" xpointer="xpointer(/root/*)"/>

        </renderer>

        <renderer>

            <description><![CDATA[<p>Render parameterized text.  Obtain the
      <code>style</code>, <code>styleClass</code>, <code>dir</code>, and
      <code>lang</code> attributees from this component.  If any are
      present, render a "span" element.  Output the
      <code>styleClass</code> attribute (if present) as the value of the
      <code>class</code> attribute.  Output the <code>style</code>
      attribute as the value of the <code>style</code> attribute.
      Output the <code>dir</code> and <code>lang</code> attributes as
      pass through attributes.  Accrue a list of the values of all child
      <code>UIParameter</code> components of this component.  If there
      are one or more accumulated parameter values, convert the list of
      parameter values to an <code>Object</code> array, call
      <code>MessageFormat.format()</code>, passing the
      <code>value</code> of this component as the first argument, and
      the array of parameter values as the second argument, and render
      the result.  Otherwise, render the <code>value</code> of this
      component unmodified.</p>]]>
            </description>
            <component-family>javax.faces.Output</component-family>
            <renderer-type>javax.faces.Format</renderer-type>
            <renderer-class>
                <xi:include href="standard-html-renderkit-impl.xml" xpointer="xpointer(/root/output-format-renderer-class/text())"/>
            </renderer-class>

            <xi:include href="core-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="output-format-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="i18n-attrs.xml" xpointer="xpointer(/root/*)"/>

        </renderer>

        <renderer>

            <description>Renders an HTML "label" element.  Render the current value
      of the component as label text if it is specified. If a "for" attribute is
      specified, find the component specified by the value of the "for"
      attribute, and render its client id as the value of the "for" attribute.
      If "styleClass" attribute is specified, render its value as the value
      of the "class" attribute.</description>
            <component-family>javax.faces.Output</component-family>
            <renderer-type>javax.faces.Label</renderer-type>
            <renderer-class>
                <xi:include href="standard-html-renderkit-impl.xml" xpointer="xpointer(/root/output-label-renderer-class/text())"/>
            </renderer-class>

            <xi:include href="core-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="events-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="focus-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="i18n-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="output-label-attrs.xml" xpointer="xpointer(/root/*)"/>

        </renderer>

        <renderer>

            <description><![CDATA[Render an HTML "a" anchor element.  The value of the
      component is rendered as the value of the "href" attribute.  Any
      child UIParameter components are appended to the String to be
      output as the value of the "href" attribute as query parameters
      before rendering.  The entire "href" string must be passed through
      a call to the <code>encodeResourceURL()</code> method of the
      <code>ExternalContext</code>.  The name of the UIParameter goes on
      the left hand side, and the value of the UIParameter on the right
      hand side.  The name and the value must be URLEncoded.  Each
      UIParameter instance is separeted by an ampersand, as dictated in
      the URL spec.  If the "styleClass" attribute is specified, render
      its value as the value of the "class" attribute.]]>
            </description>
            <component-family>javax.faces.Output</component-family>
            <renderer-type>javax.faces.Link</renderer-type>
            <renderer-class>
                <xi:include href="standard-html-renderkit-impl.xml" xpointer="xpointer(/root/output-link-renderer-class/text())"/>
            </renderer-class>

            <xi:include href="core-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="events-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="focus-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="i18n-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="link-attrs.xml" xpointer="xpointer(/root/*)"/>

            <renderer-extension>
                <renders-children>true</renders-children>
            </renderer-extension>

        </renderer>

        <renderer>

            <description>If the "styleClass", "style", "dir" or "lang"
      attributes are present, render a "span" element.  If the
      "styleClass" attribute is present, render its value as the value
      of the "class" attribute.  If the "style" attribute is present,
      pass it thru.  If the "escape" attribute is not present, or it is
      present and its value is "true" all angle brackets should be
      converted to the ampersand xx semicolon syntax when rendering the
      value of the "value" attribute as the value of the component.  If
      the "escape" attribute is present and is "false" the value of the
      component should be rendered as text without escaping.
            </description>
            <component-family>javax.faces.Output</component-family>
            <renderer-type>javax.faces.Text</renderer-type>
            <renderer-class>
                <xi:include href="standard-html-renderkit-impl.xml" xpointer="xpointer(/root/output-text-renderer-class/text())"/>
            </renderer-class>

            <xi:include href="core-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="output-text-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="i18n-attrs.xml" xpointer="xpointer(/root/*)"/>

        </renderer>

        <renderer>

            <description><![CDATA[Renders an HTML "table" element, conforming to the
      rules in the HTML 401 specification.  If the "styleClass"
      attribute is specified, render its value as the value of the
      "class" attribute.  Render the pass-through attributes in the
      table below.  Render the "header" facet, if present, inside of
      "thead", "tr", and "th" elements, nested in that order.  If the
      "headerClass" attribute is specifed, render its value as the value
      of the "class" attribute on the "th" element.  Render "colgroup"
      as the value of the "scope" attribute.  Render the value of the
      "columns" attribute as the value of the "colspan" attribute on the
      "th" element.  Render the "footer" facet if present, using similar
      logic to the rendering of the "header", but replacing "thead" with
      "tfoot", "th" with "td", and "headerClass" with "footerClass".
      Render the children of the <code>UIPanel</code> component inside
      of a "tbody" element.  Render the children based on the value of
      the "columns" attribute, creating a new row each time a "columns"
      worth of children have been rendered.  Each child is rendered
      inside of a "td" element.  If a child has "rendered==false" it is
      not rendered, and the column counter must not be incremented.]]>
            </description>
            <component-family>javax.faces.Panel</component-family>
            <renderer-type>javax.faces.Grid</renderer-type>
            <renderer-class>
                <xi:include href="standard-html-renderkit-impl.xml" xpointer="xpointer(/root/panel-grid-renderer-class/text())"/>
            </renderer-class>
            <facet>
                <facet-name>header</facet-name>
            </facet>
            <facet>
                <facet-name>footer</facet-name>
            </facet>

            <xi:include href="core-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="events-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="i18n-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="table-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="panel-grid-attrs.xml" xpointer="xpointer(/root/*)"/>

            <renderer-extension>
                <renders-children>true</renders-children>
            </renderer-extension>

        </renderer>

        <renderer>

            <description>Intended for use in situations when only one
      UIComponent child can be nested, such as in the case of facets.
      If the "style" or "styleClass" attributes are present, render a
      "span" element, outputting the value of the "style" attribute as
      the value of the "style" attribute, and the value of the
      "styleClass" attribute as the value of the "class"
      attribute. </description>
            <component-family>javax.faces.Panel</component-family>
            <renderer-type>javax.faces.Group</renderer-type>
            <renderer-class>
                <xi:include href="standard-html-renderkit-impl.xml" xpointer="xpointer(/root/panel-group-renderer-class/text())"/>
            </renderer-class>

            <xi:include href="panel-group-attrs.xml" xpointer="xpointer(/root/*)"/>

            <renderer-extension>
                <renders-children>true</renders-children>
            </renderer-extension>

        </renderer>

        <renderer>

            <description><![CDATA[<p>Renders an HTML "input" element of type "checkbox".</p>

      <p>Decode Behavior</p>

      <ul>

      <p>Obtain the <code>Map</code> from the "requestParameterMap"
      property of the <code>ExternalContext</code>.  If there is no
      entry in the <code>Map</code> for the "clientId" of this
      component, pass "false" to the <code>setSubmittedValue()</code>
      method of the component, which must be an instance of
      <code>EditableValueHolder</code>.  If there is an entry, and its
      value is equal, ignoring case and without quotes, to any of the
      Strings: "on", "yes" or "true" pass true to the
      <code>setSubmittedValue()</code> method of the component.</p>

      </ul>

      <p>Encode Behavior</p>

      <ul>

      <p>
      Render the clientId of the component as the value of the "name"
      attribute.  If the current value of the component is "true",
      output the "checked" attribute.  If the "styleClass" attribute is
      specified, render its value as the value of the "class"
      attribute.</p> </ul>]]></description>
            <component-family>javax.faces.SelectBoolean</component-family>
            <renderer-type>javax.faces.Checkbox</renderer-type>
            <renderer-class>
                <xi:include href="standard-html-renderkit-impl.xml" xpointer="xpointer(/root/selectboolean-checkbox-renderer-class/text())"/>
            </renderer-class>

            <xi:include href="core-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="events-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="focus-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="i18n-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="input-attrs.xml" xpointer="xpointer(/root/*)"/>

        </renderer>

        <renderer>

            <description><![CDATA[<p>Render an HTML checkbox list.</p>

      <p><a name="decode">Decode Behavior</a></p>

      <ul>

      <p>See the <a
      href="javax.faces.SelectManyjavax.faces.Listbox.html#decodeMany">"Decode
      Behavior for UISelectMany Components"</a> section.</p>

      </ul>

      <p>Encode Behavior</p>

      <ul>
      <p>Render a "table" element.  If the "styleClass" is specified, render the
      value of the "styleClass" attribute as the value of the "class" attribute
      on the "table" element. If the "style", "border" attributes are specified,
      pass them thru.  If the "layout" attribute is specified, and its
      value is "pageDirection", render the children elements vertically,
      otherwise horizontally, in the table.  If any of the children are
      an instance of SelectItemGroup, render them as a nested table.
      Each of the children are ultimately rendererd as follows.  Render
      a "label" element. Inside of the "label", render an "input" element
      of "type" "checkbox" for each child component.  As an exception to
      the general rules about how to handle the "id" attribute, render it
      as an attribute on the outer "table" element, the value of which is the
      <code>clientId</code> of the component per the rules at the beginning
      of this specification.The "id" attribute must not be output on each "input"
      element. The value of the current SelectItem is rendered as the value of
      the "value" attribute.  If the value of the enclosing UISelectMany
      matches the current value, render "checked" as the value of the
      "checked" attribute.  If the current SelectItem.isDisabled()
      returns true, render "disabled" as the value of the "disabled"
      attribute.  Close out the "input" element and render the return
      value from SelectItem.getLabel().  Close out the "label" element
      and any other nested elements.  See the <a
      href="javax.faces.SelectManyjavax.faces.Listbox.html#options">"Rendering
      the option elements" </a> specification for
      <code>ListboxRenderer</code> for more detail on how to render the
      "option" elements in this renderer.</p>

      </ul>]]>

            </description>
            <component-family>javax.faces.SelectMany</component-family>
            <renderer-type>javax.faces.Checkbox</renderer-type>
            <renderer-class>
                <xi:include href="standard-html-renderkit-impl.xml" xpointer="xpointer(/root/selectmany-checkbox-renderer-class/text())"/>
            </renderer-class>

            <xi:include href="core-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="events-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="focus-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="i18n-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="input-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="selectmany-checkbox-attrs.xml" xpointer="xpointer(/root/*)"/>

        </renderer>

        <renderer>

            <description><![CDATA[<p>Render an HTML option list.</p>

      <p>Decode Behavior</p>

      <p>This section documents the decode behavior for all renderers
      that handle <code>UISelectMany</code> or <code>UISelectOne</code>
      components.</p>

      <ul>

      <p><a name="decodeMany">Decode Behavior for
      <code>UISelectMany</code> components</a></p>

      <ul>

        <p>Obtain the <code>Map</code> from the
        "requestParameterValuesMap" property of the
        <code>ExternalContext</code>.  If the <code>Map</code> contains
        an entry for the "clientId" of the component, pass the value of
        the entry, cast to a <code>String []</code>, to the
        <code>setSubmittedValue()</code> method of the component, which
        must be an <code>EditableValueHolder</code>.  If the
        <code>Map</code> does not contain an entry, create an empty
        <code>String</code> array and call
        <code>setSubmittedValue()</code> with it.</p>

      </ul>

      <p><a name="decodeOne">Decode Behavior for
      <code>UISelectOne</code> components</a></p>

      <ul>

      <p>Obtain the <code>Map</code> from the "requestParameterMap"
      property of the <code>ExternalContext</code>.  If there is a
      <code>Map</code> entry for the "clientId" property of the
      component, pass it to the <code>setSubmittedValue()</code> method
      of the component.</p>

      </ul>

      <p>Encode Behavior</p>

      <ul>

      <p>Render an HTML "select" element. Render the clientId of
      the component as the value of the "name" attribute.  If the "styleClass"
      attribute is specified, render its value as the value of the "class"
      attribute on the "select" element.  If the component is a
      <code>UISelectMany</code> instance, render "multiple" as the value of the
      "multiple" attribute.  If the "size" attribute is specified, render its
      value as the value of the "size" attribute.  Otherwise use the number of
      items as the value of the "size" attribute.</p>

      </ul>

      <p><a name="option">Rendering the "option" elements</a></p>

      <ul>

      <p>The only valid children of this component are
      <code>UISelectItem</code> or <code>UISelectItems</code> instances.
      Iterate over the children of this component, and accrue a list of
      <code>javax.faces.model.SelectItem</code> instances.  If the
      current child is a <code>UISelectItem</code> create a
      <code>SelectItem</code>instance from its <code>itemValue,
      itemLabel</code> and <code>itemDescription</code> properties, add
      it to the list.  If the current child is a
      <code>UISelectItems</code> instance, call its
      <code>getValue()</code> method.  If the result is a
      <code>SelectItem</code> bean, add it to the list.  If the result
      is an array of <code>SelectItem</code> beans, add each one t othe
      list.  If the result is a <code>Collection</code> of
      <code>SelectItem</code> beans, add each one to the list.  If the
      result isa <code>Map</code>, create a <code>SelectItem</code> bean
      for each entry in the <code>Map</code> using the key as the label,
      the value as the value, and <code>null</code> as the description.
      Iterate over the list of <code>SelectItem</code> beans.  If the
      current element is a <code>SelectItemGroup</code>, render an
      "optgroup" element with a "label" attribute, the value of which is
      the "label" property from the current element, then call
      <code>getSelectItems()</code> and render each element as below.
      If the current element is not a <code>SelectItemGroup</code>,
      render an "option" element.  Follow the conversion rules in the
      spec to obtain a renderable <code>String</code> from the "value"
      property of the current element, render that as the value of the
      "value" atribute.  Now it is time to see if the current element is
      the selected value.  call its
      <code>getSubmittedValue()</code> method, casting the result to an
      <code>Object []</code>, otherwise the component must be a
      <code>UISelectOne</code> instance, call its
      <code>getSubmittedValue()</code> method and create an <code>Object
      []</code> around the result.  If the resultant array is non-null,
      we look in the array for a value that, when we pass the renderable
      value to its <code>equals()</code> method, it returns
      <code>true</code>, meaning the current element is selected.  If
      the resultant array is <code>null</code>, if the component is a
      <code>UISelectMany</code>, call its <code>getValue()</code>
      method.  If the result is a <code>List</code> obtain the values in
      the list as an array.  Otherwise, the component must be a
      <code>UISelectOne</code> instance.  Call its
      <code>getValue()</code> method, which must be an Object array.
      Look for an element in the resultant array that, 1. when we pass
      the renderable value to its <code>equals()</code> method, it
      returns <code>true</code> , or 2. if the renderable value is null,
      and there is a null element in the array, also conclude that the
      current element is selected.  Otherwise the current element is not
      selected.  Now, if the current value is selected, write out an
      HTML boolean property "selected".  If the current
      SelectItem.isDisabled() returns true, render "disabled" as the
      value of the "disabled" attribute.</p>

      </ul>

      </ul>]]>

            </description>
            <component-family>javax.faces.SelectMany</component-family>
            <renderer-type>javax.faces.Listbox</renderer-type>
            <renderer-class>
                <xi:include href="standard-html-renderkit-impl.xml" xpointer="xpointer(/root/selectmany-listbox-renderer-class/text())"/>
            </renderer-class>

            <xi:include href="core-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="events-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="focus-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="i18n-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="input-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="listbox-attrs.xml" xpointer="xpointer(/root/*)"/>

        </renderer>

        <renderer>

            <description><![CDATA[<p>Render an HTML option list.</p>

      <p><a name="decode">Decode Behavior</a></p>

      <ul>

      <p>See the <a
      href="javax.faces.SelectManyjavax.faces.Listbox.html#decodeMany">"Decode
      Behavior for UISelectMany Components"</a> section.</p>

      </ul>

      <p>Encode Behavior</p>

      <ul>

      <p>Render an HTML "select" element.  Render the clientId of
      the component as the value of the "name" attribute.  If the "styleClass"
      attribute is specified, render its value as the value of the "class"
      attribute on the "select" element. If the component
      to be rendered is a UISelectMany, render "true" as the value of
      the "multiple" attribute.  Render "1" as the value of the "size"
      attribute.  See the <a
      href="javax.faces.SelectManyjavax.faces.Listbox.html#options">"Rendering the option
      elements" </a> specification for <code>ListboxRenderer</code> for
      more detail on how to render the "option" elements in this
      renderer.</p>

      </ul>]]>

            </description>
            <component-family>javax.faces.SelectMany</component-family>
            <renderer-type>javax.faces.Menu</renderer-type>
            <renderer-class>
                <xi:include href="standard-html-renderkit-impl.xml" xpointer="xpointer(/root/selectmany-menu-renderer-class/text())"/>
            </renderer-class>

            <xi:include href="core-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="events-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="focus-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="i18n-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="input-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="menu-attrs.xml" xpointer="xpointer(/root/*)"/>

        </renderer>

        <renderer>

            <description><![CDATA[<p>Render an HTML option list.</p>

      <p><a name="decode">Decode Behavior</a></p>

      <ul>

      <p>See the <a
      href="javax.faces.SelectManyjavax.faces.Listbox.html#decodeOne">"Decode
      Behavior for UISelectOne Components"</a> section.</p>

      </ul>

      <p>Encode Behavior</p>

      <ul>
      <p>Render an HTML "select" element.  Render the clientId of
      the component as the value of the "name" attribute.  If the "styleClass"
      attribute is specified, render its value as the value of the "class"
      attribute on the "select" element. If the component
      to be rendered is a UISelectMany, render "true" as the value of
      the "multiple" attribute.  If the "size" attribute is specified,
      render its value as the value of the "size" attribute.  Otherwise
      use the number of items as the value of the "size" attribute.  See
      the <a href="javax.faces.SelectManyjavax.faces.Listbox.html#options">"Rendering the option
      elements" </a> specification for <code>ListboxRenderer</code> for
      more detail on how to render the "option" elements in this
      renderer.</p>

      </ul>]]>
            </description>
            <component-family>javax.faces.SelectOne</component-family>
            <renderer-type>javax.faces.Listbox</renderer-type>
            <renderer-class>
                <xi:include href="standard-html-renderkit-impl.xml" xpointer="xpointer(/root/selectone-listbox-renderer-class/text())"/>
            </renderer-class>

            <xi:include href="core-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="events-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="focus-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="i18n-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="input-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="listbox-attrs.xml" xpointer="xpointer(/root/*)"/>

        </renderer>

        <renderer>

            <description><![CDATA[<p>Render an HTML option list.</p>

      <p><a name="decode">Decode Behavior</a></p>

      <ul>

      <p>See the <a
      href="javax.faces.SelectManyjavax.faces.Listbox.html#decodeOne">"Decode
      Behavior for UISelectOne Components"</a> section.</p>

      </ul>

      <p>Encode Behavior</p>

      <ul>

      <p>Render an HTML "select" element.  Render the clientId of the
      component as the value of the "name" attribute.  If the
      "styleClass" attribute is specified, render its value as the value
      of the "class" attribute on the "select" element. If the component
      to be rendered is a UISelectMany, render "true" as the value of
      the "multiple" attribute.  Use the number of items as the value of
      the "size" attribute.  See the <a
      href="javax.faces.SelectManyjavax.faces.Listbox.html#options">"Rendering
      the option elements" </a> specification for
      <code>ListboxRenderer</code> for more detail on how to render the
      "option" elements in this renderer.</p>

      </ul>]]>

            </description>
            <component-family>javax.faces.SelectOne</component-family>
            <renderer-type>javax.faces.Menu</renderer-type>
            <renderer-class>
                <xi:include href="standard-html-renderkit-impl.xml" xpointer="xpointer(/root/selectone-menu-renderer-class/text())"/>
            </renderer-class>

            <xi:include href="core-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="events-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="focus-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="i18n-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="input-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="menu-attrs.xml" xpointer="xpointer(/root/*)"/>

        </renderer>

        <renderer>

            <description><![CDATA[<p>Render a set of html "input" elements of type
      "radio".</p>

      <p><a name="decode">Decode Behavior</a></p>

      <ul>

      <p>See the <a
      href="javax.faces.SelectManyjavax.faces.Listbox.html#decodeOne">"Decode
      Behavior for UISelectOne Components"</a> section.</p>

      </ul>

      <p>Encode Behavior</p>

      <ul>

      <p>Render a "table" element. If the "styleClass" is specified, render the
      value of the "styleClass" attribute as the value of the "class" attribute
      on the "table" element. If the "style", "border" attributes are specified,
      pass them thru. If the "layout" attribute is specified, and its
      value is "pageDirection", render the children elements
      vertically, otherwise horizontally, in the table.  If any of the
      children are an instance of SelectItemGroup, render them as a
      nested table.  Render a "label" element.  Each of the children are
      ultimately rendererd as an "input" element of "type" "radio". As an
      exception to the general rules about how to handle the "id" attribute,
      render it as an attribute on the outer "table" element, the value of which
      is the <code>clientId</code> of the component per the rules at the
      beginning  of this specification.  The "id" attribute must not be
      output on each "input" element.  Output the value of the "label"
      attribute of the <code>SelectItem</code> after the "input"
      element.  If the value of the currently rendered child is equal to
      the value of the parent UISelectOne, render an appropriate HTML
      boolean value indicating "checked" for the enclosing "input".  If
      the current SelectItem.isDisabled() returns true, render
      "disabled" as the value of the "disabled" attribute.  See the <a
      href="javax.faces.SelectManyjavax.faces.Listbox.html#options">"Rendering the option
      elements" </a> specification for <code>ListboxRenderer</code> for
      more detail on how to render the "option" elements in this
      renderer.  Close out the "label" element. </p>

      </ul>]]>

            </description>
            <component-family>javax.faces.SelectOne</component-family>
            <renderer-type>javax.faces.Radio</renderer-type>
            <renderer-class>
                <xi:include href="standard-html-renderkit-impl.xml" xpointer="xpointer(/root/selectone-radio-renderer-class/text())"/>
            </renderer-class>

            <xi:include href="core-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="events-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="focus-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="i18n-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="input-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="input-attrs.xml" xpointer="xpointer(/root/*)"/>
            <xi:include href="selectone-radio-attrs.xml" xpointer="xpointer(/root/*)"/>

        </renderer>

    </render-kit>

</faces-config>


