我正在尝试使用XSLT对我的XML文件中的用户进行排序。
以下是XML示例
<ROOT>
<ROW>
<FULLNAME>Adam Low</FULLNAME>
<GROUPS>
<DEPARTMENT>Test 1</DEPARTMENT>
<DEPARTMENT>Test 2</DEPARTMENT>
</GROUPS>
</ROW>
<ROW>
<FULLNAME>Julie Nelson</FULLNAME>
<GROUPS>
<DEPARTMENT>Test 1</DEPARTMENT>
<DEPARTMENT>Test 2</DEPARTMENT>
</GROUPS>
</ROW>
<ROW>
<FULLNAME>Colin Low</FULLNAME>
<GROUPS>
<DEPARTMENT>Test 1</DEPARTMENT>
</GROUPS>
</ROW>
<ROW>
<FULLNAME>Bobby Low</FULLNAME>
<GROUPS>
<DEPARTMENT>Test 1</DEPARTMENT>
</GROUPS>
</ROW>
</ROOT>
以下是我认为XSLT看起来的方式
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" />
<xsl:template match="ROOT">
<table>
<tbody>
<tr>
<td>
<strong>Users</strong>
</td>
</tr>
<tr>
<td>
<xsl:for-each select="ROW/GROUPS">
<xsl:if test="DEPARTMENT = 'Test 1'">
<xsl:sort select="../FULLNAME" />
<xsl:value-of select="../FULLNAME" />
<br />
</xsl:if>
</xsl:for-each>
</td>
</tr>
</tbody>
</table>
</xsl:template>
</xsl:stylesheet>
简而言之,我循环遍历ROW
中的每个ROOT
以及DEPARTMENT
节点中的每个GROUPS
,以便对“测试1”和“#39”进行精确测试;在这一点上,我将FULLNAME
节点的值拉高,并将其写入<TD>
,我想按字母方式对我放入<TD>
的每个值进行排序。目前,我<xsl:sort select="../FULLNAME" />
无效。
谢谢,
答案 0 :(得分:0)
您可以在谓词中表达条件
<xsl:for-each select="ROW/GROUPS[DEPARTMENT = 'Test 1']">
<xsl:sort select="../FULLNAME" />
然后xsl:sort
处于正确的位置。