Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xslt 获取嵌套“的编号”;orderedlist“;使用docbook中的外部参照或其他元素_Xslt_Docbook - Fatal编程技术网

Xslt 获取嵌套“的编号”;orderedlist“;使用docbook中的外部参照或其他元素

Xslt 获取嵌套“的编号”;orderedlist“;使用docbook中的外部参照或其他元素,xslt,docbook,Xslt,Docbook,我想使用docbook编写合同样式的文档,并且我想使用外部参照或其他元素在此文档中创建链接。我可以链接到如下所示的章节或其他元素,以证明它是有效的。我无法使用自动生成的内容(非常类似于当前外部参照)将复杂的链接到嵌套的“orderedlist”。 我需要的是: 我在docbook中有一个嵌套的orderedlist,用阿拉伯语计算,然后是loweralpha,然后是lowerroman: 1. Aaa1 a) Bbb1 i) Ccc1 ii) Ccc2 - this elem

我想使用docbook编写合同样式的文档,并且我想使用外部参照或其他元素在此文档中创建链接。我可以链接到如下所示的章节或其他元素,以证明它是有效的。我无法使用自动生成的内容(非常类似于当前外部参照)将复杂的链接到嵌套的“orderedlist”。

我需要的是:

我在docbook中有一个嵌套的orderedlist,用阿拉伯语计算,然后是loweralpha,然后是lowerroman:

1. Aaa1
  a) Bbb1
    i) Ccc1
    ii) Ccc2 - this element has an ID
通过id将外部参照指向所述元素时,外部参照仅生成“ii”-最后一个数字。不是给定元素的整个“路径”或“树”

我需要使用自动生成链接内容的外部参照创建一个链接,使其看起来像
1。a) ii


“1级:1级、2级:b级、3级:ii级”

最终,如果orderedlist出现在第3章和第3.5节中,那么外部参照的输出将类似:
第三章第3.5节,第3.b.ii节

或者与此类似,如果orderedlist只有两个级别,而不是三个级别:
第三章,第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>
外部参照生成的文本足以用于章节和剖面。但是,正如您在本例末尾看到的,外部参照仅返回最后一个列表项编号(lowerroman中的“ii”)。我需要的-以某种方式自定义外部参照以返回整个路径,例如:“Level1:1,Level2:b),Level3:ii”

我读过一些关于自定义外部参照的文章,但无法使其与OrderedList一起使用,只能与章节和剖面元素一起使用

我不是XSLT方面的专家,因此任何能推动我前进的东西或任何工作示例都将受到高度赞赏。谢谢大家!

Update1:使用未修改的docbook5 XLS文件在windows上使用xsltproc.exe进行渲染

xsltproc.exe --xinclude C:/path/to/docbook5/xsl/xhtml/docbook.xsl source/xref-test.xml > dist/html-flat/xref-test.html

似乎使用此XSLT时,两个节的链接内容并没有得到节号,只有标题。这意味着我使用的XSLT必须稍微修改一下。但是,章节链接内容和列表项内容的呈现方式如图所示。如果您想重现这个问题,只需使用docbook5/xsl/xhtml/docbook.xsl呈现上面的XML,如上所示。章节链接内容还可以,我现在不介意章节链接,但我想要的是获得嵌套OrderedList的编号。

您可以包括样式表(或重现问题所需的相关部分?)章节编号输出“1.2”吗在设置
之后呈现。很遗憾,orderedlist似乎没有任何跟踪继承的功能,如“section.level”
xsltproc.exe --xinclude C:/path/to/docbook5/xsl/xhtml/docbook.xsl source/xref-test.xml > dist/html-flat/xref-test.html