血統の森+はてな

旧はてなダイアリーの自動インポートによるアーカイブです。

code要素のlang属性について

なんかカテゴリつけたけど、どうせ続かないと思う(挨拶)。

というか、これと同じようなことを昔書いた気がするけれどもまあ。まずHTML仕様から適当に。

code要素は、コンピュータコードの断片を表す。これは、XML要素名、ファイル名、コンピュータプログラム、またはコンピュータが認識するだろう文字列であるかもしれない。

lang属性(名前空間なし)は、要素のコンテンツに対する第一言語およびテキストを含むあらゆる要素の属性に対して指定する。その値は妥当なBCP 47言語タグまたは空文字列でなければならない。属性に空文字列を設定することは第一言語が不明であることを指す。 [BCP47]

(中略)これらの属性が要素から省略される場合、この要素の言語がもしあれば、その親要素の言語と同じである。

特に解説するまでもないと思うけれども、ここで言う言語というのは自然言語であって、プログラミング言語は含まれない。私が引っかかっているのは、lang属性が継承されていくならば、たとえば<code lang="ja">というのは、要素の意味としてプログラミング言語を謳っておきながら、属性の意味として自然言語を指定することになり、厳密に考えるならばおかしな話では、ということ。まあ、ここまで気にする必要は実際上ないと思うんですが。ただ、属性が要素に意味を付加するのだから、それほどおかしなものでもないか…

でまあ、ISO 639にはzxx(No linguistic content―言語コンテンツなし)というのがありまして、Language Subtag Lookupの解説によると、

zxx identifies non-linguistic content for which a language classification is inappropriate or does not apply, such as instrumental or electronic music, sound recordings consisting of non-verbal sounds, audiovisuals with no narration or dialog, or printed titles, or subtitles, machine-readable data files consisting of machine languages or character codes, programming source code, etc.(引用注:強調は筆者によるもの)

とあって、ソースコードだと明示するにはこれを使えばいいことが示唆されている、と。

ところで、ISO 639-4:2010とかいうのが出ておりまして、なんか長ったらしいサブタイトルがついてるんですが、ガイドラインという文字があるのでもしかしたらヒントがあるのかなーなどと。これは国会図書館行けってことですね(しろめ