|
|
|
работа с двумя наборами узлов
|
|||
|---|---|---|---|
|
#18+
Короче вопрос: можно ли в XSL работать с двумя деревьями одновременно в переменную или куда занести часть дерева, а потом с ним работать Вот пример кода <?xml version="1.0" encoding="windows-1251" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" xmlns:set="http://exslt.org/sets" extension-element-prefixes="exsl" exclude-result-prefixes="set" > <xsl:import href="set.distinct.xsl" /> <xsl:decimal-format decimal-separator="." grouping-separator=' '/> <xsl:output method="html" media-type="text/html; charset=windows-1251" encoding="windows-1251"/> <xsl:template match="/"> <xsl:variable name="day" select="syst/train/vagon/@*[position()=4]"/> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"/> <title>Справка</title> </head> <body> <xsl:value-of select="$day"/> <table border="1"> <tr> <xsl:call-template name="set:distinct"> <xsl:with-param name="nodes" select="syst/train/vagon/@*[position()=6]"/> </xsl:call-template> </tr> <xsl:call-template name="set:distinct"> <xsl:with-param name="nodes" select="syst/train/vagon/@*[position()=4]"/> <xsl:with-param name="distinct" select="syst/train/vagon/@*[position()=6]"/> </xsl:call-template> </table> </body> </html> </xsl:template> !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ВОТ ИЗ ЭТОГО ШАБЛОНА РАБОТАТЬ С ИСХОДНЫМ ДЕРЕВОМ И ИМЕТЬ ДОСТУП К РОДИТЕЛЬСКИМ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! УЗЛАМ КАК? <xsl:template match="syst/train/vagon/@*[position()=6]" mode="set:distinct"> <td nowrap="yes"> <xsl:value-of select="."/> </td> </xsl:template> <xsl:template match="syst/train/vagon/@*[position()=4]" mode="set:distinct"> <tr> <!-- <td> <xsl:value-of select="syst/train/@*[position()=1]"/> </td> --> <td colspan="24"> <xsl:value-of select="."/> </td> </tr> </xsl:template> <xsl:template name="headTable"> <!--<xsl:for-each select="(/*/*/*/@*[position()=6])">--> <td> <xsl:value-of select="@*[position()=6]"/> <!--<xsl:value-of select="set:distinct(@*[position()=6])"/>--> </td> <!--</xsl:for-each>--> </xsl:template> </xsl:stylesheet>[ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2007, 08:30 |
|
||
|
работа с двумя наборами узлов
|
|||
|---|---|---|---|
|
#18+
Слободской Андрейможно ли в XSL работать с двумя деревьями одновременно Можно. Токо я предложу маленько другой способ. Примерно так: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2007, 09:51 |
|
||
|
работа с двумя наборами узлов
|
|||
|---|---|---|---|
|
#18+
Поясни еще вот это: РАБОТАТЬ С ИСХОДНЫМ ДЕРЕВОМ И ИМЕТЬ ДОСТУП К РОДИТЕЛЬСКИМ УЗЛАМ КАК? Если тебе нужен просто доступ к родительским узлам, почему бы не использовать для этого оси (ancestor() и ей подобные). Поясни этот момент ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2007, 10:02 |
|
||
|
работа с двумя наборами узлов
|
|||
|---|---|---|---|
|
#18+
SuSaМожно. Токо я предложу маленько другой способ. Примерно так: if test="document('source1.xml')//что[@id=current()/@id] Тоесть сравниваешь значение одного и того же докумнета, токо как бы один парсишь, а второй(тот же самый) подгружаешь либо import'oм либо include'ом. можешь дать елементарный пример? Как обратиться к импорту. сорри за ламерство но нуна срочно прям сегодня, а ещё конь не валялся. SuSaЕсли тебе нужен просто доступ к родительским узлам, почему бы не использовать для этого оси (ancestor() и ей подобные). Поясни этот момент просто при вызове шаблона <xsl:template name="set:distinct"> он возвращает урезанный набор узлов. <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:set="http://exslt.org/sets" exclude-result-prefixes="set"> <xsl:template name="set:distinct"> <xsl:param name="nodes" select="/.."/> <xsl:param name="distinct" select="/.."/> <xsl:choose> <xsl:when test="$nodes"> <xsl:call-template name="set:distinct"> <xsl:with-param name="distinct" select="$distinct | $nodes[1][not(. = $distinct)]"/> <xsl:with-param name="nodes" select="$nodes[position() > 1]"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:apply-templates select="$distinct" mode="set:distinct"/> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="node()|@*" mode="set:distinct"> <xsl:copy-of select="." /> </xsl:template> </xsl:stylesheet> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2007, 11:18 |
|
||
|
работа с двумя наборами узлов
|
|||
|---|---|---|---|
|
#18+
Вообщето это и был пример, ну ладно вот подробнее: xsl Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Код: plaintext 1. 2. 3. 4. Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2007, 12:11 |
|
||
|
|

start [/forum/topic.php?fid=14&msg=34471733&tid=1334342]: |
0ms |
get settings: |
5ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
198ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 219ms |
| total: | 496ms |

| 0 / 0 |
