XSL使用属性对属性中的节点进行排序

时间:2016-12-17 20:57:05

标签: xslt-1.0

我想要理清"数字"的值。通过Position /或首先进入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>

1 个答案:

答案 0 :(得分:0)

尝试创建包含身份模板的XSLT文件,如下所示。然后用您的输入文件运行它。这将创建输出XML。然后给我们一个片段,其中至少包含您正在使用的几个节点;喜欢JobList,工具和工作。

<?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>