18.01.2015 Views

Untitled - Xakep Online

Untitled - Xakep Online

Untitled - Xakep Online

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!