Vispirms atvainošos par to, ka neesmu no tiem labākajiem cilvēkiem, kas kaut ko varētu rakstiski paskaidrot, jo parasti kodu rakstu on-the-fly un paralēli mutiski stāstu, ko es daru.
Bet kam vajadzēs tas sapratīs par ko iet runa.
Šonedēļ mēs ar kolēģi pārveidojām vienu sadaļu mūsu uzņēmuma lapu no parasta HTML failiņa ar statiskām vērtībām uz normāli administrējamu risinājumu, jo bija diezgan neparocīgi rakties HTML failā, lai veiktu izmaiņas, pievienotu vai dzēstu informāciju HTML tabulā. Vēl protams ir jāatceras, ka vajadzēja pareizi jaunās rindas likt <tr></tr> tagos, kolonnas <td></td> un tā tālāk.
Mēs varējām brīvi izvēlēties kā taisīt administrējamu sadaļu, viens variants, protams, bija izmantot SQL datubāzi un glabāt visu tur, bet izvēlējāmies ērto un viegli veidojamo XSLT variantu. Es bieži izmantoju XSLT, man tas liekas vieglāks kā citi risinājumi (pat informācija no DB nāk XML formātā un atliek tikai attiecīgo stylesheet uztaisīt), bet pastāstīšu arī citiem, kā to darīt.
Pirmkārt, pastāstīšu nedaudz par XSL. XSL (Extensible Stylesheet Language) failos var nodefinēt, kā tiks attēloti konkrēti XML tagi. Ja CSS nodrošina (X)HTML attēlošanas stilus, tad XSL ir attiecīgi XML stilu nodrošinātājs. No CSS tas atšķiras ar to, ka HTML tags <table></table> jau parāda to, ka šī ir tabula un CSS stilos mēs mainam tabulas izskatu, bet iekš XML tagu nosaukumi nespēlē nekādu lomu. Piemēram <table></table> varētu nozīmēt to, ka šajā tagā glabājas informācija par galdu. XSLT (Extensible Stylesheet Language Transformation) nodrošina XML dokumentu transformēšanu XHTML dokumentā. Lai kaut nedaudz izprastu kā tas notiek, jums vajadzētu zināt, kas ir XML un kas ir XHTML.
XML failos mēs datus glabājam tagos, kuriem vienmēr ir atverošais un aizverošais tags. Par piemēru ņemsim šodien nopublicēto sarakstu ar izmaksām, no kurām būtu jāšķiras luksus klases automašīnu vadītājiem (vai apdrošināšanai) pēc ietriekšanās citā automašīnā ar ātrumiem 6 vai 3 jūdzēm stundā (attiecīgi 9.6 un 4.8 km/h). Vairāk info par testu un pašus datus var apskatīt [url=http://money.cnn.com/2007/08/01/autos/iihs_luxury_bumper/index.htm?postversion=2007080209]CNNmoney[/url] rakstā. Vispirms ņemsim šos datus un saglabāsim tos XML failā. Izveidojam failu dati.xml un iekopējam tur iekšā
[q][url=http://paste.php.lv/5860/nonum]source ir šeit[/url][/q]
Tālāk uztaisam failu dati.xsl, kurā glabāsies stylesheet
[q][url=http://paste.php.lv/5864/nonum]source ir šeit[/url][/q]
Beidzot uztaisam failu dati.php, kurā mēs transformēsim XML ar attiecīgo XSL stylesheetu
[q][url=http://paste.php.lv/5865/nonum]source ir šeit[/url][/q]
Rezultātā mums ir izveidojusies tabula ar datiem.
[img]http://datuve/images/upload/xsl1.jpg[/img]
Nedaudz pastāstīšu par XSL tagiem.
<xsl:for-each select=”cars/car”></xsl:for-each> nozīmē to, ka ciklā tiek lasīti dati no katra <car></car> taga, kas protams atrodas iekš <cars></cars> taga. <xsl:value-of select=”title”/> norāda to, ka konkrētajā vietā tiek ievietota vērtība no taga <title></title>.
Nākamais solis būtu ielikt kopējo summu par remontu un katru otro rindiņu iekrāsot citā krāsā, lai tabula būtu pārskatāmāka. Failā dati.xsl veicam modifikācijas
[q][url=http://paste.php.lv/5867/nonum]source ir šeit[/url][/q]
Rezultātā mums ir izveidojusies tabula ar datiem.
[img]http://datuve/images/upload/xsl2.jpg[/img]
<xsl:if test=”position() mod 2 = 1″></xsl:if> nozīmē ja ieraksta numuru dalot ar divi mums atlikumā ir 1. Ja if atgriež pozitīvu rezultātu, tad tiek nomainīta rindiņas krāsa ar <xsl:attribute name=”style”></xsl:attribute>.
Ierakstot <xsl:value-of select=”front_full + front_corner + rear_full + rear_corner”/> mēs katram ierakstam saskaitam kopējo bojājumu izmaksas, bet aiz cikla izveidojot pēdējo tabulas rindiņu mēs ieliekot <xsl:value-of select=”sum(cars/car/front_full)”/> varam dabūt kolonnu kopsummas.
Ja vēl ar to nepietiek, tad varam izcelt minimālās un maksimālās summas katram bobjājuma veidam.
[q][url=http://paste.php.lv/5868/nonum]source ir šeit[/url][/q]
Rezultātā mums ir izveidojusies tabula ar datiem.
[img]http://datuve/images/upload/xsl3.jpg[/img]
Sākumā tiek sadefinētas maksimālās un minimālās vērtības (paņemot 1 ierakstu kārtojot pēc cipara augošā vai dilstošā secībā) un tālāk ar <xsl:choose><xsl:when></xsl:when><xsl:when></xsl:when><xsl:otherwise></xsl:otherwise></xsl:choose> mēs varam veikt to pašu, ko iekš php ar [i]if .. elseif .. else[/i]
Pirms XSLT lietošanas iesaku palasīt [url=http://w3schools.com/xsl/]w3schools tutoriāļus[/url] par šo tēmu. Datu ievadīšanai un labošanai var izmantot XSLT transformētu formu ar datiem un pie submit $_POST array apstrādāt ar [url=http://paste.php.lv/5869/nonum]array2xml[/url] klasi ([url=http://paste.php.lv/5870/nonum]piemērs[/url]), var protams apstrādāt arī savādāk.
Veiksmi darbā ar XSLT!