Ключевые слова:web, xml, php, (найти похожие документы)
From: Паращенко Олег <http://xmlhack.ru/authors/OlPa/>
Subject: Архив дискуссии в ru.php "XML. С чего начать"
Архив дискуссии "XML. С чего начать?" эхи fido7.ru.php
Компановка информации: http://xmlhack.ru/
05.08.01 Паращенко Олег <http://xmlhack.ru/authors/OlPa/>
sad <sad@spider.ru>
Втр 29 Май 2001 12:48:05 8 из 137
> Что неудовлетворяет в существующей ситуации?
в аналогичных ситуациях меня лично неустраивает то, что представление сайта конечному
зрителю сильно привязано к моим скриптам.
А программеру с дизайнерами всегда трудно.
Оторвать от скриптов в принципе удается только статические элементы результирую
щего гипертекста и на выходе их просто
подклеивать.
Те же данные , которые скрипт вытаскивает из БД приходится ему же и размечать в
хтмл (что очень нудно и непринципиально).
Вот в этом свете я и нахожу полезным использование XML на стороне сервера.
Приняв соглашение о представлении скриптом данных (достатых из БД) в рамках XML
,
я забываю о хтмл.
А дизайнеры учат язык шаблонов. Для обработки ХМЛ и сращивания его с остальными
частями оформления.
Обращаюсь к Вам всем с просьбой поделиться своим опытом использования XML.
Как Вы используете XML?
Какие Вам известны "надевальщики" шаблонов? Технологии и языки шаблонов?
Какае из них Вы предпочитаете?
Очень прошу ответить. Я только слышу отовсюду вопли: "XML - уже стандарт!",
"рулез" и прочее.
НО не видел еще ни одного работающего решения на основе серверсайд-XML.
вот и возникают сомнения разные... А может его никто и не использует по прямому
назначению???
может имеет смысл занять "нишу" и написать свой надевальщик шаблонов с максимально
упрощенным языком??
Yuri Makassiouk <racer@bfpg.ru>
Срд 30 Май 2001 14:20:02 19 из 137
> YM> Есть решение и есть недавний положительный опыт использования того же движка
> YM> для поддержки сайта со структурой фронт-енда принципиально другой - фреймы
> YM> против простых страниц и т.п. Мне дико понравилось =)
>
> А можно об этом поподробнее ? Подход/инструментарий/etc.
> Очень интересно. И не только мне, я полагаю.
> Тут в последнее время об этом спрашивают постоянно.
В двух словах пока - вообще, наверное, статью буду писать
1. Данные в реляционной базе (в виде данных, а не XML).
2. Есть движок, который формирует XML-документ. У меня - чисто динамически,
хотя возможны и варианты, наверное.
3. Далее, саблотрон трансформирует этот документ по шаблону. Хитрый момент -
как движок знает, какой шаблон использовать - тут есть варианты, как всегда,
и надо, видимо, смотреть по природе приложения. Жестко задавать структуру
набора шаблонов не советую - с тем же магазином - у одного три шаблона, у
другого уже больше, и еще будет больше. Они зависят только друг от друга,
потому что логическая структура хтмл-я в них тоже заложена.
4. Есть желание сделать на том же скрипте сервис для wap, тогда точно можно
сказать, что идея побеждает.
Инструментарий незатейлив - XMLSpy - самое специфическое средство. И то, я
его использую почти только для проверки на well-formedness шаблона.
Редактировать в нем невозможно.
Vladlen Bulatov <vlad@econ.msu.ru>
Срд 30 Май 2001 22:01:14 34 из 137
> > > В итоге ты деньги получаешь, а XML-щики - нет.
> И вообще, что это за подход?
Юрий, постараюсь объяснить за тебя ;)
1) XMLщики делают 99% работы один раз
2) остальные от 1% до тех же 99, что в среднем - 50%
когда же появляется или новый заказчик, или старый просит что-либо
исправить, то -
1) XMLщики делают 1% работы
2) остальные - 50%
3) на стоимости же работ это почти не отражается
4) т.к. XMLщики делают это быстрее, то и заказчик к ним относится
благосклонее
Yuri Makassiouk <racer@bfpg.ru>
Птн 08 Июн 2001 03:48:53 104 из 137
> >> 1) простенький пример (хотя бы из моего предыдущего письма) - можно?
> YM> Hапиши - чего пример хочешь, конкретно.
> Пример: нужно вывести несколько переменных и фрагмент базы на экран
> (скажем, список товаров каких-нибудь). Задание параметров выборки не
> интересует, только вывод. Хочу увидеть текст шаблона (и сопутствующих
Почему-то не спрашиваешь про структуру XML-документа, DTD я писать не буду,
а выглядит он, пусть, как:
<?xml version="1.0"?>
<page>
<title>My suppa-duppa page</title>
<dataArray>
<dataElement>
<title>Agfa SnapScan 1236u</title>
<price>799.99</price>
</dataElement>
<dataElement>
<title>Lexmark Z52</title>
<price>1499.99</price>
</dataElement>
</dataArray>
</page>
Твой шаблон:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="[72]http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<title><xsl:value-of select="/page/title" /></title>
<body>
<table>
<xsl:apply-templates select="page/dataArray/dataElement" />
</table>
</body>
</xsl:template>
<xsl:template match="dataElement">
<tr>
<td><xsl:value-of select="title" /></td>
<td><xsl:value-of select="price" /></td>
</tr>
</xsl:template>
</xsl:stylesheet>
> файлов, if any), плюс указания на то, как это нужно парсить (ссылки
> на нужные функции и/или extensions).
В моем классе используется xslt_process:
if (@xslt_process($this->xslText, $this->input, $result))
$this->output = $result;
- это к вышеприведенным кускам никак не привязано, ессно. Кроме того, можешь
парсить любым другим парсером, какой найдешь.
Написал тебе этот пример и аж скучно стало самому - на демонстрацию
возможностей оно никак не тянет... Так - тривиальщина.
Обрати внимание - в результате будет html (не XHTML), потому как тег <html>
тебе писать было, видимо, влом. Вот и я не написал.
> >> 2) в результате в браузере что имеем, HTML или XHTML?
> YM> Чего хочешь, то и генерируй, хоть голый текст...
> YM> А что за разница для браузера между HTML и XHTML?
> Я не уверен, что тот же Netscape сжует <br/>, а совместимость
> с ним может потребоваться.
Нет, не сжует. А <br /> сжует.
Vladlen Bulatov <vlad@econ.msu.ru>
Птн 08 Июн 2001 15:32:01 108 из 137
> Пример: нужно вывести несколько переменных и фрагмент базы на экран
> (скажем, список товаров каких-нибудь). Задание параметров выборки не
> интересует, только вывод. Хочу увидеть текст шаблона (и сопутствующих
> файлов, if any), плюс указания на то, как это нужно парсить (ссылки
> на нужные функции и/или extensions).
самый понятный пример (для вас - ПХПешников :) -
-------------------------------------
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="[75]http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<HTML>
<HEAD>
<TITLE><xsl:value-of select="title"/></TITLE>
</HEAD>
<BODY>
<TABLE>
<TR>
<TD>Title</TD>
<TD>Price</TD>
</TR>
<xsl:for-each select="data/item" order-by="title">
<TR>
<TD>с</TD>
<TD><xsl:value-of select="price"/></TD>
</TR>
</xsl:for-each>
</TABLE>
</BODY>
</HTML>
</xsl:template>
</xsl:stylesheet>
-------------------------------------
а вот пример, который ближе душе XMLщика ;) -
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="[76]http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output encoding="windows-1251"/>
<xsl:output indent="yes"/>
<xsl:template match="/">
<HTML>
<xsl:call-template name="doHead">
<xsl:with-param name="title" select="/title"/>
</xsl:call-template>
<xsl:call-template name="doBody"/>
</HTML>
</xsl:template>
<xsl:template name="doHead">
<xsl:param name="title"/>
<HEAD>
<TITLE><xsl:value-of select="$title"/></TITLE>
</HEAD>
</xsl:template>
<xsl:template name="doBody">
<BODY>
<xsl:apply-templates select="//data"/>
</BODY>
</xsl:template>
<xsl:template match="data">
<TABLE>
<TR>
<TD>Title</TD>
<TD>Price</TD>
</TR>
<xsl:apply-templates select="//item"/>
</TABLE>
</xsl:template>
<xsl:template match="item">
<TR>
<TD><xsl:value-of select="title"/></TD>
<TD><xsl:value-of select="price"/></TD>
</TR>
</xsl:template>
</xsl:stylesheet>
-------------------------------
а вот и исходный XML-файл -
<?xml version='1.0'?>
<pricelist>
<title>Price List</title>
<data>
<item>
<title>Prod B</title>
<price>$200</price>
</item>
<item>
<title>Prod A</title>
<price>$100</price>
</item>
</data>
</pricelist>
-------------------------------
а вот XHML-результат
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=windows-1251">
<TITLE></TITLE>
</HEAD>
<BODY>
<TABLE>
<TR>
<TD>Title</TD>
<TD>Price</TD>
</TR>
<TR>
<TD>Prod A</TD>
<TD>$100</TD>
</TR>
<TR>
<TD>Prod B</TD>
<TD>$200</TD>
</TR>
</TABLE>
</BODY>
</HTML>