
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
09.02.2007, 17:26
|
|||
|---|---|---|---|
Indentation to hierarchy |
|||
|
#18+
Я думаю, что проблема преобразования линейной структуры в иерархию довольная частая проблема. Привожу яркий пример в параллель моему: Трансформация WML во что-либо, где левый отступ параграфа задан аттрибутом. В Worde это выглядит так: -Text1 ---Text2 -----Text3 ---Text4 -Text5 ---Text6 А надо получить вложенность этих элементов, такую как она выглядит графически в Ворде (или обусловлена схемой документа в формат которого вы трансформируете из Ворда или др.) Вот примерный XML на выходе: <para>text1 <para>text2 <para>text3</para> </para> <para>text4</para> </para> <para>text5 <para>text6</para> </para> Помогите решить подобную проблему, если у кого-то был подобный опыт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.02.2007, 12:32
|
|||
|---|---|---|---|
Indentation to hierarchy |
|||
|
#18+
pavelblkА надо получить вложенность этих элементов, такую как она выглядит графически в Вордеграфически??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.02.2007, 13:02
|
|||
|---|---|---|---|
Indentation to hierarchy |
|||
|
#18+
Согласен с maXmo ,а нормального вывода в браузере типа IE где xml документ разносится в структурированный вид тебе уже нехватает. Ты вообще чего там такое пишешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.02.2007, 11:08
|
|||
|---|---|---|---|
Indentation to hierarchy |
|||
|
#18+
Я имею ввиду следующее: Упрощенный вид WML (или любой другой XML): <p indent="1">text1</p> <p indent="2">text2</p> <p indent="3">text3</p> <p indent="2">text4</p> <p indent="1">text5</p> <p indent="2">text6</p> <p indent="2">text7</p> Выглядит это в Ворде как текст с различным отступом. А необходимо получить: <p indent="1">text1 <p indent="2">text2 <p indent="3">text3 </p> <p indent="2">text4 </p> </p> </p> <p indent="1">text5 <p indent="2">text6 </p> <p indent="2">text7 </p> </p> Русским языком - это преобразование отступа или уровня (можно поразному определить этот аттрибут) в иерархию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.02.2007, 11:22
|
|||
|---|---|---|---|
Indentation to hierarchy |
|||
|
#18+
MaXmo, как то давно отвечал мне на этот вопрос, но решение было не полное. Вот что мне написал MaXmo: <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="main"> <main> <xsl:apply-templates select="para[@level='1']"/> </main> </xsl:template> <xsl:template match="para"> <para1> <xsl:value-of select="."/> <xsl:if test="following-sibling::para[1]/@level > '1'"> <xsl:apply-templates select="following-sibling::para[1]" mode="insert"/> </xsl:if> </para1> </xsl:template> <xsl:template match="para" mode="insert"> <xsl:element name="{concat('para',@level)}"> <xsl:value-of select="."/> <xsl:if test="following-sibling::para[1]/@level > '1'"> <xsl:apply-templates select="following-sibling::para[1]" mode="insert"/> </xsl:if> </xsl:element> </xsl:template> </xsl:stylesheet> Да это работает, только не обрабатывает подряд идущие узлы с одинаковым уровнем. И уж совсем не обрабатывает узлы при уменьшении уровня. То есть: 1 2 3 2 C 3 на 2 не работает. Я решил проблему обработки подряд идущих узлов с одинаковым уровнем. Но при уменьшении уровня - никак. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.02.2007, 12:39
|
|||
|---|---|---|---|
Indentation to hierarchy |
|||
|
#18+
текущий уровень: <xsl:variable name="curInd" select="number(@indent)"/> придётся делать рекурсией. Типа так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.02.2007, 18:49
|
|||
|---|---|---|---|
Indentation to hierarchy |
|||
|
#18+
Ничего не понял, если не сложно можно показать в контексте? Зачем нужен $nextElem? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.02.2007, 13:27
|
|||
|---|---|---|---|
Indentation to hierarchy |
|||
|
#18+
Решил, но если в исходный документ добавить аттрибут id, который будет говорить о последовательности (порядок следования). Знаю, что можно и без него, но как? Подскажите! Вот мое решение: <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:variable name="nextposfirst">1</xsl:variable> <xsl:template match="root"> <main> <xsl:apply-templates select="step[@indent='1']"/> </main> </xsl:template> <xsl:template match="step"> <xsl:element name="step"> <xsl:variable name="nextposfirst" select="number(following-sibling::step[@indent=1]/@id)"></xsl:variable> <xsl:value-of select="."/> <xsl:if test="number(following-sibling::step[@indent=1]/@id) > 1"> <xsl:apply-templates select="following-sibling::step[@indent - (current()/@indent)='1'][(@id < $nextposfirst)]"/> </xsl:if> <xsl:if test="not(following-sibling::step[@indent=1]/@id)"> <xsl:apply-templates select="following-sibling::step[@indent - (current()/@indent)='1']"/> </xsl:if> </xsl:element> </xsl:template> </xsl:stylesheet> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.02.2007, 11:15
|
|||
|---|---|---|---|
Indentation to hierarchy |
|||
|
#18+
pavelblkНичего не понял, если не сложно можно показать в контексте?контекст ты задал. В каком месте не понятно? pavelblkЗачем нужен $nextElem?для удобства pavelblkЗнаю, что можно и без него, но как?как у меня, через позицию элемента. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=14&mobile=1&tid=1334445]: |
0ms |
get settings: |
6ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
52ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
2ms |
| others: | 220ms |
| total: | 351ms |

| 0 / 0 |
