You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Dave Newton <da...@gmail.com> on 2014/03/06 14:17:31 UTC

Re: Why do I get this XHTML validation errors? (second attempt)

You can always wrap the hidden tags in your own table row/etc.

That's probably something that could be corrected in the "xhtml" theme.


On Thu, Mar 6, 2014 at 8:13 AM, Fredrik Andersson <fr...@hotmail.com>wrote:

> Hello guys!
>
> I trying to produce a app that renders in XHTML.
> <!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">
>
> How ever I got a form looking like this:
>
> <s:form action="productcommentssave">
> <s:textfield name="productComment.emailAddress" label="Email address"
> labelposition="top" maxlength="128" size="40" />
> <s:textfield name="productComment.subject" label="Subject"
> labelposition="top" maxlength="128" size="40" />
> <s:textarea name="productComment.text" label="Message (max 1024 chars)"
> cols="52" rows="5" labelposition="top" wrap="hard"/>
> <s:submit />
> <s:hidden name="PRODUCTCOMMENTSACTION_FORM_TOKEN_NAME"
> value="%{formToken}" />
> <s:hidden name="productid" value="%{product.id}" />
> </s:form>
>
> This gets rendered like:
> 25 <form id="productcommentssave" name="productcommentssave"
> action="/productcommentssave.action" method="post">
> 26 <table class="wwFormTable">
> 27 <tr>
> 28 <td align="left" valign="top" colspan="2"><label
> for="productcommentssave_productComment_emailAddress" class="label">Email
> address:</label></td>
> 29 </tr>
> 30 <tr>
> 31 <td
> 32><input type="text" name="productComment.emailAddress" size="40"
> maxlength="128" value=""
> id="productcommentssave_productComment_emailAddress"/></td>
> 33 </tr>
> 34
> 35
> 36 <tr>
> 37 <td align="left" valign="top" colspan="2"><label
> for="productcommentssave_productComment_subject"
> class="label">Subject:</label></td>
> 38 </tr>
> 39 <tr>
> 40 <td
> 41><input type="text" name="productComment.subject" size="40"
> maxlength="128" value=""
> id="productcommentssave_productComment_subject"/></td>
> 42 </tr>
> 43
> 44
> 45 <tr>
> 46 <td align="left" valign="top" colspan="2"><label
> for="productcommentssave_productComment_text" class="label">Message (max
> 1024 chars):</label></td>
> 47 </tr>
> 48 <tr>
> 49 <td
> 50><textarea name="productComment.text" cols="52" rows="5" wrap="hard"
> id="productcommentssave_productComment_text"></textarea></td>
> 51 </tr>
> 52
> 53
> 54 <tr>
> 55 <td colspan="2"><div align="right"><input type="submit"
> id="productcommentssave_0" value="Submit"/>
> 56 </div></td>
> 57</tr>
> 58
> 59
> 60 <input type="hidden" name="PRODUCTCOMMENTSACTION_FORM_TOKEN_NAME"
> value="1394108222515"
> id="productcommentssave_PRODUCTCOMMENTSACTION_FORM_TOKEN_NAME"/>
> 61 <input type="hidden" name="productid" value="3"
> id="productcommentssave_productid"/>
> 62 </table></form>
>
> From http://validator.w3.org/#validate_by_input+with_options I validate
> it and get these 3 anoying errors:
>
> Error Line 50, Column 63: there is no attribute "wrap"
> ...Comment.text" cols="52" rows="5" wrap="hard"
> id="productcommentssave_productCo...
> You have used the attribute named above in your document, but the document
> type you are using does not support that attribute for this element. This
> error is often caused by incorrect use of the "Strict" document type with a
> document that uses frames (e.g. you must use the "Transitional" document
> type to get the "target" attribute), or by using vendor proprietary
> extensions such as "marginheight" (this is usually fixed by using CSS to
> achieve the desired effect instead).
> This error may also result if the element itself is not supported in the
> document type you are using, as an undefined element will have no supported
> attributes; in this case, see the element-undefined error message for
> further information.
> How to fix: check the spelling and case of the element and attribute,
> (Remember XHTML is all lower-case) and/or check that they are both allowed
> in the chosen document type, and/or use CSS instead of this attribute. If
> you received this error when using the <embed> element to incorporate flash
> media in a Web page, see the FAQ item on valid flash.
>
> Error Line 60, Column 161: document type does not allow element "input"
> here
> ...1394108222515"
> id="productcommentssave_PRODUCTCOMMENTSACTION_FORM_TOKEN_NAME"/>
> The element named above was found in a context where it is not allowed.
> This could mean that you have incorrectly nested elements -- such as a
> "style" element in the "body" section instead of inside "head" -- or two
> elements that overlap (which is not allowed).
> One common cause for this error is the use of XHTML syntax in HTML
> documents. Due to HTML's rules of implicitly closed elements, this error
> can create cascading effects. For instance, using XHTML's "self-closing"
> tags for "meta" and "link" in the "head" section of a HTML document may
> cause the parser to infer the end of the "head" section and the beginning
> of the "body" section (where "link" and "meta" are not allowed; hence the
> reported error).
>
> Error Line 61, Column 93: document type does not allow element "input" here
> ...t type="hidden" name="productid" value="3"
> id="productcommentssave_productid"/>
> (same as at line 60)
>
> Do you guys see anything that I could do to correct this? I would love to
> have a app with correct xhtml.
>
> Best regards
> Fredrik




-- 
e: davelnewton@gmail.com
m: 908-380-8699
s: davelnewton_skype
t: @dave_newton <https://twitter.com/dave_newton>
b: Bucky Bits <http://buckybits.blogspot.com/>
g: davelnewton <https://github.com/davelnewton>
so: Dave Newton <http://stackoverflow.com/users/438992/dave-newton>