1 / 34

Изобразяване на XML документи -XSL

Изобразяване на XML документи -XSL. XSL (eXtensible Stylesheet Language). За извеждане на XML документи е необходим механизъм за описание на начина на извеждане. Един такъв механизъм е XSL (e X tensible S tylesheet L anguage) . XSL – Повече от стилова страница

eman
Download Presentation

Изобразяване на XML документи -XSL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Изобразяване на XML документи -XSL

  2. XSL (eXtensible Stylesheet Language) • За извеждане на XML документи е необходим механизъм за описание на начина на извеждане. • Един такъв механизъм е XSL (eXtensible Stylesheet Language). • XSL – Повече от стилова страница • XSL се състои от две части: • Метод за трансформиране на XML документи • Метод за форматиране на XML документи • XSLе език, който може да трансформира XML в HTML, да филтрира и сортира XML данни, както и да ги форматира, на базата на стойностите им. • XSL трансформира XML файла във формат, разпознаваем от браузера (HTML). XSL трансформира всеки XML елемент в HTML елемент, като може да добавя нови елементи или да премахва такива, да пренарежда и сортира и т.н.

  3. XSL (eXtensible Stylesheet Language) Трансформиране на XML в HTML XML документ <?xml version="1.0" encoding="ISO8859-1" ?> <CATALOG> <CD> <TITLE>Empire Burlesque</TITLE> <ARTIST>Bob Dylan</ARTIST> <COUNTRY>USA</COUNTRY> <COMPANY>Columbia</COMPANY> <PRICE>10.90</PRICE> <YEAR>1985</YEAR> </CD> . . . </CATALOG>

  4. XSL (eXtensible Stylesheet Language) Трансформиране на XML в HTML <?xml version='1.0'?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <html> <body> <table border="2" bgcolor="yellow"> <tr> <th>Title</th> <th>Artist</th> </tr> <xsl:for-each select="CATALOG/CD"> <tr> <td><xsl:value-of select="TITLE"/></td> <td><xsl:value-of select="ARTIST"/></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet> XSL документкато HTML темплейт

  5. XSL (eXtensible Stylesheet Language) Трансформиране на XML в HTML • Елементътxsl:for-eachлокализира елементите в XML документа и повтаря темплейта за всеки един. • Атрибутselectописва елемента.Синтаксисът му се нарича XSL Patternи действа като навигатор (/ - избира поддиректория). • Елементът xsl:value-ofизбира childв йерархията и вмъква съдържанието му в темплейта. • XSLстиловата страница е XMLфайл (елемент xsl:stylesheetопределя документа като стилова страница). • Темплейтът се намира вxsl:template match="/", което определя, че това е темплейт, който съответства на корена (/) на XML.

  6. XSL (eXtensible Stylesheet Language) Трансформиране на XML в HTML • Ако в оригиналния XML документ се добави указване към така създадената стилова страница, браузерът ще трансформира XML документа в HTML. <?xml version="1.0" encoding="ISO8859-1" ?> <?xml-stylesheet type="text/xsl" href="cd_catalog.xsl"?> <CATALOG> <CD> <TITLE>Empire Burlesque</TITLE> <ARTIST>Bob Dylan</ARTIST> <COUNTRY>USA</COUNTRY> <COMPANY>Columbia</COMPANY> <PRICE>10.90</PRICE> <YEAR>1985</YEAR> </CD> . . . </CATALOG> Резултат TITLE ARTIST . . . . . .

  7. XSL (eXtensible Stylesheet Language) Парсер за трансформиране на XML в HTML за клиент • Освен разгледаният начин за трансформиране на XML документ в HTML чрез добавяне на XSL стилова страница към XML файла и оставяне браузера да направи трансформацията, има по-гъвкаво решение чрез използването на JavaScript. • Това решение позволява: • Да се използват различни стилови страници в зависимост от браузер и потребителски нужди. • Разрешава се да се извърши специфичното за браузера тестване.

  8. XSL (eXtensible Stylesheet Language) Парсер за трансформиране на XML в HTML за клиент • Файловете XML и XSL са същите (които бяха разгледани), но нито в XML, нито в XSL има указване към другия. • Следователно XML файлът може да се трансформира с използване на много различни XSL файлове. Зареждане на XML <html> <body> <script language="javascript"> var xml = new ActiveXObject("Microsoft.XMLDOM") xml.async = false xml.load("cd_catalog.xml") var xsl = new ActiveXObject("Microsoft.XMLDOM") xsl.async = false xsl.load("cd_catalog.xsl") document.write(xml.transformNode(xsl)) </script> </body> </html> Зареждане на XSL Трансформиране на XML чрез XSL и запис на резултата в HTML

  9. XSL (eXtensible Stylesheet Language) Парсер за трансформиране на XML в HTML за клиент • Първият блок създава обект на Microsoft XML parser (XMLDOM) и зарежда XML документа в паметта. • Вторият блоксъздава друг обект на парсера и зарежда XSL документа в паметта. • Последният (трети блок) трансформира XML документа, използвайки XSL документа и записва резултата в HTML документ.

  10. XSL (eXtensible Stylesheet Language) Парсер за трансформиране на XML в HTML за сървър • Показано беше как JavaScript използваuse XML парсер за трансформацията. Това решение няма да е валидно за браузер, който не подържа XML парсер. • За да може XML данните да се ползват от всички видове браузери, трябва да се трансформира XML документа на сървъра и да се изпрати като HTML към браузера. • Една от целите на проектирането на XSL е била да направи възможна трансформацията на данни от един формат в друг на сървъра и връщане на читаеми данни към всички видове браузери. • XSL трансформацията на сървъра е една от важните части на Internet Information Server за бъдещето.

  11. XSL (eXtensible Stylesheet Language) Парсер за трансформиране на XML в HTML за сървър • Използват се същите XML и XSL файлове, но в нито един от тях няма указване към другия. Трансформиране на XML в HTML от страна на сървъра <% 'Load the XML set xml = Server.CreateObject("Microsoft.XMLDOM") xml.async = false xml.load(Server.MapPath("cd_catalog.xml")) 'Load the XSL set xsl = Server.CreateObject("Microsoft.XMLDOM") xsl.async = false xsl.load(Server.MapPath("cd_catalog.xsl")) Response.Write(xml.transformNode(xsl)) %>

  12. XSL (eXtensible Stylesheet Language) Парсер за трансформиране на XML в HTML за сървър • Примерът еASPфайл, а кодът е на VBScript. Информация за ASP и VBScript може да получите на адрес:take a trip to ASP School. • Първият блок създава обект на Microsoft XML parser (XMLDOM)и зарежда XMLфайла в паметта. • Вторият блок създава друг обект на парсера и зарежда XSL в паметта. • Последният блок трансформира XML документ, ползвайки XSL документ и връща резултата към браузера.

  13. XSL (eXtensible Stylesheet Language) Сортиране • За извеждане на XML файла като HTML файл, но сортиран в същото време трябва да се добави атрибут order-byкъм елемента for-each(във XSL файла). • Атрибутът има знак (+) или (-) за да се дефинира нарастващ или намаляващ е реда на сортировка, както и името на елемента по който се прави сортировката. <xsl:for-each select="CATALOG/CD" order-by="+ ARTIST">

  14. XSL (eXtensible Stylesheet Language) <?xml version='1.0'?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <html> <body> <table border="2" bgcolor="yellow"> <tr> <th>Title</th> <th>Artist</th> </tr> <xsl:for-each select="CATALOG/CD" order-by="+ ARTIST"> <tr> <td><xsl:value-of select="TITLE"/></td> <td><xsl:value-of select="ARTIST"/></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet> Сортиране Поставяне на сортиращата информация в XSL файла

  15. XSL (eXtensible Stylesheet Language) Сортиране и трансформиране от страна на клиента <html> <body> <script language="javascript"> // Load XML var xml = new ActiveXObject("Microsoft.XMLDOM") xml.async = false xml.load("cd_catalog.xml") // Load the XSL var xsl = new ActiveXObject("Microsoft.XMLDOM") xsl.async = false xsl.load("cd_catalog_sort.xsl") // Transform document.write(xml.transformNode(xsl)) </script> </body> </html> Резултат от сортирана в нарастваш азбучен ред информация на Artist

  16. XSL (eXtensible Stylesheet Language) Филтриране • За филтриране на информацията на XML файла, трябва да се добави филтър към атрибутаselectна елемента for-each: • Филтриращи оператори: • =  (равно) • =! (различно) • &LT& по-малко от • &GT& по-голямо от <xsl:for-each select="CATALOG/CD[ARTIST='Bob Dylan']">

  17. XSL (eXtensible Stylesheet Language) <?xml version='1.0'?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <html> <body> <table border="2" bgcolor="yellow"> <tr> <th>Title</th> <th>Artist</th> </tr> <xsl:for-each select="CATALOG/CD[ARTIST='Bob Dylan']"> <tr> <td><xsl:value-of select="TITLE"/></td> <td><xsl:value-of select="ARTIST"/></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet> Филтриране Поставяне на филтрираща информация в XSL файла

  18. XSL (eXtensible Stylesheet Language) Филтриране и трансформиране от страна на клиента <html> <body> <script language="javascript"> // Load XML var xml = new ActiveXObject("Microsoft.XMLDOM") xml.async = false xml.load("cd_catalog.xml") // Load the XSL var xsl = new ActiveXObject("Microsoft.XMLDOM") xsl.async = false xsl.load("cd_catalog_filter.xsl") // Transform document.write(xml.transformNode(xsl)) </script> </body> </html> Резултат от филтрираната информация

  19. XSL (eXtensible Stylesheet Language) Поставяне на условие (if) • За добавяне на условие добави елементxsl:ifв XSL документа: <xsl:if match=".[ARTIST='Bob Dylan']">... Някакъв изход ...</xsl:if>

  20. XSL (eXtensible Stylesheet Language) <?xml version='1.0'?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <html> <body> <table border="2" bgcolor="yellow"> <tr> <th>Title</th> <th>Artist</th> </tr> <xsl:for-each select="CATALOG/CD"> <xsl:if match=".[ARTIST='Bob Dylan']"> <tr> <td><xsl:value-of select="TITLE"/></td> <td><xsl:value-of select="ARTIST"/></td> </tr> </xsl:if> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet> Поставяне на условие (if) Поставяне на условие (if) в XSL файла

  21. XSL (eXtensible Stylesheet Language) Поставяне на условие (if) от страна на клиента <html> <body> <script language="javascript"> // Load XML var xml = new ActiveXObject("Microsoft.XMLDOM") xml.async = false xml.load("cd_catalog.xml") // Load the XSL var xsl = new ActiveXObject("Microsoft.XMLDOM") xsl.async = false xsl.load("cd_catalog_filter.xsl") // Transform document.write(xml.transformNode(xsl)) </script> </body> </html> Резултат от поставеното условие

  22. XSL (eXtensible Stylesheet Language) Поставяне на условие за избор (choose) • За добавяне на условиеза избор добави xsl:choose, xsl:when и xsl:otherwiseелементи в XSL документа: <xsl:choose>   <xsl:when match=".[ARTIST='Bob Dylan']">      ... Някакъв код ...   </xsl:when>   <xsl:otherwise>      ... Някакъв код ....   </xsl:otherwise></xsl:choose>

  23. XSL (eXtensible Stylesheet Language) <?xml version='1.0'?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <html> <body> <table border="2" bgcolor="yellow"> <tr> <th>Title</th> <th>Artist</th> </tr> <xsl:for-each select="CATALOG/CD"> <tr> <td><xsl:value-of select="TITLE"/></td> <xsl:choose> <xsl:when match=".[ARTIST='Bob Dylan']"> <td bgcolor="#ff0000"><xsl:value-of select="ARTIST"/></td> </xsl:when> <xsl:otherwise> <td><xsl:value-of select="ARTIST"/></td> </xsl:otherwise> </xsl:choose> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet> Поставяне на условие за избор (choose) Поставяне на условие за избор в XSL файла

  24. XSL (eXtensible Stylesheet Language) Поставяне на условие за избор от страна на клиента <html> <body> <script language="javascript"> // Load XML var xml = new ActiveXObject("Microsoft.XMLDOM") xml.async = false xml.load("cd_catalog.xml") // Load the XSL var xsl = new ActiveXObject("Microsoft.XMLDOM") xsl.async = false xsl.load("cd_catalog_filter.xsl") // Transform document.write(xml.transformNode(xsl)) </script> </body> </html> Резултат от поставеното условие

  25. Създаване на XML документи от приложение • Огледалното на парсера е генератор. • Чрез DOM – предпочита се при модифициране на документ • Чрез собствен генератор – създаване на документи от не XML данни. • Създаването на XMLдокументи е много по-лесно от четенето (при създаването, потребителят решава какво от синтаксиса на XML да ползва – например може без нотации, единици и т.н.). Модифициране на документи с DOM • DOM обектите имат методи за създаване и модифициране на XMLдокументи. • DOM Document обекта има методи за създаване на елементи, текстови върхове, коментари, инструкции,... • DOM Node обект има методи за: добавяне и премахване на върхове от дървото.

  26. Създаване на XML документи от приложение Модифициране на документи с DOM <?xml version='1.0'?> <products> <product> <name>XML Editor</name> <pricecurrence = “usd”>499.00</price> <pricecurrence = “eur”>475.00</price> </product> <product> <name>XML Training</name> <price currence = “usd”>99.00</price> <pricecurrence = “eur”>85.00</price> </product> . . . </products> С промени в оригиналното приложение могат да се добавят нови цени в документа в еврои атрибут за валутата

  27. Създаване на XML документи от приложение Модифициране на документи с DOM function walkProduct(node,document,rate) { if(node.NodeType==1 && node.nodeName==‘product) { var price, children, i; children = node.childNodes; for(i=0; i< children.length; i++) { var child = children.item(i); if(child.nodeType == 1) if(child.nodeName == “price”) price=child; } var element=document.createElement(“price”), text=document.createTextNode(getText(price)*rate); element.setAttribute(“currency”,”eur”); element.appendChild(text); node.appendChild(element); price.setAttribute(“currency”,”usd”); } } JavaScript за нов елемент <price> в евро и добавяне на атрибут за валута <price currency=“usd”>…

  28. Създаване на XML документи от приложение • DOM методи за създаване и модифициране на документи. • Documentдефинира следните допълнителни методи за създаване на обекти: • CreateAttribute(name) – създава обект атрибут с име name • CreateCDATASection(data) – създава обект низ с данни data • CreateElement(name) • CreateEntityReference(name) • CreateProcessingInstruction(target, data) • CreateTextNode(data)

  29. Създаване на XML документи от приложение • Node дефинира методи за добавяне или премахване на обекти. DOMобектите са производни и наследяват тези методи. • appendChild(child) • insertBefore(child,before) • replaceChild(child, toraplace) • removeChild(child) • Група методи за елементи • Група методи за символни данни

  30. Използване създадените на XML документи • Приложението може да съхрани документа във файл или да го изпрати на сървъра. Изпращане на документа на сървър • Чрез HTML форма • Поставя се в HTML форма и се изпраща чрезнея, ползвайки: JavaBean или ActiveX control. • Тагът FORMизползва атрибут ACTION като полетоINPUTот BUTTONсе променя в SUBMIT. • TEXTAREAсе променя вHIDDEN поле за да не се появява на екрана. • Webсървъра получава XMLдокумента чрез параметър output. • Трябва да се пише сървлет или CGIскрипт за извличане на документа. • Удобството е, че документът се връща във форма и сървлетът трябва да има само достъп до параметрите на формата.

  31. Използване създадените на XML документи Изпращане на документа на сървър • Чрез Internet Explorer XMLHTTP и ActiveX control • XML документа се изпраща чрез JavaScript • Обект ActiveX използва методите: • open(protocol,url,asynchronous)за връзка към url • setRequestHeader(keyword,value) добавя ключова дума • send(data) изпраща данните към сървъра functionsend() { var http=new ActiveXObject(“Microsoft.XMLHTTP”); http.open(“POST”, “http:// адрес_сървър… ”,false); http.setRequestHeader(“Content-type”,  “application/xml”); http.send(makeXML()); document.open(); document.write(http.responseText); } Как да се използва XMLHTTP за изпращане на резултатите в web сайт.

  32. Използване създадените на XML документи Изпращане на документа на сървър • Чрез Internet Explorer XMLHTTP и ActiveX control • Необходим е отново сървлет или CGIскрипт на сървъра за извличане на документа. <INPUT TYPE=“SUBMIT” VALUE=“Send in XML” “ONCLICK”=“send()”> Трябва да се промени бутона в HTML формата за да се извиква функцията send

  33. Използване създадените на XML документи Съхраняване на документа • Не се съхранява XML документ във файл на браузера, а само на сървъра. • Ако XML е създаден със собствен генератор, то той се съхранява като всеки друг файл. • При създаване на XML с MS DOM парсър се използва функция save() (но тя се ползва не на браузера, а при писане на CGI скрипт или ASP страница) Съхраняване на файл от JavaScript в ASP сървър <% var xmldoc=new ActiveXObject(“Microsoft.XMLDOM”); //създава се XML документ xmldoc.save(Server.MapPath(“request.xml”)); %>

  34. Използване създадените на XML документи Съхраняване на документа • За създаване на XML парсер отASP, не се използва показаното включване на XML документ в HTML, а се създава директно катоActiveXObject обект. var xmldoc=new ActiveXObject(“Microsoft.XMLDOM”);

More Related