On Jul 25, 2013, at 7:16 PM, Jonathan Gibbons wrote:

> On 07/25/2013 02:01 PM, Nick Williams wrote:
>> Okay. To address some of your points (not in order):
>> 
>> - I do not interpret "no end tags" as a strict prohibition on self-closing 
>> elements. I think many people agree with me. I think the fact that browsers 
>> barf at <br></br> but not <br /> reinforces this interpretation.
> 
> The (implicit) prohibition on self-closing elements is that they are not 
> mentioned/allowed in the spec we are trying to follow, which is HTML 4.01, as 
> defined in the DOCTYPE declarations in the generated files.
> 
>> 
>> - HTML5 does allow self-closing elements ... but ONLY for void elements (not 
>> empty elements that allow content).
> 
> When we convert javadoc to be able to generate HTML 5, we would obviously 
> update doclint accordingly.
> 
>> 
>> - So you say -Xdoclint for JavaDoc was meant to be the analog to -Xlint for 
>> JavaC, and I buy that ... except that it wasn't implemented that way. -Xlint 
>> produces /warnings/. -Xdoclint produces /errors/ and causes JavaDoc to fail. 
>> If -Xlint produces warnings and -Werror makes those warnings errors, then 
>> IMO -Xdoclint should also produce warnings and -Werror (or possibly 
>> something like -Wdocerror) should make those warnings errors. After all, the 
>> <br /> problem that the W3 validator points out is a WARNING, not an ERROR.
> 
> -Xdoclint (intentionally) generates both warnings and errors.  There have 
> been some cases where seemingly minor issues have caused incorrect 
> documentation to be generated, which is why we generate errors as well as 
> warnings.

So why is "self-closing element not allowed" considered an error when it's only 
a warning when validated with a W3 validator? Seems to me like a reasonable 
compromise to make this a warning instead of an error. Thoughts?

> 
> 
>> 
>> - Somewhat off topic, every JavaDoc page produced by Java 8 right now has at 
>> least one W3 validator warning, because they're all missing a character 
>> encoding declaration (assumed to be UTF-8 for validation, but that's not 
>> portable).
> 
> Yes, we know about that one. We just haven't gotten around to fixing it yet. 
> The goal is that it should be possible to generate docs that are 
> validator-clean.  There are other big boo-boos, such as invalid characters in 
> the anchors for method documentation, and duplicate names for overloaded 
> methods.   But we'll get there.  If you find other cases of javadoc output 
> failing a validator that you think is javadoc's fault, please let us know on 
> javadoc-...@openjdk.java.net.
> 
> -- Jon
> 
> 
>> 
>> Nick
>> 
>> On Jul 25, 2013, at 3:46 PM, Jonathan Gibbons wrote:
>> 
>>> First, as was pointed out earlier[1] in the original thread, the HTML 4 spec
>>> does not mention the existence of self-closing elements, and in that 
>>> message,
>>> David makes a good point that <br> is defined to not have an end tag,
>>> making the <br/> syntax doubly questionable.
>>> 
>>> So what does "doclint" stand for?  Read it as "doc lint" meaning it is to
>>> javadoc comments what -Xlint is to javac and lint is to C code. In other
>>> words, it is intended to be used to point out questionable (or erroneous)
>>> input.   The ";" in "for (Item i: list);" is totally legal, the cast in 
>>> "String s =
>>> (String) "abc"; are both legal, but we do not think it unreasonable to
>>> highlight them in code, along with all the other -X lint warnings.  So
>>> too with -Xdoclint messages regarding javadoc comments.
>>> 
>>> Yes, you can say that all the browsers (now) accept this syntax -- but
>>> the design intent of -Xdoclint was to highlight issues that might cause
>>> a validator to give comments.  For far too long, the javadoc tool itself
>>> has generated bad code, and so the general goal in the ongoing javadoc
>>> TLC has been that given valid input, javadoc should generate valid output,
>>> where "valid" means "conforms to the published DOCTYPE" and accepted
>>> by a standard recognized validator, such as the one I cited at w3c.org.
>>> 
>>> I would /strongly/ prefer that we not revert back to "is the output from 
>>> javadoc
>>> accepted by all browsers?".
>>> 
>>> Should -Xdoclint be opt-in or opt-out?  For what its worth, this was
>>> always a controversial decision, because of the potential for discussions 
>>> like
>>> this. We've ended up with a compromise.  It is opt-in at javac time, which 
>>> is
>>> when I'd expect most interested developers to want to use it -- as a 
>>> developer,
>>> I want to see the doclint feedback at the time I'm writing my doc comments,
>>> when I'm in the compile-edit-test cycle.   But it is not enabled by default 
>>> for
>>> javac.   But it is enabled by default in javadoc at doc-generation time.
>>> When you're generating docs, it is good for folk to know that the docs do
>>> not conform to the declared standard (i.e. HTML 4.01)  If you're not 
>>> interested
>>> in the feedback, you can disable it easily enough. If you are interested,
>>> a global replace of <br/> to <br> should not be an onerous task in any
>>> modern IDE.
>>> 
>>> Finally, another message [2] in the thread mentioned HTML 5.  That is 
>>> definitely
>>> on the upcoming radar.  I would also like to see javadoc more forgiving in
>>> its input while still generating conformant output. Yes, that might mean 
>>> fixing
>>> up minor transgressions.   But not today.
>>> 
>>> -- Jon
>>> 
>>> 
>>> [1] 
>>> http://mail.openjdk.java.net/pipermail/core-libs-dev/2013-July/019262.html
>>> [2] 
>>> http://mail.openjdk.java.net/pipermail/core-libs-dev/2013-July/019264.html
>>> 
>>> On 07/25/2013 01:22 PM, Nick Williams wrote:
>>>> Jonathan, I don't see the "confirmation that this is not legal HTML" that 
>>>> you reference. I see a warning that some browsers may not interpret it 
>>>> correctly. But IE 5+ and all Firefox, Chrome, Netscape, Opera, etc. 
>>>> versions interpret it correctly.
>>>> 
>>>> I understand your point about the spec not specifically allowing it. 
>>>> HOWEVER, I promise you there are TENS OF THOUSANDS of existing JavaDoc'd 
>>>> classes that will break JavaDoc generation as a result of this change.
>>>> 
>>>> Maybe doclint (what does that stand for, by the way?) could be a 
>>>> default-off feature instead of a default-on feature?
>>>> 
>>>> Nick
>>>> 
>>>> On Jul 25, 2013, at 1:59 PM, Jonathan Gibbons wrote:
>>>> 
>>>>> The message about "self-closing element not allowed" is because 
>>>>> self-closing elements are not allowed in HTML 4. The message is generated 
>>>>> by the new "doclint" feature available in javac and javadoc, which is 
>>>>> specifically intended to detect issues in javadoc comments.  If you do 
>>>>> not wish to use the new doclint feature, you can disable it with 
>>>>> -Xdoclint:none.
>>>>> 
>>>>> 
>>>>> As confirmation that this is not legal HTML, try typing a code fragment 
>>>>> such as the following into the W3c validator at 
>>>>> http://validator.w3.org/check
>>>>> 
>>>>>> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
>>>>>> "http://www.w3.org/TR/html4/loose.dtd";>
>>>>>> <head>
>>>>>> <title>test</title>
>>>>>> </head>
>>>>>> <body>
>>>>>> <br/>
>>>>>> </body>
>>>>>> </html>
>>>>> You will get the following warning:
>>>>> 
>>>>>> 1. /Line 6 <http://validator.w3.org/check#line-6>, Column 4/:
>>>>>>    NET-enabling start-tag requires SHORTTAG YES
>>>>>>    |<br*/*>|
>>>>>> 
>>>>>>    For the current document, the validator interprets strings like
>>>>>>    |<FOO />| according to legacy rules that break the expectations of
>>>>>>    most authors and thus cause confusing warnings and error messages
>>>>>>    from the validator. This interpretation is triggered by HTML 4
>>>>>>    documents or other SGML-based HTML documents. To avoid the
>>>>>>    messages, simply remove the "/" character in such contexts. NB: If
>>>>>>    you expect |<FOO />| to be interpreted as an XML-compatible
>>>>>>    "self-closing" tag, then you need to use XHTML or HTML5.
>>>>>> 
>>>>>>    This warning and related errors may also be caused by an unquoted
>>>>>>    attribute value containing one or more "/". Example: |<a
>>>>>>    href=http://w3c.org>W3C</a>|. In such cases, the solution is to
>>>>>>    put quotation marks around the value.
>>>>>> 
>>>>> -- Jon
>>>>> 
>>>>> 
>>>>> 
>>>>> On 07/25/2013 11:14 AM, Alan Bateman wrote:
>>>>>> Re: Invalid "self-closing element not allowed" JavaDoc error.eml
>>>>>> 
>>>>>> Subject:
>>>>>> Re: Invalid "self-closing element not allowed" JavaDoc error
>>>>>> From:
>>>>>> "David M. Lloyd" <david.ll...@redhat.com>
>>>>>> Date:
>>>>>> 07/25/2013 10:41 AM
>>>>>> 
>>>>>> To:
>>>>>> core-libs-dev@openjdk.java.net
>>>>>> 
>>>>>> 
>>>>>> On 07/25/2013 12:27 PM, Nick Williams wrote:
>>>>>>> My apologies if this is not the right place to address this. If so, 
>>>>>>> please forgive and direct me to the correct list.
>>>>>>> 
>>>>>>> There are a lot of people/projects complaining about Java 8's new 
>>>>>>> "self-closing element not allowed" error when compiling JavaDoc that 
>>>>>>> has legal <br /> tags in it (just google "self-closing element not 
>>>>>>> allowed" in quotes). Some (including myself) are asking, "Why should we 
>>>>>>> fix this? The problem is not in the JavaDoc, it's in the JavDoc 
>>>>>>> compiler." However, I haven't been able to find anyone who has actually 
>>>>>>> broached the subject on any mailing lists.
>>>>>>> 
>>>>>>> <br /> is completely legal. While it is not strictly required by the 
>>>>>>> HTML standard (unless you're using XHTML), using self-closing tags is 
>>>>>>> /preferred/ because it's more obvious what the intention is. Perhaps 
>>>>>>> most importantly, <br /> is supported on 100% of browsers and is used 
>>>>>>> throughout JavaDoc all over the place. I have a feeling that once more 
>>>>>>> projects start compiling on a released Java 8, this is going to make a 
>>>>>>> fair number of people angry that hey have to "fix" (read: needlessly 
>>>>>>> change) potentially thousands of classes' worth of JavaDoc.
>>>>>>> 
>>>>>>> What was the motivation behind the new "self-closing element not 
>>>>>>> allowed" check and how can we make it go away?
>>>>>> Not really having a stake in this, I just want to observe a couple 
>>>>>> things.  First, from what I can see, the HTML 4.x specifications make no 
>>>>>> reference to self-closing elements or their syntactical realization.  As 
>>>>>> far as I can tell (not being any kind of SGML expert), self-closing 
>>>>>> elements are not valid or meaningful HTML according to its SGML 
>>>>>> definition.
>>>>>> 
>>>>>> Finally, even if they were allowed, the BR tag is explicitly defined to 
>>>>>> forbid an end tag; self-closing elements imply an end tag (at least they 
>>>>>> do in XML, which appears to be the next-nearest concrete specification 
>>>>>> that has anything to say on the matter).
>>>>>> 
>>>>>> See http://www.w3.org/TR/html401/struct/text.html#edef-BR for more info.
>>>>>> 
>>>>>> So I'm curious when you say "using self-closing tags is /preferred/", do 
>>>>>> you have any sources to cite?
>>>>>> -- 
>>>>>> - DML
>>>>>> 
>>>>>> Re: Invalid "self-closing element not allowed" JavaDoc error.eml
>>>>>> 
>>>>>> Subject:
>>>>>> Re: Invalid "self-closing element not allowed" JavaDoc error
>>>>>> From:
>>>>>> Stephen Colebourne <scolebou...@joda.org>
>>>>>> Date:
>>>>>> 07/25/2013 10:59 AM
>>>>>> 
>>>>>> To:
>>>>>> core-libs-dev@openjdk.java.net
>>>>>> 
>>>>>> 
>>>>>> Its complicated, see for example:
>>>>>> http://stackoverflow.com/questions/3558119/are-self-closing-tags-valid-in-html5
>>>>>> 
>>>>>> The key point here is not whether its in the standard or not, but what
>>>>>> people actually*do*.
>>>>>> 
>>>>>> There is no doubt in my mind that <br /> br space slash is very common
>>>>>> indeed. Its certainly my default. The javadoc validator should be as
>>>>>> lenient as browsers are in this case.
>>>>>> 
>>>>>> Stephen
>>>>>> 
>>>>>> 
>>>>>> On 25 July 2013 18:41, David M. Lloyd<david.ll...@redhat.com>  wrote:
>>>>>>>> On 07/25/2013 12:27 PM, Nick Williams wrote:
>>>>>>>>>> My apologies if this is not the right place to address this. If so, 
>>>>>>>>>> please
>>>>>>>>>> forgive and direct me to the correct list.
>>>>>>>>>> 
>>>>>>>>>> There are a lot of people/projects complaining about Java 8's new
>>>>>>>>>> "self-closing element not allowed" error when compiling JavaDoc that 
>>>>>>>>>> has
>>>>>>>>>> legal <br /> tags in it (just google "self-closing element not 
>>>>>>>>>> allowed" in
>>>>>>>>>> quotes). Some (including myself) are asking, "Why should we fix 
>>>>>>>>>> this? The
>>>>>>>>>> problem is not in the JavaDoc, it's in the JavDoc compiler." 
>>>>>>>>>> However, I
>>>>>>>>>> haven't been able to find anyone who has actually broached the 
>>>>>>>>>> subject on
>>>>>>>>>> any mailing lists.
>>>>>>>>>> 
>>>>>>>>>> <br /> is completely legal. While it is not strictly required by the 
>>>>>>>>>> HTML
>>>>>>>>>> standard (unless you're using XHTML), using self-closing tags 
>>>>>>>>>> is/preferred/
>>>>>>>>>> because it's more obvious what the intention is. Perhaps most 
>>>>>>>>>> importantly,
>>>>>>>>>> <br /> is supported on 100% of browsers and is used throughout 
>>>>>>>>>> JavaDoc all
>>>>>>>>>> over the place. I have a feeling that once more projects start 
>>>>>>>>>> compiling on
>>>>>>>>>> a released Java 8, this is going to make a fair number of people 
>>>>>>>>>> angry that
>>>>>>>>>> hey have to "fix" (read: needlessly change) potentially thousands of
>>>>>>>>>> classes' worth of JavaDoc.
>>>>>>>>>> 
>>>>>>>>>> What was the motivation behind the new "self-closing element not 
>>>>>>>>>> allowed"
>>>>>>>>>> check and how can we make it go away?
>>>>>>>> Not really having a stake in this, I just want to observe a couple 
>>>>>>>> things.
>>>>>>>> First, from what I can see, the HTML 4.x specifications make no 
>>>>>>>> reference to
>>>>>>>> self-closing elements or their syntactical realization.  As far as I 
>>>>>>>> can
>>>>>>>> tell (not being any kind of SGML expert), self-closing elements are not
>>>>>>>> valid or meaningful HTML according to its SGML definition.
>>>>>>>> 
>>>>>>>> Finally, even if they were allowed, the BR tag is explicitly defined to
>>>>>>>> forbid an end tag; self-closing elements imply an end tag (at least 
>>>>>>>> they do
>>>>>>>> in XML, which appears to be the next-nearest concrete specification 
>>>>>>>> that has
>>>>>>>> anything to say on the matter).
>>>>>>>> 
>>>>>>>> Seehttp://www.w3.org/TR/html401/struct/text.html#edef-BR  for more 
>>>>>>>> info.
>>>>>>>> 
>>>>>>>> So I'm curious when you say "using self-closing tags is/preferred/", 
>>>>>>>> do you
>>>>>>>> have any sources to cite?
>>>>>>>> --
>>>>>>>> - DML
> 

Reply via email to