获取嵌套"有序列表"的编号使用外部参照或docbook中的其他元素

时间:2014-05-30 16:10:26

标签: xslt docbook

我想使用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,如上所示。章节链接内容没关系,我现在不介意关于部分链接,但我想要的是得到嵌套有序列表的编号。

0 个答案:

没有答案