【发布时间】:2019-05-08 08:14:37
【问题描述】:
我是堆栈溢出中的新成员,即使我很长时间以来经常使用它。
我正在尝试使用 xslt 文件将一些标签排序到 xml 文件中。
我的 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”、“functionity”和“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”和“功能”进行排序,但是因为我是 xslt 的新手,所以我不知道如何对标签邮件进行排序。
请问,有人能告诉我如何解决吗?提前感谢您的支持! ;)
【问题讨论】: