_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><xxx></xsl:text>, но я не пробовал, можно ли заставить xsl:text заменять "<" на "<". В любом случае такой подход представляется как хулиганский.
|
|