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



再说一次,我不是很熟悉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>

我正试图按他们的电子邮件域('@'后面的东西)对上述数据进行排序。这是我尝试过的

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

基本上,你看不到的模板只是一个简单的"在表格中为每个员工做一行",所以没有太多的东西可以看到。正如你在上面看到的,我的思考过程是,如果我能对@之后的所有内容进行排序,那么我的解决方案就完整了。

输出模板示例。

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

提前感谢!

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

最新更新