powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Не могу написать XSLT
6 сообщений из 6, страница 1 из 1
Не могу написать XSLT
    #32892166
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отдельного форума по XML нет, поэтому пишу сюда, считая, что джаверы знакомы с XSLT больше остальных.

Есть XML такого вида:
Код: plaintext
<p> text1 <b> text2 </b> text3 </p>

Надо написать такой XSLT, чтобы текст внутри тега <p>, но вне других тегов был обрамлен тегом <T>:

Код: plaintext
<p> <T>text1</T> <b> text2 </b> <T>text3</T> </p>

Как это писать с помощью какого-нибудь SAX-парсера понятно, но хочется без программирования, только XSLT.
...
Рейтинг: 0 / 0
Не могу написать XSLT
    #32892205
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для тех, кому делать нечего, упрощу задачу :)

есть source.xml:
Код: plaintext
1.
2.
3.
4.
<?xml version="1.0" encoding="UTF-8"?>
<p>
text1 <b>text2</b> text3
</p>

надо получить с использованием xsl:
Код: plaintext
1.
2.
3.
4.
<?xml version="1.0" encoding="UTF-8"?>
<p>
<t>text1</t> <b>text2</b> <t>text3</t>
</p>

--
Lacrima Mosa Est
...
Рейтинг: 0 / 0
Не могу написать XSLT
    #32892340
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. Sak
Есть XML такого вида:
<p> text1 <b> text2 </b> text3 </p>

Есть замечания:

1) То что ты опубликовал не является XML документом.

2) Задача разбивается еще на несколько подзадач.
- преобразование текста (возм. гипертекста) в список элементов
- преобразование списка элементов в XML документ
- XSL трансформация (если необходимо) в целевой документ
...
Рейтинг: 0 / 0
Не могу написать XSLT
    #32892613
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton1) То что ты опубликовал не является XML документом.

2) Задача разбивается еще на несколько подзадач.
- преобразование текста (возм. гипертекста) в список элементов
- преобразование списка элементов в XML документ
- XSL трансформация (если необходимо) в целевой документ
1. А вот всякие библиотеки для преобразования не считают его неправильным. Думаю, все-таки ты не прав.
2. Хотелось бы получить ответ по существу. Все эти преобразования умные люди уже написали. Мне бы шаблон, чтоб сказать, что надо из такого получить эдакое.

Куда бы еще написать? RU.XML?
...
Рейтинг: 0 / 0
Не могу написать XSLT
    #32892733
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. Sak mayton1) То что ты опубликовал не является XML документом.

2) Задача разбивается еще на несколько подзадач.
- преобразование текста (возм. гипертекста) в список элементов
- преобразование списка элементов в XML документ
- XSL трансформация (если необходимо) в целевой документ
1. А вот всякие библиотеки для преобразования не считают его неправильным. Думаю, все-таки ты не прав.
2. Хотелось бы получить ответ по существу. Все эти преобразования умные люди уже написали. Мне бы шаблон, чтоб сказать, что надо из такого получить эдакое.

Куда бы еще написать? RU.XML?

тынц
...
Рейтинг: 0 / 0
Не могу написать XSLT
    #32892874
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wessen Alexander A. Sak
Куда бы еще написать? RU.XML?

тынц
Спасибо, почти нашел то, что надо:
text() - набор текстовых узлов. Каждый текстовый узел содержит максимально возможный непрерывный отрезок текста, не прерванный тегом...

Пока получилось что-то типа такого:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
<xsl:stylesheet 
     version="1.0"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
     >

<xsl:output method="xml" encoding="windows-1251"/>

<xsl:template match="p">
 <xsl:element name="{name(.)}">
 <xsl:call-template name='split-text'/>
 </xsl:element>
</xsl:template>

<xsl:template match="*">
 <xsl:element name="{name(.)}">
 <xsl:value-of select="."/>
 </xsl:element>
</xsl:template>

<xsl:template name="split-text">
    <xsl: for -each select="* | text()">
        <xsl: if  test="not(name(.))">
            <t><xsl:value-of select="."/></t>
        </xsl: if >
        <xsl: if  test="name(current())">
            <xsl:apply-templates select="."/>
        </xsl: if >
    </xsl: for -each>
</xsl:template>


</xsl:stylesheet>
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Не могу написать XSLT
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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