Модераторы: diadiavova
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как вынести динамический result-document в файл, Проблема вынести в единый xsl 
:(
    Опции темы
vaz
Дата 5.11.2011, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 5.4.2006

Репутация: нет
Всего: нет



У меня есть несколько xsl файлов. Каждый из них содержит блок кода, который приведен ниже в  
Код
<xsl:template match="/">
 Кроме этого, каждый файл содержит темплейт "data" который вызывается из основного шаблона. Темплейт "data" в каждом из файлов разный.

Код

<?xml version="1.0"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                          xmlns="http://www.w3.org/1999/xhtml">
<xsl:output name="indent" method="html" indent="yes" omit-xml-declaration="yes"/>
<xsl:output name="no_indent" method="html" indent="no" omit-xml-declaration="yes"/>

   <xsl:template match="/">
    <xsl:variable name="indent" select="//page/view-data/html-indent"/>
    <xsl:if test="$indent='yes'">
     <xsl:result-document format="indent" >
       <xsl:call-template name="data"/>
     </xsl:result-document>
    </xsl:if>
    <xsl:if test="$indent='no'">
     <xsl:result-document format="no_indent" >
       <xsl:call-template name="data"/>
     </xsl:result-document>
    </xsl:if>
   </xsl:template>

   <xsl:template name="data">
   <!-- The content is different from file to file -->
   </xsl:template>
</xsl:stylesheet>[quote]

[/quote]


Я хочу централизованно контролировать indent путем вынесения общей части содержимого 
Код
<xsl:template match="/">
 в отдельный  xsl файл. Затем каким-либообразом либо импортировать либо инклудить. Проблема заключается в том, что если я пробую это делать, то вызвать шаблон "data" из общего файла приводит к ошибке.
Использую xsl2.0 и saxon.

Кто сталкивался с подобным подскажите подходящее решение.  
PM MAIL   Вверх
magelan
Дата 5.11.2011, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


потерял xPath
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 5.4.2010

Репутация: 7
Всего: 16



не используйте именованные темплейты, делайте что-то типа такого:
Код

<xsl:template match="/">
    <xsl:choose>
        <xsl:when test="//page/view-data/html-indent='yes'">
            <xsl:apply-templates select="." mode="indent" />
        </xsl:when>
        <xsl:otherwise>
            <xsl:apply-templates select="." mode="no_indent" />
        </xsl:otherwise>
    </xsl:choose>
</xsl:template>

<xsl:template match="/" mode="indent">
</xsl:template>

<xsl:template match="/" mode="no_indent">
</xsl:template>

PM MAIL   Вверх
vaz
Дата 6.11.2011, 00:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 5.4.2006

Репутация: нет
Всего: нет



Предложенный код - это то, что можно вынести в общий файл?

Не совсем тогда понятно, как импортировать или инклудить и куда поместить следующие структуры
Код

<xsl:output name="indent" method="html" indent="yes" omit-xml-declaration="yes"/>
<xsl:output name="no_indent" method="html" indent="no" omit-xml-declaration="yes"/>

<xsl:result-document format="indent" >
...
</xsl:result-document>



Ведь собственно весь изначальный вопрос сводится к генерации документа с отступом/без отступа, что невозможно сделать без этих структур.
PM MAIL   Вверх
vaz
Дата 6.11.2011, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 5.4.2006

Репутация: нет
Всего: нет



На этот вопрос неожиданно ответил Michael Kay на stackoverflow  форуме, где я разместил подобный пост. Решение здесь:
http://stackoverflow.com/questions/7958861...7971602#7971602
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "XML/XSLT"
diadiavova

Прежде чем опубликовать вопрос, попробуйте воспользоваться поиском - возможно тема уже поднималась.

Также рекомендуем Вам зайти в раздел FAQ ,раздел дополняется и, возможно, там вы увидите готовое решение.

Для ответов на часто задаваемые вопросы существует FAQ раздела. Новости можно публиковать в разделе новостей. Для статей так же есть специальный раздел

Желаем удачи в Вашем деле!


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | XML, XSL | Следующая тема »


 




[ Время генерации скрипта: 0.0616 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.