У меня есть xml файл, подобный этому:
<?xml version="1.0" encoding="utf-8"?>
<students>
<student>
<name>Clark Johnson</name>
</student>
<student>
<name>John Doe</name>
</student>
<student>
<name>Andy Ng</name>
</student>
</students>
Я уже знаю, что если я использую xsl:sort
, он выдаст
Andy Ng
Clark Johnson
John Doe
Однако я хочу его сортировать, основываясь на перевернутых словах (Кларк Джонсон - Джонсон Кларк, Джон Доу - Доу Джон, а Энди Нг - Эндж Энди) и вывести примерно так:
John Doe
Clark Johnson
Andy Ng
Как мне этого добиться с помощью XSLT 1.0 ? У меня уже есть шаблон, который может перевернуть слова, но я не знаю, как реализовать его в сортировке. Вот шаблон:
<xsl:template name="reverse">
<xsl:param name="text"/>
<xsl:if test="contains($text, ' ')">
<xsl:call-template name="reverse">
<xsl:with-param name="text" select="substring-after($text, ' ')"/>
</xsl:call-template>
<xsl:text> </xsl:text>
</xsl:if>
<xsl:value-of select="substring-before(concat($text, ' '), ' ')"/>
</xsl:template>