|
|
|
Нумерация?
|
|||
|---|---|---|---|
|
#18+
Есть <root> <s a="1">text</s> <s a="2">text</s> <s a="3">text</s> <s a="2">text</s> <s a="1">text</s> <s a="1">text</s> <s a="2">text</s> <s a="2">text</s> <s a="3">text</s> </root> Надо получить: <root> <s>1 text</s> <s>1.1 text</s> <s>1.1.1 text</s> <s>1.2 text</s> <s>2 text</s> <s>3 text</s> <s>3.1 text</s> <s>3.2 text</s> <s>3.2.1 text</s> </root> Запарился! Ни черта не выходит. Может есть идеи как это воплотить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2007, 12:05 |
|
||
|
Нумерация?
|
|||
|---|---|---|---|
|
#18+
С нумерацией проблему можно решить, если разложить в иерархию. <xsl:number format="1.1.1" level="multiple"> Вопрос: как можно разложить в иерархию? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2007, 13:34 |
|
||
|
Нумерация?
|
|||
|---|---|---|---|
|
#18+
Есть одно решение, но оно не удовлетворяет полностью задаче! Голову сломал. <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="root"> <root> <xsl:apply-templates select="s[@a='1']"/> </root> </xsl:template> <xsl:template match="s"> <s> <xsl:value-of select="."/> <xsl:if test="following-sibling::s[1]/@a > '1'"> <xsl:apply-templates select="following-sibling::s[1]" mode="insert"/> </xsl:if> </s> </xsl:template> <xsl:template match="s" mode="insert"> <s> <xsl:value-of select="."/> <xsl:if test="following-sibling::s[1]/@a > ./@a"> <xsl:apply-templates select="following-sibling::s[1]" mode="insert"/> </xsl:if> </s> <xsl:if test="following-sibling::s [1] /@a = ./@a"> <xsl:apply-templates select="following-sibling::s[1]" mode="insert"/> </xsl:if> </xsl:template> Проблема вот в чем: При таком варианте: 1 2 3 2 Последняя двойка не попадает. (При снижении уровня) вместо [1] в <xsl:if test="following-sibling::s [1] /@a = ./@a"> нужно что-то добавить, но никак не могу сформулировать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2007, 14:50 |
|
||
|
Нумерация?
|
|||
|---|---|---|---|
|
#18+
Вообще, как вы считаете данный шаблон в таком виде можно модернизировать? Или необходим другой подход? На зарубежных ресурсах я нашел преобразование в иерархию, только c аттрибутами (id,parent_id) У меня немного другая структура В аттрибуте храниться уровень вложенности (причем неможет быть скачков вверх через 1) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2007, 12:36 |
|
||
|
Нумерация?
|
|||
|---|---|---|---|
|
#18+
Правильнее - Скачков вглубь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2007, 12:37 |
|
||
|
Нумерация?
|
|||
|---|---|---|---|
|
#18+
я бы их сначала опустил вглубь на том логическом уровне котором они должны быть, а потом уже нумеровал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2007, 12:50 |
|
||
|
Нумерация?
|
|||
|---|---|---|---|
|
#18+
С нумерацией я разобрался! Правильно, необходимо сначало превратить это во вложенность, а затем пронумеровать. Так вот проблема сделать иерархию: Из <root> <s a="1">text1</s> <s a="2">text2</s> <s a="1">text3</s> <s a="2">text4</s> <s a="2">text5</s> <s a="3">text6</s> </root> В <root> <s a="1">text1 <s a="2">text2</s> </s> <s a="1">text3 <s a="2">text4</s> <s a="2">text5 <s a="3">text6</s> </s> </s> </root> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2007, 17:37 |
|
||
|
|

start [/forum/topic.php?fid=14&fpage=66&tid=1334463]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
101ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
38ms |
get tp. blocked users: |
2ms |
| others: | 246ms |
| total: | 426ms |

| 0 / 0 |
