Показать полную графическую версию : xsl - include
народ, а как подключить файл имя которого находится в переменной?
<xsl:include href="<xsl:value-of select="/var"/>"/>
вот такое как переписать чтобы заработало?
Vlad Drakula
12-04-2007, 10:52
FADE
1) нельзя такого делать...
2) вы написали полный бред в примере кода
если очень зочется то нудно пичсать xsl заблон который создаст другой xsl шаблон который уже будет преобразовывать вашь xml (на работе я так делаю постоянно)
если очень зочется то нудно пичсать 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
по моему приведенный вами код не сработает...
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 ?
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
а это что делает?
дефолтный рекурсивно копирующий темплейт
а без него можно?
так чтобы поменьше кода..
не понятно как он работает..
Vlad Drakula
21-04-2007, 20:48
если вы не понимаете как он наботает, то вам перед тем как двигаться дальше нужно обязательно это понять!!!
на его использовании базируется слишном много приемов по организации XSL шаблонов!!!
а как это работает, на пальцах можно?:)
Vlad Drakula
21-04-2007, 23:19
FADE
я не хочу объяснять принципы работы XSL на пальцах... лучьше почитайте книгу на эту тему...
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC