Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.snto-msu.net/showflat.php?Number=866050&src=arc&showlite=
Дата изменения: Unknown
Дата индексирования: Mon Apr 11 22:29:33 2016
Кодировка: Windows-1251
Наивный вопрос к знатокам XML/XSLT - Public forum of MSU united student networks
Root | Google | Yandex | Mail.ru | Kommersant | Afisha | LAN Support
  
Technical >> Hard&Soft (Archive)

Страницы: 1
_TZ
sir

Рег.: 30.12.2002
Сообщений: 1083
Рейтинг: 227
  Наивный вопрос к знатокам XML/XSLT
      02.02.2004 22:35
 

Исходный XML-документ содержит парные элементы, скажем, left и right, и сбалансирован относительно них. Например:
<left/><x/><left/><y/><z/><right/><right/>
Требуется в результате преобразования убрать пары соответствующих друг другу элементов left и right, а то, что находилось между ними, заключить внутрь элемента xxx:
<xxx><x/><xxx><y/><z/></xxx></xxx>

Возможно ли такое выразить на XSL, и если да, то как? Заранее благодарен.

DarkGray
Carpal Tunnel

Рег.: 30.09.2002
Сообщений: 31404
Рейтинг: 8950
  Re: Наивный вопрос к знатокам XML/XSLT [re: _TZ]
      03.02.2004 00:15
 

> Возможно ли такое выразить на XSL, и если да, то как?

Можно, но тяжело.

Проще будет написать на неком внешнем языке.


_TZ
sir

Рег.: 30.12.2002
Сообщений: 1083
Рейтинг: 227
  Re: Наивный вопрос к знатокам XML/XSLT [re: DarkGray]
      03.02.2004 00:19
 

Ух, жаль. Но все равно спасибо.

Shurik

Рег.: 27.09.2003
Сообщений: 13644
Рейтинг: 787
  Re: Наивный вопрос к знатокам XML/XSLT [re: DarkGray]
      03.02.2004 00:32
 

я думаю не очень и тяжело



not fluffing up the experience with features that will ultimately cause you a headache
_TZ
sir

Рег.: 30.12.2002
Сообщений: 1083
Рейтинг: 227
  Re: Наивный вопрос к знатокам XML/XSLT [re: Shurik]
      03.02.2004 00:38
 

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

DarkGray
Carpal Tunnel

Рег.: 30.09.2002
Сообщений: 31404
Рейтинг: 8950
  Re: Наивный вопрос к знатокам XML/XSLT [re: Shurik]
      03.02.2004 00:42
 

Даже без Java-Script-а?

Допустим мы даже нашли правильный <right/> для исходного <left/, а как дальше получить все что находится между <left/> и <right/>?
через following?

_TZ
sir

Рег.: 30.12.2002
Сообщений: 1083
Рейтинг: 227
  Re: Наивный вопрос к знатокам XML/XSLT [re: DarkGray]
      03.02.2004 00:46
 

Java Script'а не нужно, потому что задача не для веб-приложений. Документ должен обрабатываться Саксоном или чем-то подобным.

Shurik

Рег.: 27.09.2003
Сообщений: 13644
Рейтинг: 787
  Re: Наивный вопрос к знатокам XML/XSLT [re: DarkGray]
      03.02.2004 00:47
 

да, через following



not fluffing up the experience with features that will ultimately cause you a headache
Shurik

Рег.: 27.09.2003
Сообщений: 13644
Рейтинг: 787
  Re: Наивный вопрос к знатокам XML/XSLT *DELETED* [re: _TZ]
      03.02.2004 02:34
 

Вот так
code:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<root>
<xsl:apply-templates select="*/left[1]"/>
</root>
</xsl:template>
<xsl:template match="left">
<xsl:choose>
<xsl:when test="following::left">
<xxx>
<xsl:copy-of select="following::*[count(following::left) = count(current()/following::left)]"/>
<xsl:apply-templates select="following::left[1]"/>
<xsl:apply-templates select="following::right[last()- count(current()/preceding::left)]"/>
</xxx>
</xsl:when>
<xsl:otherwise>
<xxx>
<xsl:copy-of select="following::*[count(following::right) = count(current()/following::right)]"/>
</xxx>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="right">
<xsl:copy-of select="preceding::*[count(preceding::right) = count(current()/preceding::right)]"/>
</xsl:template>
</xsl:stylesheet>






not fluffing up the experience with features that will ultimately cause you a headache
Shurik

Рег.: 27.09.2003
Сообщений: 13644
Рейтинг: 787
  Re: Наивный вопрос к знатокам XML/XSLT [re: _TZ]
      03.02.2004 13:21
 

этот вариант не совсем правильный (я задание не правильно понял), но прием с count()-ом понятен, да? Если еще нужно и у меня будет время перепешу.



not fluffing up the experience with features that will ultimately cause you a headache
_TZ
sir

Рег.: 30.12.2002
Сообщений: 1083
Рейтинг: 227
  Re: Наивный вопрос к знатокам XML/XSLT [re: Shurik]
      03.02.2004 13:53
 

Большое спасибо, попробую сам разобраться, а уж если останутся вопросы, обращусь.

vdremov
лесочный т-кеон

Рег.: 12.10.2003
Сообщений: 1184
Из: Москва
Рейтинг: 18
  Re: Наивный вопрос к знатокам XML/XSLT [re: _TZ]
      03.02.2004 17:41
 

Меня мучает вопрос:
почему нельзя просто левые теги поменять на соответствующие левые, а правые на правые?

Тогда вроде автоматически будет проделано искомое преобразование, ибо то что между ними -- так и останется между.



В математических . Наверно мне там проще.
Shurik

Рег.: 27.09.2003
Сообщений: 13644
Рейтинг: 787
  Re: Наивный вопрос к знатокам XML/XSLT [re: vdremov]
      03.02.2004 18:20
 

ты хочешь разбирать XML-файл как строку, как это сделпть на XSLT я не знаю



not fluffing up the experience with features that will ultimately cause you a headache
_TZ
sir

Рег.: 30.12.2002
Сообщений: 1083
Рейтинг: 227
  Re: Наивный вопрос к знатокам XML/XSLT [re: vdremov]
      03.02.2004 18:57
 

Меня посетила такая же мысль, вывести открывающие и закрывающие теги при помощи <xsl:text>&lt;xxx&gt;</xsl:text>, но я не пробовал, можно ли заставить xsl:text заменять "&lt;" на "<". В любом случае такой подход представляется как хулиганский.

Страницы: 1

Technical >> Hard&Soft (Archive)

Дополнительная информация
0 зарегистрированных и 0 анонимных пользователей просматривают этот форум.

Модераторы:  exc, muse, Riamella, KAA 

Печать темы

Права
      Вы можете создавать новые темы
      Вы можете отвечать на сообщения
      HTML отключен
      UBBCode включен

Рейтинг:
Просмотров темы:

Переход в