首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xsl排序不排序?

xsl排序不排序?
EN

Stack Overflow用户
提问于 2012-11-21 14:05:33
回答 2查看 836关注 0票数 2

lecturer.xsl

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
    <xsl:output method="html" version="4.0"/>
        <xsl:template match="/">
            <html>
            <head>
                <title>Lecturer Information</title>
            </head>
            <body>  

                <table border="1">

                    <tr bgcolor="#9acd32">
                        <th>Name</th>
                        <th>Teaching</th>
                        <th>Research</th>
                    </tr>

                    <xsl:for-each select="lecturers/lecturer">
                        <tr>
                            <td>
                                <xsl:apply-templates select="name">
                                     <xsl:sort select="@last" data-type="text" order="descending"/>
                                </xsl:apply-templates>
                            </td>
                            <td><xsl:apply-templates select="teaching/course" /></td>
                            <td><xsl:value-of select="research"/></td>
                        </tr>
                    </xsl:for-each>

                </table>

            </body>
        </html>
    </xsl:template>

    <!-- Templates HERE -->
    <xsl:template match="name">
        <xsl:value-of select="@title"/><xsl:text> </xsl:text>
        <xsl:value-of select="@first"/><xsl:text> </xsl:text>
        <xsl:value-of select="@last"/>
    </xsl:template>

    <xsl:template match="teaching/course">
        <xsl:for-each select=".">
                <xsl:value-of select="concat(. , '(',@code, ')')"/>  <br />
            <!-- <xsl:value-of select="."/> (<xsl:value-of select="@code"/>) -->
        </xsl:for-each>
    </xsl:template>


</xsl:stylesheet>

lecturer.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="lecturer.xsl" ?>

<!DOCTYPE lecturers [

<!ELEMENT lecturers (lecturer+)>
<!ELEMENT lecturer (name, teaching, research)>

 <!-- Element name must contain attribute title, first and last -->
<!ELEMENT name (#PCDATA)>
<!ATTLIST name
  title CDATA #REQUIRED
  first CDATA #REQUIRED
  last CDATA #REQUIRED
>

<!-- Teaching can have more than one course-->
<!ELEMENT teaching (course+)>

<!ELEMENT course (#PCDATA)>
<!ATTLIST course
    code CDATA #REQUIRED
>

<!ELEMENT research (#PCDATA)>

]>
<lecturers>
    <lecturer>
        <name title="Professor" first="Peter" last="Quirk"/>
        <teaching>
                <course code="CO3070">XML and the Web</course>
                <course code="CO3300">Web Server Architectures</course>
        </teaching>
        <research>
                The application of Web protocols to Biology
        </research>
    </lecturer>
    <lecturer>
        <name title="Mr" last="Abdi" first="Ahmet"/>
        <teaching>
                <course code="CO1337">Ahmet's Course</course>
        </teaching>
        <research>
                The Best Research In the world.
        </research>
    </lecturer>
</lecturers>

该xsl的这一部分似乎没有排序。

代码语言:javascript
复制
<xsl:sort select="@last" data-type="text" order="descending"/>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-21 14:31:25

<xsl:sort>元素作为<xsl:apply-templates select="name">的子元素,但是不需要在那里排序,因为在给定的上下文中只有一个名称。

相反,您需要使<xsl:sort>成为<xsl:for-each>的子级。

代码语言:javascript
复制
<xsl:sort select="name/@last" data-type="text" order="descending"/>

确保如所示更改select属性,以便排序能够从<lecturer>元素的上下文中找到姓氏。

票数 3
EN

Stack Overflow用户

发布于 2012-11-21 14:30:07

我相信这条线

代码语言:javascript
复制
<xsl:sort select="name/@last" data-type="text" order="descending"/>

需要就在for-each语句下面

代码语言:javascript
复制
<xsl:for-each select="lecturers/lecturer">

这应该是你所有讲师的姓排序。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13495018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档