我想按位置/或首先在ID值的XML文档中排列"数字"的值并显示。有没有办法做到这一点。
这是我的XML文档
<?xml version="1.0" encoding="UTF-8"?>
<JobList>
<Job ID="2" /> this is position 1
<Job ID="3" /> this is position 2
<Job ID="5" /> this is position 3
<Job ID="4" /> this is position 4
<Tool number="10" />
<Tool number="24" />
<Tool number="28" />
<Tool number="75" />
</JobList>
所需结果:
<?xml version="1.0" encoding="UTF-8"?>
<JobList>
<Job ID="2" />
<Job ID="3" />
<Job ID="5" />
<Job ID="4" />
<Tool number="28" />
<Tool number="10" />
<Tool number="24" />
<Tool number="75" />
</JobList>
这是我的XSL文档:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" encoding="UTF-8" method="xml" />
<xsl:param name="REPORT">joblist</xsl:param>
<xsl:param name="LOCALE">en-US</xsl:param>
<xsl:param name="FORMAT">html</xsl:param>
<xsl:param name="CAPTURE">example,job</xsl:param>
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>Joblist Report</title>
<style type="text/css">
body {font-family: Arial;}
</style>
</head>
<body>
<xsl:apply-templates />
</body>
</html>
</xsl:template>
<xsl:template match="JobList">
<div>
<table width="100" border="1">
<thead>
<tr>
<td>
<xsl:value-of select="Sorted Numbers" />
</td>
</tr>
</thead>
<tbody>
<xsl:variable name="vsortOrder" select="//Job[@ID]" />
<xsl:for-each select="Tool">
<xsl:sort select="@number" order="{$vsortOrder}" data-type="number" />
<tr>
<td>
<xsl:value-of select="@number" />
</td>
</tr>
</xsl:for-each>
</tbody>
</table>
</div>
</xsl:template>
</xsl:stylesheet>
尝试创建包含以下身份模板的XSLT文件。然后使用您的输入文件运行。这将创建输出XML。然后给我们一个摘要,其中包含您正在使用的一些节点;像乔布里斯特,工具和工作一样。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes" method="xml" version="1.0" omit-xml-declaration="no"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>