- Увод у КССЛТ
- Books:-
- Books:-
- List of Books Name :-
- List of Books Name :-
- Conclusion
- Books:-
- Books:-
- Books:-
- Books:-
- Books:-
- Books:-
- Books:-
Овај водич објашњава шта је КССЛТ, његове трансформације, елементе и употребу са примером. Такође покрива важност КСПатх-а за развој КССЛТ кода за конверзију:
Термин „КССЛТ“ се генерише комбиновањем две речи, тј. „КССЛ“ и „Т“, „КССЛ“ је кратка форма „ Ектенсибле Стилесхеет Лангуаге“ и „Т“ су кратка форма „Трансформације“.
Дакле, у суштини, КССЛТ је језик трансформације који се користи за трансформацију/конвертовање изворних КСМЛ докумената у КСМЛ документе или у друге формате као што су као ХТМЛ, ПДФ помоћу КССЛ-ФО (Објекти за форматирање) итд.
Увод у КССЛТ
Трансформација се дешава уз помоћ КССЛТ процесора ( као Сакон, Ксалан). Овај КССЛТ процесор узима један или више КСМЛ докумената као извор са једном КССЛТ датотеком која садржи КССЛТ код написан у њему и документи резултата/излаза ће бити генерисани касније као што је приказано на дијаграму испод.
КССЛТ процесор анализира изворне КСМЛ документе користећи Кс-Патх за навигацију кроз различите изворне елементе почевши од основног елемента до краја докумената.
Све што треба да знате о Кс-Патх
КССЛТ трансформацији
За почетак трансформације потребан нам је један КСМЛ документ на којем ће се покренути КССЛТ код, Сама датотека КССЛТ кода и алат или софтвер који има КССЛТ процесор (можете користити било коју бесплатну или пробну верзију софтвера задокументује да се елемент цене случајно испразни као у коду испод, онда би обрада требало да се заустави одмах чим процесор наиђе на празан елемент цене што се може лако постићи коришћењем ксл:мессаге унутар услова теста ако као у наставку КССЛТ код.
Упозорење за отклањање грешака је приказано на стандардном екрану апликације: Обрада је прекинута ксл:поруком у реду 21.
Унесите КСМЛ код:
SQL The Complete Reference James R. Groff McGraw-Hill 3rd
Погледајте снимак екрана за означену област:
КССЛТ код:
Books:-
Book ID | Book Name | Author Name | Publisher | Price | Edition |
---|---|---|---|---|---|
Погледајте снимак екрана за означену област:
Резултат: Имајте на уму да чим парсер наиђе на празну ознаку цене, одмах прекида обраду због које се затварају ознаке , и не долази на крај датотеке.
Books:-
Book ID | Book Name | Author Name | Publisher | Price | Edition |
---|---|---|---|---|---|
5350192956 | XSLT Programmer's Reference | Michael Kay | Wrox | $40 | 4th |
3741122298 | Head First Java | Kathy Sierra | O'reilly | $19 | 1st |
Погледајте снимак екрана за означену област:
#19) &амп;
елемент дефинише параметар шаблона ако је дефинисан унутар . Може се дефинисати или изнутра као глобални параметар или унутра као локални параметар тог шаблона.
Вредност се прослеђује/испоручује када шаблон позове или .
прослеђује вредност параметра дефинисаног унутар шаблону. Атрибут попут @наме садржи име параметра који треба да се подудара са атрибутом @наме елемента. Атрибут @Селецт се користи за подешавањевредност тог параметра.
За преузимање вредности параметра се користи иста као променљиви знак долара($).
Изворни КСМЛ код:
XSLT Programmer's Reference Michael Kay Wrox $40 4th Head First Java Kathy Sierra O'reilly $19 1st SQL The Complete Reference James R. Groff McGraw-Hill $45 3rd
КССЛТ код:
List of Books Name :-
Book Name:
Погледајте снимак екрана за означену област:
Излаз резултата:
сврхе учења).List of Books Name :-
Book Name: XSLT Programmer's Reference
Book Name: Head First Java
Book Name: SQL The Complete Reference
#20)
is used to import another stylesheet module inside our current stylesheet. This helps in achieving a modular XSLT development approach.
After importing all the templates get available to use. The priority of the templates defined in the parent stylesheet(which is importing another stylesheet) is higher than the imported stylesheet (which is imported by the parent stylesheet).
If another stylesheet also has the same name template as defined inside the template that is importing then the foreign templates get overridden by your own template.
Attribute @href is used as the URI of the stylesheet that you want to import.
#21)
Same as the above xsl:import, also helps in achieving a modular XSLT development approach. All the templates included by have the same priority/precedence as the calling stylesheet. It is like you copy all the templates from another stylesheet to your own stylesheet.
Attribute @href is used as the URI of the stylesheet that you want to import.
#22)
This element is used to specify the result tree in the output file. It contains attributes like @method that can have values like ‘XML’, ‘HTML’, ‘XHTML’ and ‘text’ by default is ‘XML’.
@encoding specifies the character encoding that comes in the output file as shown in below example encoding=”UTF-16″, the default values for XML or XHTML could be either UTF-8 or UTF-16. @indent specifies the indentation of the XML or HTML output code, for XML the default value is ‘no’ and for HTML and XHTML the default value is yes.
#23)
This element is used for stripping(removing) non-significant whitespace for the listed source element inside the @element attribute and if we want to strip whitespace from all the elements then we can use ‘*’ inside @elements attribute.
#24)
This element is used to preserve white spaces for the listed source element inside the @element attribute and if we want to preserve whitespace from all the elements, then we can use ‘*’ inside @elements attribute.
Conclusion
Thus in this article, we have learned about XSLT, frequently used XSLT elements, their usage with example source and target/result code, conversion or transformation of the source element to the target element.
We also discussed the importance of XPath to develop XSLT conversion code. We have seen the XSL template declaration and template calling & passing parameters. We learned to declare global and local variables, their usage in the XSLT code, and how to call them.
We learnt about different branching or conditional XSLT elements like xsl:if, xsl:for-each, xsl:choose. We understood the difference between shallow copying and deep copying, sorting of nodes, debugging of XSLT code by using xsl:message, the difference between named templates and match templates, and output formatting by using xsl:output.
About the Author: Himanshu P. is an experienced professional in the field of Information Technology. He has worked with ITC MNCs on cross-business domains and multiple technologies. Himanshu’s favorite pastime is reading magazines and blogging.
#1) КСМЛ код
У наставку је изворни КСМЛ код на којем ће се КССЛТ код покретати.
Назив датотеке: Боокс.кмл
XSLT Programmer's Reference Michael Kay Wrox $40 4th Head First Java Kathy Sierra O'reilly $19 1st SQL The Complete Reference James R. Groff McGraw-Hill $45 3rd
#2) КССЛТ код
У наставку је КССЛТ код на основу којег ће се покренути на горњем КСМЛ документу.
Назив датотеке: Боокс.ксл
Books:-
Book ID | Book Name | Author Name | Publisher | Price | Edition |
---|---|---|---|---|---|
#3) Код резултата / излаза
Код испод ће бити произведен након употребе КССЛТ кода у горњем КСМЛ документу.
Books:-
Book ID | Book Name | Author Name | Publisher | Price | Edition |
---|---|---|---|---|---|
5350192956 | XSLT Programmer's Reference | Michael Kay | Wrox | $40 | 4th |
3741122298 | Head First Java | Kathy Sierra | O'reilly | $19 | 1st |
9987436700 | SQL The Complete Reference | James R. Groff | McGraw-Hill | $45 | 3rd |
# 4) Прикажи резултат/излаз у веб претраживачу
Књиге:
ИД књиге | Назив књиге | Име аутора | Издавач | Цена | Издање |
---|---|---|---|---|---|
5350192956 | Референца КССЛТ програмера | Мицхаел Каи | Врок | $40 | 4. |
3741122298 | Прво у Јава | Катхи Сиерра | О'реилли | $19 | 1ст |
9987436700 | СКЛ Комплетна референца | Јамес Р. Грофф | МцГрав-Хилл | $45 | 3рд |
КССЛТ елементи
Да бисте разумели горе наведено КССЛТ код и његов рад, прво морамо да разумемо различите КССЛТ елементе и њихове атрибуте.
#1) ИЛИ
Сваки КССЛТ код мора да почиње са основним елементом или или
Атрибути:
- @кмлнс:ксл: Повезује КССЛТ документ са КССЛТ стандардом.
- @версион: Дефинише верзију КССЛТ кода запарсер.
#2)
Ова декларација дефинише скуп правила примењених за обраду или трансформацију изабраног улазног елемента изворног документа у дефинисана правила циљног елемента излазних докумената .
У основи, две врсте шаблона су доступне према њиховим атрибутима:
(и) Именовани шаблон: Када је ксл: елемент шаблона садржи атрибут @наме, онда се ово зове Именовани шаблон.
Назване шаблоне позива елемент ксл:цалл-темплате.
(ии) Шаблон подударања: Елемент ксл:темплате садржи атрибут @матцх који садржи одговарајући образац или КСПатх примењен на улазним чворовима.
Матцх шаблоне позива ксл:аппли-темплате елемент.
ксл Елемент :темплате мора имати атрибут @матцх или атрибут @наме или обоје. Елемент ксл:темплате који нема атрибут подударања не сме да има атрибут режима и приоритет.
Хајде да поново напишемо горњи КССЛТ(
а) КССЛТ код заснован на шаблону подударања са . Погледајте испод жуто & ампер; сиво означен промењен код, даће исти горњи излазни резултат.
Books:-
Book ID | Book Name | Author Name | Publisher | Price | Edition |
---|
Погледајте снимак екрана за означену област:
б) КССЛТ код заснован на Именованом шаблону са . Погледајте испод жуто & ампер; сиво обележен промењен код, даће исти горњи излазни резултат.
Books:-
Book ID | Book Name | Author Name | Publisher | Price | Edition |
---|
Погледајте снимак екрана за истакнутиобласт:
#3)
Процесор ће пронаћи и применити све шаблоне који имају КСПатх дефинисан у атрибуту @селецт.
Атрибут @моде се такође користи ако желимо да дамо више од једног начина излаза са истим улазним садржајем.
#4)
Процесор ће упутити позив шаблонима који имају вредност унутар атрибута @наме (обавезно).
елемент се користи за прослеђивање параметара шаблону.
#5)
Наведите вредност стринга/текста у вези са КСПатх изразом дефинисаним у атрибуту @селецт, као што је дефинисано у горњем коду.
Ово ће дати вредност име књиге.
#6) : Понављање
Ово ће обрадити упутства за сваки скуп чворова (кпатх дефинисан у атрибуту @селецт (потребан)) у сортираном низу.
Наведени код значи за сваки скуп чворова продавница/књига значи:
/сторе/боок[1]
/сторе/боок[2 ]
/сторе/боок[3]
може се користити и као дете ксл:фор-еацх за дефинисање редоследа сортирања.
#7) : Условна обрада
Инструкције ксл:иф ће се обрадити само ако ће логичка вредност атрибута @тест бити тачна, иначе инструкција неће бити процењена и празна секвенца се враћа.
2"> Condition True: Count of books are more than two.
Резултат: Услов Тачан: Број књига је већи од две.
Овде је цоунт() унапред дефинисана функција.
#8) :атрибут је потребан за процену КСПатх-а.
Резултат: Ово ће копирати све чворове и атрибуте изворног документа рекурзивно у излазни документ, тј. креираће тачну копију изворног документа.
Означава копију тренутног чвора и тренутног атрибута.
#11)
Овај елемент се користи за писање коментара на циљ резултат, било који текстуални садржај који се налази уз ову ознаку биће одштампан као коментарисани излаз.
Ово ће бити одштампано за излаз као чвор коментара.
Резултат:
#12)
Ово ће генерисати текстуални чвор у документу резултата, вредност унутар ксл:тект ће бити одштампана као стринг за излаз .
Ово је
текстуални ред.
Излаз:
Ово је
текстуални ред.
#13)
Ово ће генерисати елемент у документу резултата са име поменуто у његовом атрибуту @наме. Атрибут наме је обавезан атрибут.
Резултат: 5350192956
#14)
Ово ће генерисати атрибут његовом родитељском елементу у документу резултата. Име атрибута је дефинисано атрибутом наме, а вредност атрибута се израчунава помоћу КСПатх-а који се спомиње у атрибуту за одабир као што је дато у коду испод. Атрибут наме је обавезан атрибут.
Резултат:
#15)
Овај елемент ће сортиратиизабрани чвор у низу у складу с тим у узлазном или опадајућем правцу. Чвор или КСПатх се даје преко атрибута @селецт, а правац сортирања је дефинисан атрибутом @ордер.
У коду испод добићемо листу свих књига према називу књиге абецедним редом.
Books:-
Book ID | Book Name | Author Name | Publisher | Price | Edition |
---|---|---|---|---|---|
Погледајте овај снимак екрана за означену област:
Резултат: Доња листа садржи називе књига по абецедном реду, тј. растућем.
Књиге:
ИД књиге | Назив књиге | Име аутора | Издавач | Цена | Издање |
---|---|---|---|---|---|
3741122298 | Прва глава Јава | Катхи Сиерра | О 'реилли | $19 | 1ст |
9987436700 | СКЛ Комплетна референца | Јамес Р. Грофф | МцГрав-Хилл | $45 | 3рд |
5350192956 | Референца КССЛТ програмера | Мицхаел Каи | Врок | $40 | 4тх |
#16)
Овај елемент објављује променљива која у себи садржи вредност. Променљива може бити глобална или локална променљива. Име променљиве је дефинисано атрибутом @наме, а вредност коју ће ова променљива имати дефинисана је атрибутом @селецт.
Приступ глобалној променљивој је глобалан, тј. променљиве се могу позвати унутар било које елемент и остају доступниунутар стилова.
Да бисмо дефинисали глобалну променљиву, само треба да прогласимо да је поред основног елемента стилова, као што је приказано у коду испод у жуто истакнутом, променљива 'СецондБоок' глобална променљива и садржи име друге књиге.
Приступ локалној променљивој је локални елементу у коме је дефинисана, тј. та променљива не би била доступна изван елемента у којем је дефинисана као што је приказано у код испод који је означен сиво, променљива 'фирст боок' је локална променљива и садржи име прве књиге.
Да бисте позвали било коју глобалну променљиву у локалну променљиву, симбол долара ($) се користи пре имена променљиве, као што је приказано испод жутом бојом $ .
First Book Name: Second Book Name:
Погледајте снимак екрана за означену област:
Резултат:
Назив прве књиге: Референце КССЛТ програмера
Назив друге књиге: Прва глава Јава
#17)
Овај елемент се користи за декларисање кључева, за подударање вредности шаблона са тим одређеним кључем.
Име је добављач тог кључа помоћу атрибута @наме(“ гет-публисхер “), који се касније користи унутар функције кеи(). Атрибут @матцх се обезбеђује за индексни улазни чвор помоћу КСПатх израза (“ боок “), као на доле означеном жутом бојом @матцх се користи за индексирање свих књига доступних у продавници.
У односу на@матцх атрибут, користи се атрибут @усе, он декларише чвор да добије вредност за тај кључ преко КСПатх израза(“публисхер”).
Сада, претпоставимо да потребни су нам детаљи књиге коју је објавио само 'Врок' издавач, онда можемо лако добити ту вредност преко ксл:кеи елемента тако што ћемо направити пар кључ-вредност.
кеи('гет- публисхер', 'Врок') Кеи() узима два параметра, први је име кључа, који је у овом случају 'гет-публисхер', други је вредност стринга коју треба претраживати, што је у нашем случају 'Врок'.
Books:-
Book ID | Book Name | Author Name | Publisher | Price | Edition |
---|---|---|---|---|---|
Погледајте снимак екрана за означену област:
Резултат:
Books:-
Book ID | Book Name | Author Name | Publisher | Price | Edition |
---|---|---|---|---|---|
5350192956 | XSLT Programmer's Reference | Michael Kay | Wrox | $40 | 4th |
Резултат / ХТМЛ приказ:
Књиге:
ИД књиге | Назив књиге | Име аутора | Издавач | Цена | Издање |
---|---|---|---|---|---|
5350192956 | Референца КССЛТ програмера | Мицхаел Каи | Врок | $40 | 4тх |
#18)
Овај елемент се користи за отклањање грешака у КССЛТ развој. Елемент даје свој излаз на стандардни излазни екран апликације.
Атрибут @терминате се користи са две вредности или 'да' или 'не', ако је вредност подешена на 'да' онда парсер завршава се одмах чим се испуни услов теста да би се порука извршила.
Да бисмо ово разумели, претпоставимо да је у нашем уносуАлтернативне обраде услова
ксл:цхоосе имају више узрока за различите услове који се тестирају унутар атрибута @тест елемента ксл:вхен, тестни услов који се први остварује међу свим ксл:вхен, који ће бити обрађен прво и постоји опциони клс:отхервисе елемент тако да ако се ниједан од тестова услова не испуни, онда ће се узети у обзир овај ксл:отхервисе.
Condition True: Count of book is one. Condition True: Count of book is two. Condition True: Count of book is three. No condition match.
Резултат: Услов Тачан: Број књига је три.
#9)
ксл:цопи ради на ставци контекста, тј. ако је то чвор онда ће копирати контекстни чвор у новогенерисани чвор и ово неће копирати потомке контекстног чвора. Из тог разлога, ово се зове плитка копија. За разлику од елемента ксл:цопи-оф, ксл:цопи нема атрибут@селецт.
У коду испод, ставке контекста се копирају у излаз &амп; све дечије ставке се зову &амп; копирао ксл:аппли-темплате рекурзивно.
ноде()