Гость
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Условный include / 8 сообщений из 8, страница 1 из 1
09.12.2010, 18:38
    #37005325
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Условный include
Делаю сайт на xml+xsl. Сервер будет генерировать один и тот же xml-файл с разным содержимым. На одном и том же url'е в зависимости от условий нужно отображать разные куски html. Кусков много, они разнесены по разным html-файлам, которые инклюдятся на сервере. А хsl:include является подчиненным xsl:stylesheet, то есть нельзя его воткнуть в xsl:if. Отсюда вопрос: если все xsl:include запихать в шаблон единым списком, то они скачаются вместе с шаблоном независимо от того, понадобятся ли они в дальнейшем? Если да, то есть мысль делать href в <?xml-stylesheet с динамическим адресом, чтобы сервер генерировал и xsl. Но тут еще одна засада: не канают адреса с несколькими параметрами, то есть с амперсандом. &amp; тоже не канает. Как можно выйти из положения?
...
Рейтинг: 0 / 0
10.12.2010, 00:23
    #37005760
mage.lan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Условный include
Antonariy,

адреса с &amp; - канают.
не изголяйтесь над xsl, либо напишите один шаблон на все случаи жизни, либо сделайте нормальную надстройку, которая будет знать в каком случае, какой из xsl необходимо использовать (даю хинт, надстройка называется CMS, некоторое кол-во таких цмс присутствуют на рынке)
...
Рейтинг: 0 / 0
10.12.2010, 11:11
    #37006457
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Условный include
Собственно, я и занимаюсь тем, что переделываю что-то вроде cms с собственным языком разметки. Применение этого языка я хочу оставить в шаблонах данных. А разметку выскрести и перенести в xsl.

напишите один шаблон на все случаи жизниЭтот шаблон будет размером мегабайта три. Не айс потом такой шаблон поддерживать.

адреса с & - канают.У меня все броузеры показывали пустую страницу, хотя и не ругались ни на какие ошибки. Попробую еще.
...
Рейтинг: 0 / 0
10.12.2010, 18:21
    #37007995
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Условный include
Думаю выйти из положения выворачиванием инклюдов наизнанку :))

Чтобы не морочиться с динамическими адресами и не "изголяться" над xsl, решил просто подставлять на сервере имя нужного шаблона:
Код: plaintext
<?xml-stylesheet type='text/xsl' href="<%=sTempName%>"?>

Нужный шаблон, минимум лишнего кода:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xhtml="http://www.w3.org/1999/xhtml" version="1.0">
	<xsl:output method="html" />
	<xsl:template match="*">
		<xsl:call-template name="INC_Layout.xsl"/>
	</xsl:template>
	<xsl:template match="MAINHTML">

здесь соответствующий html

	</xsl:template>
</xsl:stylesheet>
INC_Layout.xsl, разметка:
Код: 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.
32.
<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xhtml="http://www.w3.org/1999/xhtml" version="1.0">
	<xsl:output method="html" />
	<xsl:template match="*">
		<![CDATA[<!DOCTYPE html>]]>
		<html xmlns="http://www.w3.org/1999/xhtml">
			<head>
				<meta charset="utf-8" />
				<!--[if IE]><script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
				<title></title>
				<link rel="stylesheet" href="layout.css" type="text/css" media="screen, projection" />
			</head>
			<body>
				<div id="wrapper">
					<header id="header"><xsl:call-template name="header"/></header>
					<section id="middle">
						<div id="container"><div id="content">
							<!-- ссылка на шаблон в инклюдящем файле -->
							<xsl:apply-templates select="//MAINHTML"/>
						</div></div>
						<aside id="sideLeft"><xsl:call-template name="leftpane"/></aside>
						<aside id="sideRight"><xsl:call-template name="rightpane"/></aside>
					</section>
				</div>
				<footer id="footer"><xsl:call-template name="footer"/></footer>
			</body>
		</html>
	</xsl:template>
	<xsl:template name="header">головизна</xsl:template>
	<xsl:template name="leftpane"></xsl:template>
	<xsl:template name="rightpane"></xsl:template>
	<xsl:template name="footer"><p align="center">цапирайты</p></xsl:template>
</xsl:stylesheet>
Я надеюсь, инклюдный xsl может ссылаться на тот который инклюдит? Проверить пока не могу, но уже жутко интересно.))

PS: xml+xsl=html — клевая вещь) Это ж как можно сервер разгрузить. Жаль я до нее добрался только сейчас.
...
Рейтинг: 0 / 0
11.12.2010, 21:33
    #37009267
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Условный include
Ваша большая ошибка в том, что Вы отдаете преобразование на клиента. Потом окажется, что разные XSLT процессоры по разному воспринимают один и тот же шаблон. Преобразовывать нужно на сервере, а клиенту отдавать результирующий HTML
...
Рейтинг: 0 / 0
12.12.2010, 11:35
    #37009621
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Условный include
Ну, эту ошибку несложно исправить. Но пока что я заметил только одно отличие: процессор хрома заметно тормознее остальных. Проверял на довольно сложном документе, это фрагмент такого документа.
...
Рейтинг: 0 / 0
12.12.2010, 13:25
    #37009717
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Условный include
Сложный документ говорите? Смешно! И, что же в нем сложного?
...
Рейтинг: 0 / 0
13.12.2010, 12:31
    #37011090
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Условный include
Я рад, что вы рады. Для того, кто xsl видит в первый раз, он был сложным.
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Условный include / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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