powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Вывод данных из нескольких xsl
2 сообщений из 2, страница 1 из 1
Вывод данных из нескольких xsl
    #36118666
mcTep
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток.

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

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

main.xml:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
<?xml version="1.0" encoding="UTF-8"?>
<root>
    Bad Hello!! :-(
    <element>
        Very Bad Hello!! :-((
    </element>
</root>

main.xsl:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<?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:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<?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:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<?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 выводится следующее
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Main Hello!
Second Hello!
First Hello!

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


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

Может кто сталкивался с данной проблемой и решил ее или же имеет другое решение.. Заранее спасибо =)
...
Рейтинг: 0 / 0
Вывод данных из нескольких xsl
    #36134573
mcTep
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решил проблему, путем переопределения пустого шаблона с mode="hello" для всех элементов в main.xsl.
Код: plaintext
1.
<xsl:template match="*" mode="hello"/>
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Вывод данных из нескольких xsl
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]