| Leonid Evdokimov ( @ 2006-11-15 13:02:00 |
| Current mood: | Just do it |
| Current music: | Diana Krall - Better Than Anything (N.cole) |
| Entry tags: | bug, howto, linux |
The Linux Kernel API, XSLT, DocBook и инвалид xhtml первой степени
О да, сколько настроек XSLT шаблонов для генерации из DocBook чего-либо вменяемого я перепробовал, но в конце концов капитулировал и отправил полученный XHTML на валидацию. Валидация не прошла - "то-то же", - думаю, "еще бы прошла, когда там такая хрень". В числе хреней были шедевры типа
<a href="re01.html"><span><a id="API-module-init"></a>Текст который должен быть ссылкой но ниразу ей не стал</span></a>
......
<a href="re01.html" id="API-module-init">Next</a>=
Мало того, что вложенные ссылки запрещены стандартом, так они еще и два элемента с одинаковым id на одной странице сгенерировали!
Вообщем как всегда я не стал исправлять суть, т.е. писать патч для docbook, менять DTD и т.п. а пошел по пути dirty-hack, который works for me:
--- linux-2.6.18.2/scripts/kernel-doc.orig 2006-11-15 12:28:12.000000000 +0600
+++ linux-2.6.18.2/scripts/kernel-doc 2006-11-15 12:31:32.000000000 +0600
@@ -592,3 +592,3 @@
print "<refmeta>\n";
- print " <refentrytitle><phrase id=\"$id\">".$args{'function'}."</phrase></refentrytitle>\n";
+ print " <refentrytitle>".$args{'function'}."</refentrytitle>\n";
print " <manvolnum>9</manvolnum>\n";
@@ -668,3 +668,3 @@
print "<refmeta>\n";
- print " <refentrytitle><phrase id=\"$id\">".$args{'type'}." ".$args{'struct'}."</phrase></refentrytitle>\n";
+ print " <refentrytitle>".$args{'type'}." ".$args{'struct'}."</refentrytitle>\n";
print " <manvolnum>9</manvolnum>\n";
@@ -752,3 +752,3 @@
print "<refmeta>\n";
- print " <refentrytitle><phrase id=\"$id\">enum ".$args{'enum'}."</phrase></refentrytitle>\n";
+ print " <refentrytitle>enum ".$args{'enum'}."</refentrytitle>\n";
print " <manvolnum>9</manvolnum>\n";
@@ -818,3 +818,3 @@
print "<refmeta>\n";
- print " <refentrytitle><phrase id=\"$id\">typedef ".$args{'typedef'}."</phrase></refentrytitle>\n";
+ print " <refentrytitle>typedef ".$args{'typedef'}."</refentrytitle>\n";
print " <manvolnum>9</manvolnum>\n";
Ну и еще на мой взгляд полезно будет прописать в Documentation/DocBook/stylesheet.xsl. Особенно первое, чтобы указательный палец не отсох долбить по левой кнопке мыши.
<param name="generate.section.toc.level">1</param> <param name="chunk.first.sections">1</param>