再说一次,我不是很熟悉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,'@')"/>