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

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

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

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

Чтобы не морочиться с динамическими адресами и не "изголяться" над 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
Условный include
    #37009267
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ваша большая ошибка в том, что Вы отдаете преобразование на клиента. Потом окажется, что разные XSLT процессоры по разному воспринимают один и тот же шаблон. Преобразовывать нужно на сервере, а клиенту отдавать результирующий HTML
...
Рейтинг: 0 / 0
Условный include
    #37009621
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, эту ошибку несложно исправить. Но пока что я заметил только одно отличие: процессор хрома заметно тормознее остальных. Проверял на довольно сложном документе, это фрагмент такого документа.
...
Рейтинг: 0 / 0
Условный include
    #37009717
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сложный документ говорите? Смешно! И, что же в нем сложного?
...
Рейтинг: 0 / 0
Условный include
    #37011090
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я рад, что вы рады. Для того, кто xsl видит в первый раз, он был сложным.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Условный include
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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