在Javadoc中允许使用的HTML标签

37

Checkstyle规则JavadocStyle不允许使用标签<u>。根据文档,这些检查是基于可从Sun获取的DocCheck doclet执行的检查模式。不幸的是,我没有在任何地方找到DocCheck。我也没有找到有关Javadoc中允许使用的HTML标记的官方文档。是否存在?

2个回答

40

Javadoc仅允许使用HTML标签的子集。

Javadoc的doclint组件强制执行此限制。您可以通过传递-Xdoclint:none到javadoc来禁用所有doclint警告,但是您应该考虑修复您的Javadoc注释,否则生成的HTML API文档可能会看起来很糟糕或者可能会省略内容。(我通常使用-Xdoclint:all,-missing来获取有关除缺少Javadoc @标记之外的所有内容的警告。)

我没有找到doclint允许使用的标签的公共文档,但是这里是它允许的HTML标签列表,我从JDK的文件.../doclint/HtmlTag.java中获得了这些信息。

Java 17

A
ABBR
ACRONYM
ADDRESS
ARTICLE
ASIDE
B
BDI
BIG
BLOCKQUOTE
BODY
BR
CAPTION
CENTER
CITE
CODE
COL
DD
DEL
DFN
DIV
DT
EM
FONT
FIGURE
FIGCAPTION
FRAME
FRAMESET
H1
H2
H3
H4
H5
H6
HEAD
HR
HTML
I
IFRAME
IMG
INS
KBD
LI
LINK
MAIN
MARK
META
NAV
NOFRAMES
NOSCRIPT
P
Q
S
SAMP
SCRIPT
SECTION
SMALL
SPAN
STRIKE
STRONG
STYLE
SUB
SUP
TD
TEMPLATE
TH
TIME
TITLE
TT
U
UL 
WBR
VAR

Java 8

A
B
BIG
BLOCKQUOTE
BODY
BR
CAPTION
CENTER
CITE
CODE
DD
DFN
DIV
DL
DT
EM
FONT
FRAME
FRAMESET
H1
H2
H3
H4
H5
H6
HEAD
HR
HTML
I
IMG
LI
LINK
MENU
META
NOFRAMES
NOSCRIPT
OL
P
PRE
SCRIPT
SMALL
SPAN
STRONG
SUB
SUP
TABLE
TBODY
TD
TFOOT
TH
THEAD
TITLE
TR
TT
U
UL
VAR

Java 9

JDK 9 允许使用不同于 JDK 8 的一组标签。以下是两个 JDK 版本的标签列表,其中包含仅在其中一个 JDK 中允许使用的标签的注释。

A
BIG       // JDK 8 only
B         // JDK 8 only
BLOCKQUOTE
BODY
BR
CAPTION
CENTER
CITE      // JDK 8 only
CODE
DD
DFN       // JDK 8 only
DIR       // JDK 9 only
DIV
DL
DT
EM
FONT
FOOTER    // JDK 9 only
FRAME     // JDK 8 only
FRAMESET  // JDK 8 only
H1
H2
H3
H4
H5
H6
HEAD
HEADER     // JDK 9 only
HR
HTML
I
IFRAME     // JDK 9 only
IMG
INPUT      // JDK 9 only
LI
LINK
LISTING    // JDK 9 only
MAIN       // JDK 9 only
MENU
META
NAV        // JDK 9 only
NOFRAMES   // JDK 8 only
NOSCRIPT
OL
P
PRE
SCRIPT
SECTION     // JDK 9 only
SMALL
SPAN
STRONG
SUB
SUP         // JDK 8 only
TABLE
TBODY
TD
TFOOT       // JDK 8 only
TH
THEAD       // JDK 8 only
TITLE
TR
TT
U           // JDK 8 only
UL
VAR         // JDK 8 only

1
我们如何在javadoc中包含一个脚本标签?我需要在javadoc加载时加载一个javascript文件(用于代码语法高亮)。有什么想法如何实现这一点吗? - Alexander Mills
1
@AlexanderMills,听起来你不应该使用<script>标签来实现语法高亮,而是使用Doclet。它是一种Java代码,可以调用Java Doclet API“来指定Javadoc工具的输出内容和格式”。 - George Pantazes
我想知道在JavaDoc中执行脚本是否存在安全问题。但可能其他人之前已经考虑过并得出了否定的结论,这通常是Java中每个细节的情况。 - Fabian Röling

21

在 Javadoc 注释中,对 HTML 的使用没有实际限制。Javadoc documentation 表示:

注释使用 HTML 编写 - 文本必须用 HTML 编写,这意味着它们应该使用 HTML 实体并且可以使用 HTML 标签。您可以使用浏览器支持的任何版本的 HTML; 我们编写了标准 doclet 来生成符合 HTML 3.2 规范的代码,包括层叠样式表和框架(文档注释之外)。 (由于框架集的存在,我们在每个生成的文件前加上“HTML 4.0”)。

允许使用的 HTML 标签列表是硬编码在 JavadocStyle Checkstyle 检查中的(通过查看 Checkstyle 5.6 源代码进行验证)。 因此,如果您希望保留其它好的属性并继续使用该检查,您将不得不使用受限制的 HTML 标签集合。解决下划线问题的一种方法是使用 CSS(允许使用),如下所示:

<span style="text-decoration:underline;">underlined text</span>

3
FYI,<u>元素已经在Checkstyle 5.8中被明确添加到硬编码的标签列表中。该列表仍然无法修改,但是这个特定问题已经得到解决。 - barfuin
对我来说,我尝试了<del>但是没有起作用,而<s>却解决了问题,感谢您的评论。 - Basheer AL-MOMANI

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接