2012-05-29 6 views
1

Это образец из XML-документа.XSLT Custom Sorting с использованием XSLT 1.0

<A> 
    <Value>B2.B1-1.C2-0.D20</Value> 
</A> 
<A> 
    <Value>A2.B15-1.C2-0.D20</Value> 
</A> 
<A> 
    <Value>A2.B2-1.C2-0.D20</Value> 
</A> 

и так далее.

мне нужно разобраться в этом, чтобы выглядеть

A2.B2-1.C2-0.D20 A2.B15-1.C2-0.D20 B2.B1-1.C2-0. D20

Число разделенных точками компонентов неизвестно, а числа в них могут быть в любом формате (1-1,11,11abcd). Сортировка интуитивно понятна, как обычно ожидалось. Сначала он основан на письмах, а числа сгруппированы вместе и считываются (B2 и B15 - правильный порядок. Лексический порядок B15, B2 неверен)

Можно ли это сделать с помощью XSLT 1.0?

+0

Я предполагаю, что у вас нет контроля над входным документом? –

+0

Почему B1-1 приходит после B15-1? Кажется, это противоречие! –

+0

B1-1 фактически предшествует B2; B15-1 предшествует A2, который, очевидно, предшествует B2. – Flynn1179

ответ

0

XSLT не определяет точно, как должна производиться сортировка; результаты определяются реализацией.

В последних выпусках Saxon есть сортировка, которая делает то, что вы хотите, но это предполагает XSLT 2.0; на самом деле он предполагает саксонскую.

Выполнение этого в переносном режиме в XSLT 1.0 непросто, тем более, что вы не можете вызвать рекурсивные шаблоны для вычисления ключа сортировки.

+0

Есть ли на C реализация XSLT 2.0, о которой вы знаете? Я запускаю это в среде на основе C. – Ram

+1

Нет, на рынке есть большой пробел для тех, кто хочет провести пару лет, написав программное обеспечение, которое все хотят использовать, и никто не хочет платить. –