This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
What is XML?HTML vs. XMLA conceptual view of XMLA concrete view of XMLApplications of XMLXML technologiesNamespacesThe recipe exampleSchema languagesA schema for recipesXLink, XPointer, and XPathPointing at recipesXML-QLQuerying the recipesXSLTA style sheet for recipes
A concrete view of XMLAn XML document is a (Unicode) text with markup tags and other meta-information.
Markup tags denote elements:
...<foo attr="val" ...>...</foo>... | | | | | | | a matching element end tag | | the contents of the element | an attribute with name attr and value val, values enclosed by ' or " an element start tag with name foo
There is a short-hand notation for empty elements: ...<foo attr="val".../>...
Note: XML is case sensitive!!
An XML document must be well-formed:start and end tags must match;●
element tags must be properly nested;●
and some more subtle syntactical requirements.●
Special characters can be escaped using Unicode character references:& yields &;●
< and < both yield <.●
CDATA Sections are an alternative to escaping many characters:<![CDATA[<greeting>Hello, world!</greeting>]]>●
The strange syntax is a legacy from SGML...
The following service checks well-formedness of an XML document (given a full URL):
Bland mel og sukker i en skål. Skær smørret i mindre stykker ogsmuldr det i melblandingen, til den ligner revet ost. Tilsæt vandog saml hurtigt dejen. Tryk den ud i en smurt springform (ca. 22 cmi diameter). Lad dejen gå halvt op ad formens side. Stil dentildækket i køleskabet i mindst 1 time. Forbag bunden midt i ovneni 12 minutter ved 200 grader.
XPath expressions navigate step by step through the XML tree.
Querying the recipesThe following XML-QL queries extract information from the XML recipe document:
WHERE <opskriftsamling> <opskrift> <titel>$t</titel> </opskrift> </opskriftsamling>IN "karoline.xml"CONSTRUCT <titel>$t</titel>
<?xml version="1.0"?<<XML> <titel>Filokurve med tigerrejer</titel> <titel>Laksemousse</titel> <titel>Smørrebrød med flødeost og tomat</titel> <titel>Citrontærte</titel> <titel>Hornfisk med radisesalat</titel> <titel>Islagkage med chokolade</titel> <titel>Rabarberdessert med jordbær</titel> <titel>Nougattoppe</titel> <titel>Græsk farsbrød og agurkesalat</titel></XML>
CONSTRUCT <opskriftermedsukker> { WHERE <opskriftsamling> <opskrift> <titel>$t</> <ingrediens*> <ingrediens navn="sukker"/> </> </opskift> </opskriftsamling> IN "karoline.xml" CONSTRUCT <navn>$t</navn>} </opskriftermedsukker>
XML: querying the recipes
http://www.brics.dk/~mis/ITU/XML/xmlqlrecipe.html (1 of 7) [18/09/2000 14:24:42]
<?xml version="1.0"?><opskriftermedsukker> <navn>Citrontærte</navn> <navn>Islagkage med chokolade</navn> <navn>Rabarberdessert med jordbær</navn></opskriftermedsukker>
WHERE <*><ingrediens navn=$i/></> IN "karoline.xml"CONSTRUCT <ingrediens navn=$i> { WHERE <opskriftsamling> <opskrift> <titel>$t</titel> <*> <ingrediens navn=$i/> </> </opskrift> </opskriftsamling> IN "karoline.xml" CONSTRUCT <ret>$t</ret> } </ingrediens>
<?xml version="1.0"?><XML> <ingrediens navn="æggeblommer"> <ret>Islagkage med chokolade</ret> </ingrediens> <ingrediens navn="friskpresset citronsaft"> <ret>Laksemousse</ret> <ret>Citrontærte</ret> </ingrediens> <ingrediens navn="jordbær i skiver"> <ret>Rabarberdessert med jordbær</ret> </ingrediens> <ingrediens navn="dej"> <ret>Citrontærte</ret> </ingrediens> <ingrediens navn="agurketern"> <ret>Græsk farsbrød og agurkesalat</ret> </ingrediens> <ingrediens navn="hornfisk"> <ret>Hornfisk med radisesalat</ret> </ingrediens> <ingrediens navn="yoghurt"> <ret>Græsk farsbrød og agurkesalat</ret> </ingrediens>
XML: querying the recipes
http://www.brics.dk/~mis/ITU/XML/xmlqlrecipe.html (2 of 7) [18/09/2000 14:24:42]
<ingrediens navn="kvarkdressing"> <ret>Hornfisk med radisesalat</ret> </ingrediens> <ingrediens navn="sukker"> <ret>Citrontærte</ret> <ret>Rabarberdessert med jordbær</ret> <ret>Islagkage med chokolade</ret> </ingrediens> <ingrediens navn="radisesalat"> <ret>Hornfisk med radisesalat</ret> </ingrediens> <ingrediens navn="mellemstore æg"> <ret>Citrontærte</ret> </ingrediens> <ingrediens navn="rom"> <ret>Islagkage med chokolade</ret> </ingrediens> <ingrediens navn="vand"> <ret>Rabarberdessert med jordbær</ret> <ret>Græsk farsbrød og agurkesalat</ret> <ret>Citrontærte</ret> </ingrediens> <ingrediens navn="koldt smør"> <ret>Citrontærte</ret> </ingrediens> <ingrediens navn="hvedemel"> <ret>Citrontærte</ret> </ingrediens> <ingrediens navn="små papir- eller folieforme"> <ret>Nougattoppe</ret> </ingrediens> <ingrediens navn="fyld"> <ret>Græsk farsbrød og agurkesalat</ret> </ingrediens> <ingrediens navn="fars"> <ret>Græsk farsbrød og agurkesalat</ret> </ingrediens> <ingrediens navn="friskkværnet peber"> <ret>Laksemousse</ret> <ret>Græsk farsbrød og agurkesalat</ret> <ret>Hornfisk med radisesalat</ret> </ingrediens> <ingrediens navn="rabarber"> <ret>Rabarberdessert med jordbær</ret> </ingrediens> <ingrediens navn="agurkesalat"> <ret>Græsk farsbrød og agurkesalat</ret> </ingrediens> <ingrediens navn="bladselleri">
XML: querying the recipes
http://www.brics.dk/~mis/ITU/XML/xmlqlrecipe.html (3 of 7) [18/09/2000 14:24:42]
<ret>Laksemousse</ret> </ingrediens> <ingrediens navn="knust fed hvidløg"> <ret>Græsk farsbrød og agurkesalat</ret> </ingrediens> <ingrediens navn="piskefløde"> <ret>Nougattoppe</ret> <ret>Islagkage med chokolade</ret> <ret>Laksemousse</ret> </ingrediens> <ingrediens navn="frisk, hakket persille"> <ret>Græsk farsbrød og agurkesalat</ret> </ingrediens> <ingrediens navn="groft salt"> <ret>Laksemousse</ret> <ret>Græsk farsbrød og agurkesalat</ret> <ret>Filokurve med tigerrejer</ret> <ret>Hornfisk med radisesalat</ret> </ingrediens> <ingrediens navn="husblas"> <ret>Laksemousse</ret> </ingrediens> <ingrediens navn="Feta ost 45+"> <ret>Græsk farsbrød og agurkesalat</ret> </ingrediens> <ingrediens navn="frisk, rød chilipeber"> <ret>Filokurve med tigerrejer</ret> </ingrediens> <ingrediens navn="tørret basilikum"> <ret>Smørrebrød med flødeost og tomat</ret> </ingrediens> <ingrediens navn="lille hakket zittauerløg"> <ret>Græsk farsbrød og agurkesalat</ret> </ingrediens> <ingrediens navn="smør"> <ret>Filokurve med tigerrejer</ret> <ret>Græsk farsbrød og agurkesalat</ret> </ingrediens> <ingrediens navn="hakket hvidløgsfed"> <ret>Filokurve med tigerrejer</ret> </ingrediens> <ingrediens navn="creme fraiche"> <ret>Filokurve med tigerrejer</ret> <ret>Laksemousse</ret> </ingrediens> <ingrediens navn="overtræk"> <ret>Islagkage med chokolade</ret> </ingrediens> <ingrediens navn="parfait">
XML: querying the recipes
http://www.brics.dk/~mis/ITU/XML/xmlqlrecipe.html (4 of 7) [18/09/2000 14:24:42]
<ret>Islagkage med chokolade</ret> </ingrediens> <ingrediens navn="smeltet overtrækschokolade"> <ret>Islagkage med chokolade</ret> </ingrediens> <ingrediens navn="agurk"> <ret>Filokurve med tigerrejer</ret> </ingrediens> <ingrediens navn="udbenet hornfisk"> <ret>Hornfisk med radisesalat</ret> </ingrediens> <ingrediens navn="makronbund"> <ret>Islagkage med chokolade</ret> </ingrediens> <ingrediens navn="olivenolie"> <ret>Filokurve med tigerrejer</ret> </ingrediens> <ingrediens navn="frisk, klippet purløg"> <ret>Hornfisk med radisesalat</ret> </ingrediens> <ingrediens navn="jordbærskiver"> <ret>Rabarberdessert med jordbær</ret> </ingrediens> <ingrediens navn="limefrugt i halve skiver"> <ret>Filokurve med tigerrejer</ret> </ingrediens> <ingrediens navn="creme fraiche 18%"> <ret>Hornfisk med radisesalat</ret> </ingrediens> <ingrediens navn="friske, hakkede citronmelisseblade"> <ret>Filokurve med tigerrejer</ret> </ingrediens> <ingrediens navn="kvark 5+"> <ret>Hornfisk med radisesalat</ret> </ingrediens> <ingrediens navn="frosne, optøede tigerrejer med halevifte"> <ret>Filokurve med tigerrejer</ret> </ingrediens> <ingrediens navn="agurk i små tern"> <ret>Hornfisk med radisesalat</ret> </ingrediens> <ingrediens navn="cherrytomater i skiver"> <ret>Smørrebrød med flødeost og tomat</ret> </ingrediens> <ingrediens navn="magert, hakket svinekød"> <ret>Græsk farsbrød og agurkesalat</ret> </ingrediens> <ingrediens navn="flødeost med løg og urter"> <ret>Smørrebrød med flødeost og tomat</ret>
XML: querying the recipes
http://www.brics.dk/~mis/ITU/XML/xmlqlrecipe.html (5 of 7) [18/09/2000 14:24:42]
</ingrediens> <ingrediens navn="mælk"> <ret>Græsk farsbrød og agurkesalat</ret> </ingrediens> <ingrediens navn="groft knækbrød"> <ret>Smørrebrød med flødeost og tomat</ret> </ingrediens> <ingrediens navn="hakket lammekød"> <ret>Græsk farsbrød og agurkesalat</ret> </ingrediens> <ingrediens navn="friske citronmelisseblade"> <ret>Citrontærte</ret> </ingrediens> <ingrediens navn="ris"> <ret>Græsk farsbrød og agurkesalat</ret> </ingrediens> <ingrediens navn="frossen, optøet filodej"> <ret>Filokurve med tigerrejer</ret> </ingrediens> <ingrediens navn="citroncreme"> <ret>Citrontærte</ret> </ingrediens> <ingrediens navn="mellemstort æg"> <ret>Græsk farsbrød og agurkesalat</ret> </ingrediens> <ingrediens navn="smeltet smør"> <ret>Filokurve med tigerrejer</ret> </ingrediens> <ingrediens navn="majsstivelse"> <ret>Citrontærte</ret> </ingrediens> <ingrediens navn="parboiled ris"> <ret>Græsk farsbrød og agurkesalat</ret> </ingrediens> <ingrediens navn="blødt smør i mindre stykker"> <ret>Citrontærte</ret> </ingrediens> <ingrediens navn="iskold piskefløde"> <ret>Rabarberdessert med jordbær</ret> </ingrediens> <ingrediens navn="rababerkompot"> <ret>Rabarberdessert med jordbær</ret> </ingrediens> <ingrediens navn="jordbær"> <ret>Rabarberdessert med jordbær</ret> </ingrediens> <ingrediens navn="filokurve"> <ret>Filokurve med tigerrejer</ret> </ingrediens>
XML: querying the recipes
http://www.brics.dk/~mis/ITU/XML/xmlqlrecipe.html (6 of 7) [18/09/2000 14:24:42]
<ingrediens navn="radiser i små tern"> <ret>Hornfisk med radisesalat</ret> </ingrediens> <ingrediens navn="mørk rom"> <ret>Nougattoppe</ret> </ingrediens> <ingrediens navn="finthakket bladselleri"> <ret>Laksemousse</ret> </ingrediens> <ingrediens navn="overtrækschokolade"> <ret>Islagkage med chokolade</ret> </ingrediens> <ingrediens navn="blød nougat"> <ret>Nougattoppe</ret> </ingrediens> <ingrediens navn="citronbåde"> <ret>Laksemousse</ret> </ingrediens> <ingrediens navn="vanillekorn"> <ret>Islagkage med chokolade</ret> </ingrediens> <ingrediens navn="laks"> <ret>Laksemousse</ret> </ingrediens></XML>
XML: querying the recipes
http://www.brics.dk/~mis/ITU/XML/xmlqlrecipe.html (7 of 7) [18/09/2000 14:24:42]
XSLTAn XSLT style sheets transforms an XML document into another:
if the target language is XHTML, then this is similar to a CSS style sheet;●
however, often the target language is really another XML language.●
An XSLT style sheet:uses pattern matching and templates to specify the transformation;●
may perform arbitrary computations;●
is vastly more expressive than a CSS style sheet.●
XSLT will be everywhere:browsers will only directly understand the XML language FO (formatting objects);●
HTML will be defined be a canonical XSLT style sheet into FO;●
many applications of XSLT will be involved in rendering a typical document.●
There is little support for XSLT style sheets yet:Netscape 4 does nothing;●
Explorer 5 supports a subset of a deprecated syntax from 1998.●
However, the following service correctly processes an XML document with an associated stylesheet(given a full URL):
which extracts nutrition tables from recipe collections. Try it out. As it stands, the output looks like:
<?xml version="1.0" encoding="ISO-8859-1"?><html xmlns="http://www.w3.org/1999/xhtml">Smørrebrød med flødeost og tomat2616553411Citrontærte1510065314Græsk farsbrød ogagurkesalat13920463519Islagkage medchokolade21655672742Laksemousse5838611722Nougattoppe8616692542Rabarberdessert medjordbær852044542Hornfisk med radisesalat9140283834</html>