2014-03-04 49 views
0

在源XML中,我給出了一個key:value:extra sets字符串。有一個在結構中的一些矛盾,所以我用正則表達式來解析字符串中的XML序列,是這樣的:XSL對分析字符串的輸出進行排序

<Sets> 
    <Set> 
     <key/> 
     <value/> 
     <extra/> 
    </Set> 
    <Set>... 
    <Set>... 
</Sets> 

這部分工作正常,但希望我也排序<Sets> 。由於xsl:matching-substring一次只能給我一次比賽,所以我很難理解如何最好地解決這個問題。是否有可能從xsl:analyze-string獲得整個匹配序列?這可能有幫助。

另一種想法是創建每個匹配的樹形碎片,然後對其進行排序。我可以如何繼續的任何方向?

回答

1

我會做例如

<xsl:variable name="unsorted"> 
<Sets> 
    <xsl:analyze-string select="..." regex="..."> 
    <xsl:matching-substring> 
     <Set> 
     <key><xsl:value-of select="regex-group(1)"/></key> 
     <value>...</value> 
     <extra>...</extra> 
     </Set> 
    </xsl:matching-substring> 
</Sets> 
<xsl:variable> 

<xsl:variable name="sorted"> 
    <xsl:perform-sort select="$unsorted/Sets/Set"> 
    <xsl:sort select="key"/> 
    </xsl:perform-sort> 
</xsl:variable> 

當然,上面的xsl:matching-substring的內容只是作爲一個例子。

+0

馬丁,這太棒了。我不知道有一個獨立的排序方法,確實非常有用。 – JHarnach

相關問題