Въведение в XML

0
124

XML в Web – за какво и как се използва

Тази статия не претендира за изчерпателност. Напротив. Тя разглежда някои вече остаряли технологии, заменени от по-модерни стандарти. Целта й е да запознае читателите със стандартите, изграждащи основите на съвременните web-технологии

Много шум се вдигна около XML и въпреки това за съжаление е малко известно какво точно представлява той. Учудващо е колко много хора знаят за същестуването му и колко малко са запознати с неговата същност. Именно това е причината да напиша текущия материал. Много хора започват да изучават XML, сблъскват се с определението за XML – език, в който сам дефинираш таговете или метод, за създаване на езици за форматиране (така наречените markup languages) и не виждат смисъла да създават свой собствен HTML при наличието на вече съществуващия. И именно там грешат. Защото ако за XML се говори за стандарта на бъдещето, то това е напълно вярно. XML не е език – за него се говори като за метаезик – т.е. език, с който могат да се създават нови езици. Но най-вече XML е стандарт – стандарт, в който се влюбих, откакто разбрах как се използва XML в Web. Аз лично съм привърженик на CSS и в XML виждам бъдещото поколении стилове. И вярвам, че XML не го харесват само тези, които не го познават.

След този своеобразен увод, ще започна с описание на това, какво представлява XML, какво е неговото приложение днес и за бъдещето на XML. След това ще продължа с подробно описание на синтаксиса на езика, на неговото приложение в Web и на XML-базираните езици. XML – Extensible Markup Language, формира един напълно нов стандарт за езиците за форматиране. Трудно е да се говори за XML като за език. Той няма определени тагове – вместо това потребителя сам ги дефинира. Програмата е отговорна за интерпретацията на тези тагове. Именно тук идва и силата на XML, както и неговия основен недостък. Поради тази своя характеристика XML се превърна в много удобно средство за обмен на данни между програми. Вместо всяка програма да има собствен формат за данните, всички могат да използват един общ стандарт. Но ако две компании искат да обменят данни чрез XML (например за да две програми използват едни и същи файлове), то те трябва да се разберат за значението на всеки един таг. Без съответната програма, XML е само една дървовдна структора на данните. Всъщност предназначението на XML е именно да описва данни, оставяйки на друг работата по форматирането им и извеждането им на екрана. И все пак трябва да има причина именно XML да се наложи като такъв стандарт. Причината се крие в самия XML. Единственото му предназначение е да описва данни. И тъй като няма предварително дефинирани тагове, той може да опише по-най-добрия начин необходимите данни. Например следното е напълно валиден код:

[code]


Need For Speed
Electornic Arts
racing


Quake
ID Software
3D action

[/code]

XML предоставя универсален начин за дефиниране на данните и за тяхното структуриране. XML предоставя и метод за дефиниране на синтаксиса на документа, което може да се използва от програмата за проверка валидно ли е съдържанието на документа. Можете сами да дефинирате както таговете, така и техните атрибути. Но XML езиците (наричани XML application) са истинската сила на XML – те предоставят универсален метод за дефиниране как XML докуемнта да бъде изведен на екрана. Например използвайки XSL (Extensible Stylesheet Language) можете да дефинирате вида на всеки един таг. Нещо повече – можете да дефинирате кои тагове да се извеждат, да използвате циклични и условни оператори, както и да направите разлика между таг <name>, който се намира между отварящия и затварящия таг <games>, и такъв, който не се намира. Така можете да направите Web страница, която автоматично форматира XML съдържание за свойте нужди, като по този начин тя остава независима от самото съдържание. Можете да използвате една и съща стилова дефиниция за целиа сайт, като предоставяте различни .xml файлове. Бихте могли да стигнете и още по-далеч. Единственото ограничение в XML и XML езиците е вашето въображение. Можете лесно да промените цялостното оформление на сайта, променяйки един-единствен xsl файл или да дефинирате няколко различни стила на оформление – това често се използва за създаване на „скинове“ за сайтове, така че потребителя да може да си избере дизайна, който най-много му подхожда. Важно е да разберете, че XML позволява съдъражанието да е отделно от дизайна.

Преди да премина към подробно описание на XML и как се реализира неговата обработка, ще кажа няколко думи за неговото настояще и бъдеще. На първо място, Microsoft ще го интегрира все повече в свойте продукти (най-вече самия Windows). Макар XML да е създаден с идеята да се използва в Web, превъзмогвайки всички ограничения на HTML, той е превъзходно средтсво за обмен на данни между програми или дори за използване на данните от самата програма. Добър пример за това е версия 3 на програмата Winamp – тя използва за скиновете си серия xml файлове и съответните изображения. По този начин за да създадете собсвтен скин не ви е неообходим нито допълнителен софтуер, нито някакви познания за това как Winamp записва (и съответно чете) данните. Трябва да сте запознати с XML синтаксиса и да знаете само какви тагове ползва Winamp. Още по удобно е, ако решите да направите програма за създаване на скинове – не ви е необходмо да знаете вътрешната структура на файла, съдържащ скина, а само съответния набор тагове. За да илюстрирам това тук публикувам част от XML кода на скина Zygote, както и как се извежда този код в Microsoft Internet Explorer:

[code]


1.1
zygote
.enjoy.check the skin configuration windows.enjoy.
Michael S. , Mathieu P.
michael_spano@hotmail.com, nirvn@hotmail.com
http://www.breedart.org
skinshot.png





[/code]

Този файл дефинира обща информация за скина, като версия, автор и т.н., а по-нататък поредица от XML документи, съдържащи описанието на различни части от скина. И тъй като за интерпретирането на този код е отговорен самия WinAmp, то Internet Explorer го извежда като дървовидна структора – така, както извежда всеки един XML файл:

Що се отнася за бъдещето, то XML навлиза навсякъде – в Web, в програмирането, в софтуера и дори в самата операционна ситема на Microsoft. Бъдещия стандарт за Web-страници не е HTML, a XHTML – разширението на HTML за XML. Това означава, че дори HTML ще спазва синтаксиса на XML.

Нека сега навлезем по-навътре в XML За разлика от HTML, XML е чуствителен към главни/редовни букви и има строг синтаксис. Ако сте запознати с HTML, лесно ще разберете XML; а ако не сте – първо трябва да разберете някои ключови понятия. XML, както и всеки от така наречените markup езици, не е език за програмиране, е за форматиране. Т.е. той съдържа команди за форматиране, наречени тагове. Тагът се дефинира чрез символите < и >, като всичко между тези два символа е един и същи таг. Непосредствено след отварящата скоба стои името на тага, а след това разделени с интервали – произволен брой атрибути. Атрибута се явява един вид параметър за тага. Атрибутите могат да имат (но могат и да нямат) стойности. Ако те имат стойности, то синтаксиса е атрибут=стойност. Ето един пример

[code][/code]

Тагът тука е car, name, model, color и damaged са атрибути. Тук можете да видите, че атрибута damaged няма стойност – самото му присъствие указва, че колата е повредена. Всеки таг има свой затварящ таг, състоящ се от името на така, предхождано от „/“. За тага в предишния пример затварящия таг ще е </car>. Действието на тага е между отварящия и затварящия таг. Т.е. ако имате таг <red>, дефиниращ червени букви, то в кода

това е <red>форматиран</red> текст

червени ще са само буквите на думата „форматиран“.

След това въведение в markup езиците, нека разгледаме конкретно XML. Всеки XML документ трябва да започва с тага <?xml?> Обикновено се включва и атрибута verion, указващ използваната версия (за момента 1.0): <?xml version=1.0?> В XML почти няма предварително определени тагове (с изключение на няколко служебни, какъвто е <?xml?>, но тях ще разгелдаме по-късно). Всеки таг трябва да има затварящ таг, а ако тага няма вътрешно съдържание (такова, което е между отварящия и затварящия таг) то се използва самозатварящ се таг – тагъв, който завършва със символа „/“. Т.е. вместо да пишете <damaged></damaged> можете да напишете <damaged/> Таговете трябва правилно да се влагат – т.е. можете в рамките на един таг да дефинирате множество тагове, но трябва да ги затворите в реда, обратен на тяхното отваряне. Ще илюстрирам това с един пример

[code]


[/code]

Или с други думи, декларацията <таг1><таг2> е валидна, докато <таг1><таг2> – не е. XML документа има дървовидна структура – тази структура може да има един-единствен корен. Т.е. трябва да имате един таг, в който да се съдържат всички останали. В предишния ни пример, това беше тагът . Въщност това е една йерархична структура, първия елемент от която се нарича root (а е възможно да същестува само един root) и всеки таг, който се съдържа в него се нарича дъщерен таг. От своя страна, root се явява родителски таг за всички съдържащи се в него елементи. Ако разгледаме отново примера с книгите, то <name> е дъщерен таг на <style> и родителски на <author> и <subject>. С това приключва цялата фолософия на XML – няма нито един таг, който трябва да научите, нито пък някой атрибут. Ако сте разбрали концепциите дотук, то вие сте готови за работа с XML.

Но все пак, това далеч не е всичко. В XML същестуват служебни тагове, които започват с удивителна (!). Те се използват за дефиниране структурата на докуемнта. Тъй като XML няма нито определени тагове, нито определени атрибути, то програмата няма как да знае какво е съдържанието на XML документа. Тя може просто да предположи, че то отговаря на нейните критерии и да го използва така, както би използвала валиден XML докуемент. Но ако то не отговаря на изискванията? Тук е мястото да разгледаме обработването на данните в XML докуемнта и XML-процесорите. Програма, която интерпретира по някакъв начин XML документ и извежда резултата на екрана, се нарича XML процесор. Процесора може да проверява дали докуемнта е валиден, но това не е задължително. Когато процесора проверява XML документа, той може да установи само грешки в XML синтаксиса (незатворени тагове и т.н.), до момента, в който той не знае каква трябва да бъде структурата на документа. Един от основните начини за определяне на структурата на документа е DTD (Document Type Definition – дефиниция на типа на документа) – система от служебни XML тагове, които описват какви тагове се очаква да присъстват в докуемнта, какви атрибути и дъщерни тагове могат да имат те, какви са позволените стойности на атрибутите. По този начин процесора може да открие грешка и да изведе информатично съобщение, вместо да интерпретора данни, които не подхождат за програмата. Именно създаването на DTD ще разгледаме сега, за да преминем после към използването на XML в web. Дефиницията се слага в началото на документа. Може също така да се използва външен .dtd файл – това е особено полезно, когато множество документи имат една и съща дефиниция или при големи дефиниции, за да бъдат по-удобни за работа както самата дефиниция, така и докуемнта. Дефиницията на документа започва с тага <!DOCTYPE> Следва име на дефиницията. Ако дефиницията е във външен файл се използва ключовата дума SYSTEM и името на файла. Ето един пример: <!DOCTYPE Library SYSTEM „MyLbrl.dtd“> Първото нещо, на което трябва да се обърне внимание, че служебните тагове НЯМАТ затварящи тагове. Служебния таг веднага ще го познаете по удивителната в началото, главните букви и липсата на затварящ таг. Но как тогава се обозначава край на дефиницията? Когато дефиницията не е във външен файл, то тя има вида

[code] [/code]

Именно между имволите [ и ] се съдържа цялостната дефиниция, състояща се от серия служебни тагове. Определянето на елемнт става чрез тага <!ELEMENT> който съдържа името на елемента и изброени в кръгли скоби възможните дъщерни елементи.

Ако създаваме дефиниция на кода

[code]
1.1
zygote
.enjoy.check the skin configuration windows.enjoy.
Michael S. , Mathieu P.
michael_spano@hotmail.com, nirvn@hotmail.com
http://www.breedart.org
skinshot.png
[/code]

То тя ще изглежда така

[code]
]>[/code]

Но освен главния елемент (root) трябва да определим дъщерните елементи. Те имат някаъв тип данни, които се съдържат между отварящия и затварящия таг. Обикновено данните са #PCDATA (повече за типовете данни ще научите малко по-нататък, и съответно нашата дефиниция ще се разшири до:

[code]







][/code]

Всъщност и дъщерните елементи, които може да съдържа един таг, са тип данни, които той може да съдържа. Типа данни може да бъде:

Списък на дъщерни тагове, затворен в кръгли скоби
Ключовата дума EMPTY, указващ таг, който не съдържа нищо (самозатварящ се таг)
Ключовата дума ANY, дефиниращ таг, който може да съдържа произволен тип данни (дъщерни тагове, текст и т.н.)
Тип #PCDATA, затворен в кръгли скоби
При дефинирането на поредица дъщерни тагове, те се разделят със запетая – това определя не само какви са допустимите тагове, но и реда, в който те трябва да се появят. Други спциални символи, които можете да използвате след името на дъщерен таг са:
? – указва, че елемента трябва да се съдържа само веднъж или нито вендъж
* – указва, че елемента може да се съдържа толкова пъти, колкото автора иска
+ – указва, че елемента трябва да се съдържа поне веднъж, но е възможно множество повторения Ако не е използван нито един от тези символи, то елемента трябва да присъства само един път. Ето един пример за използването на тези символи:

[code][/code]

Тази декларация определя следното:
Таговете , и трябва да присъстват, при това само по веднъж
Възможно е да има таг <comment> но не повече от вендъж
Допустимо е неограничено количество тагове , но трябва да има поне веднъж
За таговете <email> и <homepage> няма ограничения

Определяне на атрибути

Докуемта освен от тагове се състои от атрибути. Дефиницията на атрибутите на даден таг става с помощта на тага

Синтаксиса на този таг е <!ATTLIST ИмеНаТаг ИмеНаАтрибут ТипДанни СтойностПоПодразбиране> В един и същи таг <!ATTLIST> можете (и тряба) да дефинирате неограничен брой атрибути на даден таг, като за всеки включвате тип данни и стойност по подразбиране.

Типовете данни за атрибутите са:
CDATA – в атрибута може да се използва само символен низ (това е стандартния тип)
ENTITY – атрибута определя предварително деклариран двоичен (т.е. не-текстов) външен файл
ENTITIES е същото като ENTITY, но позволява множество стойности, разделени със запетая
ID – стойността на атрибута трябва да е уникален идентификатор.
NMTOKEN – стойността на атрибута може да бъде произволна комбинация от числа, букви, точки, тирета, двуеточия и underscore (“ _ „)
NOTATION – атрибута трябва да указва нотация, декларирана в документа. Повече за нотацията ще научите по-нататък
Последния вариант е т.нар „Енумерация“ – т.е. атрибута трябва да съдържа една от няколко възможни стойности. Те се определят, като се записват във кръгли скоби, разделени от символа |
Пример за енумерация е следния код:
<!ATTLIST File archiveType (Zip|Rar|Ace|Cab|None) „None“>
Този код декларира атрибут archiveType на тага File с възможни стойности „Zip“, „Rar“, „Ace“, „Cab“ или „None“, като „None“ е стойност по подразбиране

Възможните са следните варианти за стойност по подразбиране:
#REQUIRED означава, че атрибута е задължителен
#IMPLIED означава, че атрибута е оптионален и се игнорира, ако няма дадена стойност
#FIXED означава, че атрибута трябва да име една конкретна стойност, определена от стойността, следваща непосредствено директивата #FIXED и дори и ако атрибута не е включен, се използва тази стойност
Полседния вариант е просто да напишете стойност, която да се използва като стойност по подразбиране.

Използване на двуични файлове

В XML съществува таг, който позволява наименоване на предварително дефинирана информация. Т.е. можете да определите name като „John“ и навсякъде, където правите обръщения към &name; това ще бъде заменено с „John“. Предимството на този метод е, че можете да смените името само на едно място и това ще се отрази на целия документ. Още по-голямо предимство е, че можете да определите външен двуичен файл и да го използвате в XML докуемта. Тагът, с който се осъществява всичко това е <!ENTITY>. Разбира се, синтаксиса му е различен, когато става въпрос за текст или за външен файл. Разликата е същата, каквато и в декларацията на DTD и файл, който определя структурата на документа. Ако искате да декларирате символен низ, синтаксиса е

[code][/code]

След това за да вкарате този низ в документа, трябва да използвате името, предшествано от амепрсанд (&) и завършващо с точка и запетая – &name; Когато декларира външен файл обаче, след името на ресурса, чрез което ще извървате обръщения към него, трябва да включите ключовата дума SYSTEM. Също така трябва да декларирате типа на този файл и кое приложение ще се използва за отварянето му. Ето един пример:

[code] [/code]

Важно е да отбележим, че тука ключови думи се явяват SYSTEM и NDATA, докато GIF е само идентификатор. Т.е. след NDATA може да име произволен идентификатор, но този идентификатор също трябва да бъде деклариан. Това става чрез тага <!NOTATION>:

[code] [/code]

Този код декларира, че двуични файлове, за които NDATA е определена като GIF, трябва да се отварят с външното приложение „Iexplore.exe“

Коментари

Когато се пише някакъв код, независимо на какъв език, важно е той да бъде коментиран. Коментарите са части от кода, които се игнорират от процесора и служат единсветно за улеснение на хората – те прявят кода по-разбираем и лесен за обработване. Освен това понякога са полезни за откриване на грешки – просто коментирате части от кода, докато откриете проблемната част. XML запазва стила на HTML за коментарите: началото на коментар се декларира с <!– , а неговия край с –>

И за да завършим разглеждането на DTD нека се върнем към външните DTD файлове. След като знаете как да напишете една дефиниция и как да използвате външен .dtd файл като такава, остава да научите как да напишете самия .dtd файл. В него трябва да включите само таговете на самата дефиниция, без блока <!DOCTYPE [ … ]>. И, разбира се, докуемнта трябва да започва с <?xml version=“1.0″?>

DTD е стария стандарт за дефиниране на XML документи, все по-масово навлиза т.нар. Shema.

Няколко думи за XHTML
Все повече навлиза XHTML като заместител на HTML. За разлика от HTML, той има строги изисквания към синтаксиса. Ако не затворите някой таг докуемнта няма да е валиден и няма да се зарежда от браузърите 🙂 Това означава, че таговете <img>img> ще изглеждат така:
[code][/code]

На всеки таг съответства затварящ таг Тага за нов ред е

XML в Web – как да превърнете XML документа в добре изглеждащ HTML

Както вече неведнъж отбелязахме, XML описва данните, а тяхното представяне на екрана е работа на програмата. Самия Internet Explorer има вграден XML процесор, който проверява дали данните са валидни и ако са, извежда ги в дървовидна структура. Това само по себе си рядко е полезно. В Web често се използва стилова дефиниция за определянето на вида на всеки един таг. Това се осъществява чрез един от XML езиците – XSL (Extensible Stylesheet Language). Макар XSL да прилича на CSS по възможността да се определи вида на всеки един таг, той е значително по-мощен. На първо място, XSL може да направи разлика между два еднакви тага, които да дъщерни елементи на различни тагове. Освен това с XSL могат да се проверяват стойностите на атрибутите и да се форматират по различен начин тагове, в зависимост от даден атрибут. XSL не просто дава стиловата дефиниция на даден таг; той определя HTML код, който да се използва за всеки един таг, като предоставя методи за лесно и бързо обработване на големи XML докурако това се осъществява чрез поредица служебни тагове, предоставяни от XSL. В основата си, синтаксиса му е същия, както на XML.

XSL документа дефинира набор стилове. Той се състои от един или повече шаблона. Тези шаблони се прилагат върху елементи, които съвпадат с някакъв образец – например тагове <book>, които са дъщерни на таг . Един шаблон се дефинира чрез тага <xsl:template>. Този шаблон трябва да дефинира как да се извежда информацията, която покрива някакви критерии. Съответно шаблона се завършва с </xsl:template> Между тези два тага се слагат различни XSL тагове, които извличат информация за XML документа. Тези тагове разглоеждам по-подробно по-нататък.

Характерното е, че между два тага, идентифициращи определено XML съдържание се слага HTML код, дефиниращ как да бъдат изведени тези тагове.

Един от основните тагове е който определя някакъв основен критерий и прилага форматирането към всеки таг, отговарящ на този критерий. Критерия се определя от стойността на свойството for, което от своя страна следва дефиницията на т.нар. XPath. Xpath дефинира набор правила за откриване на един или повече елемента в XML документа. Например декларацията type/books означава всички тагове <books>, които са дъщерни на тага <type>. * означава всеки таг, | идентифицира алтернативи, а // означава всеки път (т.е. //books означава всеки таг <books> независимо от родителските му тагове, техните родителски тагове и т.н.

Друг важен таг е <xsl:value=of/> който също има един аргумент for. Този атрибут определя дъщерен таг, а в резултат се връща текста, съдържащ се между отварящия и затварящия таг, определени от атрибут. Ако вземем отново XML докумнета с книгите и искаме да изведем автора на всяка книга в получерен шрифт, а това за какво се отнася тя с норнален, на два съседни реда, като оставяме един празен между всяка двойка, то можем да напишем следния код:

[code]










[/code]

Забележка: ако тествате някой .xsl код с браузър, то той няма да доведе до очаквания резлутат. Причината е в липсата на вградем процесор. Internet Explorer съдържа вградена контрола, която можете да използвате чрез JavaScript. За да изведете XML документ, форматиран от XSL, трябва да създадете един файл с XML докуемта, един с XSL документа и един HTML файл, съдтржащ следния код (тук съм приел, че документите се казват съответно xmldocument.xml и xsldocument.xsl):

[code]






[/code]

XSL обаче може да дефинира различни стилове за различните тагове. Това е особено полезно при големи XML документи. За целта се използва атрибута match на тага <xsl:template>, който определя условията (по същия начин, по който го прави и атрибута for на тага xml:repeat), на които трябва да отговаря един таг за да бъде приложен даден стил. И тъй като ще използваме повече от един таг <xsl:template> а XML разрешава само един първичен таг (корен на структурата или още root), то първия таг вече няма да е <xsl:template>, а <xsl:stylesheet>

Обикновено се създава един стил, който да отговатя на всички елементи и в него се определят елементи, на които да бъдат прилагани други стилове. Това става чрез тага <xsl:apply-templates/>, който предизвиква прилагането на стила, съответстващ на дадения таг, вътре в дефиницията на друг стил. За да направим нещата по-ясни, отново ще разгледаме един пример. Нека изведем съдържанието на XML документ в таблица. Ще използвам следния XML документ:

[code]
Bryce
MetaCreations Corporation


graphics
3D graphics and animation


Pentium
32MB
Poser
MetaCreations Corporation


graphics
character creation and animation


Pentium
32MB
Norton Antivirus
Symantec Corporation


security
antivirus


Pentium 133MHz
32MB
Delphi
Borland Corporation


development
software development


Pentium 166Mhz
64MB
[/code]

Нашата задача е да изведем в таблица инфомацията на всяка от тези програми. Както виждаме, има три категории информация разделени в три тага, всеки от които има по два дъщерни тага. Сега нека разгледаме следния код

[code]


















Program nameProducerCategorySubcategiryCPU requirementsRAM requirements













[/code]

Това, което прави този код, е да дефинира стил, приложен на цялостния документ (match=“/“), в който да изгради заглавния ред на таблицата, след което да избере последователно всеки един таг , който е дъщерен на тага , да създаде нов ред и да приложи за него съответстващите стилове (т.е. за всеки един от неговите дъщерни тагове се прилага стилът, чиято стойност на атрибута match съвпада с името на тага). Самите стилове пък извлизат стойностите на дъщерните тагове и ги записват като елементи от таблицата. Обърнете внимание на използването на <xsl:foreach select> вместо <xsl:repeat for>

Сортиране

Таговете <xsl:for-each> и <xsl:apply-templates> поддържат атрибута order-by, който определя начина на сортиране на елементите. Като стойности му се задава дъщерния таг, по чиято стойност да сортира, предхождат от един от двата символа + или -, които определят съответно възходящ или низходящ ред.

Двуга възможност на XSLе проверявате стойностите на таговете. Това ви дава възможността да създадете различни стилове за един и същи таг в зависимост от текста, който той съдържа. Ако се върнем на предишния пример, можем да използваме различни стилове за графичния и защитния софтуер. Например можете да използвате следния таг: При проверкаат може да използва следните символи = за равно != за неравно <& за по-малко (тъй като символа < има специално значение - указва началото на таг) >& за по-голямо

По съшия начин можете да проверявате стойностите на атрибути на таговете. Единствената разлика се състои в това, че името на атрибута трябва да се предхожда от символа @, докато името на дъщерен таг – не. Проверките обикновено се извършват в таговете <xsl:for-each> и <xsl:template>. Във <xsl:for-each> може да се използва, за да се изведат само таговете с определена стойност на даден атрибут, а в <xsl:template> за да се дефинират стил на таг, който има определена стойност на атрибута. XSL стига още по-далеч в предоставяните възможности за избор на извежданите тагове. Той предоставя условния „оператор“ <xsl:if>. Кодът между <xsl:if> и </xsl:if> се изпълнява само ако е изпълнено условието, определено от атрибута match. Например можете да приложите стилово оформление само на таговете, съдържащи атрибута version, като използвате кода

[code]

[/code]

Също така можете да избирате между множество варианти чрез тага <xsl:choose>, който се използва в комбинация с <xsl:when> и <xsl : otherwise>. Кода на <xsl:when> се изпълнява само, ако условието, определено от атрибута match е изпълнено, докато този на <xsl : otherwise> само ако никой от блоковете <xsl:when> не е изпълнен. За да илюстрирам това ще дам един пример, отново ползващ XML кода с програмите, който оцветява в червено фона на програмите в раздела graphics.

[code]




Software
















Name (Sorted Alphabetically)








[/code]

Използване на скриптове в XSL

Няколко тага в XSL поддрържат атрибута language, който определя скриптовия език, който ще се ползва по-нататък в документа (докато, разбира се, не бъде срещнат съответняи затварящ таг). Самия XSL е независим от скриптовите езици и не поддържа пряко нито един от тях. Това означава, че в браузър, поддържащ JavaScript и VBScript можете да ползвате тези два езика; ако браузърът поддържа друг скриптов език, можете да го ползвате. За създаване на скрипт обикновено се ползва тага <xsl:script>, но атрибута language се поддържа още и от <xsl:stylesheet> и <xsl:template>

Има още едно интересно нещо, което можем да кажем за XSL. Той позволява използването на комантари в изведения HTML код. Това се осъществява чрез тага <xsl:comment>. Можете да го използвате всмето <!– винаги, когато пишете HTML код, който да се изведе, и искате да включите коментар в него.

Автор: Максим Крижановски

ДОБАВИ КОМЕНТАР

Коментирай това преди всички други

Извести ме за
avatar
wpDiscuz