You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by id...@apache.org on 2006/10/03 15:22:49 UTC
svn commit: r452487 - in
/myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main:
java/org/apache/myfaces/tobago/apt/FacesConfigAnnotationVisitor.java
resources/web-facesconfig_1_1.dtd
Author: idus
Date: Tue Oct 3 06:22:49 2006
New Revision: 452487
URL: http://svn.apache.org/viewvc?view=rev&rev=452487
Log:
registered entity resolver to be able to build faces config offline and use patched DTD which doesn't force JDOM to generate a namespace for the document element
Added:
myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main/resources/web-facesconfig_1_1.dtd
Modified:
myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/FacesConfigAnnotationVisitor.java
Modified: myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/FacesConfigAnnotationVisitor.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/FacesConfigAnnotationVisitor.java?view=diff&rev=452487&r1=452486&r2=452487
==============================================================================
--- myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/FacesConfigAnnotationVisitor.java (original)
+++ myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/FacesConfigAnnotationVisitor.java Tue Oct 3 06:22:49 2006
@@ -39,13 +39,12 @@
import org.jdom.input.SAXBuilder;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;
+import org.xml.sax.EntityResolver;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
import javax.xml.parsers.ParserConfigurationException;
-import java.io.IOException;
-import java.io.StringReader;
-import java.io.StringWriter;
-import java.io.File;
-import java.io.Writer;
+import java.io.*;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Collection;
@@ -101,6 +100,16 @@
try {
String content = FileUtils.fileRead( sourceFacesConfigFile );
SAXBuilder builder = new SAXBuilder();
+ builder.setEntityResolver(new EntityResolver() {
+ public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException {
+ if ("-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN".equals(publicId)) {
+ InputStream stream = FacesConfigAnnotationVisitor.class.getResourceAsStream(
+ "/web-facesconfig_1_1.dtd");
+ return new InputSource(stream);
+ }
+ return null;
+ }
+ });
document = builder.build( new StringReader( content ) );
// Normalise line endings. For some reason, JDOM replaces \r\n inside a comment with \n.
Added: myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main/resources/web-facesconfig_1_1.dtd
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main/resources/web-facesconfig_1_1.dtd?view=auto&rev=452487
==============================================================================
--- myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main/resources/web-facesconfig_1_1.dtd (added)
+++ myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main/resources/web-facesconfig_1_1.dtd Tue Oct 3 06:22:49 2006
@@ -0,0 +1,904 @@
+<!--
+ Copyright 2004 Sun Microsystems, Inc. All rights reserved.
+ SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+-->
+
+<!--
+ DTD for the JavaServer Faces Application Configuration File (Version 1.1)
+
+ To support validation of your configuration file(s), include the following
+ DOCTYPE element at the beginning (after the "xml" declaration):
+
+ <!DOCTYPE faces-config PUBLIC
+ "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
+ "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
+
+ $Id: web-facesconfig_1_1.dtd,v 1.3 2004/04/27 14:01:47 eburns Exp $
+
+-->
+
+
+<!-- ==================== Defined Types =================================== -->
+
+
+<!--
+ An "Action" is a String that represents a method binding
+ expression that points at a method with no arguments that returns a
+ String. It must be bracketed with "#{}", for example,
+ "#{cardemo.buyCar}".
+-->
+<!ENTITY % Action "CDATA">
+
+
+<!--
+ A "ClassName" is the fully qualified name of a Java class that is
+ instantiated to provide the functionality of the enclosing element.
+-->
+<!ENTITY % ClassName "CDATA">
+
+
+<!--
+ An "Identifier" is a string of characters that conforms to the variable
+ naming conventions of the Java programming language (JLS Section ?.?.?).
+-->
+<!ENTITY % Identifier "CDATA">
+
+
+<!--
+ A "JavaType" is either the fully qualified name of a Java class that is
+ instantiated to provide the functionality of the enclosing element, or
+ the name of a Java primitive type (such as int or char). The class name
+ or primitive type may optionally be followed by "[]" to indicate that
+ the underlying data must be an array, rather than a scalar variable.
+-->
+<!ENTITY % JavaType "CDATA">
+
+
+<!--
+ A "Language" is a lower case two-letter code for a language as defined
+ by ISL-639.
+-->
+<!ENTITY % Language "CDATA">
+
+
+<!--
+ A "ResourcePath" is the relative or absolute path to a resource file
+ (such as a logo image).
+-->
+<!ENTITY % ResourcePath "CDATA">
+
+
+<!--
+ A "Scope" is the well-known name of a scope in which managed beans may
+ optionally be defined to be created in.
+-->
+<!ENTITY % Scope "(request|session|application)">
+
+
+
+<!--
+ A "ScopeOrNone" element defines the legal values for the
+ <managed-bean-scope> element's body content, which includes
+ all of the scopes respresented by the "Scope" type, plus the
+ "none" value indicating that a created bean should not be
+ stored into any scope.
+-->
+<!ENTITY % ScopeOrNone "(request|session|application|none)">
+
+
+<!--
+ A "ViewIdPattern" is a pattern for matching view identifiers in
+ order to determine whether a particular navigation rule should be
+ fired. It must contain one of the following values:
+
+ - The exact match for a view identifier that is recognized
+ by the the ViewHandler implementation being used (such as
+ "/index.jsp" if you are using the default ViewHandler).
+
+ - A proper prefix of a view identifier, plus a trailing "*"
+ character. This pattern indicates that all view identifiers that
+ match the portion of the pattern up to the asterisk will match the
+ surrounding rule. When more than one match exists, the match with
+ the longest pattern is selected.
+
+ - An "*" character, which means that this pattern applies to all
+ view identifiers.
+-->
+<!ENTITY % ViewIdPattern "CDATA">
+
+
+<!-- ==================== Top Level Elements ============================== -->
+
+
+<!--
+ The "faces-config" element is the root of the configuration information
+ hierarchy, and contains nested elements for all of the other configuration
+ settings.
+-->
+<!ELEMENT faces-config ((application|factory|component|converter|managed-bean|navigation-rule|referenced-bean|render-kit|lifecycle|validator)*)>
+<!ATTLIST faces-config
+ xmlns CDATA #IMPLIED>
+<!--
+ commented out fixed value to suppress generation of xmlns attribute by JDOM
+ #FIXED "http://java.sun.com/JSF/Configuration"
+-->
+
+
+
+<!-- ==================== Definition Elements ============================= -->
+
+
+<!--
+ The "application" element provides a mechanism to define the various
+ per-application-singleton implementation artifacts for a particular web
+ application that is utilizing JavaServer Faces. For nested elements
+ that are not specified, the JSF implementation must provide a suitable
+ default.
+-->
+<!ELEMENT application ((action-listener|default-render-kit-id|message-bundle|navigation-handler|view-handler|state-manager|property-resolver|variable-resolver|locale-config)*)>
+
+
+<!--
+ The "factory" element provides a mechanism to define the various
+ Factories that comprise parts of the implementation of JavaServer
+ Faces. For nested elements that are not specified, the JSF
+ implementation must provide a suitable default.
+-->
+<!ELEMENT factory ((application-factory|faces-context-factory|lifecycle-factory|render-kit-factory)*)>
+
+
+<!--
+ The "attribute" element represents a named, typed, value associated with
+ the parent UIComponent via the generic attributes mechanism.
+
+ Attribute names must be unique within the scope of the parent (or related)
+ component.
+-->
+<!ELEMENT attribute (description*, display-name*, icon*, attribute-name, attribute-class, default-value?, suggested-value?, attribute-extension*)>
+
+<!--
+ Extension element for attribute. May contain implementation
+ specific content.
+-->
+<!ELEMENT attribute-extension ANY>
+
+
+<!--
+ The "component" element represents a concrete UIComponent implementation
+ class that should be registered under the specified type identifier,
+ along with its associated properties and attributes. Component types must
+ be unique within the entire web application.
+
+ Nested "attribute" elements identify generic attributes that are recognized
+ by the implementation logic of this component. Nested "property" elements
+ identify JavaBeans properties of the component class that may be exposed
+ for manipulation via tools.
+-->
+<!ELEMENT component (description*, display-name*, icon*, component-type, component-class, facet*, attribute*, property*, component-extension*)>
+
+<!--
+ Extension element for component. May contain implementation
+ specific content.
+-->
+<!ELEMENT component-extension ANY>
+
+<!--
+ Define the name and other design-time information for a facet that is
+ associated with a renderer or a component.
+-->
+
+<!ELEMENT facet (description*, display-name*, icon*, facet-name, facet-extension*)>
+
+<!--
+ Extension element for facet. May contain implementation
+ specific content.
+-->
+<!ELEMENT facet-extension ANY>
+
+<!--
+ The "facet-name" element represents the facet name under which a
+ UIComponent will be added to its parent. It must be of type
+ "Identifier".
+-->
+<!ELEMENT facet-name (#PCDATA)>
+
+<!--
+ The "converter" element represents a concrete Converter implementation
+ class that should be registered under the specified converter identifier.
+ Converter identifiers must be unique within the entire web application.
+
+ Nested "attribute" elements identify generic attributes that may be
+ configured on the corresponding UIComponent in order to affect the
+ operation of the Converter. Nested "property" elements identify JavaBeans
+ properties of the Converter implementation class that may be configured
+ to affect the operation of the Converter.
+-->
+<!ELEMENT converter (description*, display-name*, icon*, (converter-id | converter-for-class), converter-class, attribute*, property*)>
+
+
+<!--
+ The "icon" element contains "small-icon" and "large-icon" elements that
+ specify the resoruce paths for small and large GIF or JPG icon images
+ used to represent the parent element in a GUI tool.
+-->
+<!ELEMENT icon (small-icon?, large-icon?)>
+<!ATTLIST icon xml:lang %Language; #IMPLIED>
+
+<!--
+ The "lifecycle" element provides a mechanism to specify
+ modifications to the behaviour of the default Lifecycle
+ implementation for this web application.
+-->
+<!ELEMENT lifecycle (phase-listener*)>
+
+<!--
+ The "locale-config" element allows the app developer to declare the
+ supported locales for this application.
+-->
+<!ELEMENT locale-config (default-locale?, supported-locale*)>
+
+<!--
+ The "managed-bean" element represents a JavaBean, of a particular class,
+ that will be dynamically instantiated at runtime (by the default
+ VariableResolver implementation) if it is referenced as the first element
+ of a value binding expression, and no corresponding bean can be
+ identified in any scope. In addition to the creation of the managed bean,
+ and the optional storing of it into the specified scope, the nested
+ managed-property elements can be used to initialize the contents of
+ settable JavaBeans properties of the created instance.
+-->
+<!ELEMENT managed-bean (description*, display-name*, icon*, managed-bean-name, managed-bean-class, managed-bean-scope, (managed-property* | map-entries | list-entries))>
+
+
+<!--
+ The "managed-property" element represents an individual property of a
+ managed bean that will be configured to the specified value (or value set)
+ if the corresponding managed bean is automatically created.
+-->
+<!ELEMENT managed-property (description*, display-name*, icon*, property-name, property-class?, (map-entries|null-value|value|list-entries))>
+
+
+<!--
+ The "map-entry" element reprsents a single key-entry pair that
+ will be added to the computed value of a managed property of type
+ java.util.Map.
+-->
+<!ELEMENT map-entry (key, (null-value|value))>
+
+
+<!--
+ The "map-entries' element represents a set of key-entry pairs that
+ will be added to the computed value of a managed property of type
+ java.util.Map. In addition, the Java class types of the key and entry
+ values may be optionally declared.
+-->
+<!ELEMENT map-entries (key-class?, value-class?, map-entry*)>
+
+
+<!--
+ The base name of a resource bundle representing the message resources
+ for this application. See the JavaDocs for the "java.util.ResourceBundle"
+ class for more information on the syntax of resource bundle names.
+-->
+
+<!ELEMENT message-bundle (#PCDATA)>
+
+
+<!--
+ The "navigation-case" element describes a particular combination of
+ conditions that must match for this case to be executed, and the
+ view id of the component tree that should be selected next.
+-->
+<!ELEMENT navigation-case (description*, display-name*, icon*, from-action?, from-outcome?, to-view-id, redirect?)>
+
+
+<!--
+ The "navigation-rule" element represents an individual decision rule
+ that will be utilized by the default NavigationHandler
+ implementation to make decisions on what view should be displayed
+ next, based on the view id being processed.
+-->
+<!ELEMENT navigation-rule (description*, display-name*, icon*, from-view-id?, navigation-case*)>
+
+
+<!--
+ The "property" element represents a JavaBean property of the Java class
+ represented by our parent element.
+
+ Property names must be unique within the scope of the Java class
+ that is represented by the parent element, and must correspond to
+ property names that will be recognized when performing introspection
+ against that class via java.beans.Introspector.
+-->
+<!ELEMENT property (description*, display-name*, icon*, property-name, property-class, default-value?, suggested-value?, property-extension*)>
+
+<!--
+ Extension element for property. May contain implementation
+ specific content.
+-->
+<!ELEMENT property-extension ANY>
+
+<!--
+ The "referenced-bean" element represents at design time the promise
+ that a Java object of the specified type will exist at runtime in some
+ scope, under the specified key. This can be used by design time tools
+ to construct user interface dialogs based on the properties of the
+ specified class. The presence or absence of a referenced bean
+ element has no impact on the JavaServer Faces runtime environment
+ inside a web application.
+-->
+<!ELEMENT referenced-bean (description*, display-name*, icon*, referenced-bean-name, referenced-bean-class)>
+
+
+<!--
+ The "render-kit" element represents a concrete RenderKit implementation
+ that should be registered under the specified render-kit-id. If no
+ render-kit-id is specified, the identifier of the default RenderKit
+ (RenderKitFactory.DEFAULT_RENDER_KIT) is assumed.
+-->
+<!ELEMENT render-kit (description*, display-name*, icon*, render-kit-id?, render-kit-class?, renderer*)>
+
+
+<!--
+ The "renderer" element represents a concrete Renderer implementation
+ class that should be registered under the specified component family
+ and renderer type identifiers, in the RenderKit associated with the
+ parent "render-kit" element. Combinations of component family and renderer
+ type must be unique within the RenderKit associated with the parent
+ "render-kit" element.
+
+ Nested "attribute" elements identify generic component attributes that
+ are recognized by this renderer.
+-->
+<!ELEMENT renderer (description*, display-name*, icon*, component-family, renderer-type, renderer-class, facet*, attribute*, renderer-extension*)>
+
+<!--
+ Extension element for renderer. May contain implementation
+ specific content.
+-->
+<!ELEMENT renderer-extension ANY>
+
+<!--
+ The "validator" element represents a concrete Validator implementation
+ class that should be registered under the specified validator identifier.
+ Validator identifiers must be unique within the entire web application.
+
+ Nested "attribute" elements identify generic attributes that may be
+ configured on the corresponding UIComponent in order to affect the
+ operation of the Validator. Nested "property" elements identify JavaBeans
+ properties of the Validator implementation class that may be configured
+ to affect the operation of the Validator.
+-->
+<!ELEMENT validator (description*, display-name*, icon*, validator-id, validator-class, attribute*, property*)>
+
+
+<!--
+ The "list-entries" element represents a set of initialization
+ elements for a managed property that is a java.util.List or an
+ array. In the former case, the "value-class" element can optionally
+ be used to declare the Java type to which each value should be
+ converted before adding it to the Collection.
+-->
+<!ELEMENT list-entries (value-class?, (null-value|value)*)>
+
+
+<!-- ==================== Subordinate Elements ============================ -->
+
+
+<!--
+ The "action-listener" element contains the fully qualified class name
+ of the concrete ActionListener implementation class that will be called
+ during the Invoke Application phase of the request processing lifecycle.
+ It must be of type "ClassName".
+-->
+<!ELEMENT action-listener (#PCDATA)>
+
+<!--
+ The "application-factory" element contains the fully qualified class
+ name of the concrete ApplicationFactory implementation class that
+ will be called when FactoryFinder.getFactory(APPLICATION_FACTORY) is
+ called. It must be of type "ClassName".
+-->
+<!ELEMENT application-factory (#PCDATA)>
+
+<!--
+ The "attribute-class" element represents the Java type of the value
+ associated with this attribute name. It must be of type "ClassName".
+-->
+<!ELEMENT attribute-class (#PCDATA)>
+
+
+<!--
+ The "attribute-name" element represents the name under which the
+ corresponding value will be stored, in the generic attributes of the
+ UIComponent we are related to.
+-->
+<!ELEMENT attribute-name (#PCDATA)>
+
+
+<!--
+ The "component-class" element represents the fully qualified class name
+ of a concrete UIComponent implementation class. It must be of
+ type "ClassName".
+-->
+<!ELEMENT component-class (#PCDATA)>
+
+
+<!--
+ The "component-family" element represents the component family for
+ which the Renderer represented by the parent "renderer" element will be
+ used.
+-->
+<!ELEMENT component-family (#PCDATA)>
+
+<!--
+ The "component-type" element represents the name under which the
+ corresponding UIComponent class should be registered.
+-->
+<!ELEMENT component-type (#PCDATA)>
+
+
+<!--
+ The "converter-class" element represents the fully qualified class name
+ of a concrete Converter implementation class. It must be of
+ type "ClassName".
+-->
+<!ELEMENT converter-class (#PCDATA)>
+
+
+<!--
+ The "converter-for-class" element represents the fully qualified class name
+ for which a Converter class will be registered. It must be of
+ type "ClassName".
+-->
+<!ELEMENT converter-for-class (#PCDATA)>
+
+
+<!--
+ The "converter-id" element represents the identifier under which the
+ corresponding Converter class should be registered.
+-->
+<!ELEMENT converter-id (#PCDATA)>
+
+<!--
+ The "default-render-kit-id" element allows the application to define
+ a renderkit to be used other than the standard one.
+-->
+<!ELEMENT default-render-kit-id (#PCDATA)>
+
+<!--
+ The "default-locale" element declares the default locale for this
+ application instance. It must be specified as
+ :language:[_:country:[_:variant:]] without the colons, for example
+ "ja_JP_SJIS". The separators between the segments may be '-' or
+ '_'.
+-->
+<!ELEMENT default-locale (#PCDATA)>
+
+<!--
+ The "default-value" contains the value for the property or attribute
+ in which this element resides. This value differs from the
+ "suggested-value" in that the property or attribute must take the
+ value, whereas in "suggested-value" taking the value is optional.
+-->
+<!ELEMENT default-value (#PCDATA)>
+
+<!--
+ The "description" element contains a textual description of the element
+ it is nested in, optionally flagged with a language code using the
+ "xml:lang" attribute.
+-->
+<!ELEMENT description ANY>
+<!ATTLIST description xml:lang %Language; #IMPLIED>
+
+
+<!--
+ The "display-name" element is a short descriptive name describing the
+ entity associated with the element it is nested in, intended to be
+ displayed by tools, and optionally flagged with a language code using
+ the "xml:lang" attribute.
+-->
+<!ELEMENT display-name (#PCDATA)>
+<!ATTLIST display-name xml:lang %Language; #IMPLIED>
+
+<!--
+ The "faces-context-factory" element contains the fully qualified
+ class name of the concrete FacesContextFactory implementation class
+ that will be called when
+ FactoryFinder.getFactory(FACES_CONTEXT_FACTORY) is called. It must
+ be of type "ClassName".
+-->
+<!ELEMENT faces-context-factory (#PCDATA)>
+
+<!--
+ The "from-action" element contains an action reference expression
+ that must have been executed (by the default ActionListener for handling
+ application level events) in order to select this navigation rule. If
+ not specified, this rule will be relevant no matter which action reference
+ was executed (or if no action reference was executed).
+
+ This value must be of type "Action".
+-->
+<!ELEMENT from-action (#PCDATA)>
+
+
+<!--
+ The "from-outcome" element contains a logical outcome string returned
+ by the execution of an application action method selected via an
+ "actionRef" property (or a literal value specified by an "action"
+ property) of a UICommand component. If specified, this rule will be
+ relevant only if the outcome value matches this element's value. If
+ not specified, this rule will be relevant no matter what the outcome
+ value was.
+-->
+<!ELEMENT from-outcome (#PCDATA)>
+
+
+<!--
+ The "from-view-id" element contains the view identifier of the view
+ for which the containing navigation rule is relevant. If no
+ "from-view" element is specified, this rule applies to navigation
+ decisions on all views. If this element is not specified, a value
+ of "*" is assumed, meaning that this navigation rule applies to all
+ views.
+
+ This value must be of type "ViewIdPattern".
+-->
+<!ELEMENT from-view-id (#PCDATA)>
+
+
+<!--
+ The "key" element is the String representation of a map key that
+ will be stored in a managed property of type java.util.Map.
+-->
+<!ELEMENT key (#PCDATA)>
+
+
+<!--
+ The "key-class" element defines the Java type to which each "key"
+ element in a set of "map-entry" elements will be converted to. It
+ must be of type "ClassName". If omitted, "java.lang.String"
+ is assumed.
+-->
+<!ELEMENT key-class (#PCDATA)>
+
+
+<!--
+ The "large-icon" element contains the resource path to a large (32x32)
+ icon image. The image may be in either GIF or JPG format.
+-->
+<!ELEMENT large-icon (#PCDATA)>
+
+<!--
+ The "lifecycle-factory" element contains the fully qualified class name
+ of the concrete LifecycleFactory implementation class that will be called
+ when FactoryFinder.getFactory(LIFECYCLE_FACTORY) is called. It must be
+ of type "ClassName".
+-->
+<!ELEMENT lifecycle-factory (#PCDATA)>
+
+<!--
+ The "managed-bean-class" element represents the fully qualified class
+ name of the Java class that will be used to instantiate a new instance
+ if creation of the specified managed bean is requested. It must be of
+ type "ClassName".
+
+ The specified class must conform to standard JavaBeans conventions.
+ In particular, it must have a public zero-arguments constructor, and
+ zero or more public property setters.
+-->
+<!ELEMENT managed-bean-class (#PCDATA)>
+
+
+<!--
+ The "managed-bean-name" element represents the attribute name under
+ which a managed bean will be searched for, as well as stored (unless
+ the "managed-bean-scope" value is "none"). It must be of type
+ "Identifier".
+-->
+<!ELEMENT managed-bean-name (#PCDATA)>
+
+
+<!--
+ The "managed-bean-scope" element represents the scope into which a newly
+ created instance of the specified managed bean will be stored (unless
+ the value is "none"). It must be of type "ScopeOrNone".
+-->
+<!ELEMENT managed-bean-scope (#PCDATA)>
+
+<!--
+ The "navigation-handler" element contains the fully qualified class name
+ of the concrete NavigationHandler implementation class that will be called
+ during the Invoke Application phase of the request processing lifecycle,
+ if the default ActionListener (provided by the JSF implementation) is used.
+ It must be of type "ClassName".
+-->
+<!ELEMENT navigation-handler (#PCDATA)>
+
+<!--
+The "phase-listener" element contains the fully qualified class
+name of the concrete PhaseListener implementation class that will be
+registered on the Lifecycle. It must be of type "ClassName".
+-->
+<!ELEMENT phase-listener (#PCDATA)>
+
+<!--
+ The "redirect" element indicates that navigation to the specified
+ "to-view-id" should be accomplished by performing an HTTP redirect
+ rather than the usual ViewHandler mechanisms.
+-->
+<!ELEMENT redirect EMPTY>
+
+<!--
+ The "suggested-value" contains the value for the property or
+ attribute in which this element resides. This value is advisory
+ only and is intended for tools to use when populating pallettes.
+-->
+<!ELEMENT suggested-value (#PCDATA)>
+
+
+<!--
+
+ The "view-handler" element contains the fully qualified class name
+ of the concrete ViewHandler implementation class that will be called
+ during the Restore View and Render Response phases of the request
+ processing lifecycle. The faces implementation must provide a
+ default implementation of this class
+-->
+<!ELEMENT view-handler (#PCDATA)>
+
+<!--
+
+ The "state-manager" element contains the fully qualified class name
+ of the concrete StateManager implementation class that will be called
+ during the Restore View and Render Response phases of the request
+ processing lifecycle. The faces implementation must provide a
+ default implementation of this class
+-->
+<!ELEMENT state-manager (#PCDATA)>
+
+<!--
+ The "null-value" element indicates that the managed property in which we
+ are nested will be explicitly set to null if our managed bean is
+ automatically created. This is different from omitting the managed
+ property element entirely, which will cause no property setter to be
+ called for this property.
+
+ The "null-value" element can only be used when the associated
+ "property-class" identifies a Java class, not a Java primitive.
+-->
+<!ELEMENT null-value EMPTY>
+
+
+<!--
+ The "property-class" element represents the Java type of the value
+ associated with this property name. It must be of type "JavaType".
+ If not specified, it can be inferred from existing classes; however,
+ this element should be specified if the configuration file is going
+ to be the source for generating the corresponding classes.
+-->
+<!ELEMENT property-class (#PCDATA)>
+
+
+<!--
+ The "property-name" element represents the JavaBeans property name
+ under which the corresponding value may be stored.
+-->
+<!ELEMENT property-name (#PCDATA)>
+
+
+<!--
+ The "property-resolver" element contains the fully qualified class name
+ of the concrete PropertyResolver implementation class that will be used
+ during the processing of value binding expressions.
+ It must be of type "ClassName".
+-->
+<!ELEMENT property-resolver (#PCDATA)>
+
+
+<!--
+ The "referenced-bean-class" element represents the fully qualified class
+ name of the Java class (either abstract or concrete) or Java interface
+ implemented by the corresponding referenced bean. It must be of type
+ "ClassName".
+-->
+<!ELEMENT referenced-bean-class (#PCDATA)>
+
+
+<!--
+ The "referenced-bean-name" element represents the attribute name under
+ which the corresponding referenced bean may be assumed to be stored,
+ in one of the scopes defined by the "Scope" type. It must be of type
+ "Identifier".
+-->
+<!ELEMENT referenced-bean-name (#PCDATA)>
+
+
+<!--
+ The "render-kit-id" element represents an identifier for the
+ RenderKit represented by the parent "render-kit" element.
+-->
+<!ELEMENT render-kit-id (#PCDATA)>
+
+
+<!--
+ The "render-kit-class" element represents the fully qualified class name
+ of a concrete RenderKit implementation class. It must be of
+ type "ClassName".
+-->
+<!ELEMENT render-kit-class (#PCDATA)>
+
+
+<!--
+ The "renderer-class" element represents the fully qualified class name
+ of a concrete Renderer implementation class. It must be of
+ type "ClassName".
+-->
+<!ELEMENT renderer-class (#PCDATA)>
+
+<!--
+ The "render-kit-factory" element contains the fully qualified class name
+ of the concrete RenderKitFactory implementation class that will be called
+ when FactoryFinder.getFactory(RENDER_KIT_FACTORY) is called. It must be
+ of type "ClassName".
+-->
+<!ELEMENT render-kit-factory (#PCDATA)>
+
+<!--
+ The "renderer-type" element represents a renderer type identifier for the
+ Renderer represented by the parent "renderer" element.
+-->
+<!ELEMENT renderer-type (#PCDATA)>
+
+<!--
+ The "small-icon" element contains the resource path to a large (16x16)
+ icon image. The image may be in either GIF or JPG format.
+-->
+<!ELEMENT small-icon (#PCDATA)>
+
+<!--
+ The "supported-locale" element allows authors to declare which
+ locales are supported in this application instance.
+
+ It must be specified as :language:[_:country:[_:variant:]] without
+ the colons, for example "ja_JP_SJIS". The separators between the
+ segments may be '-' or '_'.
+-->
+<!ELEMENT supported-locale (#PCDATA)>
+
+<!--
+ The "to-view" element contains the view identifier of the next view
+ that should be displayed if this navigation rule is matched. It
+ must be of type "ViewId".
+-->
+<!ELEMENT to-view-id (#PCDATA)>
+
+
+<!--
+ The "validator-class" element represents the fully qualified class name
+ of a concrete Validator implementation class. It must be of
+ type "ClassName".
+-->
+<!ELEMENT validator-class (#PCDATA)>
+
+
+<!--
+ The "validator-id" element represents the identifier under which the
+ corresponding Validator class should be registered.
+-->
+<!ELEMENT validator-id (#PCDATA)>
+
+
+<!--
+ The "value" element is the String representation of a literal
+ value to which a scalar managed property will be set, or a value
+ binding expression ("#{...}") that will be used to calculate the
+ required value. It will be converted as specified for the actual
+ property type.
+-->
+<!ELEMENT value (#PCDATA)>
+
+
+<!--
+ The "value-class" element defines the Java type to which each
+ "value" element's value will be converted to, prior to adding it to
+ the "list-entries" list for a managed property that is a
+ java.util.List, or a "map-entries" map for a managed property that
+ is a java.util.Map. It must be of type "ClassName". If omitted,
+ "java.lang.String" is assumed.
+-->
+<!ELEMENT value-class (#PCDATA)>
+
+<!--
+ The "variable-resolver" element contains the fully qualified class name
+ of the concrete VariableResolver implementation class that will be used
+ during the processing of value binding expressions.
+ It must be of type "ClassName".
+-->
+<!ELEMENT variable-resolver (#PCDATA)>
+
+
+<!-- ============================ Identifier Attributes ==================== -->
+
+
+<!ATTLIST action-listener id ID #IMPLIED>
+<!ATTLIST application id ID #IMPLIED>
+<!ATTLIST application-factory id ID #IMPLIED>
+<!ATTLIST attribute id ID #IMPLIED>
+<!ATTLIST attribute-class id ID #IMPLIED>
+<!ATTLIST attribute-extension id ID #IMPLIED>
+<!ATTLIST attribute-name id ID #IMPLIED>
+<!ATTLIST component id ID #IMPLIED>
+<!ATTLIST component-class id ID #IMPLIED>
+<!ATTLIST component-extension id ID #IMPLIED>
+<!ATTLIST component-family id ID #IMPLIED>
+<!ATTLIST component-type id ID #IMPLIED>
+<!ATTLIST converter id ID #IMPLIED>
+<!ATTLIST converter-class id ID #IMPLIED>
+<!ATTLIST converter-for-class id ID #IMPLIED>
+<!ATTLIST converter-id id ID #IMPLIED>
+<!ATTLIST default-locale id ID #IMPLIED>
+<!ATTLIST default-render-kit-id id ID #IMPLIED>
+<!ATTLIST default-value id ID #IMPLIED>
+<!ATTLIST description id ID #IMPLIED>
+<!ATTLIST display-name id ID #IMPLIED>
+<!ATTLIST faces-config id ID #IMPLIED>
+<!ATTLIST faces-context-factory id ID #IMPLIED>
+<!ATTLIST facet id ID #IMPLIED>
+<!ATTLIST facet-extension id ID #IMPLIED>
+<!ATTLIST facet-name id ID #IMPLIED>
+<!ATTLIST factory id ID #IMPLIED>
+<!ATTLIST from-action id ID #IMPLIED>
+<!ATTLIST from-outcome id ID #IMPLIED>
+<!ATTLIST from-view-id id ID #IMPLIED>
+<!ATTLIST icon id ID #IMPLIED>
+<!ATTLIST key id ID #IMPLIED>
+<!ATTLIST key-class id ID #IMPLIED>
+<!ATTLIST large-icon id ID #IMPLIED>
+<!ATTLIST lifecycle id ID #IMPLIED>
+<!ATTLIST lifecycle-factory id ID #IMPLIED>
+<!ATTLIST list-entries id ID #IMPLIED>
+<!ATTLIST locale-config id ID #IMPLIED>
+<!ATTLIST managed-bean id ID #IMPLIED>
+<!ATTLIST managed-bean-class id ID #IMPLIED>
+<!ATTLIST managed-bean-name id ID #IMPLIED>
+<!ATTLIST managed-bean-scope id ID #IMPLIED>
+<!ATTLIST managed-property id ID #IMPLIED>
+<!ATTLIST map-entries id ID #IMPLIED>
+<!ATTLIST map-entry id ID #IMPLIED>
+<!ATTLIST message-bundle id ID #IMPLIED>
+<!ATTLIST navigation-case id ID #IMPLIED>
+<!ATTLIST navigation-handler id ID #IMPLIED>
+<!ATTLIST navigation-rule id ID #IMPLIED>
+<!ATTLIST null-value id ID #IMPLIED>
+<!ATTLIST phase-listener id ID #IMPLIED>
+<!ATTLIST property id ID #IMPLIED>
+<!ATTLIST property-class id ID #IMPLIED>
+<!ATTLIST property-extension id ID #IMPLIED>
+<!ATTLIST property-name id ID #IMPLIED>
+<!ATTLIST property-resolver id ID #IMPLIED>
+<!ATTLIST redirect id ID #IMPLIED>
+<!ATTLIST referenced-bean id ID #IMPLIED>
+<!ATTLIST referenced-bean-class id ID #IMPLIED>
+<!ATTLIST referenced-bean-name id ID #IMPLIED>
+<!ATTLIST render-kit id ID #IMPLIED>
+<!ATTLIST render-kit-class id ID #IMPLIED>
+<!ATTLIST render-kit-factory id ID #IMPLIED>
+<!ATTLIST render-kit-id id ID #IMPLIED>
+<!ATTLIST renderer id ID #IMPLIED>
+<!ATTLIST renderer-class id ID #IMPLIED>
+<!ATTLIST renderer-extension id ID #IMPLIED>
+<!ATTLIST renderer-type id ID #IMPLIED>
+<!ATTLIST small-icon id ID #IMPLIED>
+<!ATTLIST state-manager id ID #IMPLIED>
+<!ATTLIST suggested-value id ID #IMPLIED>
+<!ATTLIST supported-locale id ID #IMPLIED>
+<!ATTLIST to-view-id id ID #IMPLIED>
+<!ATTLIST validator id ID #IMPLIED>
+<!ATTLIST validator-class id ID #IMPLIED>
+<!ATTLIST validator-id id ID #IMPLIED>
+<!ATTLIST value id ID #IMPLIED>
+<!ATTLIST value-class id ID #IMPLIED>
+<!ATTLIST variable-resolver id ID #IMPLIED>
+<!ATTLIST view-handler id ID #IMPLIED>
+