PDA

Показать полную графическую версию : xsl - include


FADE
12-04-2007, 06:50
народ, а как подключить файл имя которого находится в переменной?

<xsl:include href="<xsl:value-of select="/var"/>"/>

вот такое как переписать чтобы заработало?

Vlad Drakula
12-04-2007, 10:52
FADE
1) нельзя такого делать...
2) вы написали полный бред в примере кода

если очень зочется то нудно пичсать xsl заблон который создаст другой xsl шаблон который уже будет преобразовывать вашь xml (на работе я так делаю постоянно)

FADE
12-04-2007, 10:57
если очень зочется то нудно пичсать xsl заблон который создаст другой xsl шаблон который уже будет преобразовывать вашь xml
очень хочется!:)

на работе я так делаю постоянно
а можно посмотреть то, что ты имеешь ввиду?

Vlad Drakula
12-04-2007, 11:05
FADE
а можно посмотреть то, что ты имеешь ввиду?
посмотреть нельзя, но я могу попытаться объяснить:
1) создаешь xsl файл к ениму в параметры прописываешь нужные пути
2) по нужным по нужным путям из других xsl файлов ты этим шаблоном собираешь нужный тебе шаблон
3) преобразуешь свой xml с помошью того что выдало на выходе предыдуще преобразование

vadimiron
12-04-2007, 12:44
FADE
А парaметром можете передовать? Или надо много файлов подключать?
<xsl:param name="include" />
<xsl:include href="$include" />

Vlad Drakula
12-04-2007, 14:08
vadimiron
по моему приведенный вами код не сработает...

FADE
20-04-2007, 01:26
vadimiron у меня не сработало, может я что не так переписал?

Vlad Drakulaпреобразуешь свой xml с помошью того что выдало на выходе предыдуще преобразование
это ты как себе представляешь?

есть один общий шаблон для всех страниц, внутренность(еще один шаблон) меняется в зависимости от названия страницы.. пока решил с помощью if но както это не красиво, да и разных страниц около 11 штук, блок из 11 ifов смотрится ужасно.

как это можно сделать красивее, о гуру xsl ??

Vlad Drakula
20-04-2007, 02:32
FADE

я бы наверное двигался в этом направлении:




<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:output method="xml"/>
<xsl:param name="page"/>
<xsl:template match="/">
<xsl:apply-templates select="node()"/>
</xsl:template>
<xsl:template match="node()">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:template match="node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="stylesheet">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:copy-of match="node()[name() != 'xsl:template']"/>
<xsl:element name="xsl:include">
<xsl:attribute name="href"><xsl:value-of select="$page"/></xsl:attribute>
</xsl:element>
<xsl:copy-of match="node()[name() = 'xsl:template']"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>




пока решил с помощью if но както это не красиво, да и разных страниц около 11 штук, блок из 11 ifов смотрится ужасно.
а как на счет xsl:choose ?

FADE
20-04-2007, 06:03
Vlad Drakula <xsl:template match="node()">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:template match="node()"/>
</xsl:copy>
</xsl:template>
а это что делает?

Vlad Drakula
20-04-2007, 10:49
FADE
а это что делает?
дефолтный рекурсивно копирующий темплейт

FADE
21-04-2007, 16:12
а без него можно?
так чтобы поменьше кода..
не понятно как он работает..

Vlad Drakula
21-04-2007, 20:48
если вы не понимаете как он наботает, то вам перед тем как двигаться дальше нужно обязательно это понять!!!
на его использовании базируется слишном много приемов по организации XSL шаблонов!!!

FADE
21-04-2007, 22:46
а как это работает, на пальцах можно?:)

Vlad Drakula
21-04-2007, 23:19
FADE
я не хочу объяснять принципы работы XSL на пальцах... лучьше почитайте книгу на эту тему...




© OSzone.net 2001-2012