XML-­‐Schema XML-­‐Fil XML-­‐XLS Informa4onsmodell Bookstore 1 Book 1..M Offers 1..M 1 Book Category XML stödjer en hierarkisk datastruktur <Bookoffers> XML-­‐Schema och XML-­‐Filer • XML-­‐Scheman används för aF beskriva en hierarkisk datastruktur, datatyper och termer (element) som gäller för XML-­‐filer • Data kan beskrivas i detalj med hjälp av XML-­‐ Scheman se w3schools.com för mer detaljer hFp://www.w3schools.com/schema/default.asp • XML-­‐Schemat och XML-­‐filen kopplas samman genom på följande aFribut anges i rooFaggen: – – xmlns:xsi="hFp://www.w3.org/2001/XMLSchema-­‐instance" xsi:schemaLoca4on="hFp://www.w3schools.com schemaloca4on" <?xml version="1.0" encoding="u[-­‐8"?> <xs:schema id="Bookstore" targetNamespace="hFp://tempuri.org/Bookstore.xsd" elementFormDefault="qualified" XML-­‐Schema xmlns="hFp://tempuri.org/Bookstore.xsd" xmlns:bookadm="hFp://tempuri.org/Bookstore.xsd" xmlns:xs="hFp://www.w3.org/2001/XMLSchema> <xs:element name="bookstore"> <xs:complexType> <xs:sequence> <xs:element name="storeid" maxOccurs="1" minOccurs="1"> </xs:element> <xs:element name="storename" maxOccurs="1" minOccurs="1"></xs:element> <xs:element name="bookoffers"> <xs:complexType> <xs:sequence minOccurs="1" maxOccurs="15"> <xs:element name="book"> <xs:complexType> <xs:sequence> <xs:element name="bookcategory" type="xs:string" maxOccurs="1" minOccurs="1"> </xs:element> <xs:element name="4tle" type="xs:string" maxOccurs="1" minOccurs="1"> </xs:element> <xs:element name="author" type="xs:string" maxOccurs="1" minOccurs="1"> </xs:element> <xs:element name="year" type="xs:integer" maxOccurs="1" minOccurs="1"> </xs:element> <xs:element name="price" type="xs:decimal" maxOccurs="1" minOccurs="1"> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> XML-­‐Fil <?xml version="1.0" encoding="u[-­‐8" ?> <?xml-­‐stylesheet type= "text/xsl" href= "Bookstore.xsl"?> <bookadm:bookstore xmlns:bookadm="hFp://tempuri.org/Bookstore.xsd" xmlns:xsi="hFp://www.w3.org/2001/XMLSchema-­‐instance" xsi:schemaLoca4on="hFp:// www.w3schools.com Bookstore.xsd" > <bookadm:storeid>1</bookadm:storeid> <bookadm:storename>Bookstore 1</bookadm:storename> <bookadm:bookoffers> <bookadm:book> <bookadm:bookcategory>COOKING</bookadm:bookcategory> <bookadm:4tle lang="en">Everyday Italian</bookadm:4tle> <bookadm:author>Giada De Lauren4is</bookadm:author> <bookadm:year>2005</bookadm:year> <bookadm:price>29.95</bookadm:price> </bookadm:book> <bookadm:book> <bookadm:bookcategory>CHILDREN</bookadm:bookcategory> <bookadm:4tle lang="en">Harry PoFer</bookadm:4tle> <bookadm:author>J K. Rowling</bookadm:author> <bookadm:year>2005</bookadm:year> <bookadm:price>29.99</bookadm:price> </bookadm:book> <bookadm:book> <bookadm:bookcategory>WEB</bookadm:bookcategory> <bookadm:4tle lang="en">Learning XML</bookadm:4tle> <bookadm:author>Erik T. Ray</bookadm:author> <bookadm:year>2003</bookadm:year> <bookadm:price>39.95</bookadm:price> </bookadm:book> </bookadm:bookoffers> </bookadm:bookstore> XML-­‐Filer och XSL/XLST • XSL står för EXtensible Stylesheet Language, och är eF script-­‐ språk för XML dokument. • XSL beskriver hur en XML-­‐fil ska visas • XSLT är den vik4gaste delen av XSL. • XSLT används för aF transformera eF XML-­‐dokument 4ll eF annat dokument som kan läsas av en browser. Normalt är deFa eF (X)HTML fil. • Med XSLT kan du lägga 4ll/ta bort element och aFribut 4ll output filen. Du kan sortera element, u[öra tester, bestämma vilka element som ska visas etc. • Man sammankoplar en XML-­‐fil med en stylesheet genom aF skriva på följande säF I XML-­‐filen <?xml-­‐stylesheet type= "text/xsl" href= ”stylesheetname.xsl"?> <xsl:stylesheet version="1.0" xmlns:xsl="hFp://www.w3.org/1999/XSL/Transform" xmlns:bookadm="hFp://tempuri.org/Bookstore.xsd" > <xsl:template match="bookadm:bookstore"> <html> <body> <p> <xsl:apply-­‐templates select="bookadm:storename"/> <xsl:apply-­‐templates select="bookadm:bookoffers"/> </p> </body> </html> </xsl:template> <xsl:template match="bookadm:storename"> <strong>Book Store Name: </strong> <xsl:value-­‐of select="."/> <br /> </xsl:template> <xsl:template match="bookadm:bookoffers"> <table border="1" > <tr> <td> <strong>Book offers</strong> </td> </tr> <tr> <th>Title</th> <th>Author</th> <th>Year</th> <th>Price</th> <th>Category</th> </tr> <xsl:for-­‐each select="bookadm:book"> <xsl:sort select="bookadm:bookcategory" order="ascending" /> <tr> <td align="lem"> <xsl:value-­‐of select="bookadm:4tle"/> </td> <td align="lem"> <xsl:value-­‐of select="bookadm:author"/> </td> Stylesheet DeFa stylesheet tar XML-­‐filen ovan som input och genererar en HTML-­‐fil. Så här visas en XML-­‐filen utan eF XSL-­‐Script som omvandlar den Browsern tar XML-­‐filen som input hämtar sedan XSL-­‐scriptet som omvandlar XML @ll HTML och Browsern visar sedan deCa innehåll på bildskärmen