Как правильно используют XML+XSLT?

Jenius

Guest
Как правильно используют XML+XSLT?

Заранее прошу прощение за столь тривиальный вопрос...

Скажите, пожалуйста как правильно использовать XML+XSLT при написании сайта.
Например у нас имеется страница в виде HTML, тоесть дизайн странички.

Что именно должен в себе хранить XML? Только ту информацию, которую мы выводим из MySql и по XSLT шаблону выдавать пользователю? А останьную часть дизайна, тобишь например логотип, дизайн, который мы не храним в MySql можно оставить в HTML? Можно, то оно можно, а правильно ли это при использовании XML+XSLT?

Я так понимаю, что в XML+XSLT надо использовать только в тех случаях, где информация выводится с MySql, а всё остально, что не генирируется, можно оставить в HTML. Правильно?
 

Фанат

oncle terrible
Команда форума
при использовании XML+XSLT у тебя нет никакого HTML
есть только XML+XSLT
 

Jenius

Guest
Тоесть, весь дизайн, всё хранится XSLT шаблоне... Не подскажите, где в сети можно увидеть практическое применение с описанием... Если не трудно. Спасибо.
 

Jenius

Guest
Есть, но то, что я читал, в тех примерах не все в XSLT+XML, а есть и отдельны HTML. В том случае статья, ссылка с этого форума про написание гостевой книги.
 

denver

?>Скриптер
Jenius
Всё нединамическое в XSL, всё динамическое в XML.
Лого это статика, значит в XSL.

-~{}~ 11.07.06 22:21:

>ссылка с этого форума про написание гостевой книги.

шозалинк?
 

denver

?>Скриптер
>http://xmlhack.ru/books/xslt/ch_09_04.html

Правильней <html><body>... тоже вынести в XSL. Результат не изменится, но верстальщику вообще не придется править php файлы при редизайне.

-~{}~ 11.07.06 22:41:

Вот еще почитай:
http://phpclub.ru/detail/article/2002-10-07
 

Jenius

Guest
Я всегда пользовался str_replace'ом, решил познакомится с XSLT :)

Спасибо.

-~{}~ 11.07.06 23:11:

Возник такой вопрос:

Вот наш XSL шаблон страницы:

<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:eek:utput method="html" indent="yes" encoding="Windows-1251"/>

<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>

<xsl:template match="document">
<html><head>
<title>Untitled</title>
</head>
<body>
<h1>Игры</h1>
<table cellpadding="2" cellspacing="2" border="1">
<tr>
<td>Название</td>
<td>жанр</td>
<td>год</td>
<td>разработчик</td>
<td>издатель</td>
</tr>
<xsl:apply-templates select="content"/>
</table>
</body></html>
</xsl:template>

<xsl:template match="content">
<tr>
<td><b><xsl:value-of select="title"/></b></td>
<td><xsl:value-of select="genre"/></td>
<td><xsl:value-of select="year"/></td>
<td><xsl:value-of select="designer"/></td>
<td><xsl:value-of select="publisher"/></td>
</tr>
</xsl:template>

</xsl:stylesheet>';

Но так как сайт динамический, и потому шаблон content всегда изменяется, как написать так, чтобы шаблон content изменялся на другой, это делать с помощью PHP, но кажется это не рационально, возможно ли такое в XSLT и как?

-~{}~ 11.07.06 23:13:

Тоесть я PHP выводил часть контента по значениям перемынных адресной строки, а как тут быть?
 

denver

?>Скриптер
ну например вынести <xsl:template match="content"> в отдельный XSL. Применять нужный XSL в зависимости от "перемынных адресной строки".

-~{}~ 11.07.06 23:21:

вернее распихать по файлам:

<xsl:template match="content[@page=index]">...
<xsl:template match="content[@page=contacts]">...
<xsl:template match="content[@page=forum]">...
 

Jenius

Guest
А как же потом вызывать нужный файл и соединять с основным шаблоном? Например у нас два файла: основной - template.xsl и второстепенный - contacts.xsl

Каким образом можно в основно шаблоне template.xsl вызвать файл contacts.xsl Это уже с помощью PHP или есть другой вариант?

-~{}~ 11.07.06 23:26:

Не сочти за наглость, не мог бы написать мне пример? Буду примного благодарен. Спасибо за помощь.
 

Jenius

Guest
Эх жаль, всё равно огромное спасибо.) Помог.

-~{}~ 11.07.06 23:45:

xsl:import или xsl:include - это понятно.
Но это мы пишем в основном шаблоне я так понимаю
xsl:import contacts.xsl

Тоесть получается нам постоянно придется редактировать основной шаблон templates.xsl?
 

denver

?>Скриптер
как вариант, делать наоборот: <xsl:import templates.xsl> в contacts.xsl

-~{}~ 11.07.06 23:51:

так даже лучше если XSL файлов много.
 

Jenius

Guest
Еще вопрос:
Есть шаблон template.xsl примерно такого содержания:

<?xml version="1.0" encoding ="windows-1251"?>
<!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:eek:utput method="html" indent="yes" encoding="Windows-1251"/>

<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>

<xsl:template match="document">
...html.... <xsl:apply-templates select="menu"/>
...html... <xsl:apply-templates select="content"/>
...html...
</xsl:template>

</xsl:stylesheet>

И еще один файл content.xsl, который соединяет xsl файлы примерно такого содержания:

<?xml version="1.0" encoding ="windows-1251"?>
<!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:eek:utput method="html" indent="yes" encoding="Windows-1251"/>

<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>

<xsl:include href="template.xsl" />
<xsl:include href="menu.xsl" />

<xsl:template match="content">
...html...
</xsl:template>
</xsl:stylesheet>

В PHP вызываю content.xsl, а выводится только template.xsl, тоесть не видет наш шаблон content

Подскажите, пожалуйста, в чем ошибка?
 

denver

?>Скриптер
если вот так выводит:
<xsl:template match="//content">
значит content находится не в том элементе где ищется.
а если и так не выводит значит нет такого элемента вовсе.
 
Сверху