Гость
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / xml -> html / 7 сообщений из 7, страница 1 из 1
26.10.2014, 14:33
    #38787573
neharon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xml -> html
Здравствуйте!
Никак не могу справиться с преобразованием:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<paragraph>
    Начало параграфа 1
    <bold>
        Жирный 1
     </bold>
    Конец параграфа 1
</paragraph>
<paragraph>
    Начало параграфа 2
    <bold>
        Жирный 2
     </bold>
    Конец параграфа 2
</paragraph>


Надо получить html
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<p>
    Начало параграфа 1
    <b>
        Жирный 1
     </b>
    Конец параграфа 1
</p>
<p>
    Начало параграфа 2
    <b>
        Жирный 2
     </b>
    Конец параграфа 2
</p>


Подскажите, пожалуйста. Поиском не нашлось, может плохо искал. И огромное спасибо заранее
...
Рейтинг: 0 / 0
26.10.2014, 14:45
    #38787580
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xml -> html
neharonНикак не могу справитьсяНеужели было больше нуля попыток? Покажите ваши результаты.
...
Рейтинг: 0 / 0
26.10.2014, 14:57
    #38787590
neharon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xml -> html
Antonariy,
На самом деле исходный xml более сложный, с большим количеством вложений, там и италик и подчеркивание и прочие радости. Я тут сильно упростил, поэтому xslt тоже надо переделывать под упрощённый вариант.
Если без этого никак нельзя - переделаю конечно, но чуть позже. Сейчас убегаю.
...
Рейтинг: 0 / 0
26.10.2014, 20:26
    #38787715
neharon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xml -> html
Вот мои потуги:
Код: xml
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.
32.
33.
34.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
	<xsl:template match="/">
		<xsl:apply-templates select="document"/>
	</xsl:template>
	
	<xsl:template match="document">
		<html>
			<head>
				<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
				<title>test</title>
			</head>
			<body>
				<xsl:apply-templates select="paragraph"/>
			</body>
		</html>
	</xsl:template>
	
	<xsl:template match="paragraph">
		<p>
			<xsl:for-each select="text()">
				<xsl:value-of select="."/>
			</xsl:for-each>
			<xsl:apply-templates select="bold"/>
		</p>
	</xsl:template>
	
	<xsl:template match="bold">
		<b>
			<xsl:value-of select="text()"/>
		</b>
	</xsl:template>
</xsl:stylesheet>


в результате то что должно быть жирным уехало в конец параграфов:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
<html>
<HEAD>
<TITLE>test</TITLE>
<META content="text/html; charset=utf-8" http-equiv=Content-Type></HEAD>
<BODY>
<P>Начало параграфа 1 Конец параграфа 1 <B>Жирный 1 </B></P>
<P>Начало параграфа 2 Конец параграфа 2 <B>Жирный 2 </B></P></BODY>
</html>
...
Рейтинг: 0 / 0
26.10.2014, 22:49
    #38787751
neharon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xml -> html
Решение найдено.
Код: xml
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.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
	<xsl:template match="/">
		<xsl:apply-templates select="document"/>
	</xsl:template>
	
	<xsl:template match="document">
		<html>
			<head>
				<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
				<title>test</title>
			</head>
			<body>
				<xsl:apply-templates select="paragraph"/>
			</body>
		</html>
	</xsl:template>
	
	<xsl:template match="paragraph">
		<p>
			<xsl:apply-templates/>
		</p>
	</xsl:template>
	
	<xsl:template match="bold">
		<b>
			<xsl:value-of select="text()"/>
		</b>
	</xsl:template>
</xsl:stylesheet>


Я новичок в этом деле, поэтому с благодарностью приму любые замечания и комментарии, если у кого есть.
...
Рейтинг: 0 / 0
26.10.2014, 23:16
    #38787758
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xml -> html
neharonЯ новичок в этом деле, поэтому с благодарностью приму любые замечания и комментарии, если у кого есть.Заменить
neharon
Код: xml
1.
2.
3.
4.
5.
<xsl:template match="bold">
		<b>
			<xsl:value-of select="text()"/>
		</b>
	</xsl:template>

на
Код: xml
1.
2.
3.
4.
5.
<xsl:template match="bold">
		<b>
			<xsl:apply-templates/>
		</b>
	</xsl:template>
...
Рейтинг: 0 / 0
27.10.2014, 00:01
    #38787766
neharon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xml -> html
Спасибо большое, уже пришлось так сделать самому, т.к. уровней вложенности много, и всякие жирности италики, подчеркивания, зачеркивания, верхние/нижние индексы и т.д. почти произвольно бывают друг в друга вложены до хз какого уровня.
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / xml -> html / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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