理解和创建 XML 个内链序列

Understading and creating XML inner chained sequences

我的任务是使用提供给我的 XSLT 起始代码重新创建内部链式序列。我感到困惑的是我不确定如何在 XSLT 文件中设置 XPath。

目前,我有一些 XPath 可以遍历所提供的项目,但它们没有正确排序。不确定我是否完全理解正确设置 XPaths。

我也得到了两个提示,

在标记4处:有很多方法可以创建这个xpath,得到分数的方法包括以not(//item[@

开头

在市场上 8:There 有很多创建此 xpath 的方法,获得积分的方法包括这两部分 1) not(//item 和 2) //items/@lastItemMarker

任何帮助和解释将不胜感激!

我的代码:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" omit-xml-declaration="yes"/>
    <!--marker #1-->
    <xsl:template match="/">
        <html>
            <head>
                <title>Sequence Level 2 Exercise</title>
            </head>
            <body>
                <a name="top"/>
                <table border="1" cellpadding="10">
                    <tr>
                        <td valign="top">
                            <h1>Sequences</h1>
                            <!--marker #2-->
                            <xsl:for-each select="//items">
                                <!--marker #3-->
                                <xsl:variable name="currItemId" select="."/>
                                <!--marker #4-->
                                <xsl:if test="//item[@id]">
                                    <hr/>
                                    <ol>
                                        <xsl:call-template name="outputSeqLink">
                                            <!--marker #5-->
                                            <xsl:with-param name="currItemId" select="."/>
                                        </xsl:call-template>
                                    </ol>
                                </xsl:if>
                            </xsl:for-each>
                        </td>
                        <td valign="top">
                            <h1>Items</h1>
                            <xsl:for-each select="//item">
                                <hr/>
                                <a name="{@id}"/>
                                <h2>
                                    <a href="#top">
                                        <font size="-2">top</font>
                                    </a>
                                    <xsl:value-of select="@title"/>
                                </h2>
                                <h3>Faked in content</h3>
                                <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk
                                    jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk
                                    aslkfj lkajsdflkflj</p>
                                <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk
                                    jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk
                                    aslkfj lkajsdflkflj</p>
                                <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk
                                    jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk
                                    aslkfj lkajsdflkflj</p>
                                <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk
                                    jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk
                                    aslkfj lkajsdflkflj</p>
                                <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk
                                    jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk
                                    aslkfj lkajsdflkflj</p>
                                <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk
                                    jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk
                                    aslkfj lkajsdflkflj</p>
                            </xsl:for-each>
                        </td>
                    </tr>
                </table>
            </body>
        </html>
    </xsl:template>
    <xsl:template name="outputSeqLink">
        <xsl:param name="currItemId"/>
        <li>
            <!--marker #6-->
            <a href="">
                <!--marker #7-->
                <xsl:value-of select="."/>
            </a>
        </li>
        <!--marker #8-->
        <xsl:if test="//items/@lastItemMarker">
            <!--marker #9-->
            <xsl:variable name="nextItemRefId" select="."/>
            <xsl:call-template name="outputSeqLink">
                <!--marker #10-->
                <xsl:with-param name="currItemId" select="."/>
            </xsl:call-template>
        </xsl:if>
    </xsl:template>
</xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2008 (http://www.altova.com)-->
<system xsi:noNamespaceSchemaLocation="seqLevel2Exercise.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <items  lastItemMarker="last">
        <item id="i1" title="Siamese Cats" nextItemRefId="i5"/>
        <item id="i2" title="Siamese Dogs" nextItemRefId="i10"/>
        <item id="i3" title="Siamese Twins" nextItemRefId="i9"/>
        <item id="i4" title="Chicago Twins" nextItemRefId="i7"/>
        <item id="i5" title="Fraternal Twins" nextItemRefId="i2"/>
        <item id="i6" title="Fraternal Societies" nextItemRefId="last"/>
        <item id="i7" title="Society of Mind" nextItemRefId="i6"/>
        <item id="i8" title="Mind over Matter" nextItemRefId="i1"/>
        <item id="i9" title="Matters of Fact" nextItemRefId="i4"/>
        <item id="i10" title="Facts and Figures" nextItemRefId="last"/>
    </items>
    </system>

<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2008 (http://www.altova.com) by XMLSpy 2008  Release 2, Partner License for 30 users (valid from 2008-09-05 to 2009-09-30) (University of Washington) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
    <xs:element name="system">
        <xs:annotation>
            <xs:documentation>Comment describing your root element</xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:element name="items">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="item" maxOccurs="unbounded">
                                <xs:complexType>
                                    <xs:attribute name="id" type="xs:ID" use="required"/>
                                    <xs:attribute ref="title" use="required"/>
                                    <xs:attribute name="nextItemRefId" type="xs:IDREF" use="required"/>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                        <xs:attribute name="lastItemMarker" type="xs:ID" use="required"/>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:attribute name="title"/>
</xs:schema>

预期输出:


<html>
    <head>
        <title>Sequence Level 2 Exercise</title>
    </head>
    <body>
        <a name="top"/>
        <table border="1" cellpadding="10">
            <tr>
                <td valign="top">
                    <h1>Sequences</h1>
                    <hr/>
                    <ol>
                        <li>
                            <a href="#i3">Siamese Twins</a>
                        </li>
                        <li>
                            <a href="#i9">Matters of Fact</a>
                        </li>
                        <li>
                            <a href="#i4">Chicago Twins</a>
                        </li>
                        <li>
                            <a href="#i7">Society of Mind</a>
                        </li>
                        <li>
                            <a href="#i6">Fraternal Societies</a>
                        </li>
                    </ol>
                    <hr/>
                    <ol>
                        <li>
                            <a href="#i8">Mind over Matter</a>
                        </li>
                        <li>
                            <a href="#i1">Siamese Cats</a>
                        </li>
                        <li>
                            <a href="#i5">Fraternal Twins</a>
                        </li>
                        <li>
                            <a href="#i2">Siamese Dogs</a>
                        </li>
                        <li>
                            <a href="#i10">Facts and Figures</a>
                        </li>
                    </ol>
                </td>
                <td valign="top">
                    <h1>Items</h1>
                    <hr/>
                    <a name="i1"/>
                    <h2><a href="#top">
                            <font size="-2">top</font>
                        </a>Siamese Cats</h2>
                    <h3>Faked in content</h3>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <hr/>
                    <a name="i2"/>
                    <h2><a href="#top">
                            <font size="-2">top</font>
                        </a>Siamese Dogs</h2>
                    <h3>Faked in content</h3>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <hr/>
                    <a name="i3"/>
                    <h2><a href="#top">
                            <font size="-2">top</font>
                        </a>Siamese Twins</h2>
                    <h3>Faked in content</h3>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <hr/>
                    <a name="i4"/>
                    <h2><a href="#top">
                            <font size="-2">top</font>
                        </a>Chicago Twins</h2>
                    <h3>Faked in content</h3>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <hr/>
                    <a name="i5"/>
                    <h2><a href="#top">
                            <font size="-2">top</font>
                        </a>Fraternal Twins</h2>
                    <h3>Faked in content</h3>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <hr/>
                    <a name="i6"/>
                    <h2><a href="#top">
                            <font size="-2">top</font>
                        </a>Fraternal Societies</h2>
                    <h3>Faked in content</h3>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <hr/>
                    <a name="i7"/>
                    <h2><a href="#top">
                            <font size="-2">top</font>
                        </a>Society of Mind</h2>
                    <h3>Faked in content</h3>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <hr/>
                    <a name="i8"/>
                    <h2><a href="#top">
                            <font size="-2">top</font>
                        </a>Mind over Matter</h2>
                    <h3>Faked in content</h3>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <hr/>
                    <a name="i9"/>
                    <h2><a href="#top">
                            <font size="-2">top</font>
                        </a>Matters of Fact</h2>
                    <h3>Faked in content</h3>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <hr/>
                    <a name="i10"/>
                    <h2><a href="#top">
                            <font size="-2">top</font>
                        </a>Facts and Figures</h2>
                    <h3>Faked in content</h3>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                    <p>alkdjfasajflkdsajfsdlkf lkjh alksdjflkajflk lkjdsaflk jsflkjsadlkf jdsajlkdsafj lksajflkdsajflkdsajflkjlksadlkj lk aslkfj lkajsdflkflj</p>
                </td>
            </tr>
        </table>
    </body>
</html>

recreate an inner chained sequence

我相信做到这一点的优雅(也有效)方法是从标记为序列中最后的项目开始,然后递归地向后工作,使用 key 到 select 序列中的前一项。

这是一个最小的例子:

XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:key name="prev-item" match="item" use="@nextItemRefId" />

<xsl:template match="/">
    <html>
        <body>
            <xsl:for-each select="key('prev-item', 'last')">
                <ol>
                    <xsl:apply-templates select="."/>
                </ol>
            </xsl:for-each>     
        </body>
    </html> 
</xsl:template>

<xsl:template match="item">
    <xsl:apply-templates select="key('prev-item', @id)"/>
    <li>
        <a href="#{@id}">
            <xsl:value-of select="@title" />
        </a>
    </li>
</xsl:template>

</xsl:stylesheet>

应用于您的输入示例,这将 return:

结果

<html>
   <body>
      <ol>
         <li><a href="#i3">Siamese Twins</a></li>
         <li><a href="#i9">Matters of Fact</a></li>
         <li><a href="#i4">Chicago Twins</a></li>
         <li><a href="#i7">Society of Mind</a></li>
         <li><a href="#i6">Fraternal Societies</a></li>
      </ol>
      <ol>
         <li><a href="#i8">Mind over Matter</a></li>
         <li><a href="#i1">Siamese Cats</a></li>
         <li><a href="#i5">Fraternal Twins</a></li>
         <li><a href="#i2">Siamese Dogs</a></li>
         <li><a href="#i10">Facts and Figures</a></li>
      </ol>
   </body>
</html>