2016-12-17 6 views
-1

Я хочу отсортировать значения «число» по позиции/или сначала прийти в документе XML значений идентификатора и отобразить его. Есть ли способ сделать это.XSL Сортировка узлов в атрибуте с использованием атрибута

Вот мой 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> 
+0

Пожалуйста, покажите нам фактический код ввода, а не описывайте его, - и покажите нам также ожидаемый результат. - "* my XSL 1.0 table *" Является ли это способом сказать, что вы используете процессор XSLT 1.0? Если да, то какой? –

+0

Я до сих пор не вижу ввода XML, ожидаемого вывода и информации о фактическом процессоре, который вы будете использовать. –

+0

XML-файла по крайней мере, как я знаю. есть этот редактор (который я использую), который поставляется с компьютерной программой (которая имеет определенные атрибуты), чтобы помочь сделать эту таблицу XSL. –

ответ

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>