Codice Forma Contenuto II – compito 4


… continuando a intrecciare fili diversi e acquisendo qualche molto sana abitudine. Piccoli hacker crescono.



Confronto fra i file english.xml e italian.xml, all'inizio e alla fine
A sinistra: italian.xml; a destra: english.xml; sopra: prime 20 righe; sotto: ultime 20 righe.

Eravamo rimasti qui. Ho riportato qui sopra una composizione grafica che mette a confronto l’inizio e la fine dei due file, anche se auspico che abbiate fatto l’esercizio nel post precedente, scaricando e installando l’editore di testo per frugare in questi file. Se cliccate sulla figura ne potete vedere una versione più nitida. In questa composizione, per facilitare il confronto, ho eliminato l’intestazione con le informazioni sull’autore della traduzione, nel file italian.xml, che tuttavia ho riportato in fondo.

Un inciso prima di tutto, sul tema degli editor di testo possenti. Ho fatto questa composizione con Vim, l’editore di testo integrato nei sistemi Linux e anche Mac OSX. Vim, è nipote di vi, editore di testo integrato nei sistemi operativi Unix (di cui Linux è una versione) praticamente da sempre: è stato scritto per la prima volta nel 1976. In questa composizione si possono scorgere alcune potenzialità: la suddivisione dello schermo in sezioni con parti diverse di stessi file o diversi file (a me serviva in quadranti ma si possono aggiustare come si vuole), l’evidenziazione sintattica, i numeri di riga (naturalmente si possono togliere se si vuole). Nel preparare questa figura mi sono tornate utili altre possibilità. Per esempio la regolazione della tabulatura (gli spazi lunghi) che avevo trovato troppo ampia perché le singole righe potessero rientrare nello spazio di un quadrante; con un solo comando ho portato la tabulatura da 8 spazi ad 1. Oppure la possibilità di cancellare rettangoli di testo anziché singoli caratteri o righe; questo è servito a sbarazzarmi di spazi disseminati qua e là che ingarbugliavano l’ordine dei rientri (indenting), che sono molto utili per orientarsi nei codici basati su costrutti del tipo <tag>…</tag>, nidificati gli uni negli altri.

Questo inciso non rappresenta un’esortazione a usare attrezzi del genere, ma solo a dare un’idea che per lavori di editing di testo (compresi i codici di embedding di figure o video o altro, che sempre di testo son fatti) ci sono degli strumenti appositi, che sono liberamente disponibili per tutti. Potrei dire che sono intrinseci a Internet. Se uno sa che esistono, il giorno che ne sentisse il bisogno, potrà iniziare ad usarli.

E ora guardiamo questi file e prima di porci domande precise sulla loro struttura, interroghiamoci sulla loro finalità. Ebbene, in questo semplice esempio è chiaro che i file english.xml e italian.xml, servono a contenere e trasmettere un certo tipo di informazione con una certa struttura. Sono facili da capire, con un minimo di abitudine alle cose informatiche, ed è abbastanza comprensibile che chiunque conosca un po’ l’inglese, partendo da english.xml non trovi grande difficoltà a confezionare un file analogo per un’altra lingua che sia di sua conoscenza. Come dire che il file in XML si spiega da sé. Ecco questi sono i fatti fondamentali: il codice XML è il veicolo che trasporta informazione strutturata in Internet in modo che possa essere decodificata da chiunque. Questo non significa che sia facile da leggere. Ci sono documenti XML assai intricati. Significa invece che all’occorrenza sia possibile recuperare tutta l’informazione contenuta in un documento XML senza ostacoli di sorta al di là di un certo impegno e un certo lavoro.

Riassumiamo, XML …

  • è un codice di markup simile a HTML
  • ma serve a trasportare informazione, non a mostrarla
  • come HTML è basato sul’impiego dei tag, ma anziché essere predefiniti e fissi questi vengono creati per ciascuna tipologia di documento
  • è concepito per essere autodescrittivo

Mentre HTML, o meglio i browser che sono gli strumenti che interpretano le pagine scritte in HTML, perdonano le sbavature sintattiche …

<html>
<head>
<title>Questo è HTML poco buono</title>
<body>
<h1>HTML poco buono
<p>Questo potrebbe essere un paragrafo
<p>ma vedete che dimentico di chiudere quasi tutti i tag?
<p>i browser perdonano ma non è una buon pratica ...
</body>

… con il codice XML la sintassi deve essere rispettata rigorosamente, sintassi peraltro semplice; ecco le regole, che scrivo perché sono singolarmente poche:

  • i documenti devono avere un elemento radice che contiene tutti gli altri
  • tutti gli elementi devono avere un tag di chiusura, tipo
    <tag>...</tag>
    
  • minuscole e maiuscole fanno differenza, per esempio
    <tag></tag>
    <TAg></TAg>
    <Tag></Tag>
    <tAG><tAG>
    <TAG></TAG>
    

    sono tutti tag diversi

  • gli elementi devono essere nidificati correttamente:
    <tag_esterno>
    <tag_interno_1>
    Testo interno 1
    </tag_interno_1>
    <tag_interno_2>
    Testo interno 2
    </tag_interno_2>
    </tag_esterno>
    
  • i valori di eventuali attributi degli elementi devono essere specificati fra virgolette:
    <tag un_attributo="suo_valore"></tag>
    

Quando un documento XML soddisfa queste semplici regole allora si dice che è ben formato e questo è un fatto obbligatorio.

Un documento XML può essere, oltre che ben formato, anche valido. Questo significa che il documento si attiene ad un insieme di regole, predeterminato per una data tipologia. Le regole descrivono i suoi elementi, medianti i relativi tag e eventuali attributi, e anche le relazioni che possono esistere fra di essi. Per esempio le relazioni di nidificazione: certi tag figli possono stare solo dentro a certi altri tag genitori. I modi con i quali tali insiemi di regole possono essere specificati, sono vari e abbastanza ingarbugliati, a causa dell’evoluzione impetuosa dello standard. Non è utile qui disperdersi in dettagli del genere. Ci basti sapere che, pur nelle varie modalità, la specifica delle regole per un certo tipo di documenti viene reperita in qualche luogo della rete.

Per dare sostanza a queste parole vediamo un tipico esempio di informazione codificata in XML, prendendo l’esempio dei feed che ormai ben conoscete. Voi già sapete che i feed sono “bocconi” di informazione che i siti web offrono affinché possano essere trasportati negli aggregatori di feed, i quali consentono così di seguire le novità pubblicate in quei siti. Ebbene, ho estratto l’ultimo feed dei post del mio blog e l’ho ripulito di tutte le informazioni inutili per una comprensione immediata del frammento di codice:

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
	<channel>
		<title>Insegnare Apprendere Mutare</title>
		<atom:link href="https://iamarf.org/feed/" rel="self" type="application/rss+xml" />
		<link>http://iamarf.org</link>
		<description>
			yearning for a society where knowledge and learning are public goods,
			available to everybody without any constraint of social or financial nature
		</description>
		<lastBuildDate>Sun, 18 Dec 2011 13:57:48 +0000</lastBuildDate>
		<item>
			<title>Codice Forma Contenuto</title>
			<link>https://iamarf.org/2011/12/17/codice-forma-contenuto/</link>
			<description>
				<![CDATA[Dove si intrecciano fili diversi e si acquisisce
				qualche molto sana abitudine. Piccoli hacker crescono.
				Non finisce qui &amp;#8230; Vi ricordate il video postato da Marvi?]]>
			</description>
		</item>
		<item>
		...
		</item>
		<item>
		...
		</item>
	</channel>
</rss>

Così ripulito e semplificato non dovreste avere difficoltà a “leggere” questo codice. Aggiungo solo qualche breve commento.

Il primo tag, <xml>, ha due attributi che specificano la versione usata per il codice XML e il tipo di codifica, UTF-8, e voi sapete già cosa significhi questo.

Gli attributi del secondo tag, <rss>, specificano la versione dello standard RSS, ed anche una serie di indirizzi nei quali si trovano le regole che servono per questo tipo di documenti, quelle che dicevamo prima. Ne ho lasciati solo alcuni, per semplicità. Questo metodo si basa sui cosiddetti xmlns, xml namespaces, ma non ci serve sapere altro a riguardo.

Come vedete, il tag <rss>, è padre del tag <channel>, che a sua volta è padre degli altri che vediamo. Il tag <channel>, specifica l’emittente, in questo caso il mio blog. Tralascio poi le cose evidenti per arrivare al primo elemento item, che contiene il feed vero e proprio di un singolo post. Ho lasciato solo le cose essenziali ma sono più che sufficienti. Per esempio queste sono le uniche cose che uso nell’aggregatore di feed che mi sono costruito. Anche dentro al primo item vedete tutte cose facilmente riconoscibili. I feed successivi li ho eliminati perché non ci dicono nulla di più.

Come vedete, non ci sono tanti misteri. Ora sappiamo compiutamente cosa è un feed: una manciata di informazioni essenziali relative ad un frammento di contenuto, che potrebbe essere un post di un blog, un commento a un post, un articolo di giornale online, un podcast – uh … – frammento che è codificato in XML in armonia con un adeguato insieme di regole.

Il cosiddetto web 2.0 è un sistema dinamico sostenuto dalla fluida circolazione di frammenti di informazione codificata in XML. I feed sono solo un esempio. Abbiamo visto che i gestori di Notepad++ usano file in XML per gestire le traduzioni del loro editore. I file OPML che conoscete, sono codificati in XML. Tutte le volte che esportate dati da un sito web, da un blog, da un wiki o da qualche tipo di social network, questi saranno espressi in file codificati in XML. Anche i vostri blog, sì.

L’esportazione di un blog può essere utilizzata per trasferire i contenuti in un altro blog, anche di un altro gestore. Per esempio questo blog che state leggendo, lo creai in blogspot, nella prima versione, poi dopo un paio d’anni decisi di passare tutto in wordpress. Ebbene, l’operazione è consistita nell’esportare i contenuti dal vecchio blog in blogspot, creare un nuovo blog in wordpress e poi importarci il file scaricato da blogspot. Tutto questo è stato possibile perché il file è scritto in XML con delle regole che tutti i blog capiscono. Ah, mi viene ora in mente, che quel vecchio blog esiste ancora, lo rendo nuovamente pubblico per qualche tempo, con l’occasione, eccolo qua!

Nella blogoclasse è stato menzionato alcune volte il fatto che la piattaforma splinder è moritura. Ebbene, i possessori di blog in quella piattaforma potranno migrare verso altri sistemi utilizzando un meccanismo del genere.

Non c’è molto altro da dire su questo, forse, se non che potremmo costruirci un “compito” 😉 che potrebbe essere il seguente: cercate come si fa ad esportare il vostro blog, wordpress o blogspot che sia. Consultatevi fra voi, via blogoclasse, chi lo sa già fare può scrivere consigli in un post, per esempio. Aprite poi con Notepad++ (Gedit per chi ha Linux, TextWrangler per chi ha Mac, o editori similari) il file XML che contiene l’esportazione del vostro blog. Poi fate uno screenshot dell’inizio del vostro file aperto in Notepad++ e pubblicatelo nel vostro blog. C’è il beneficio collaterale che così imparate a salvare i vostri testi, post e commenti compresi.

Ultima avvertenza: le opzioni Importa blog, Esporta blog, Elimina blog sono vicine: occhio a selezionare Esporta blog!


Autore traduzione in italiano di Notepad++

Italian translation for Notepad++ 5.9.6.1

Last modified Tue, November 7th, 2011 12:00 GMT by Luca Leonardi.

Please e-mail errors, suggestions etc. to ices_eyes(at)users.sourceforge.net.

For updates, see https://sourceforge.net/projects/notepad-plus/forums/forum/558104/topic/1853765

13 thoughts on “Codice Forma Contenuto II – compito 4

  1. Andreas says:

    🙂
    Notepad++ non c’è sul tuo computer, ma lo puoi usare perché è software open source, utilizzabile liberamente da chiunque. Torna al post precedente, Codice Forma Contenuto, lì troverai le tracce di Notepad++.

    Ho visto che altri hanno fatto questo esercizio ma usando il Notepad (Blocco note) normale che si trova in Windows. Non sarebbe male prendere l’abitudine di scaricare il software libero e cercare di usare quello. Torneremo su questo, intanto porva(te) Notepad++ …

  2. grandipepe says:

    ma è mai possibile che io non veda NOTEPAD++ sul mio pc?
    ho fatto esporta, salva e apri e … lo vedo il file!!! il che già mi rassicura, questo NOTEPAD++ … vod’è? qualcuno mi lancia un salvagente. Già, poi quando me lo lancerente magari mi accorgerò che sono già all’asciutto ma i codici… mi disorientano!
    Piccoli hacker crescono… io al massimo posso fare la fine di uno dei 10 Piccoli Indiani… 😦

  3. monica says:

    Fatto 🙂
    passi da compiere:
    1 prima si va sul proprio blog
    2 si entra in impostazioni
    3 dove dice strumenti del blog, si clicca esporta blog, poi scarica
    4 si salva il documento
    5 lo si apre con notepad
    6 si fa lo screeshot
    7 si pubblica nel post
    spero di essere stata chiara

  4. Andreas says:

    Monica, non lo devi tramutare, già nella prima riga dovrebbe apparire la dichiarazione che specifica la natura di documento XML. Ma non è che tu stai guardando la sorgente della pagina? L’esportazione è un’altra cosa, concerne proprio i contenuti. La si raggiunge dalle pagine di controllo delle impostazioni del blog. Qualcuno l’ha fatto e può dare un’indicazione a Monica, prima che faccia un microtutorial io? Sarebbe più semplice ma è meglio batterci un po’ la testa tutti insieme …

  5. monica says:

    sto provando a fare il compito, ma:
    Prima cosa io riesco solo a vedere html del mio blog, come faccio a tramutarlo in xml.
    Secondo ho messo tutto nel file del blocco note ma vedo solo formato html.
    Domanda devo cambiarlo io intervenedo sul file html?

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...