我无法找到以下的授权解释,微格式或指南,所以我把它打开了。如果我错过了什么,请说出来!
假设您有一个HTML页面,其中包含<pre>
元素中某些编程源代码的示例:
<pre>
# code...
</pre>
(更新:正如Pekka在下面指出的那样,<code>
可能比<pre>
更好,但以下示例/讨论可以适用于两者。并且正如Brian Campbell所指出的那样两个元素当然应该用于预先格式化的代码)
<pre>
块内容的编程语言?这将是以语义一致的方式包含在标记中的有用信息。
从语义角度来看,显而易见的选择是使用lang
属性:
<pre lang="ruby">
但根据HTML 4 spec, section 8.1.1:
lang属性的值是一个标识自然语言的语言代码[...]计算机语言是从语言代码中明确排除。
(强调我的)
此外,“ruby”无论如何都不是标准的语言代码。
规范允许使用x
主标记添加“实验”或“私人使用”代码。规范中的示例是lang="x-klingon"
。
理论上,您可以使用x-ruby
,x-java
等来声明<pre>
块中包含的编程语言 - 除了看起来使用{{{ 1}}一般编程语言的属性。
HTML 5 spec on the topic并没有让事情变得更清楚。规范本身没有明确提到“自然”与“编程”语言。相反,它引用了读者BCP 47,其中(再次)说明:
语言标签用于帮助识别语言[...],但不包括主要用于人类交流的语言,例如编程语言。
然而,它继续提及(在第4.1节,第56页)lang
主要语言子标签,其中:
标识语言分类不适合或不适用的内容。一些示例可能包括乐器或电子音乐[...]或编程源代码。
(强调我的)
同样,规范似乎与自身相矛盾,但它开辟了使用zxx
(或类似)作为完全符合规范的方式来声明要在中写入>的可能性的可能性语言(只是非人类)和声明涉及的特定(非人类)语言。
就个人而言,我认为zxx-x-ruby
是最完整的。 zxx-x-ruby
本身更短更整洁,但除非我弄错了,x-ruby
块仍会继承其父级的主要语言(例如<pre>
或en
或类似的。)
正如Pekka在下面提到的那样,fr
标签可能更合适,而且在语义上它只是非常整齐而不是简单地说<code>
。但是,<code lang="...">
标记也是内联元素,我最初只考虑较长的源代码运行,即声明块级<code>
中包含的所有<code>
元素的语言元件。
幸运的是,<pre>
属性是全局的,可以应用于任何一个元素,因此任何一个都可以工作。
第二:我不小心输入了“zzx”到处而不是正确的“zxx”!它是一个'z',两个'x'。为混乱道歉。