Leonid Evdokimov ([info]darkk) wrote,
@ 2006-11-15 13:02:00
Previous Entry  Add to memories!  Tell a Friend!  Next Entry
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>



(Post a new comment)


[info]blinalexya
2006-11-15 05:09 pm UTC (link)
о божы... ядро.

(Reply to this) (Thread)


[info]darkk
2006-11-15 05:20 pm UTC (link)
Выдав на гора килобайты garbage collector-а и ramfs хаков страшных, не стремайся и приступай смело к режима ядра XSLT процессору!

(Reply to this) (Parent)


[info]aster_x86
2006-11-16 04:47 pm UTC (link)
dirty-hack - неодназначный гут. Just for Me - несколько эгоистично.
Не находишь?
Наблюдаемая экономия времени не есть достойное оправдание :)

(Reply to this) (Thread)


[info]darkk
2006-11-16 05:05 pm UTC (link)
just for me != works for me :)

Вообще ты прав, конечно, но я xslt первый раз в жизни потрогал, естественно, что в нем, как и в docbook, разбираться желания не возникло, когда целью был читаемый kernel-api.html, а не то счастье, что генерировалось дефольтными стилями. Поясняю - там навигация из-за этих phrase ломалась... Нафига мне дока без навигации?

(Reply to this) (Parent)


[info]aster_x86
2006-11-16 05:53 pm UTC (link)
Да... XSLT - могучая штуковина. Особенно в руках разработчиков.
Пойду проверю, как дело обстоит в 2.6.19-rc5.

(Reply to this) (Thread)


[info]darkk
2006-11-16 06:16 pm UTC (link)
С Documentation/DocBook/kernel-api? Уверен, что так же - глюка была еще в 2.6.14.

(Reply to this) (Parent)


[info]levgem
2006-11-20 09:21 pm UTC (link)
Потому что DocBook из ядерных исходников умеют компилировать только три человека на планете. Люди, которые знают тех, что знает имена этих трех Посвященных строжайшим образом засекречены и спрятаны в сверхзасекреченных схронах.

Короче, никому из смертных не дано так выставить окружение jadetools, что бы скомпилировать документацию.

(Reply to this) (Thread)


[info]darkk
2006-11-21 06:15 am UTC (link)
Корни проблемы, очевидно, восходят к тому, что дао высказанное словами не есть истинное дао.

(Reply to this) (Parent)(Thread)


[info]levgem
2006-11-21 06:36 am UTC (link)
Других рациональных объяснений в этой части Вселенной просто нет

(Reply to this) (Parent)


Create an Account
Forgot your login?
Login w/ OpenID
English • Español • Deutsch • Русский…