Доки для начинающих

fog

Рыцарь Джедай
Доки для начинающих

Посмотрел по форуму, что то не попалось на глаза, поэтому рискну спросить:

Где найти документацию по XSLT "с нуля"? Куда ни ткнусь - "Вот XML, вот шаблон, опа - это уже HTML, просто, правда?" Вот только в преобразованиях ни строки понять не могу, одни скупые комментарии.

Вобщем, подскажите где найти подробное описание элементов?
 

[DAN]

Старожил PHPClub
Скоро опубликую фак по этому поводу.
пока что могу посоветовать прошерстить
*)raleigh.ru
*)xmlhack.ru
*)fido.xml.ru (правда всю конфу перерыть придется :-\ )
*)Книги по XML и XSLT (например книга А.Валикова)

P.S. Спасибо за вопрос, т.к. он действительно актуальный.

Ждите релизов FAQ.
 

Frutik

1024-й
providerz.ru
есть статья о php+xml
правда уже немного устаревшая в плане domxml но всеравно очень интересная
 

fog

Рыцарь Джедай
Да читал я это :)

Но, это тот же случай.
Примеры это очень хорошо, думаю я этоу доку ещё много раз зачитывать буду, но хотелось бы описания, не только примеров.
 

fog

Рыцарь Джедай
Ещё есть такой вопрос, может ли кто примлать исходник сайта сделанного с помощью xslt?

Меня интересуют несколько вопросов, например, как генерируется страница?:
Есть готовый _HTML_ шаблон(Шапка и Низ), в который подставляется контент сгенерированный с помощью xml+xslt
или
Шапка и низ генерятся в xslt преобразовании?

Как это вообще выглядит?
Уж простите за такой вопрос, я в этом совсем новичёк...
 

Energizer

Guest
Автор оригинала: fog
Ещё есть такой вопрос, может ли кто примлать исходник сайта сделанного с помощью xslt?

Меня интересуют несколько вопросов, например, как генерируется страница?:
Есть готовый _HTML_ шаблон(Шапка и Низ), в который подставляется контент сгенерированный с помощью xml+xslt
или
Шапка и низ генерятся в xslt преобразовании?

Как это вообще выглядит?
Уж простите за такой вопрос, я в этом совсем новичёк...
http://phpclub.net/talk/showthread.php?s=&threadid=27817&rand=15
 

slach

Новичок
да как хочешь
например у меня примерно вот так:
-----------XML-------------
<?xml version="1.0" encoding="windows-1251" ?>
<DOCUMENT url="http://slach.office.ems.chel.su/wsManager2/" lang="rus">
<DIV>
<ID>1</ID>
<PATH>/wsManager2/</PATH>
<TITLE>Главная страница</TITLE>
<INFO>Главная страница на новом движке</INFO>
</DIV>
<USER>
<AUTH>1</AUTH>
<LOGIN>anonymous</LOGIN>
<E_MAIL />
<FULLNAME>нерегистрированный пользователь</FULLNAME>
<RIGHTS>
<view>1</view>
<edit>0</edit>
<update>0</update>
<delete>0</delete>
<public>0</public>
</RIGHTS>
</USER>
<CONTENT cmd="view" />
<NAVIGATION />
<INTERACTIVE />
<SESSION />
<ANNOUNCEMENTS sites_id="0" />
</DOCUMENT>

----------XSLT-------------------------

<?xml version="1.0" encoding="windows-1251" ?>
<!DOCTYPE xsl:stylesheet (View Source for full doctype...)>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:w="http://www.wsmanager.ru">
<xsl:eek:utput encoding="windows-1251" method="html" indent="no" />
<xsl:template name="main" match="/DOCUMENT">
<html>
<head>
<base href="http://localhost/wsManager2/" />
<title>
Главное управление природных ресурсов и охраны окружающей среды МПР России по Челябинской области @
<xsl:value-of disable-output-escaping="yes" select="/DOCUMENT/DIV/TITLE" />
...
<xsl:value-of select="/DOCUMENT/SET[@name='artikle']/ROW/COL[@name='title']" />
</title>
<link rel="stylesheet" type="text/css" href="css/nn4.css" />
<script language="javascript" src="/wsManager2/jscript/default.js" />
<script language="javascript" src="/wsManager2/jscript/topmenu.js" />
<meta name="Author" content="wsManager" />
<meta name="Description" content="{concat(/DOCUMENT/DIV/INFO,',',/DOCUMENT/SET[@name='artikle']/ROW/COL[@name='info'])}" />
<meta name="Generator" content="wsManager" />
<meta name="Keywords" content="{concat(/DOCUMENT/DIV/INFO,',',/DOCUMENT/SET[@name='artikle']/ROW/COL[@name='keywords'])}" />
</head>
<body bgcolor="ffffff" marginheight="0" marginwidth="0" topmargin="0" leftmargin="0">
<map name="_1-menu">
<area alt="" coords="0,2,160,21" href="news/" />
<area alt="" coords="0,22,160,41" href="sitemap/" />
<area alt="" coords="0,42,160,61" href="contacts/" />
<area alt="" coords="0,62,160,82" href="structure/" />
</map>
<xsl:variable name="imgs">
<img prefix="3" href="/forest" />
<img prefix="4" href="/water" />
<img prefix="5" href="/ecology" />
<img prefix="6" href="/faq" />
<img prefix="7" href="/geology" />
<img prefix="8" href="/statecontrol" />
<img prefix="1" href="/" />
</xsl:variable>
<xsl:variable name="path" select="/DOCUMENT/DIV/PATH" />
<xsl:variable name="img" select="$imgs/img[contains($path,@href)][1]" />
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td width="670">
<!- top pic
-->
<table width="670" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="79" height="81">
<a title="Главная страница" href="/wsManager2/">
<img src="i/_{$img/@prefix}-logo.gif" width="79" height="81" border="0" alt="Главная страница" />
</a>
</td>
<td width="345" height="81">
<img src="i/_{$img/@prefix}-name.gif" width="345" height="81" alt="" />
</td>
<td width="75" height="81">
<img src="i/_{$img/@prefix}-2.jpg" width="75" height="81" alt="" />
</td>
<td width="161" height="81">
<img src="i/_{$img/@prefix}-mn.gif" width="161" height="81" border="0" alt="" usemap="#_1-menu" />
</td>
<td width="10" height="169" rowspan="2">
<img src="i/_bluebar.gif" width="10" height="169" alt="" />
</td>
</tr>
<tr>
<td width="424" height="88" colspan="2">
<img src="i/_{$img/@prefix}-3.jpg" width="424" height="88" alt="" />
</td>
<td width="75" height="88">
<img src="i/_{$img/@prefix}-4.jpg" width="75" height="88" alt="" />
</td>
<td width="161" height="88">
<img src="i/_{$img/@prefix}-5.jpg" width="161" height="88" alt="" />
</td>
</tr>
</table>
</td>
<td width="100%" background="i/bg-45-right.gif">
<img src="i/x.gif" width="1" alt="" />
</td>
</tr>
<tr>
<td width="670">
<!- menu
-->
<xsl:apply-templates select="/DOCUMENT/NAVIGATION/MENU[@align='top']" />
<!- /menu
-->
</td>
<td width="100%" bgcolor="#0094D7">
<img src="i/x.gif" width="1" alt="" />
</td>
</tr>
</table>
<!- content
-->
<!- content table
-->
<table width="668" cellpadding="0" cellspacing="1" border="0">
<tr valign="top">
<!- top header
-->
<td width="245" bgcolor="#0E9AD9">
<img src="i/h-news.gif" width="245" height="15" alt="Новости" border="0" />
</td>
<td comment="page color td" width="413" bgcolor="#2C9116">
<img src="i/x.gif" width="413" height="1" alt="" />
</td>
<td comment="right green bar" width="8" bgcolor="#42B424" rowspan="2">
<img src="i/x.gif" width="8" height="1" alt="" />
</td>
</tr>
<tr valign="top">
<td width="245" class="leftcol">
<!- left coll
-->
<table width="245" cellpadding="0" cellspacing="0" border="0">
<tr>
<td bgcolor="#95D3ED">
<table width="100%" cellpadding="1" cellspacing="1" border="0">
<!- новости начало
-->
<xsl:apply-templates select="ANNOUNCEMENTS/CATEGORY" />
<!- новости кончало
-->
</table>
</td>
</tr>
</table>
<xsl:apply-templates select="INTERACTIVE/BLOCK[@type='FAQ_FORM']" />
</td>
<!- center collumn
-->
<td width="413" bgcolor="#ededed">
<!- !!! content table !!!
-->
<table cellpadding="4">
<tr valign="top">
<td class="txt">
<xsl:apply-templates select="CONTENT" />
</td>
</tr>
</table>
</td>
</tr>
</table>
<!- /center collumn
-->
<!- bottom & copyrights
-->
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td bgcolor="#0094D7">
<img src="i/w.gif" width="1" height="1" alt="" />
</td>
</tr>
<tr>
<td bgcolor="#ffffff">
<img src="i/x.gif" width="1" height="1" alt="" />
</td>
</tr>
</table>
<table width="670" cellpadding="0" cellspacing="0" border="0">
<tr>
<td width="245"> </td>
<td width="413">
<table width="100%" cellpadding="4" cellspacing="0" border="0">
<tr valign="top">
<td nowrap="1" class="sm">c 2002</td>
<td class="sm">Главное управление природных ресурсов и охраны окружающей среды МПР России по Челябинской области.</td>
</tr>
<tr valign="top">
<td nowrap="1" class="sm">c 2002</td>
<td class="sm">
Cоздание сайта ?
<a href="http://www.webstar.ru">Интернет-агентство WebStar</a>
</td>
</tr>
</table>
</td>
</tr>
</table>
<!- / bottom & copyrights
-->
</body>
</html>
</xsl:template>
<!- отказано в доступе
-->
<xsl:template name="denied" match="CONTENT[@cmd='denied']/SET/ROW">
<center>
<xsl:value-of disable-output-escaping="yes" select="COL[@name='xml']" />
</center>
</xsl:template>
<!- анонсы на главной странице
-->
<xsl:template match="ANNOUNCEMENTS" mode="cd_frontpage">
<!- cd news header
-->
<table width="40%" cellpadding="0" cellspacing="0" border="0">
<tr bgcolor="#339900">
<td class="normal" nowrap="nowrap">
<div class="wHeader">Новости</div>
</td>
<td align="right" valign="bottom">
<img src="i/main/cd-header-corner.gif" width="5" height="5" alt="" border="0" />
</td>
</tr>
<tr>
<td colspan="2">
<img src="i/main/cd-header-shadow.gif" width="100" height="5" alt="" border="0" class="shadow" />
</td>
</tr>
</table>
<!- // cd news header
-->
<!- cd news
-->
<table width="100%" cellpadding="5" cellspacing="0" border="0">
<tr>
<td>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<xsl:apply-templates select="BLOCK" mode="cd_frontpage" />
</table>
</td>
</tr>
</table>
<!- // cd news
-->
<!- cd all news header
-->
<table align="right" cellpadding="0" cellspacing="0" border="0">
<tr bgcolor="#339900">
<td class="normal" nowrap="nowrap">
<div class="wHeader">
<a href="http://uralton.ru/news/" class="wHeader">все новости</a>
</div>
</td>
<td align="right">
<img src="i/main/cd-header-arrow.gif" width="7" height="5" hspace="2" alt="" border="0" />
</td>
</tr>
<tr>
<td colspan="2" align="right">
<img src="i/main/cd-header-right-shadow.gif" width="70" height="5" alt="" border="0" class="shadow" />
</td>
</tr>
</table>
<!- // cd all news header
-->
</xsl:template>
<xsl:template match="ANNOUNCEMENTS/BLOCK" mode="cd_frontpage">
<tr>
<td colspan="2" height="4">
<spacer type="block" />
</td>
</tr>
<tr valign="top">
<td>
<img src="i/main/arr-blue.gif" width="8" height="7" vspace="3" hspace="3" alt="" border="0" />
</td>
<td width="96%" class="normal">
<a href="http://uralton.ru{@fmtUrl}" class="cd">
<xsl:if test="not(@fmtDate='')">
<b>
<xsl:value-of disable-output-escaping="yes" select="@fmtDate" />
</b>
<br />
</xsl:if>
<xsl:if test="not(@title='')">
<b>
<xsl:value-of disable-output-escaping="yes" select="@title" />
</b>
<br />
</xsl:if>
<xsl:value-of disable-output-escaping="yes" select="." />
</a>
</td>
</tr>
</xsl:template>
<xsl:template match="ANNOUNCEMENTS" mode="t1_frontpage">
<!- t1 news header
-->
<table width="40%" cellpadding="0" cellspacing="0" border="0">
<tr bgcolor="#ff9900">
<td class="normal" nowrap="nowrap">
<div class="wHeader">Новости</div>
</td>
<td align="right" valign="bottom">
<img src="i/main/cd-header-corner.gif" width="5" height="5" alt="" border="0" />
</td>
</tr>
<tr>
<td colspan="2">
<img src="i/main/cd-header-shadow.gif" width="100" height="5" alt="" border="0" class="shadow" />
</td>
</tr>
</table>
<!- // t1 news header
-->
<!- t1 news
-->
<table width="100%" cellpadding="5" cellspacing="0" border="0">
<tr>
<td>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<xsl:apply-templates select="BLOCK" mode="t1_frontpage" />
</table>
</td>
</tr>
</table>
<!- // t1 news
-->
<!- t1 all news header
-->
<table align="right" cellpadding="0" cellspacing="0" border="0">
<tr bgcolor="#ff9900">
<td class="normal" nowrap="nowrap">
<div class="wHeader">
<a href="http://t1.uu.ru/news/" class="wHeader">все новости</a>
</div>
</td>
<td align="right">
<img src="i/main/cd-header-arrow.gif" width="7" height="5" hspace="2" alt="" border="0" />
</td>
</tr>
<tr>
<td colspan="2" align="right">
<img src="i/main/cd-header-right-shadow.gif" width="70" height="5" alt="" border="0" class="shadow" />
</td>
</tr>
</table>
<!- // t1 all news header
-->
</xsl:template>
<xsl:template match="ANNOUNCEMENTS/BLOCK" mode="t1_frontpage">
<tr>
<td colspan="2" height="4">
<spacer type="block" />
</td>
</tr>
<tr valign="top">
<td>
<img src="i/main/arr-red.gif" width="8" height="7" vspace="3" hspace="3" alt="" border="0" />
</td>
<td width="96%" class="normal">
<a href="http://t1.uu.ru{@fmtUrl}" class="cd">
<xsl:if test="not(@fmtDate='')">
<b>
<xsl:value-of disable-output-escaping="yes" select="@fmtDate" />
</b>
<br />
</xsl:if>
<xsl:if test="not(@title='')">
<b>
<xsl:value-of disable-output-escaping="yes" select="@title" />
</b>
<br />
</xsl:if>
<xsl:value-of disable-output-escaping="yes" select="." />
</a>
</td>
</tr>
</xsl:template>
<!- форма отправки вопросов в FAQ
-->
<xsl:template name="faq_form" match="INTERACTIVE/BLOCK[@type='FAQ_FORM']">
<xsl:param name="faq_url" select="FAQ_URL">/wsManager2/faq/default</xsl:param>
<xsl:param name="faq_info" select="INFO" />
<!- QA header
-->
<table width="245" cellpadding="0" cellspacing="0" border="0">
<tr>
<td bgcolor="#ffffff" height="1">
<spacer type="block" width="1" height="1" />
</td>
</tr>
<tr>
<td bgcolor="#32AF35">
<img src="i/h-green-qa.gif" width="245" height="15" alt="Вопрос-Ответ" border="0" />
</td>
</tr>
<tr>
<td bgcolor="#ffffff" height="1">
<spacer type="block" width="1" height="1" />
</td>
</tr>
</table>
<!- QA block
-->
<table width="245" cellpadding="0" cellspacing="0" border="0">
<tr>
<td bgcolor="#9DD59F">
<table width="100%" cellpadding="1" cellspacing="1" border="0">
<tr>
<td bgcolor="#E8F4E6">
<table width="241" cellpadding="2" cellspacing="0" border="0">
<tr>
<form action="{$faq_url}" method="post" onsubmit="return common_validator(this,'{{q_nick}}{{q_text}}','Ошибка заполнения формы. Необходимо заполнить все поля.')">
<td width="1" bgcolor="#26AA2A">
<spacer type="block" />
</td>
<td width="1">
<spacer type="block" width="1" />
</td>
<td width="239" class="qa">
<xsl:value-of select="$faq_info" />
<br />
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td height="20" class="qa"> Имя</td>
</tr>
<tr>
<td>
<input type="Text" name="q_nick" width="18" class="!frm" style="width:225px;" />
</td>
</tr>
<tr>
<td height="20" class="qa"> e-mail</td>
</tr>
<tr>
<td>
<input type="Text" name="q_email" width="18" class="!frm" style="width:225px;" />
</td>
</tr>
<tr>
<td height="20" class="qa">
<input name="notify" type="checkbox" />
отправлять ответ на e-mail
</td>
</tr>
<tr>
<td height="20" class="qa"> Вопрос</td>
</tr>
<tr>
<td>
<textarea class="!frmTxt" name="q_text" cols="20" rows="6" style="width:225px;" wrap="virtual" />
</td>
</tr>
<tr>
<td height="30">
<img src="i/x.gif" width="1" height="5" alt="" />
<br />
<input type="submit" value="Задать вопрос" class="frmButton" style="width:225px" />
<br />
<img src="i/x.gif" width="1" height="5" alt="" />
<br />
<input type="button" value="Список вопросов" class="frmButton" style="width:225px" onclick="self.location.href='{$faq_url}';" />
</td>
</tr>
</table>
</td>
</form>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
<table width="245" cellpadding="0" cellspacing="0" border="0">
<tr>
<td bgcolor="#ffffff" height="1">
<spacer type="block" width="1" height="1" />
</td>
</tr>
</table>
</xsl:template>
</xsl:stylesheet>
 

fog

Рыцарь Джедай
Хм, сообщения пропали?

slach, а как обрабатывается контент?

Тоесть, если у меня в одном разделе сайта - турниртые таблицы, а в другом - новостная лента...

Сгенерировать XML не проблема, а обрабатывать разными XSLT преобразованиями?
 

slach

Новичок
ж) естественно разными...
более того
есть табличка divs
типа
id, parent_id, id_order, title, path, lib, template

где id, parent_id, id_order - задают дерево разделов...

path задает путь от корня сайта... чтото типа / для главной страницы ... /news для новостной и т.п.

lib - имя php библиотеки обработчика
template - имя XSL стиля...

соответсвенно при анализе любого запроса...
все перенаправляется через mod_rewrite ... в котором идет выборка типа
SELECT * FROM divs WHERE "$REQUTES_URI" LIKE CONCAT(path,"%") ORDER BY LENGTH(divs) DESC, id_order

ну и дальше два инклуда один на либу которая генерит подробнее парсит уже запрос... и генерит XML контент,
а второй с использованием ob_start(); etc. для забирания XSLT шаблона ...
ну и все между собой стравливается =)

IMHO проще чем всякие templates ;)
 

fog

Рыцарь Джедай
Ты прикалываешься ? :)
Что за ф-я ob_start()?

а без mod_rewrite можно написать что либо стоящее?
 

slach

Новичок
нет я не прикалываюсь

1) http://php.net/manual/ru/function.ob-start.php
2) использование mod_rewrite необязательно, есть множество способов сделать ЧПУ
 

fog

Рыцарь Джедай
Да, спасибо, я уже в курсе про ob_start()
=)
Про "прикалываешься" - это я о листинге, мне понадобится много здоровья чтобы врубиться в него. =)
 

baskervilley

Новичок
update2
Или вышеприведенный xml-файл генерится в зависимости от url- запроса и каждая его часть (announcements,...) заполняется контентом?
 

slach

Новичок
именно так
заполняется в модулях которые прописаны в div

модули это классы с одним общим родителем в который вынесена генерация общих частей

но вообще диггерствовать в этом форуме не советую
тему закрываю
 
Сверху