Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Не могу написать XSLT / 6 сообщений из 6, страница 1 из 1
31.01.2005, 12:59
    #32892166
Alexander A. Sak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу написать XSLT
Отдельного форума по 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
31.01.2005, 13:10
    #32892205
А.Грасоff™
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу написать XSLT
для тех, кому делать нечего, упрощу задачу :)

есть 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
31.01.2005, 13:42
    #32892340
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу написать XSLT
Alexander A. Sak
Есть XML такого вида:
<p> text1 <b> text2 </b> text3 </p>

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

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

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

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

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

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

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

тынц
...
Рейтинг: 0 / 0
31.01.2005, 16:33
    #32892874
Alexander A. Sak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу написать XSLT
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
Форумы / Java [игнор отключен] [закрыт для гостей] / Не могу написать XSLT / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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