2011-10-15 56 views
3

的值排序的節點是否有可能進行排序以xsl下面的XML(在組排序子組通過日期爲mm/dd/yyyy格式):的xsl:由子節點

<Data version="2.0"> 
    <Group> 
     <SubGroup>   
      <Date>11/14/2011</Date> 
     </SubGroup> 
     <SubGroup>   
      <Date>10/25/2011</Date> 
     </SubGroup> 
    </Group> 
    <Group> 
     <SubGroup> 
      <Date>01/14/2008</Date> 
     </SubGroup> 
     <SubGroup>   
      <Date>11/01/2005</Date> 
     </SubGroup> 
    </Group> 
</Data> 

到這一個:

<Data version="2.0"> 
    <Group> 
     <SubGroup> 
      <Date>10/25/2011</Date> 
     </SubGroup> 
     <SubGroup>   
      <Date>11/14/2011</Date> 
     </SubGroup> 
    </Group> 
    <Group> 
     <SubGroup> 
      <Date>11/01/2005</Date> 
     </SubGroup> 
     <SubGroup>   
      <Date>01/14/2008</Date> 
     </SubGroup> 
    </Group> 
</Data> 

正如我認爲有兩個任務:1)按內部節點中的值排序SubGroups 2)以特殊格式按日期排序。如果您知道如何解決(1)按整數值而不是日期排序的問題,請發佈答案。

回答

3
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" indent="yes"/> 

    <xsl:template match="Group"> 
    <xsl:copy> 
     <xsl:apply-templates select="SubGroup"> 
     <xsl:sort select="concat(
        substring(Date, 7, 4), 
        substring(Date, 1, 2), 
        substring(Date, 4, 2) 
       )"/> 
     </xsl:apply-templates> 
    </xsl:copy> 
    </xsl:template> 

    <xsl:template match="@* | node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@* | node()"/> 
    </xsl:copy> 
    </xsl:template> 

</xsl:stylesheet> 
+0

它的工作原理篦,除了與XML標準化的小問題:XSL轉換後是一條線。有沒有像原來的XML一樣保留換行符的能力? – purum

+0

@purum,嘗試在開始處添加''。 –

+0

哇,非常感謝! – purum