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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывод данных из нескольких xsl 
V
    Опции темы
mcTep
Дата 30.7.2009, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Доброго времени суток.

Есть такая задача:

В главном xsl подключается множество других мелких xsl, количество которых неограниченно. Нужно вывести информацию из каждого мелкого xsl, заключенного в определенном шаблоне шаблоне.
Есть такой пример:

main.xml:
Код

<?xml version="1.0" encoding="UTF-8"?>
<root>
    Bad Hello!! :-(
    <element>
        Very Bad Hello!! :-((
    </element>
</root>


main.xsl:
Код

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:str="http://example.com/namespace"
    version="2.0" exclude-result-prefixes="str">
    
    <xsl:import href="first.xsl"/>
    <xsl:import href="second.xsl"/>
    
    <xsl:output method="text"/>
    
    <xsl:template match="/">
        <xsl:apply-templates select="." mode="hello"/>
    </xsl:template>
    
    <xsl:template match="/" mode="hello">
        <xsl:text>Main Hello!
</xsl:text>
        <xsl:next-match/>
    </xsl:template>
</xsl:transform>


first.xsl:
Код

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:str="http://example.com/namespace"
    version="2.0" exclude-result-prefixes="str">
    <xsl:output method="text"/>
    
    <xsl:template match="/" mode="hello">
        <xsl:text>First Hello!
</xsl:text>
        <xsl:next-match/>
    </xsl:template>
</xsl:transform>


second.xsl:
Код

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:str="http://example.com/namespace"
    version="2.0" exclude-result-prefixes="str">
    <xsl:output method="text"/>
    
    <xsl:template match="/" mode="hello">
        <xsl:text>Second Hello!
</xsl:text>
        <xsl:next-match/>
    </xsl:template>
</xsl:transform>


После прогона через Saxon9 (java net.sf.saxon.Transform -s:main.xml -xsl:main.xsl -o:main.txt) выводится следующее
Код

Main Hello!
Second Hello!
First Hello!

    Bad Hello!! :-(
    
        Very Bad Hello!! :-((



Как я понял, при использовании <xsl:next-match/> преобразование переходит на следующий похожий шаблон и после последнего шаблона с mode="hello" он просто выплевывает текстовое содержимое узлов, чего не очень хочется. 
Вопрос: Как этого избежать?

Может кто сталкивался с данной проблемой и решил ее или же имеет другое решение.. Заранее спасибо =)
PM MAIL   Вверх
mcTep
Дата 10.8.2009, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Решил проблему, путем переопределения в main.xsl пустого шаблона с mode="hello" для всех элементов.
Код

<xsl:template match="*" mode="hello"/>


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "XML/XSLT"
diadiavova

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

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

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

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


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

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


 




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


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

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