Как я могу применить пользовательскую сортировку для сортировки следующего?
<maps>
<domain>pics.siteB.com</domain>
<domain>subdomain1.siteA.com</domain>
<domain>pics.siteA.org</domain>
<domain>validdomain</domain>
<domain>siteD.com</domain>
<domain>sub-subdomain4.subdomain.siteC.com</domain>
<domain>sub-subdomain1.subdomain.siteC.com</domain>
<domain>subdomain1.siteA.net</domain>
<maps>
Я попытался выполнить следующее, затем он странным образом сортируется и удаляет запись, когда разделитель недоступен.
<xsl:apply-templates select="*">
<!-- using <xsl:variable> throws error here -->
<xsl:sort select="string-join(reverse(tokenize(domain, '\.')[position() lt last()]), '.')"></xsl:sort>
</xsl:apply-templates>
Ожидаемый результат:
- Получить последний, кроме одного токена, например
siteA
, siteB
, siteC
и т. Д.
- Получить последний токен после разделителя, например,
com
, net
, org
и т. Д.
- Поменяйте местами остальные жетоны до последнего, кроме 2, например
pics
, subdomain1
, sub-subdomain1.subdomain
и т. Д.
- Сортировать по этому тексту
<maps>
<domain>subdomain1.siteA.com</domain>
<domain>subdomain1.siteA.net</domain>
<domain>pics.siteA.org</domain>
<domain>pics.siteB.com</domain>
<domain>sub-subdomain1.subdomain.siteC.com</domain>
<domain>sub-subdomain4.subdomain.siteC.com</domain>
<domain>siteD.com</domain>
<domain>validdomain</domain>
<maps>
Заранее спасибо!