我想使用docbook编写契约式文档,我想使用外部参照或其他元素在本文档中创建链接。我可以链接到章节,章节或其他元素,如下所示,以证明它有效。我无法使用自动生成的内容(很像当前的外部参照)与嵌套的“orderedlist”进行复杂的链接。
我需要什么:
我在docbook中有一个嵌套的有序列表,在阿拉伯语中有数字,然后是loweralpha然后是lowerroman:
1. Aaa1
a) Bbb1
i) Ccc1
ii) Ccc2 - this element has an ID
当通过id将xref指向所提到的元素时,xref仅生成“ii” - 最后一个数字。不是给定元素的整个“路径”或“树”。
我需要使用自动生成链接内容的外部参照来创建链接 的 1。 a)ii
或
“Level1:1,Level2:b,Level3:ii”
最终,如果有序列表在第3章和第3.5节中,则xref的输出将类似于:
第3章,第3.5节,3.b.ii
或类似于此,如果有序列表只有两个级别,而不是三个级别:
第3章,第3.5节,3.b
这是目前的测试案例:
<?xml version="1.0" encoding="utf-8" ?>
<book xmlns="http://docbook.org/ns/docbook">
<chapter xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xml:id="chapter_element">
<title>Chapter title</title>
<orderedlist numeration="arabic">
<listitem>
Aaa1
<orderedlist numeration="loweralpha">
<listitem>Bbb1</listitem>
<listitem>
Bbb2
<orderedlist numeration="lowerroman">
<listitem>Ccc1</listitem>
<listitem xml:id="item_element">Ccc2</listitem>
</orderedlist>
</listitem>
</orderedlist>
</listitem>
</orderedlist>
<section>
<title>Section1 title</title>
<para>
Lorem ipsum
</para>
</section>
<section xml:id="section_element">
<title>Section2 title</title>
<para>
Dolor si amet
</para>
</section>
<para>
Chapter: <xref linkend="chapter_element" xrefstyle="template:the chapter numbered %n"/>
</para>
<para>
Chapter: <xref linkend="chapter_element" xrefstyle="select: labelnumber quotedtitle"/>
</para>
<para>
Section: <xref linkend="section_element" xrefstyle="template:the section numbered %n"/>
</para>
<para>
Section: <xref linkend="section_element" xrefstyle="select: labelnumber quotedtitle"/>
</para>
<para>
ListItem: <xref linkend="item_element" xrefstyle="template:the item numbered %n"/>
</para>
<para>
ListItem: <xref linkend="item_element" xrefstyle="select: labelnumber quotedtitle"/>
</para>
</chapter>
</book>
输出结果为:
Chapter: the chapter numbered 1
Chapter: 1: „Chapter title“
Section: the section numbered 1.2
Section: 1.2: „Section2 title“
ListItem: ii
ListItem: ii
xref生成的文本足够用于章节和章节。但是,正如您在本示例末尾所看到的,外部参照仅返回最后一个listitem 数字(lowerman中的“ii”)。我需要的东西 - 以某种方式自定义外部参照以返回整个路径,例如:“Level1:1,Level2:b),Level3:ii”
我已经阅读了一些关于自定义外部参照的文章,但是无法使用orderlists,只能使用章节和节元素。
我不是XSLT的专家,所以任何可以推动我前进或任何工作实例的人都将受到高度赞赏。谢谢!
Update1 :使用xsltproc.exe在Windows上使用未经修改的docbook5 XLS文件进行渲染
xsltproc.exe --xinclude C:/path/to/docbook5/xsl/xhtml/docbook.xsl source/xref-test.xml > dist/html-flat/xref-test.html
似乎使用这个XSLT的两个部分链接内容没有得到节号,只有标题。这意味着我正在使用的XSLT必须稍加修改。然而,章节链接内容和ListItem内容如图所示呈现。如果要重现问题,只需使用docbook5 / xsl / xhtml / docbook.xsl呈现上面的XML,如上所示。章节链接内容没关系,我现在不介意关于部分链接,但我想要的是得到嵌套有序列表的编号。