Здравствуйте, SeLo, Вы писали:
SL><b> не нужен, он случайно здесь вставился. SL>В общем, что-то никак не выходит. Работаю действительно с XSLT.
Ну а если использовать то выражение и XSLT, то тупо
Здравствуйте, SeLo, Вы писали:
SL>пробую как то так, не получается SL>string(x/self::node()[not(y)])
Ты можешь выбрать нужные тебе текстовые узлы как: /x/descendant-or-self::*[not(self::y)]/text()
Но создать результат, который конкатинирует эти узлы в одну строку ты не можешь в чистом XPATH. Либо тебе нужен XSLT, либо XPATH2.0 string-join, либо соединить их какой-нибудь внешней функцией.
Здравствуйте, SeLo, Вы писали:
SL><xsl:apply-templates select="x/descendant-or-self::*[not(self::y)]" mode="my_concat" />
Тут ты выбрал все узлы кроме "y", включая "x".
SL>и пытаюсь выбрать, как ты мне сказал. все равно все проходят и значения "y" выводятся. SL><xsl:template match="*" mode="my_concat" > SL> <xsl:for-each select="descendant::*">
А тут ты выбираешь всех потомков каждого узла выбранного на предыдущем этапе. А "y" является потомком "x".
Если обычный xpath+xslt, то сделай просто. Как слышится так и пишется:
<xsl:apply-templates select="x"mode="filtered"/><!-- фильтруем содержимое x-->
...
<xsl:template match="text()"mode="filtered"><!-- текстовые узлы выводятся как есть -->
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="y"mode="filtered"/><!-- для "y" - тупо ничего не делаем -->
<xsl:template match="*"mode="filtered"><!-- в остальные теги заходим рекурсивно -->
<xsl:apply-templates select="node()"/>
</xsl:template>
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, ·, Вы писали:
·>Здравствуйте, SeLo, Вы писали:
SL>><b> не нужен, он случайно здесь вставился. SL>>В общем, что-то никак не выходит. Работаю действительно с XSLT. ·>Ну а если использовать то выражение и XSLT, то тупо