組成的數據排序XSLT我想對數據進行排序 這是xml文件有文字和數值
<item name="HOUSE 10">
</item>
<item name="HOUSE 2">
</item>
<item name="MY 3 APPARTMENT">
</item>
<item name="MY 15 APPARTMENT">
</item>
我想獲得: 「HOUSE 2 HOUSE 10,我的3個APPARTMENT ,我的15 APPARTMENT」
,但我得到 「HOUSE 10,HOUSE 2,MY 15 APPARTMENT 15,我的3個APPARTMENT」
注意
我真的真的很抱歉
當然HOUSE必須出現在我的
對不起,我真的不明白你說的話到現在爲止
結束注意
我XLST是:
<xsl:for-each select="//item>
<xsl:sort data-type="number" select="./@name"/>
</xsl>
我該怎麼做?
EDITED1:關於標籤中數值的數量或位置沒有「邏輯」,數值可以放在任何位置。
EIDTED2: 我想出了一個主意,我幾乎沒有
我創建了一個Java函數 此功能concatenes最高位的現在的位置數。 基本上它返回
HOUSE 10 => HOUSE 210
HOUSE 2 => HOUSE 12
MY 3 APPARTMENT => MY 13 APPARTMENT
MY 15 APPARTMENT => MY 215 APPARTMENT
public static String concateneHighestDigit(String name){
Pattern digitPattern = Pattern.compile("(\\d+)"); //
Matcher matcher = digitPattern.matcher(name);
StringBuffer result = new StringBuffer();
int i = 0;
while (matcher.find())
{
matcher.appendReplacement(result, String.valueOf(matcher.group(1).length())+ matcher.group(1));
}
matcher.appendTail(result);
System.out.println("result :" + result);
return result.toString();
}
,並在XLST我
<xsl:sort data-type="number" select="special:concateneHighestDigit(./@name)"/>
其中
special
correponds到自定義的xmlns
它仍然無法正常工作,但我認爲我不太遠
「*沒有固定數量的單詞*」在輸入中是否有任何**是**固定的?如果我想建議您僅使用@name屬性中的**數字**,則可以將示例更改爲「我的第三商店#15」 - 然後呢? –
我已經在新編輯中回答了您的評論 – stackSaru
不,您沒有:如果有兩個(或更多)數值會怎麼樣? –