在源XML中,我获得了一串键:value:extra sets。结构中存在一些不一致,因此我使用正则表达式将字符串解析为xml序列,如下所示:
<Sets>
<Set>
<key/>
<value/>
<extra/>
</Set>
<Set>...
<Set>...
</Sets>
那部分工作正常,但我也要对<Sets>
进行排序。由于xsl:matching-substring
一次只给我一场比赛,我很难理解如何最好地接近这一点。是否可以从xsl:analyze-string
获得整个匹配序列?这可能有所帮助。
另一种想法是创建每个匹配的树片段,然后对其进行排序。关于如何进行的任何指示?
答案 0 :(得分: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的内容只是作为一个例子。