Newest Viewed Downloaded

DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06)dott. Francesco De Angelis francesco.deangelis@unicam.it

DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06)

dott. Francesco De Angelis francesco.deangelis@unicam.it

Agenda

Document Type Definition XML Schema Namespace

Document Type Definition

XML ben formati ed XML validi

I due diversi livelli di “controllo” del documento generano due livelli di “correttezza”: XML ben formato: XML valido Es: <book/><book> Titolo </book> è ben formato ma non è tipicamente valido La buona formazione può essere valutata conoscendo solo XML La validazione dipende dalla specifica applicazione XML e cioè dallo specifico linguaggio

La forma di un documento XML

Ogni documento XML inizia con un prologo che contiene: una XML declaration eventualmente una Doctype Declaration (la dichiarazione della DTD a cui il documento si riferisce) eventualmente una serie di processing instruction Le processing instruction sono utilizzate raramente, servono più che altro per l’aggiunta di fogli di stile

Dichiarazione XML

Un documento XML può includere una dichiarazione XML. Questa specifica le caratteristiche opzionali del documento in questione. Poiché esse sono ridotte al minimo, la dichiarazione XML è brevissima La sintassi usata per la dichiarazione XML è quella delle processing instructions La non obbligatorietà della dichiarazione XML è dovuta a motivi di convenienza, per poter usare la grande quantità di documenti HTML e SGML che sono ben formati senza richiedere modifiche anche stupide. In assenza di dichiarazione XML, si assume la forma:

Dichiarazione XML Esistono esattamente tre valori che possono essere messi in una dichiarazione XML: Il parametro “version” identifica quale versione di XML si sta usando. Per il momento, l’unico valore possibile è “1.0”. Necessario. Il parametro “encoding” permette di specificare, se il dubbio può sorgere, quale codifica di caratteri viene usata per il documento. Facoltativo. Il parametro “standalone” permette di specificare se tutto il contenuto del documento è interno alla risorsa o se ne esiste parte anche all'esterno (ad esempio in un'entità posta nel DTD esterno). Facoltativo. Se è assente è false.

La Document Type Definition

Una DTD è costituita da un elenco di dichiarazioni (markup declaration) che descrivono la struttura del documento Le dichiarazioni di una DTD definiscono: gli elementi strutturali (element) di un documento mediante un identificatore generico il modello di contenuto di ogni elemento (content model) ovvero gli elementi che contiene ed i loro rapporti (un elemento può essere vuoto) la lista degli attributi associati a ciascun elemento e il loro tipo

La Document Type Definition

XML non fornisce alcun modo per definire la semantica di una DTD ogni elemento è definito esclusivamente interamente dal suo nome e dal suo contenuto ogni altra specificazione semantica va fornita mediante documentazione in lingua naturale o in altre notazioni logiche I DTD XML e SGML sono molto simili. A parte minime modifiche, ogni DTD XML è anche un DTD SGML.

La dichiarazione di tipo

Il è la dichiarazione del tipo di documento. Essa permette alle applicazioni XML di determinare le regole sintattiche da applicare alla verifica e validazione del documento. La dichiarazione non è, ma contiene o fa riferimento alla Document Type Definition, dove vengono elencati gli elementi validi e i loro vincoli. Il DTD può essere posto in un file esterno, internamente al documento, o in parte esternamente ed in parte internamente. N.B.: In XML il nome del DOCTYPE deve essere il nome del tag radice.

Dichiarazione del DTD:

La prima forma di dichiarazione indica che il DTD è contenuto in un file esterno (external subset). La seconda forma precisa il DTD internamente (internal subset). La terza forma precisa una parte del DTD come contenuta in un file esterno ed una parte come propria del documento.

Tipi di elementi

Il DTD definisce i tipi di elementi che possono occorrere nel file xml Per ogni tipo di elemento viene indicato il tipo di contenuto, che può essere: Any content: indica che ogni contenuto è ammissibile. Es: Empty content: un elemento vuoto non può contenere alcun testo tra il tag di inizio e quello di chiusura e può quindi essere rappresentato da un tag vuoto. Es: Simple content: è un elemento il cui contenuto è composto da testo. In questo caso #PCDATA è acronimo di “Parsed Character Data”. Es: Element content: è il caso tipico in cui il contenuto è composto da sottoelementi. Es: Mixed content: sono elementi che contendono testo misto ad altri elementi

Element content - sequenza

<message/> </note> <!ELEMENT note (to, from, title, message)> XML valido DTD Un elemento composto da una sequenza deve contenere una lista dei sottoelementi elencati, con un elemento per ogni tipo I singoli sottoelementi sono divisi da virgole <!-- google_ad_section_end --> </td> <td class="slideBoxRight"></td> </tr> <tr class="slideBoxBottomRow"> <td class="slideBoxBottom"></td> <td class="slideBoxCorner"></td> </tr> </table> </div> </div> <div class="slideBox slideBoxDetail"> <div class="slideBoxWrapper"> <table class="pres20541121"> <tr> <td class="slideBoxMain"> <!-- google_ad_section_start --> <h2>Element content - alternativa</h2> <a> <b></b> </a> <!ELEMENT a (b | c | d) > XML valido DTD Indica che il contenuto deve essere uno tra quelli elencati I singoli sottoelementi sono divisi da barre verticali (l’or del C) <!-- google_ad_section_end --> </td> <td class="slideBoxRight"></td> </tr> <tr class="slideBoxBottomRow"> <td class="slideBoxBottom"></td> <td class="slideBoxCorner"></td> </tr> </table> </div> </div> <div class="slideBox slideBoxDetail"> <div class="slideBoxWrapper"> <table class="pres20541121"> <tr> <td class="slideBoxMain"> <!-- google_ad_section_start --> <h2>Element content - ripetizione</h2> E’ possibile definire in vari modi le cardinalità dei sottoelementi: Nessuna specifica: l’argomento deve comparire esattamente una volta <!ELEMENT a (b)> è permesso solo <a><b/></a> ?: opzione. Specifica che il sottoelemento è facoltativo <!ELEMENT a (b?)> sono leciti sia <a/> che <a><b/></a> +: ripetizione. Il sottoelemento deve figurare una o più volte <!ELEMENT a (b+)> <a><b/></a>, <a><b/><b/></a>, ecc... *: ripetizione. Il sottoelemento può figurare un numero qualsiasi di volte, o anche non figurare affatto <!ELEMENT a (b*)> <a/>, <a><b/></a>, <a><b/><b/></a>, ecc... <!-- google_ad_section_end --> </td> <td class="slideBoxRight"></td> </tr> <tr class="slideBoxBottomRow"> <td class="slideBoxBottom"></td> <td class="slideBoxCorner"></td> </tr> </table> </div> </div> <div class="slideBox slideBoxDetail"> <div class="slideBoxWrapper"> <table class="pres20541121"> <tr> <td class="slideBoxMain"> <!-- google_ad_section_start --> <h2>Element content complessi</h2> I costrutti possono combinarsi dando origine ad espressioni regolari <!ELEMENT sezione (titolo, abstract?, para+)> ogni sezione ha un titolo, può avere un abstract opzionale, seguito da almeno un paragrafo <!ELEMENT sezione (titolo, (abstract | para)+)> Dentro all’elemento sezione ci deve essere un titolo, seguito da almeno un abstract o un para, che poi possono ripetersi in qualunque ordine e numero <!ELEMENT sezione (titolo, abstract*, para+)> Ogni elemento sezione è composto da un titolo, da una sequenza opzionale di abstract e da una sequenza si para composta da almeno un para <!ELEMENT sezione (titolo, (sottotitolo | abstract)?, para+)> Ogni sezione è data da un titolo, da uno tra sottotitolo ed abstract, che possono però anche mancarem e da una serie di para <!ELEMENT sezione (titolo, sottotitolo?, abstract?, para+> Come sopra, ma sottotitolo ed abstract possono coesistere <!-- google_ad_section_end --> </td> <td class="slideBoxRight"></td> </tr> <tr class="slideBoxBottomRow"> <td class="slideBoxBottom"></td> <td class="slideBoxCorner"></td> </tr> </table> </div> </div> <div class="slideBox slideBoxDetail"> <div class="slideBoxWrapper"> <table class="pres20541121"> <tr> <td class="slideBoxMain"> <!-- google_ad_section_start --> <h2>Contenuto misto</h2> <para> <bold>Questo</bold> testo contiene delle sezioni in <bold>grassetto</bold> ed in <italic>corsivo</italic>, ma potrebbe anche non averne </para> In XML il contenuto di testo #PCDATA ed il contenuto di elementi possono combinarsi solo nella forma seguente: <!ELEMENT para (#PCDATA | bold | italic)*> Ogni paragrafo contiene un testo in cui si possono trovare, opzionalmente, degli elementi <bold> ed <italic>. Es: <!-- google_ad_section_end --> </td> <td class="slideBoxRight"></td> </tr> <tr class="slideBoxBottomRow"> <td class="slideBoxBottom"></td> <td class="slideBoxCorner"></td> </tr> </table> </div> </div> <div class="slideBox slideBoxDetail"> <div class="slideBoxWrapper"> <table class="pres20541121"> <tr> <td class="slideBoxMain"> <!-- google_ad_section_start --> <h2>Attributi</h2> Il DTD permette anche di vincolare gli attributi dei singoli tag, cioè dei singoli elementi. In generale gli attributi vengono specificati con ATTLIST: <!ATTLIST elemento attributo1 tipo1 modificatore1 attributo2 tipo2 modificatore2 attributo-n tipo-n modificatore-n> I tipi definiscono l’insieme o la tipologia dei valori assumibili dall’attributo I modificatori identificano le condizioni di obbligatorietà o opzionalità dell’attributo ed, eventualmente, un valore di default per lo stesso <!-- google_ad_section_end --> </td> <td class="slideBoxRight"></td> </tr> <tr class="slideBoxBottomRow"> <td class="slideBoxBottom"></td> <td class="slideBoxCorner"></td> </tr> </table> </div> </div> <div class="slideBox slideBoxDetail"> <div class="slideBoxWrapper"> <table class="pres20541121"> <tr> <td class="slideBoxMain"> <!-- google_ad_section_start --> <h2>Attributi stringa</h2> <note> … <message lang=“English”> Remember the meeting </message> </note> <note> … <message> Ricordati l’appuntamento </message> </note> <!ATTLIST message lang CDATA “Italiano”> In questo caso l’attributo lang è una stringa Se l’attributo è presente nel file il suo valore è quello specificato Altrimenti viene assunto il valore di default “Italiano” <!-- google_ad_section_end --> </td> <td class="slideBoxRight"></td> </tr> <tr class="slideBoxBottomRow"> <td class="slideBoxBottom"></td> <td class="slideBoxCorner"></td> </tr> </table> </div> </div> <div class="slideBox slideBoxDetail"> <div class="slideBoxWrapper"> <table class="pres20541121"> <tr> <td class="slideBoxMain"> <!-- google_ad_section_start --> <h2>Attributi per enumerazione</h2> <person salutation=“Dr”> <name>Luke</name> <surname>Brown</name> </person> <!ATTLIST person salutation (Mr | Mrs | Miss | Dr) “Mr”> Il titolo di ogni persona assume valori nell’insieme indicato In mancanza del parametro si assume per default “Mr” <!-- google_ad_section_end --> </td> <td class="slideBoxRight"></td> </tr> <tr class="slideBoxBottomRow"> <td class="slideBoxBottom"></td> <td class="slideBoxCorner"></td> </tr> </table> </div> </div> </div> <div id="HorizontalAd" class="hidden horizontalAd verticalSpaceAfter newHorizontalAd2"> <script type="text/javascript"> <!-- google_ad_client = "pub-8495673564975419"; /* 2010 Utmanare 6 Presentation Second */ google_ad_slot = "8453565324"; google_ad_width = 728; google_ad_height = 90; //--> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script> </div> <div id="AllOtherSlideRows" class="hidden"></div> </div> </td> <td> <div id="RightColumnWrapper" style="width:300px"> <div id="InnerRightColumnWrapper"> <a href="http://www.slideexecutive.com/xPoint/download" target="_top" id="xPointDownloadLink" alt="SlideExecutive xPoint - download for free"></a> <div> <div class="boxHeader" style="white-space: nowrap;"> <h2> <span class="boxHeaderInfo">Showing 1 - 20 of 61 items </span> Details </h2> </div> <div class="greenBody"> <fieldset> <div class="detailRow"> <div class="detailColumn1">Name: </div> <div class="detailColumn2" title="[2] DTD e XML Schema">[2] DTD e XM...</div> </div> <div class="detailRow"> <div class="detailColumn1">Author: </div> <div class="detailColumn2">. 2004</div> </div> <div class="detailRow"> <div class="detailColumn1">Company: </div> <div class="detailColumn2" title=". 2004">. 2004</div> </div> <div class="detailRow"> <div class="detailColumn1">Description: </div> <div class="detailColumn2">DTD & XML Schema Laurea Magistrale in Informatica Reti 2 (2005/06)dott. Francesco De Angelis francesco.deangelis@unicam.it</div> </div> <div class="detailRow"> <div class="detailColumn1">Tags: </div> <div class="detailColumn2">element | xml | name | fur | type | dtd | table | elementi</div> </div> <div class="detailRow"> <div class="detailColumn1">Created: </div> <div class="detailColumn2">1/22/2006 10:39:19 PM</div> </div> <div class="detailRow"> <div class="detailColumn1">Slides: </div> <div class="detailColumn2">61</div> </div> <div class="detailRow"> <div class="detailColumn1">Views: </div> <div class="detailColumn2">6</div> </div> <div class="detailRow"> <div class="detailColumn1">Downloads: </div> <div class="detailColumn2">0</div> </div> <div class="detailRow"> <div class="detailColumn1">Rating: </div> <div class="detailColumn2"> 0 </div> </div> </fieldset> <br /><br /> <div style="text-align:center"> </div> <div class="clear" style="border-top: 1px solid #96C957; margin:10px 0"></div> <fieldset> <span class="left spacingRight"> <a id="Dl2_20541121" href="http://www1.cs.unicam.it/insegnamenti/reti_2008/Lists/Tasks/Attachments/9/[2] DTD e XML Schema.ppt" class="downloadLink dlTracking" rel="nofollow" title="Download presentation"></a> </span> <span class="left spacingRight"> <a class="embed" href="javascript:detail_showEmbedInstructions();" title="Embedd presentation" ></a> </span> <span class="left spacingRight"> <a class="addFavorite" title="Add to Favorites" onclick="javascript: g_saveFavoritePresentation();"></a> </span> <span class="left"> <a id="PresentationPlayButton" title="Play Presentation" onclick="javascript: PresentationPlay.Init(20541121)">></a> </span> <span class="right"><a id="Comment_20541121" class="internalDiscrete commentLink right" title="Comment this presentation">Comment</a></span> <br /> <br /><br /><br /> <span id="shareThisPresentaitonTitle" class="clear">Share this presentation</span> <br /> <span id="shareBox"> <span class="addthis_toolbox" style="padding-bottom: 1px;"> <a class="addthis_button_google_plusone" title="Google Plus" rel="nofollow"></a> <a class="addthis_button_twitter" title="Twitter" rel="nofollow"></a> <a class="addthis_button_facebook" title="Facebook" rel="nofollow"></a> <a class="addthis_button_linkedin" title="LinkedIn" rel="nofollow"></a> <a class="addthis_button_myspace" title="MySpace" rel="nofollow"></a> <a class="addthis_button_stumbleupon" title="StumbleUpon" rel="nofollow"></a> <a class="addthis_button_digg" title="Digg" rel="nofollow"></a> <a class="addthis_button_blogger" title="Blogger" rel="nofollow"></a> <span class="addthis_separator">|</span> <a class="addthis_button_expanded addthisMore left" title="More" rel="nofollow"></a> </span> </span> </fieldset> </div> </div> <script type="text/javascript" defer="defer" src="http://s7.addthis.com/js/250/addthis_widget.js?pub=slidefinder"></script> </div> </div> <div class="clear"></div> </td> </tr> <tr> <td></td> <td> <div class="horizontalAd newHorizontalAd2" id="FooterAd"> <script type="text/javascript"> <!-- google_ad_client = "pub-8495673564975419"; /* 2010 Utmanare 5 Presentation Second */ google_ad_slot = "2069150731"; google_ad_width = 728; google_ad_height = 90; //--> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script> </div> </td> </tr> <tr> <td></td> <td> <div class="paging"> <a href="/d/dtd_xml_schema_laurea_magistrale/b2ddtdexmlschema/20541121" class="current">1</a><a href="/d/dtd_xml_schema_laurea_magistrale/b2ddtdexmlschema/20541121/p2">2</a><a href="/d/dtd_xml_schema_laurea_magistrale/b2ddtdexmlschema/20541121/p3">3</a><a href="/d/dtd_xml_schema_laurea_magistrale/b2ddtdexmlschema/20541121/p4">4</a> <a href="/d/dtd_xml_schema_laurea_magistrale/b2ddtdexmlschema/20541121/p2" class="nav">Next >></a> </div> <div class="clear"></div> <div id="CommentsWrapper"> <div class="boxHeader commentBoxHeader"> <h2 id="20541121"> <span class="right"></span>Comments <a class="rssLinkBorder" href="/rss/comment/20541121"><span class="rss"></span></a> </h2> </div> <div id="CommentBody"> <ul> <!-- Here comments are loaded via ajax --> </ul> <button id="LoadComments" type="button" class="hidden">Load more comments</button> <p id="LoadingComments" class="hidden">Loading...</p> <span id="NoMoreComments" class="hidden"><a class="internalDiscrete commentLink" title="No comments - Be the first to comment!">No comments - Be the first to comment!</a></span> </div> </div> <script type="text/javascript"> addInitMethod('InitComments'); </script> </td> </tr> </table> <div class="clear"></div> <div id="EmbedDiv" class="dialog" style="display: none;"> <p> <a href="#" class="internal copyEmbedCode">Copy</a> the following code to your webpage or blog to embed this presentation: </p> <p class="discrete"> <a href="http://www.slidefinder.net/d/dtd_xml_schema_laurea_magistrale/b2ddtdexmlschema/20541121" class="slidefinder">[2] DTD e XML Schema</a> </p> <p class="discrete"> <script type="text/javascript" src="http://www.slidefinder.net/scripts/embedded.js"></script> </p> </div> <div id="EmbedCopyCodeDiv" style="display: none;"><a href="http://www.slidefinder.net/d/dtd_xml_schema_laurea_magistrale/b2ddtdexmlschema/20541121" class="slidefinder">[2] DTD e XML Schema</a> Det3 <script type="text/javascript" src="http://www.slidefinder.net/scripts/embedded.js"></script> </div> <div class="clear"></div> <div> <h2 style="padding: 0 0.5em 0 0; float: right;" class="clear">Share this presentation:</h2> </div> <div style="float:right;" class="clear"> <div class="addthis_toolbox" style="padding-bottom: 1px;"> <a class="addthis_button_google_plusone" title="Google Plus" rel="nofollow"></a> <a class="addthis_button_twitter" title="Twitter" rel="nofollow"></a> <a class="addthis_button_facebook" title="Facebook" rel="nofollow"></a> <a class="addthis_button_linkedin" title="LinkedIn" rel="nofollow"></a> <a class="addthis_button_myspace" title="MySpace" rel="nofollow"></a> <a class="addthis_button_stumbleupon" title="StumbleUpon" rel="nofollow"></a> <a class="addthis_button_digg" title="Digg" rel="nofollow"></a> <a class="addthis_button_blogger" title="Blogger" rel="nofollow"></a> <span class="addthis_separator">|</span> <a class="addthis_button_expanded addthisMore" title="More" rel="nofollow"></a> </div> <script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js?pub=slidefinder"></script> </div> <span id="trackId" data-text="20541121"></span> <span id="codeCopiedText" data-text="Code copied to clipboard."></span> <script type="text/javascript">addInitMethod('slideTypeWithAd');</script> <div class="clear"></div> <div id="Footer"> <div id="FooterLinks" class="mainLinks"> <div class="section"> <h4>Learn about us</h4> <p><a href="/info/aboutus" class="internalDiscrete" rel="nofollow">About us</a></p> <p><a href="/blog" class="internalDiscrete" rel="nofollow">Our blog</a></p> <p> <a href="http://www.twitter.com/slidefinder" class="external" rel="nofollow">Twitter</a> | <a href="http://www.facebook.com/pages/SlideFinder/172975213835" class="external" rel="nofollow">Facebook</a> </p> <p><a href="/info/privacy" class="internalDiscrete" rel="nofollow">Privacy</a></p> <p><a accesskey="8" href="/info/termsofuse" class="internalDiscrete" rel="nofollow">Terms of use</a></p> </div> <div class="section thin"> <h4><a href="/university" class="internalDiscrete">Universities</a></h4> <p><a href="/university" class="internalDiscrete">Europa (585)</a></p> <p><a href="/university" class="internalDiscrete">Nordamerika (775)</a></p> <p><a href="/university" class="internalDiscrete">Sydamerika (141)</a></p> <p><a href="/university" class="internalDiscrete">Afrika (11)</a></p> <p><a href="/university" class="internalDiscrete">Oceanien (24)</a></p> <p><a href="/university" class="internalDiscrete">Asien (274)</a></p> </div> <div class="section"> <h4>Slides by language</h4> <p><a href="/english_(en)" class="internalDiscrete">English</a></p> <p><a href="/spanish_(es)" class="internalDiscrete">Spanish</a></p> <p><a href="/french_(fr)" class="internalDiscrete">French</a></p> <a id="MoreLangLink" class="internalDiscrete">More</a><span class="bullet"></span> <div id="LanguageMoreList"> <ul> <li><a href="/albanian_(sq)" class="internalDiscrete">Albanian</a></li> <li><a href="/german_(de)" class="internalDiscrete">German</a></li> <li><a href="/arabic_(ar)" class="internalDiscrete">Arabic</a></li> <li><a href="/azeri_(az)" class="internalDiscrete">Azeri</a></li> <li><a href="/bengali_(bn)" class="internalDiscrete">Bengali</a></li> <li><a href="/catalan_(ca)" class="internalDiscrete">Catalan</a></li> <li><a href="/czech_(cs)" class="internalDiscrete">Czech</a></li> <li><a href="/chinese_(zh)" class="internalDiscrete">Chinese</a></li> <li><a href="/korean_(ko)" class="internalDiscrete">Korean</a></li> </ul> <ul> <li><a href="/croatian_(hr)" class="internalDiscrete">Croatian</a></li> <li><a href="/danish_(da)" class="internalDiscrete">Danish</a></li> <li><a href="/slovak_(sk)" class="internalDiscrete">Slovak</a></li> <li><a href="/slovenian_(sl)" class="internalDiscrete">Slovenian</a></li> <li><a href="/spanish_(es)" class="internalDiscrete">Spanish</a></li> <li><a href="/estonian_(et)" class="internalDiscrete">Estonian</a></li> <li><a href="/finnish_(fi)" class="internalDiscrete">Finnish</a></li> <li><a href="/french_(fr)" class="internalDiscrete">French</a></li> <li><a href="/welsh_(cy)" class="internalDiscrete">Welsh</a></li> </ul> <ul> <li><a href="/galician_(gl)" class="internalDiscrete">Galician</a></li> <li><a href="/greek_(el)" class="internalDiscrete">Greek</a></li> <li><a href="/hebrew_(he)" class="internalDiscrete">Hebrew</a></li> <li><a href="/hindi_(hi)" class="internalDiscrete">Hindi</a></li> <li><a href="/dutch_(nl)" class="internalDiscrete">Dutch</a></li> <li><a href="/hungarian_(hu)" class="internalDiscrete">Hungarian</a></li> <li><a href="/indonesian_(id)" class="internalDiscrete">Indonesian</a></li> <li><a href="/english_(en)" class="internalDiscrete">English</a></li> </ul> <ul> <li><a href="/irish_(ga)" class="internalDiscrete">Irish</a></li> <li><a href="/icelandic_(is)" class="internalDiscrete">Icelandic</a></li> <li><a href="/italian_(it)" class="internalDiscrete">Italian</a></li> <li><a href="/japanese_(ja)" class="internalDiscrete">Japanese</a></li> <li><a href="/javanese_(jv)" class="internalDiscrete">Javanese</a></li> <li><a href="/kurdish_(ku)" class="internalDiscrete">Kurdish</a></li> <li><a href="/latvian_(lv)" class="internalDiscrete">Latvian</a></li> <li><a href="/lithuanian_(lt)" class="internalDiscrete">Lithuanian</a></li> </ul> <ul> <li><a href="/luxembourgish_(lb)" class="internalDiscrete">Luxembourgish</a></li> <li><a href="/malay_(ml)" class="internalDiscrete">Malay</a></li> <li><a href="/maltese_(mt)" class="internalDiscrete">Maltese</a></li> <li><a href="/norwegian_(no)" class="internalDiscrete">Norwegian</a></li> <li><a href="/pashto_(ps)" class="internalDiscrete">Pashto</a></li> <li><a href="/persian_(fa)" class="internalDiscrete">Persian</a></li> <li><a href="/polish_(pl)" class="internalDiscrete">Polish</a></li> <li><a href="/portuguese_(pt)" class="internalDiscrete">Portuguese</a></li> </ul> <ul> <li><a href="/punjabi_(pa)" class="internalDiscrete">Punjabi</a></li> <li><a href="/romanian_(ro)" class="internalDiscrete">Romanian</a></li> <li><a href="/russian_(ru)" class="internalDiscrete">Russian</a></li> <li><a href="/sindhi_(sd)" class="internalDiscrete">Sindhi</a></li> <li><a href="/swedish_(sv)" class="internalDiscrete">Swedish</a></li> <li><a href="/sundanese_(su)" class="internalDiscrete">Sundanese</a></li> <li><a href="/turkish_(tr)" class="internalDiscrete">Turkish</a></li> <li><a href="/urdu_(ur)" class="internalDiscrete">Urdu</a></li> </ul> <div style="clear:left;"></div> </div> </div> <div class="section"> <h4>Tools</h4> <p><a href="javascript:g_installSearchEngine('http://www.slidefinder.net/opensearch.xml');" class="internalDiscrete">Add Slidefinder to your browser</a></p> <p><a href="http://tools.slidefinder.net/addin-en.aspx" class="internalDiscrete">PowerPoint 2007/2010 Add-in</a></p> <p><a href="javascript:g_loadIndexSuggestionForm();" class="internalDiscrete">Suggest a site to add</a></p> </div> <div class="clear"></div> </div> <div id="Tech"> </div> <div class="clear"></div> </div> <script type="text/javascript"> (function () { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })(); </script> </div> <a href="/sitemap.aspx" class="internal">Sitemap</a> <div id="FormDiv"></div> <! -- Google Analytics --> <script type="text/javascript"> var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-4506526-1']); _gaq.push(['_trackPageview']); (function () { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); </script> <script type="text/javascript" src="http://img.slidefinder.net/cache/cachecontent/89/js" defer="defer"></script> <div id="fb-root" style="display: none;"></div> <script type="text/javascript"> window.fbAsyncInit = function () { FB.init({ appId: '163484830372554', status: true, cookie: true, xfbml: true }); }; (function () { var e = document.createElement('script'); e.type = 'text/javascript'; e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js'; e.async = true; document.getElementById('fb-root').appendChild(e); } ()); </script> </body> </html>