使用<xsl:sort>对部分字符串值进行排序</xsl:sort>

时间:2014-08-04 09:45:19

标签: xml sorting xslt

再一次,我对XSLT所涉及的术语不太满意,但我会尽力解释我遇到的问题。

我有以下XML示例

<Company>
    <Employee>
        <FirstName>Tim</FirstName>
        <LastName>Browne</LastName>
        <Position>CEO</Position>
        <Email>TBrowne@Infoteria.com</Email>
        <Category>Officer</Category>
        <Age>25</Age>
    </Employee>
    [More employees...
</Company>

我正在尝试按照他们的电子邮件域(&#39; @&#39;之后的内容)对上述数据进行排序。这是我试过的

<xsl:apply-templates select="Employee">
    <xsl:sort select="substring-after('Email','@')"/>
</xsl:apply-templates>

基本上,您看不到的模板只是一个简单的&#34;在每个员工的表格中排成一行&#34;所以在那里看到的东西并不多。正如你在上面看到的那样,我的思考过程是,如果我可以在@之后对所有内容进行排序,那么我的解决方案就完成了。

输出模板的示例。                                                                  

然而,这似乎打破了排序,因为它只是按时间顺序返回它们,它们出现在xml中(第一个雇员,然后是第二个等而不是被排序),我认为这意味着排序存在问题。

提前致谢!

1 个答案:

答案 0 :(得分:2)

<xsl:sort select="substring-after('Email','@')"/>更改为<xsl:sort select="substring-after(Email,'@')"/>