Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
íÿòíî, ðàññìîòðèì ïðîñòîé ïðèìåð.<br />
Âçãëÿíè íà ýòîò HTML-äîêóìåíò:<br />
HTML-ÊÎÄ<br />
<br />
<br />
Ñïèñîê òîâàðîâ<br />
<br />
<br />
Ñïèñîê òîâàðîâ<br />
Íàçâàíèå Òîâàð 1<br />
Èíäåêñ 23454<br />
Öåíà 532ð.<br />
<br />
Íàçâàíèå Òîâàð 2<br />
Èíäåêñ 23455<br />
Öåíà 1532ð.<br />
<br />
À òåïåðü íà ìèíóòó ïðåäñòàâü, ÷òî ó òåáÿ<br />
åñòü òàêîé æå ôàéë (òîëüêî êîëè÷åñòâî çàïèñåé<br />
î òîâàðàõ â íåì, ñêàæåì, ïîëòîðû òûñÿ-<br />
÷è), è òåáå íåîáõîäèìî íàïèñàòü ïðîãðàììó,<br />
ïðîèçâîäÿùóþ ïîèñê èíôîðìàöèè î òîâàðå<br />
ïî çàäàííîìó èíäåêñó. Ýòî âïîëíå ðåàëèçóåìàÿ<br />
çàäà÷à ïðè ïîìîùè òåîðèè êîíå÷íûõ àâòîìàòîâ,<br />
íî, äóìàþ, òåáå íå ïî äóøå òàêîé<br />
ãåìîððîé :). Òàê ÷òî ïîñìîòðèì, êàê òàêîé<br />
ôàéë ìîæåò áûòü ïðåäñòàâëåí â XML:<br />
XML-ÊÎÄ<br />
<br />
<br />
<br />
Òîâàð 1<br />
23454<br />
532p.<br />
<br />
<br />
Òîâàð 2<br />
23455<br />
1532p.<br />
<br />
<br />
Âíèìàòåëüíûé ÷èòàòåëü, çíàêîìûé ñ îñíîâàìè<br />
äèñêðåòíîé ìàòåìàòèêè è êëàññè÷åñêîé<br />
èíôîðìàòèêè, çàìåòèò, ÷òî XML-äîêóìåíò ÿâëÿåòñÿ,<br />
ôàêòè÷åñêè, äåðåâîì îáùåãî âèäà,<br />
îäíîé èç îñíîâíûõ ñòðóêòóð äàííûõ, èñïîëüçóåìûõ<br />
â ñîâðåìåííîì ïðîãðàììèðîâàíèè è<br />
ïîñòðîåíèè ìàòåìàòè÷åñêèõ ìîäåëåé.<br />
Òåïåðü, äëÿ òîãî ÷òîáû èçâëå÷ü èç ýòîãî<br />
XML-äîêóìåíòà ñïèñîê òîâàðîâ â öåíîâîé êàòåãîðèè<br />
äî 1000 ð., òåáå âñå ðàâíî ïîòðåáóþòñÿ<br />
íåìàëûå óñèëèÿ, íî áëàãîäàðÿ ñàìîäîêóìåíòèðîâàííîé<br />
ñòðóêòóðå ôàéëà, íàïèñàòü<br />
òàêîå ïðèëîæåíèå ñòàíîâèòñÿ çíà÷èòåëüíî<br />
ïðîùå. Ê òîìó æå ôóíêöèè ïî îáðàáîòêå XML<br />
óæå ìíîãîêðàòíî îïèñàíû ïðîãðàììèñòàìè è<br />
ïîñòàâëÿþòñÿ â âèäå ñïåöèàëüíûõ ìîäóëåé.<br />
Íà íàñòîÿùèé ìîìåíò ïàðñåðû XML ñóùåñòâóþò<br />
ïîä àáñîëþòíî ëþáûå ïëàòôîðìû.<br />
Äëÿ ÎÑ Windows ÿ áû âûäåëèë ïðîèçâîäèìûé<br />
Ìàéêðîñîôòîì ïàðñåð - îí äîâîëüíî<br />
íàäåæåí è îäèí èç ñàìûõ øóñòðûõ. Êðîìå<br />
òîãî, îí ïîñòàâëÿåòñÿ íåïîñðåäñòâåííî ñ ñàìîé<br />
ñèñòåìîé. Ïîýòîìó áîëüøèíñòâî ïðîãðàììèñòîâ<br />
èñïîëüçóþò åãî â ñâîèõ ðàçðàáîòêàõ.<br />
Îáðàáîò÷èêè XML ïîä *nix ðàñïðîñòðàíÿþòñÿ<br />
ïî ëèöåíçèè GNU, à ýòî çíà÷èò,<br />
÷òî îíè èäóò îòêðûòûìè êîäàìè è îòäàþòñÿ<br />
áåñïëàòíî, ÷òî íå ìîæåò íå ðàäîâàòü :).<br />
Íèæå ÿ ïîêàæó òåáå, ÷òî ïðèëîæåíèå äëÿ<br />
îáðàáîòêè XML-äîêóìåíòîâ ìîæíî ëåãêî íàïèñàòü<br />
è íà ÿçûêå PHP. Äåëàåòñÿ ýòî ïðè ïîìîùè<br />
ôóíêöèé àíàëèçà XML, âñòðîåííûõ â ÿçûê.<br />
Äîêóìåíòû XML ìîæíî ïåðåâîäèòü è â äðóãèå<br />
ðàçíîâèäíîñòè XML (â ÷àñòíîñòè - HTML) ïóòåì<br />
ñâÿçûâàíèÿ ñ òàáëèöåé ñòèëåé XSL<br />
(eXtensible Style Language - ðàñøèðÿåìûé ÿçûê<br />
ñòèëåé). Ñàìà òàáëèöà ÿâëÿåòñÿ XML-ñòðàíèöåé<br />
è â íåé ñîäåðæèòñÿ èíôîðìàöèÿ î òîì,<br />
êàê ôîðìàòèðîâàòü êîíêðåòíûå XML-îáúåêòû.<br />
Íà áàçå XML ñîçäàíî ìíîæåñòâî ðàçíîîáðàçíûõ<br />
ÿçûêîâ (äëÿ ðàçìåòêè õèìè÷åñêèõ ôîðìóë,<br />
ìóçûêàëüíûõ íîò, ìàòåìàòè÷åñêèõ âûêëàäîê,<br />
ïðåäñòàâëåíèÿ âåêòîðíîé ãðàôèêè è ò.ä.).<br />
Äðóãèì ïóòåì âèçóàëèçàöèè XML-äîêóìåíòîâ<br />
ÿâëÿåòñÿ ñîñòàâëåíèå ïðîãðàììû<br />
ëåêñè÷åñêîé îáðàáîòêè äëÿ ïðåîáðàçîâàíèÿ<br />
äîêóìåíòà XML â äðóãèå ôîðìàòû<br />
(íàïðèìåð, òîò æå HTML).<br />
ÏÀÐÑÈÌ ÏÐÎÑÒÎÐÛ XML<br />
Ïðèëîæåíèå äëÿ îáðàáîòêè XMLäîêóìåíòîâ<br />
ìîæíî ëåãêî íàïèñàòü<br />
è íà ÿçûêå PHP.<br />
ßÇÛÊ XML - 5 ÊÁ<br />
Êàæäûé äîêóìåíò â ôîðìàòå XML ñîäåðæèò<br />
ñî÷åòàíèå ðàçìåòêè è òåêñòîâûõ äàííûõ. Ïðè<br />
ïîìîùè ðàçìåòêè äîêóìåíò ñòðóêòóðèðóåòñÿ,<br />
à ñèìâîëüíûå äàííûå ïðåäñòàâëÿþò ñîáîé ñîäåðæàíèå<br />
ñòðàíèöû. Âñå XML-äîêóìåíòû, ïî<br />
êðàéíåé ìåðå, ñîîòâåòñòâóþùèå ñïåöèôèêàöèè,<br />
äîëæíû îòâå÷àòü ñëåäóþùèì ïðàâèëàì:<br />
1. Êàæäûé ýëåìåíò äîëæåí ñîäåðæàòü<br />
îòêðûâàþùèå è çàêðûâàþùèå òåãè, "ïóñòûå"<br />
òåãè (íàïðèìåð, â HTML) â XML íåäîïóñòèìû.<br />
Íî åñëè ýëåìåíò íå ñîäåðæèò â ñåáå<br />
äàííûõ, ñïåöèôèêàöèÿ ïîçâîëÿåò èñïîëüçîâàòü<br />
âìåñòî àëüòåðíàòèâíóþ<br />
çàïèñü .<br />
2. XML-äîêóìåíò äîëæåí â îáÿçàòåëüíîì<br />
ïîðÿäêå ñîäåðæàòü åäèíñòâåííóþ ïàðó òåãîâ:<br />
êîðíåâîé ýëåìåíò äîêóìåíòà, â êîòîðûé<br />
âêëàäûâàþòñÿ âñå îñòàëüíûå ýëåìåíòû.<br />
3. Íà÷àëüíûå è êîíå÷íûå òåãè êàæäîãî<br />
èç ýëåìåíòîâ äîëæíû áûòü ïðàâèëüíî âëîæåíû:<br />
âëîæåííûé ýëåìåíò îáÿçàí ïîëíîñòüþ<br />
ñîäåðæàòüñÿ âî âíåøíåì êîíòåéíåðå. Ò.å.<br />
íà÷àëüíûå è êîíå÷íûå òåãè âëîæåííûõ ýëåìåíòîâ<br />
íå ìîãóò ïåðåêðûâàòü äðóã äðóãà.<br />
Òåïåðü ïåðåéäåì ê îïèñàíèþ íåïîñðåäñòâåííî<br />
ñèíòàêñèñà XML. Êàæäûé äîêóìåíò<br />
äîëæåí íà÷èíàòüñÿ ñî ñòðîêè, êîòîðóþ ïðèíÿòî<br />
íàçûâàòü "îáúÿâëåíèåì XML". Îíà èìååò<br />
ñëåäóþùèé âèä: ,<br />
ãäå n.n - âåðñèÿ ÿçûêà ñîçäàííîãî äîêóìåíòà.<br />
 íàñòîÿùèé ìîìåíò ïîñëåäíåé âåðñèåé<br />
ÿâëÿåòñÿ 1.1, íî 1.0 ïî-ïðåæíåìó øèðîêî<br />
èñïîëüçóåòñÿ. Êðîìå òîãî, ðàçëè÷èÿ ìåæäó<br />
âåðñèÿìè âåñüìà íåñóùåñòâåííû.<br />
ÏÅÐÅÂÎÄ MYSQL-ÄÀÍÍÛÕ<br />
 XML ÏÐÅÄÑÒÀÂËÅÍÈÅ<br />
Ïî÷èòàé ýòè<br />
äîêóìåíòû:<br />
www.w3.org/TR/REC-xml<br />
www.w3.org/Style/XSL/<br />
mylib.kiev.ua/view.phpid<br />
=286<br />
webmaster.pp.ru/php4/<br />
ref.domxml.html<br />
www.vsi.ru/library/PHP/<br />
php4_manual/ref.xml.html<br />
Íà êîìïàêò-äèñêå<br />
ëåæàò ðàçëè÷íûå<br />
äîêóìåíòû ïî<br />
XML, à òàêæå ïîëíûé<br />
âàðèàíò<br />
ñêðèïòà, êîíâåðòèðóþùåãî<br />
MySQL<br />
òàáëèöó â XML-äîêóìåíò<br />
è îáðàòíî.<br />
Óäîáíûé êëàññ äëÿ êîíâåðòèðîâàíèÿ mySQL â XML è íàîáîðîò. Ìû íàïèøåì ñâîé :)<br />
<<br />
/* Ôóíêöèÿ ïåðåâîäà mySQL-äàííûõ â XML ïðåäñòàâëåíèå */<br />
function mysql2xml($filename, $rootname) {<br />
/* Ïîëó÷àåì ìàññèâ ñ èìåíàìè ïîëåé */<br />
$field = GetFields($table);<br />
$file = fopen($filename, w);<br />
/* ïèøåì â ôàéë çàãîëîâîê äîêóìåíòà */<br />
fputs($file, "\n");<br />
fputs($file, "\n");<br />
$sql = mysql_query("select * from $Table");<br />
/*  öèêëå ïî ïîëó÷åííûì èç òàáëèöû çàïèñÿì... */<br />
while($res = mysql_fetch_array($sql)) {<br />
/* Ñîçäàåì ýëåìåíò, êóäà áóäåì âïèñûâàòü äàííûå èç òàáëèöû */<br />
fputs($file, "\n");<br />
/* Âûâîäèì ñîäåðæèìîå â òàáëèöå */<br />
for($i=1; $i<br />
95