Я новичок в переполнении стека, даже если я часто использую его долгое время.
Я пытаюсь отсортировать некоторые теги в XML-файл, используя файл xslt.
Мой файл file.xml:
<?xml version="1.0" encoding="UTF-8"?>
<nots>
<base_name>
<label>B_bn</label>
<functionality>
<label>B_f2</label>
<mails>z_user@domain.com</mails>
<mails>f_user@domain.com</mails>
<mails>a_user@domain.com</mails>
</functionality>
<functionality>
<label>A_f1</label>
<mails></mails>
</functionality>
<functionality>
<label>C_f3</label>
<mails>x_user@domain.com</mails>
<mails>a_user@domain.com</mails>
</functionality>
</base_name>
<base_name>
<label>A_bn</label>
<functionality>
<label>C_f3</label>
<mails></mails>
</functionality>
<functionality>
<label>A_f1</label>
<mails></mails>
</functionality>
<functionality>
<label>B_f2</label>
<mails></mails>
</functionality>
</base_name>
</nots>
Я хотел бы получить на выходе новый файл file.xml, в котором отсортированы теги «base_name», «functions» и «mails».
Используя следующее xslt:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ns="urn:TestNamespace">
<xsl:output method="xml" indent="yes" omit-xml-declaration="no" />
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="base_name">
<xsl:copy>
<xsl:apply-templates select="label" />
<xsl:apply-templates select="functionality">
<xsl:sort select="label" />
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
<xsl:template match="nots">
<xsl:copy>
<xsl:apply-templates select="base_name">
<xsl:sort select="label" />
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Я могу отсортировать теги "base_name" и "funzionality", но поскольку я новичок в xslt, я не знаю, каксортируйте также теги почты.
Пожалуйста, кто-нибудь может подсказать, как это решить?Заранее спасибо за вашу поддержку!;)