Well, JSF spec tell impls to provide a HTML 4.0.1 compliant RenderKit, that's what MyFaces does. So currently there is no XHTML support, AFIAK.
-Matthias On 2/15/06, Jeffrey A Kenward <[EMAIL PROTECTED]> wrote: > > We're using MyFaces 1.1.1 in our applications. We're using client-side > state saving and the page is not validating as XHTML Transitional compliant > (using the W3C service). > > Is there a work around for this to make it compliant? > > Thanks for any help! > > -Jeff > > Here's the faces-config.xml file: > > <?xml version="1.0"?> > > <!DOCTYPE faces-config PUBLIC > "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN" > "http://java.sun.com/dtd/web-facesconfig_1_0.dtd"> > > <faces-config> > > <application> > > <view-handler>org.apache.myfaces.application.jsp.JspTilesViewHandlerImpl</view-handler> > <locale-config> > <default-locale>en</default-locale> > </locale-config> > <message-bundle>ApplicationMessages</message-bundle> > </application> > > <navigation-rule> > <description> Left Navigation</description> > <navigation-case> > <description>User clicks List Users link</description> > <from-outcome>userList</from-outcome> > <to-view-id>/userList.jsp</to-view-id> > </navigation-case> > </navigation-rule> > > <navigation-rule> > <description>Create a user </description> > <from-view-id>/createUser.jsp</from-view-id> > <navigation-case> > <description>User created successfully</description> > <from-outcome>userCreated</from-outcome> > <to-view-id>/userCreated.jsp</to-view-id> > </navigation-case> > </navigation-rule> > > <navigation-rule> > <description> Confirmation page after user created</description> > <from-view-id>/userCreated.jsp</from-view-id> > <navigation-case> > <description>User clicks Select Users link</description> > <from-outcome>selectUsers</from-outcome> > <to-view-id>/selectUsers.jsp</to-view-id> > </navigation-case> > </navigation-rule> > > <navigation-rule> > <description> List of users in a table</description> > <from-view-id>/userList.jsp</from-view-id> > <navigation-case> > <description>User clicks Create Another User</description> > <from-outcome>create</from-outcome> > <to-view-id>/createUser.jsp</to-view-id> > </navigation-case> > <navigation-case> > <description>User clicks the hyperlink for the > group</description> > <from-outcome>group</from-outcome> > <to-view-id>/groupDetail.jsp</to-view-id> > </navigation-case> > <navigation-case> > <description>User clicks the hyperlink for the user > id</description> > <from-outcome>user</from-outcome> > <to-view-id>/userDetail.jsp</to-view-id> > </navigation-case> > <navigation-case> > <description>User clicks the Select Users link</description> > <from-outcome>selectUsers</from-outcome> > <to-view-id>/selectUsers.jsp</to-view-id> > </navigation-case> > </navigation-rule> > > <navigation-rule> > <description>Users displayed in various controls </description> > <from-view-id>/selectUsers.jsp</from-view-id> > <navigation-case> > <description>User clicks Create User button</description> > <from-outcome>create</from-outcome> > <to-view-id>/createUser.jsp</to-view-id> > </navigation-case> > <navigation-case> > <description>User clicks Save button</description> > <from-outcome>userSelected</from-outcome> > <to-view-id>/userSelected.jsp</to-view-id> > </navigation-case> > </navigation-rule> > > <navigation-rule> > <description>Users selected page </description> > <from-view-id>/userSelected.jsp</from-view-id> > <navigation-case> > <description>User clicks the OK button</description> > <from-outcome>users</from-outcome> > <to-view-id>/userList.jsp</to-view-id> > </navigation-case> > </navigation-rule> > > <navigation-rule> > <description>User detail page </description> > <from-view-id>/userDetail.jsp</from-view-id> > <navigation-case> > <description>User clicks the OK button</description> > <from-outcome>users</from-outcome> > <to-view-id>/userList.jsp</to-view-id> > </navigation-case> > </navigation-rule> > > <navigation-rule> > <description>Group detail page </description> > <from-view-id>/groupDetail.jsp</from-view-id> > <navigation-case> > <description>User clicks the OK button</description> > <from-outcome>users</from-outcome> > <to-view-id>/userList.jsp</to-view-id> > </navigation-case> > </navigation-rule> > > <!-- The main backing bean for this sample application. This bean is in > session scope --> > <managed-bean> > <description> > The bean that holds information to create a user and holds the > list of users > </description> > <managed-bean-name>user</managed-bean-name> > <managed-bean-class>com.dteco.pib.view.UserBean</managed-bean-class> > <managed-bean-scope>request</managed-bean-scope> > </managed-bean> > > <!-- The selectUser Bean backs the Select Users page. --> > <managed-bean> > <description> > The bean that gets the list of all users > </description> > <managed-bean-name>userList</managed-bean-name> > <managed-bean-class>com.dteco.pib.view.UserListBean</managed-bean-class> > <managed-bean-scope>session</managed-bean-scope> > </managed-bean> > > <!-- The selectUser Bean backs the Select Users page. --> > <managed-bean> > <description> > The bean that holds the selected users > </description> > <managed-bean-name>selectUser</managed-bean-name> > > <managed-bean-class>com.dteco.pib.view.SelectUserBean</managed-bean-class> > <managed-bean-scope>request</managed-bean-scope> > </managed-bean> > > <!-- the userDetails bean holds the user selected from the list of users > --> > <managed-bean> > <managed-bean-name>userDetails</managed-bean-name> > > <managed-bean-class>com.dteco.pib.process.user.UserTO</managed-bean-class> > <managed-bean-scope>request</managed-bean-scope> > </managed-bean> > > <!-- the userDetails bean holds the user selected from the list of users > --> > <managed-bean> > <managed-bean-name>groupDetails</managed-bean-name> > > <managed-bean-class>com.dteco.pib.process.user.GroupTO</managed-bean-class> > <managed-bean-scope>request</managed-bean-scope> > <managed-property> > <property-name>group</property-name> > <null-value/> > </managed-property> > </managed-bean> > > </faces-config> > > Here's the relevant web.xml entries: > > <context-param> > <param-name>javax.faces.CONFIG_FILES</param-name> > <param-value> > /WEB-INF/faces-config.xml > </param-value> > <description> > Comma separated list of URIs of (additional) faces config files. > (e.g. /WEB-INF/my-config.xml) > See JSF 1.0 PRD2, 10.3.2 > </description> > </context-param> > > <context-param> > <param-name>javax.faces.STATE_SAVING_METHOD</param-name> > <param-value>client</param-value> > <description> > State saving method: "client" or "server" (= default) > See JSF Specification 2.5.2 > </description> > </context-param> > > <context-param> > > <param-name>org.apache.myfaces.ALLOW_JAVASCRIPT</param-name> > <param-value>true</param-value> > <description> > This parameter tells MyFaces if javascript code should be > allowed in the > rendered HTML output. > If javascript is allowed, command_link anchors will have > javascript code > that submits the corresponding form. > If javascript is not allowed, the state saving info and nested > parameters > will be added as url parameters. > Default: "true" > </description> > </context-param> > > <context-param> > > <param-name>org.apache.myfaces.DETECT_JAVASCRIPT</param-name> > <param-value>false</param-value> > <description> > Default: "false" > </description> > </context-param> > > <context-param> > <param-name>org.apache.myfaces.AUTO_SCROLL</param-name> > <param-value>false</param-value> > <description> > Default: "false" > </description> > </context-param> > > <context-param> > <param-name>org.apache.myfaces.PRETTY_HTML</param-name> > <param-value>true</param-value> > <description> > If true, rendered HTML code will be formatted, so that it is > "human readable". > i.e. additional line separators and whitespace will be written, > that do not > influence the HTML code. > Default: "true" > </description> > </context-param> > > > <!-- Tiles configuration definition files and a listener need to be > defined. > the listener will initialize JspTilesViewHandlerImpl with tiles > definitions. > --> > <context-param> > <param-name>tiles-definitions</param-name> > <param-value>/WEB-INF/tiles-def.xml</param-value> > </context-param>--> > > <!-- Listener, that does all the startup work (configuration, init). --> > <listener> > > <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class> > </listener> > > <!-- Faces Servlet --> > <servlet> > <servlet-name>Faces Servlet</servlet-name> > <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> > <load-on-startup>1</load-on-startup> > </servlet> > > <!-- extension mapping --> > <servlet-mapping> > <servlet-name>Faces Servlet</servlet-name> > <url-pattern>*.faces</url-pattern> > </servlet-mapping> > > <!-- The Welcome File List --> > <welcome-file-list> > <welcome-file>index.jsp</welcome-file> > </welcome-file-list> > > > Here's the code source: (userList.jsp) > > <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> > <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> > <%@ taglib uri="http://myfaces.apache.org/tomahawk" > prefix="t"%> > > <div id="pageBody"> > <f:subview id="userListSubview"> > <h:form id="userListForm"> > > <h:outputText value="Here is the list of users in a table" > styleClass="h3"/> > > <h:dataTable frame="border" border="3" value="#{userList.userTable}" > var="userTO"> > > <h:column> > <f:facet name="header"> > <h:outputText value="First Name"/> > </f:facet> > <h:outputText value="#{userTO.firstName}"/>> > </h:column> > > <h:column> > <f:facet name="header"> > <h:outputText value="Last Name"/> > </f:facet> > <h:outputText value="#{userTO.lastName}"/>> > </h:column> > > <h:column> > <f:facet name="header"> > <h:outputText value="Group"/> > </f:facet> > <h:commandLink action="#{userList.getGroupDetails}"> > <f:param name="selectedGroupName" value="#{userTO.group}"/> > <h:outputText value="#{userTO.group}"/> > </h:commandLink> > </h:column> > > <h:column> > <f:facet name="header"> > <h:outputText value="User Id"/> > </f:facet> > <h:commandLink action="#{userList.getUserDetails}" > > <h:outputText value="#{userTO.userId}"/> > </h:commandLink> > </h:column> > > </h:dataTable> > > <h:commandButton type="submit" value="Create User" action="create"/> > <h:commandLink value="Select Users" action="#{userList.getUsers}"/> > > </h:form> > </f:subview> > </div> > > Here's the browser source: > > <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" > "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> > > <html xmlns="http://www.w3.org/1999/xhtml"lang="en" xml:lang="en"> > > <head> > > <meta http-equiv="content-type" content="text/html; > charset=iso-8859-1" /> > <meta http-equiv="Pragma" content="no-cache" /> > <meta http-equiv="Cache-Control" content="no-cache" /> > > <meta http-equiv="Cache-Control" content="max-age=0" /> > <meta http-equiv="Cache-Control" content="s-max-age=0" /> > <meta http-equiv="Cache-Control" content="must-revalidate" /> > <meta http-equiv="Cache-Control" content="no-store" /> > <meta http-equiv="expires" content="0" /> > <link type="text/css" rel="stylesheet" > href="/pib/layout/css/scaffold.css"/> > <link type="text/css" rel="stylesheet" > href="/pib/layout/css/examples.css"/> > > <title>PIB: User List</title> > > > </head> > > <body> > > <div id="page"> > > > <div id="bannerHeader"> > > <img src="layout/images/keys_blue_banner.jpg" > width="575" height="79" > id="headerImage" alt="Application Name"/> > <img src="layout/images/blue_logo.gif" height="79" > width="158" id="headerLogo" > alt="DTE Energy, Inc. Logo"/> > > <div id="bannerTitleArea"> > > <h5 class="bannerTitleText">Project In A Baggie</h5> > </div> > </div> > > > > > > <div id="secondaryNav"> > > <form id="secondaryNavView:secondaryNav" > name="secondaryNavView:secondaryNav" method="post" > action="/pib/userList.faces" > enctype="application/x-www-form-urlencoded"><input > type="hidden" name="jsf_tree_64" id="jsf_tree_64" > value="H4sIAAAAAAAAAK1UzW7TQBCehoQKFNQWDhwQCARSKEJ26v6lRFwIKrQKLaIpAuUQbext4mKvt+txSC7cuPcBkLijPgFPwAmuvARXzuzGduJasZJKXKyd8cx838zOt2d/oOALeOGJjkY4MbtUcwdHxKS+NLljmwRtj2kNQekBisDEQNBXhJEOFQ/Gzprnco9Rhtvvb/7+svv3Vw7yTbjSMru2Ywnph91mXULoIYQeQegJCH1WiGodFlpmbNUc4vsI1+vHpEd0h7COLuNt1pFhxXHYjnUCnyDXhPmWQkaZcqOZyNlvH1MTq30eiIjq/5hG9ftZ6cfS59NvOYA+B4BLvqIBgfoWpD2XsgspGxCWFcm+FpIY9aN10XW0l/KzHyAPsG6zDwj5rudSnq6hDtcQij5xuSMpDhzqZwXlj8hJ5s95RcXyzMxk3+ImR7g/hfK2J1zFh5oes4gY7JGezCpNzjrc2SOuvM+ax5DYjAqExWTmW5t+TBNKjzWXQfiqKShBeuhTEZWQPB5NYS9v1yXMiibesq0NrlJvyXJc2G7Uj3LdRlgauw6Cdm8GrvkRkdluvkH7GPLYTJfOT4YacisjFGTOyooEupM1+ZrnBC4Lq29JZUSS0ZRktEgypz/ffV30l514xeeGcE/U1BEudymxqJiAW86Yw7mgtaFViSxjVDmBoQ5PJ6SuzrgTsv17We2/JoK4FNXKDWtW+ASgraFViqzNc4zXL8J4YxrjCRMyVpPohpFEN8oXQDfUHjycsnDPCZIGaTs03IjKWDOPZ9PMswBRyjhEXEtOM+5gPdZSMZCirNs+qsciVtNC7Iy1hHA36/LUu/DG85Dzf4ls1BfjBgAA" > /><input type="hidden" name="jsf_state_64" id="jsf_state_64" > value="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" > /><input type="hidden" name="jsf_viewid" id="jsf_viewid" > value="/userList.jsp" /> > > > > <a id="secondaryNavView:secondaryNav:home" > href="/pib/home.faces">Home</a> > > > > > <a id="secondaryNavView:secondaryNav:sampleStyles" > href="/pib/sample.faces">Sample Styles</a> > > > > <a id="secondaryNavView:secondaryNav:faqs" > href="/pib/faqs.faces">FAQs</a> > > > > <a id="secondaryNavView:secondaryNav:javadoc" > href="http://javadoc.dteco.com">DTE Javadoc Repository</a> > > > > <a id="secondaryNavView:secondaryNav:sdpc" > href="http://sdpc.dteco.com">SDPC</a> > > > <input type="hidden" > name="secondaryNavView:secondaryNav_SUBMIT" value="1" > /></form> > > </div> > > > > <div id="primaryNav"> > > <form id="primaryNavSubview:primaryNav" > name="primaryNavSubview:primaryNav" method="post" > action="/pib/userList.faces" > enctype="application/x-www-form-urlencoded"><input > type="hidden" name="jsf_tree_64" id="jsf_tree_64" > value="H4sIAAAAAAAAAK1UzW7TQBCehoQKFNQWDhwQCARSKEJ26v6lRFwIKrQKLaIpAuUQbext4mKvt+txSC7cuPcBkLijPgFPwAmuvARXzuzGduJasZJKXKyd8cx838zOt2d/oOALeOGJjkY4MbtUcwdHxKS+NLljmwRtj2kNQekBisDEQNBXhJEOFQ/Gzprnco9Rhtvvb/7+svv3Vw7yTbjSMru2Ywnph91mXULoIYQeQegJCH1WiGodFlpmbNUc4vsI1+vHpEd0h7COLuNt1pFhxXHYjnUCnyDXhPmWQkaZcqOZyNlvH1MTq30eiIjq/5hG9ftZ6cfS59NvOYA+B4BLvqIBgfoWpD2XsgspGxCWFcm+FpIY9aN10XW0l/KzHyAPsG6zDwj5rudSnq6hDtcQij5xuSMpDhzqZwXlj8hJ5s95RcXyzMxk3+ImR7g/hfK2J1zFh5oes4gY7JGezCpNzjrc2SOuvM+ax5DYjAqExWTmW5t+TBNKjzWXQfiqKShBeuhTEZWQPB5NYS9v1yXMiibesq0NrlJvyXJc2G7Uj3LdRlgauw6Cdm8GrvkRkdluvkH7GPLYTJfOT4YacisjFGTOyooEupM1+ZrnBC4Lq29JZUSS0ZRktEgypz/ffV30l514xeeGcE/U1BEudymxqJiAW86Yw7mgtaFViSxjVDmBoQ5PJ6SuzrgTsv17We2/JoK4FNXKDWtW+ASgraFViqzNc4zXL8J4YxrjCRMyVpPohpFEN8oXQDfUHjycsnDPCZIGaTs03IjKWDOPZ9PMswBRyjhEXEtOM+5gPdZSMZCirNs+qsciVtNC7Iy1hHA36/LUu/DG85Dzf4ls1BfjBgAA" > /><input type="hidden" name="jsf_state_64" id="jsf_state_64" > value="H4sIAAAAAAAAAMVYW28bRRQeO3bcpkG50YJ6AbelVLRonTjpLX2gjp0QS3ZS1U5BgLSd7E682653t7PjZANyBUhISLwgQStVAvUHtCAkHkBIIBBIPIEECB74ATxRnoEHysysL+t41/G6tbpSdid7OXO+833nzBnfuQuiFQwmXs5dhutQ0KBeEpZXLyOJnH33xxdvjVrPaGEAbBMAMFC5Cq4BdkQao5jpHBYGo9xAhaiakDMkqKFrf49d+mDynz8HQCQLdijQUiRDRjkQk4yKTvAmAeN80gSbNFEgWNVLZ3NgB/u3AkuIzRGlr69DrEKd8H9t8x49CAAEhJHObsVsAoYWi/mcOJcqZNMEPJKoWAjnVIsIly3u2UTTsxTGcJM9s9/4+cDN7+GHAyCUBRFLfRU5GDciLUiboxgBoxaSDF2GeHMJrl9U0YZpsqcjdIqx5hSLFGgemtHY7998u+fSTwMgvACGNAPKC1AiBs6CnUTByFIMTbbN585x48MbO+h5lP6FCEgyW7awBiVkCRtoFZqmsJJNG2XT0JFOirAkLCxfyM9fENOL2VxGzGYK7R4UEPki89b1G59/NjPA+NsYZhPUpqOTDLux2DajkGHZxZ7yGIQ8YrCnGQ022G0Sh/W6swsGLhNwYGuYZt03+DSjbbjD7PY4fzjR4muUgBibQzYkQomSTYk5D8umhgpkU0MWvbsGr7KLYpQRVcPwmoEllJWzuozsRmS4sucMQ0NQ/yGOX//1g3//CoPQSyC6DrUKZT9kmz5HIzJRHpmoR2T2eymGDQ5tjVFO1a8QcKhjjGYZkqCBoqRGRFWetNmjw+x0hCEiYCRhqqsJZtJxwQ9mC1TgiMAOgjXO0+E4Acc6o3Oz1yPKqTaUYxylY7rPOA/WcW7DIpNlj/iSPiwyk31G90Qd3ZHO6GpJ2SPA6TaAjyuEmLOJRM2uIBM6myDRstcvpE92ySMrOj3CnGmDubsGkxntEaPthZKuT2MmVsuOz4XK6npjgXrFx/lQB+eHmrZ6XB1EPvdeAva3uTXbvOPj2oCfa2EnriephxJGkKAVuti7gkzAeQOXBGhCSUFCedMpuhjRtQBfUYmgkDJdIOmJrVUX+G2E56CFhMVsJjO/JKaX8/nUEl1Vl86vFAtiYb7oHaBjnVDNihot86KiyjLSRXv7lSXMoxoOol6lrt6jHT1pRqlHCZ9olzAvRU3DD7ogRVuBlupAD3YOOVVFJ6E3ENCW4Lh7RZbqnZUgpghhupELhEJ7AdPOC+HM7T/OVX9Z/i4MwjkwKEoatGizMeZqXdPsFu1cJ8QN/onzudNFtza5tc7aNtcxOOqhU6QJeUQUQ55TdZm2w1m6moHmYZuNyNA8eOzwa41Ot4TISm1c5RwNsWGc096JGNOvlozUTbdUkrd7qCTDdUss43qsJe80askWt2bdxoPWkggBUbbWnqhdZxzBn3Yup1y6ZyfVuxod6+RRax2gqrGQRgWA5OexUTGXIO1Xt68NER6liEeUvDpRHq8bW7vOIm2Mza6yg3751CItinHVihMFxTWmI2MtzmBZcVWPwziBqxpiL4aVafpBkFy+zjq1FseYLZranaNISQlaverkTjrXqRrJU0mH3TMtVa3FeIgbDzvqdXYH/HmVJu3T3kl7kb3kl7O0YLoylQ046KoT7EF+Y7nOOs08THsCLBeQCTGkG0aXJCipz3o/7UIsPP4f198NkCahWuSm6N5qpuu96UIqPV8Ul1L5+YK3zUEFQbll7bZ9feMS/brbDKj5O8mLxq2uZT+0oGKqdZaVtdrYRaHyTcEvA8zuJz92+xNHe+z0KQETjpKKy8Iac5b5Wm1UEM9SzgYf3QfrTgf7ldcbnJT+8TcdkL+dOfjg6PutL/SNN+ijLUO37N25D/ZOPTT2TgZkL8qXxO6Z811i7jrtot/EvgtGuOb46dr1jEdsOI9vupuwfa1NGAeRQQSqmlXt2HiZXXX/W6Twn78UelTkSEORJeZ6lYO+6b2q+ybLvT4kCz2FhprJ4Zsdt3vPjmTyYWVHcipgdsRYJx/PyvefH6E9PeZHPWjTXeXF3vbNSeC0CF62Q0f7UrZHG0nCLlnZVbQ9hbnPrza9T6kcd7dQcxVCDJ2AQ9v1v8mZ7va23G3aqCa8G9WCyn4fTUlENfSWnSZoHqxjHXR290x6u9J8yPeSvpzRL6zKalklwbYD7zV+gdsW/4kA+NvU+Gi7Gi1nnzxc4DuyrnbK9v/yiFeCLRsAAA==" > /><input type="hidden" name="jsf_viewid" id="jsf_viewid" > value="/userList.jsp" /> > > > > <a id="primaryNavSubview:primaryNav:createUser" > href="/pib/createUser.faces">Create User</a> > > <a href="#" > onclick="clear_primaryNavSubview_3AprimaryNav();document.forms['primaryNavSubview:primaryNav'].elements['primaryNavSubview:primaryNav:_link_hidden_'].value='primaryNavSubview:primaryNav:_id6';if(document.forms['primaryNavSubview:primaryNav'].onsubmit){if(document.forms['primaryNavSubview:primaryNav'].onsubmit()) > document.forms['primaryNavSubview:primaryNav'].submit();}else{document.forms['primaryNavSubview:primaryNav'].submit();}return > false;" id="primaryNavSubview:primaryNav:_id6">List > Users</a> > > > <input type="hidden" > name="primaryNavSubview:primaryNav_SUBMIT" value="1" > /><input type="hidden" > name="primaryNavSubview:primaryNav:_link_hidden_" /><script > type="text/javascript"><!-- > function clear_primaryNavSubview_3AprimaryNav() { > var f = document.forms['primaryNavSubview:primaryNav']; > > f.elements['primaryNavSubview:primaryNav:_link_hidden_'].value=''; > f.target=''; > } > clear_primaryNavSubview_3AprimaryNav(); > //--></script></form> > > </div> > > > > > <div id="pageBody"> > > <form id="userListSubview:userListForm" > name="userListSubview:userListForm" method="post" > action="/pib/userList.faces" > enctype="application/x-www-form-urlencoded"><input > type="hidden" name="jsf_tree_64" id="jsf_tree_64" > value="H4sIAAAAAAAAAK1UzW7TQBCehoQKFNQWDhwQCARSKEJ26v6lRFwIKrQKLaIpAuUQbext4mKvt+txSC7cuPcBkLijPgFPwAmuvARXzuzGduJasZJKXKyd8cx838zOt2d/oOALeOGJjkY4MbtUcwdHxKS+NLljmwRtj2kNQekBisDEQNBXhJEOFQ/Gzprnco9Rhtvvb/7+svv3Vw7yTbjSMru2Ywnph91mXULoIYQeQegJCH1WiGodFlpmbNUc4vsI1+vHpEd0h7COLuNt1pFhxXHYjnUCnyDXhPmWQkaZcqOZyNlvH1MTq30eiIjq/5hG9ftZ6cfS59NvOYA+B4BLvqIBgfoWpD2XsgspGxCWFcm+FpIY9aN10XW0l/KzHyAPsG6zDwj5rudSnq6hDtcQij5xuSMpDhzqZwXlj8hJ5s95RcXyzMxk3+ImR7g/hfK2J1zFh5oes4gY7JGezCpNzjrc2SOuvM+ax5DYjAqExWTmW5t+TBNKjzWXQfiqKShBeuhTEZWQPB5NYS9v1yXMiibesq0NrlJvyXJc2G7Uj3LdRlgauw6Cdm8GrvkRkdluvkH7GPLYTJfOT4YacisjFGTOyooEupM1+ZrnBC4Lq29JZUSS0ZRktEgypz/ffV30l514xeeGcE/U1BEudymxqJiAW86Yw7mgtaFViSxjVDmBoQ5PJ6SuzrgTsv17We2/JoK4FNXKDWtW+ASgraFViqzNc4zXL8J4YxrjCRMyVpPohpFEN8oXQDfUHjycsnDPCZIGaTs03IjKWDOPZ9PMswBRyjhEXEtOM+5gPdZSMZCirNs+qsciVtNC7Iy1hHA36/LUu/DG85Dzf4ls1BfjBgAA" > /><input type="hidden" name="jsf_state_64" id="jsf_state_64" > value="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" > /><input type="hidden" name="jsf_viewid" id="jsf_viewid" > value="/userList.jsp" /> > > <span class="h3">Here is the list of users in a table</span> > > > <table> > > <thead> > <tr><th class="recordSeparator">First Name</th><th > class="recordSeparator">Last Name</th><th > class="recordSeparator">Group</th><th > class="recordSeparator">User Id</th></tr></thead> > <tbody > id="userListSubview:userListForm:_id8:tbody_element"> > <tr class=""><td>sdfsdf</td><td>sdf</td><td><a href="#" > onclick="clear_userListSubview_3AuserListForm();document.forms['userListSubview:userListForm'].elements['userListSubview:userListForm:_link_hidden_'].value='userListSubview:userListForm:_id8_0:_id17';document.forms['userListSubview:userListForm'].elements['selectedGroupName'].value='sdf';if(document.forms['userListSubview:userListForm'].onsubmit){if(document.forms['userListSubview:userListForm'].onsubmit()) > document.forms['userListSubview:userListForm'].submit();}else{document.forms['userListSubview:userListForm'].submit();}return > false;" > id="userListSubview:userListForm:_id8_0:_id17">sdf</a></td><td><a > href="#" > onclick="clear_userListSubview_3AuserListForm();document.forms['userListSubview:userListForm'].elements['userListSubview:userListForm:_link_hidden_'].value='userListSubview:userListForm:_id8_0:_id22';if(document.forms['userListSubview:userListForm'].onsubmit){if(document.forms['userListSubview:userListForm'].onsubmit()) > document.forms['userListSubview:userListForm'].submit();}else{document.forms['userListSubview:userListForm'].submit();}return > false;" > id="userListSubview:userListForm:_id8_0:_id22">sdf</a></td></tr> > <tr > class="recordSeparator"><td>fghgh</td><td>fghfg</td><td><a > href="#" > onclick="clear_userListSubview_3AuserListForm();document.forms['userListSubview:userListForm'].elements['userListSubview:userListForm:_link_hidden_'].value='userListSubview:userListForm:_id8_1:_id17';document.forms['userListSubview:userListForm'].elements['selectedGroupName'].value='fg';if(document.forms['userListSubview:userListForm'].onsubmit){if(document.forms['userListSubview:userListForm'].onsubmit()) > document.forms['userListSubview:userListForm'].submit();}else{document.forms['userListSubview:userListForm'].submit();}return > false;" > id="userListSubview:userListForm:_id8_1:_id17">fg</a></td><td><a > href="#" > onclick="clear_userListSubview_3AuserListForm();document.forms['userListSubview:userListForm'].elements['userListSubview:userListForm:_link_hidden_'].value='userListSubview:userListForm:_id8_1:_id22';if(document.forms['userListSubview:userListForm'].onsubmit){if(document.forms['userListSubview:userListForm'].onsubmit()) > document.forms['userListSubview:userListForm'].submit();}else{document.forms['userListSubview:userListForm'].submit();}return > false;" > id="userListSubview:userListForm:_id8_1:_id22">fghfg</a></td></tr></tbody></table> > > > > <input id="userListSubview:userListForm:_id24" > name="userListSubview:userListForm:_id24" type="submit" > value="Create User" > onclick="clear_userListSubview_3AuserListForm();" /> > <a href="#" > onclick="clear_userListSubview_3AuserListForm();document.forms['userListSubview:userListForm'].elements['userListSubview:userListForm:_link_hidden_'].value='userListSubview:userListForm:_id25';if(document.forms['userListSubview:userListForm'].onsubmit){if(document.forms['userListSubview:userListForm'].onsubmit()) > document.forms['userListSubview:userListForm'].submit();}else{document.forms['userListSubview:userListForm'].submit();}return > false;" id="userListSubview:userListForm:_id25">Select > Users</a> > > <input type="hidden" > name="userListSubview:userListForm_SUBMIT" value="1" > /><input type="hidden" > name="userListSubview:userListForm:_link_hidden_" /><input > type="hidden" name="selectedGroupName" /><script type="text/javascript"><!-- > function clear_userListSubview_3AuserListForm() { > var f = document.forms['userListSubview:userListForm']; > > f.elements['userListSubview:userListForm:_link_hidden_'].value=''; > f.elements['selectedGroupName'].value=''; > f.target=''; > } > clear_userListSubview_3AuserListForm(); > //--></script></form> > > </div> > > > > > > > > > > <div id="footer"> > Copyright 2006 DTE Energy, Inc. > </div> > > </div> > > </body> > > </html> > > > > Here's the compliance issues: > > This page is not Valid XHTML 1.0 Transitional! > > Below are the results of checking this document for XML well-formedness and > validity. > 1. Error Line 80 column 208: ID "jsf_tree_64" already defined. > ...type="hidden" name="jsf_tree_64" id="jsf_tree_64" > value="H4sIAAAAAAAAAK2RvWob > > An "id" is a unique identifier. Each time this attribute is used in a > document it must have a different value. If you are using this attribute as > a hook for style sheets it may be more appropriate to use classes (which > group elements) than id (which are used to identify exactly one element). > > ✉ > 2. Info Line 50 column 210: ID "jsf_tree_64" first defined here. > ...type="hidden" name="jsf_tree_64" id="jsf_tree_64" > value="H4sIAAAAAAAAAK2RvWob > 3. Error Line 80 column 857: ID "jsf_state_64" already defined. > ...ype="hidden" name="jsf_state_64" id="jsf_state_64" > value="H4sIAAAAAAAAALWWz28 > > An "id" is a unique identifier. Each time this attribute is used in a > document it must have a different value. If you are using this attribute as > a hook for style sheets it may be more appropriate to use classes (which > group elements) than id (which are used to identify exactly one element). > > ✉ > 4. Info Line 50 column 859: ID "jsf_state_64" first defined here. > ...ype="hidden" name="jsf_state_64" id="jsf_state_64" > value="H4sIAAAAAAAAALWWz28 > 5. Error Line 80 column 2309: ID "jsf_viewid" already defined. > ... type="hidden" name="jsf_viewid" id="jsf_viewid" value="/home.jsp" /> > > An "id" is a unique identifier. Each time this attribute is used in a > document it must have a different value. If you are using this attribute as > a hook for style sheets it may be more appropriate to use classes (which > group elements) than id (which are used to identify exactly one element). > > ✉ > 6. Info Line 50 column 2311: ID "jsf_viewid" first defined here. > ... type="hidden" name="jsf_viewid" id="jsf_viewid" value="/home.jsp" /> > 7. Error Line 114 column 7: document type does not allow element "ul" > here; missing one of "object", "applet", "map", "iframe", "button", "ins", > "del" start-tag. > <ul> > > The mentioned element is not allowed to appear in the context in which > you've placed it; the other mentioned elements are the only ones that are > both allowed there and can contain the element mentioned. This might mean > that you need a containing element, or possibly that you've forgotten to > close a previous element. > > One possible cause for this message is that you have attempted to put a > block-level element (such as "<p>" or "<table>") inside an inline element > (such as "<a>", "<span>", or "<font>"). > > > > *** PROPRIETARY, CONFIDENTIAL OR PRIVILEGED COMMUNICATION *** > This communication may contain proprietary, privileged or confidential > information protected by law. It is solely for the use of the intended > recipient named above. Any review, dissemination, distribution, forwarding, > or copying of this communication by someone other than the intended > recipient, or the employee responsible for delivering this communication to > the intended recipient, is prohibited. If you have received this > communication in error, please immediately notify the sender via email, then > destroy the original message. > > > > > > > > > > > > > > > > -- Matthias Wessendorf Zülpicher Wall 12, 239 50674 Köln http://www.wessendorf.net mwessendorf-at-gmail-dot-com

