[Gfoss] Procedura XSLT per convertire una scheda metadatao XML in HTML.

Salve,
Lo avevo gia' annunciato diverso tempo fa'.

Spesso serve poter leggere rapidamente una scheda di metadato.
Poiche' vengono scambiate in XML leggerle non e' semplice.
Soluzioni per renderle leggibili sono tipicamente quelle di caricarle
in un sistema di catalogo.
La quale procedura e' spesso complessa e comunque richiede di accedere
a un catalogo disponibile.

L'occasione mi si e' presentata quando mi e' stato chiesto di
converitre un set di schede di metadato in XML in html.

Anziche' caricarle su un mastodontico catalogo internet per poi
riesportarle in HTML e comunque dover accettare una struttura del
documento a parer mio inadatta per questo tipo di schede.
Ho preferito svilupparmi uno script xslt che riproducesse un HTML che
in una unica pagina presentasse l'informazionecome io ritenevo che
andava presentata.

Allafine e' venuto fuori questo simpatico script in linguaggio XSLT
che consente di convertire una scheda di metadato in XML in HTML e
leggerla con un normale browser.

Il tutto client site. Ovvero senza richiedere l'accesso a un aggeggio
server che carica la scheda e poi ne riesporta una versione
rielaborata.

Inizialmente ero partito supportanto i soli tags dell'editor Inspire del JRC.
Poi, avendoci preso la mano e anche un po' per divertimento e un po'
per sfida, visto che avevo preso la mano con il linguaggio XSLT (un
linguaggio abbastanza cervellotico), ho spinto la compatibilita' anche
a una serie di tags molto particolari.
E tenendo presente la molteplicita' dei vari tags XML.

Tra cui anche la parte del DataQuality compreso il Lineage e il
ProcessStep e il Source Step.
Parte che considero la piu' importante di una scheda di metadato.

Per usarlo basta scaricarsi un programmino da riga di comando che si chiama

xsltproc.exe (su windows) e con esso invocare lo script.
Assieme allo script xslt ho messo a punto anche un semplice file batch
per windows che consente trmaite l' xsltproc di convertire tutte le
schede xml presenti in una cartella in analoghe schde html.
Lo script batch contiene 4 variabili tramite le quali si imposta dove
sono i binari, lo script xslt, la cartella in input delle schede xml e
l'output in html.

Alla fine quetse schede in HTML potra' leggersele o addirittura
pubblicarle su internet tramite un semplice server web e puntarle
anche da un servizio wms.

Il tutto infatti e' pensato per aiutare anche un eventuale soggetto
che deve pubblicare schede in html , ma non dispone di un sistema di
catalogo o non e' in grado di gestirlo.
Riducendo all'osso tutto il sistema.
Ovvero alla sola conversione di un fle xml in un file html.
Operazione che "stringi stringi" e' quella che serve.
Infatti alla fine basta esporre su internet le due scehde in xml e in
html e il piu' e' fatto.

Trovate questo script xslt con procedura batch e anche con gli
eseguibili per "eseguirlo " su una shell dos sotto windows al seguente
percorso.

https://github.com/aperi2007/xslt-mtd2html

La licenza e' GPL 3.0

Lo ho messo su github in quanto e' una mia iniziativa in quanto mi
serviva per convertire alcune schede di metadato da XML a HTML e non
e' e non e' assolutamente un qualcosa di rilasciato da RT.
Infine un piccolo chiarimento.

Saluti e buona fortuna.

--
-----------------
Andrea Peri
. . . . . . . . .
qwerty àèìòù
-----------------

Il 13/11/2015 00:29, Andrea Peri ha scritto:

Trovate questo script xslt con procedura batch e anche con gli
eseguibili per "eseguirlo " su una shell dos sotto windows al seguente
percorso.

https://github.com/aperi2007/xslt-mtd2html

La licenza e' GPL 3.0

Oh che bella notizia! Grazie.
Pensi che sarebbe utile integrarlo (anche) in QGIS, in modo da poter
facilitare la strutturazione del file di config ed il lancio del
comando, e dargli maggior visibilita'?
Saluti.
--
Paolo Cavallini - www.faunalia.eu
QGIS & PostGIS courses: http://www.faunalia.eu/training.html

On Fri, Nov 13, 2015 at 12:29:32AM +0100, Andrea Peri wrote:

https://github.com/aperi2007/xslt-mtd2html

La licenza e' GPL 3.0

Grazie !
Ho dato un'occhiata e ho alcune osservazioni (se sono benvenute):

1. I file binari non dovrebbero essere sotto controllo di revisione
    (dovrai riscrivere la storia per rimuoverli del tutto)

2. E' raccomandabile includere un header in ogni file coperto dalla
    licenza che include il copyright holder e una menzione breve di
    quale sia la licenza applicabile (immagino tu voglia consentirne
    la distribuzione anche con eventuali future versioni della GPL
    successive alla 3.0) -- vedi
    http://www.gnu.org/licenses/gpl-howto.it.html

3. Sarebbe utile includere nel README informazioni circa le
    dipendenze (HINT: sotto debian e derivati la xsltproc si installa con
    `apt-get install xsltproc`) l'uso e la homepage ufficiale
    (con git possono esserci molti mirror, meglio rendere chiaro quale
    sia quello ufficiale)

Felice condivisione !

--strk;

Non lo so . Non rientrava tra i miei obiettivi.

A me serviva una soluzione per convertire facilmente N-mila schede di
metadato in formato xml in una forma intelleggibile.
E questo me le converte tutte in pochi secondi.

Su qgis potresti fare una cosa pedissequa che con svariati click
converti 1 singola scheda.
Ma questo e' nato per convertire ad esempio 1000 schede xml in 1000
schede html in pochi secondi.

Dal mio punto di vista una interfaccia grafica e' una sovrastruttura
che non serve a niente.

A me era stato chiesto di mettere una serie di schede in formato HTML leggibile.
Fati due conti e preso atto che niente vi era a giro che producesse
schede facili da comprendere.
E i pochi softwares disponibili erano tutti rivolti all'editing e
percio' sezionavano la scheda in pagine distinte, anziche' proporre
tutto in unaunica pagina.

Unico che propone tutto insieme e' GeoNetwork, il quale pero'
costruisce una pagina che francamente e' formattata in una maniera un
po' assurda ai miei occhi.

Per cui ho deciso di investire un po' del mio tempo libero per mettere
in piedi questo codice di traduzione e ho scelto l' xslt perche' era
il linguaggio piu' ideale per questa problematica.
Sebbene l' xslt abbia dei vincoli che lo rendono poco compensibile a
chi e' avvezzo ai linguaggi procedurali.

Basti dire che in xslt 1.0 e impossibile fare un conteggio sequenziale
1,2,3,4,5.
Ragion per cui anche se avrei voluto metterci un conteggio progressivo
alle righe non e' stato possibile implementarlo senza perdere la
compatibilita' con l' xslt 1.0 che era un "must" per me.

Ovviamente ho preso delle scelte dal punto di vista della
formattazione del html.
Scelte che sono state dettate da alcuni colloqui con colleghi che
avrebbero poi utilizzato il risultato e dettate anche dal mio gradodi
conoscenza del metadato e tenendo conto che il metadato con la sua
molteplicita' su molte informazioni potrebbe avere delle ripetizioni
che ovviamente vanno opportunamente gestite.

Quindi alla fine sono giunto a questa versione di codice.
Il codice e' a disposizione con licenza GPL v3.
Chiunque vuole usarlo e' libero di farlo nel rispetto della licenza.

L'avvertenza e' che il codice XSLT e' ostico veramente e anche
incomprensibile se non si e' padroni della sua logica di ragionamento.
Anche per questo ci ho tenuto a metterci dentro piu' roba possibile
fiche' ero fresco su tale linguaggio.

Una avvertenza: poiche' ho usato il codice per fare la conversione per
uso intenro a dei miei colleghi,ho dentro il rimando al logo di RT.

Ho ritenuto utile mantenerlo per dare un esmepio di come si inserisce
un logo dentro il codice XSLT (operazione non banale per chi e' alle
prime armi).

In maniera che se qualcuno vuole cambiarlo con il logo di un altro
ente o associazione, puo' farlo facilmente cambiarno l'indirizzo della
url riferita.

A.

Il 13 novembre 2015 07:57, Paolo Cavallini <cavallini@faunalia.it> ha scritto:

Il 13/11/2015 00:29, Andrea Peri ha scritto:

Trovate questo script xslt con procedura batch e anche con gli
eseguibili per "eseguirlo " su una shell dos sotto windows al seguente
percorso.

https://github.com/aperi2007/xslt-mtd2html

La licenza e' GPL 3.0

Oh che bella notizia! Grazie.
Pensi che sarebbe utile integrarlo (anche) in QGIS, in modo da poter
facilitare la strutturazione del file di config ed il lancio del
comando, e dargli maggior visibilita'?
Saluti.
--
Paolo Cavallini - www.faunalia.eu
QGIS & PostGIS courses: http://www.faunalia.eu/training.html
_______________________________________________
Gfoss@lists.gfoss.it
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it.
786 iscritti al 30.9.2015

--
-----------------
Andrea Peri
. . . . . . . . .
qwerty àèìòù
-----------------

On Fri, Nov 13, 2015 at 08:34:41AM +0100, Andrea Peri wrote:

Su qgis potresti fare una cosa pedissequa che con svariati click
converti 1 singola scheda.

LOL -- Aperoll e' tornato :slight_smile:

--strk;

Come faccio a mettere l'xsltproc a tenerlo dentro gitbub, ma fuori
dalla parte soggetta a controllo di revisione ?

Il mio obiettivo e' rendere facile il suo impiego.

Tenuto conto che per l'xsltproc richede 4 dll per funzionare e che non
sono tutte insieme ma vanno reperite ai 4 angoli del mondo, ho
ritenuto cosa utile per chi lo volesse usare di metterle tutte a
disposizione assieme.
Cosi' e pronto all'uso.

D'altronde sapevo bene che non centrano niente con il codice.
Ma quale altra soluzione avrei per pacchettizzzare ?

Se mettessi il solo codice xslt senza questi eseguibili.
L'utente normale (che e' il mio target) non riuscirebbe a usarlo.

A.

Il 13 novembre 2015 08:26, Sandro Santilli <strk@keybit.net> ha scritto:

On Fri, Nov 13, 2015 at 12:29:32AM +0100, Andrea Peri wrote:

https://github.com/aperi2007/xslt-mtd2html

La licenza e' GPL 3.0

Grazie !
Ho dato un'occhiata e ho alcune osservazioni (se sono benvenute):

1. I file binari non dovrebbero essere sotto controllo di revisione
    (dovrai riscrivere la storia per rimuoverli del tutto)

2. E' raccomandabile includere un header in ogni file coperto dalla
    licenza che include il copyright holder e una menzione breve di
    quale sia la licenza applicabile (immagino tu voglia consentirne
    la distribuzione anche con eventuali future versioni della GPL
    successive alla 3.0) -- vedi
    http://www.gnu.org/licenses/gpl-howto.it.html

3. Sarebbe utile includere nel README informazioni circa le
    dipendenze (HINT: sotto debian e derivati la xsltproc si installa con
    `apt-get install xsltproc`) l'uso e la homepage ufficiale
    (con git possono esserci molti mirror, meglio rendere chiaro quale
    sia quello ufficiale)

Felice condivisione !

--strk;

--
-----------------
Andrea Peri
. . . . . . . . .
qwerty àèìòù
-----------------

On Fri, Nov 13, 2015 at 08:39:19AM +0100, Andrea Peri wrote:

Come faccio a mettere l'xsltproc a tenerlo dentro gitbub, ma fuori
dalla parte soggetta a controllo di revisione ?

Non so se github supporti il concetto di "distribuzione binaria".
Tra l'altro distribuendo xslproc come eseguibile senza includere
le informazioni circa il suo copyright e la sua licenza non e'
consentito (licenza MIT, http://opensource.org/licenses/mit-license.html)

Il mio obiettivo e' rendere facile il suo impiego.

Intendi la sua installazione, immagino ?
Non e' quello lo scopo di un sistema di controllo di revisione.

C'e' da considerare soprattutto che ad una singola versione del codice
possono corrispondere diversi "pacchetti installabili", a seconda del
sistema su cui si vuole impiegare il codice finale.

Tenuto conto che per l'xsltproc richede 4 dll per funzionare e che non
sono tutte insieme ma vanno reperite ai 4 angoli del mondo, ho
ritenuto cosa utile per chi lo volesse usare di metterle tutte a
disposizione assieme.
Cosi' e pronto all'uso.

E' pronto all'uso solo per quelli che hanno un sistema operativo
compatibile con le .dll e gli .exe che stai distribuendo.

Dovresti prevedere la possibilita' di avere diversi pacchetti binari,
assicurandoti ovviamente di rispettare la licenza di quel che
distribuisci.

D'altronde sapevo bene che non centrano niente con il codice.
Ma quale altra soluzione avrei per pacchettizzzare ?

Usare un'altro servizio, solo per il download.
Alcuni servizi di "code hosting" hanno un'area dedicata, vedi la
colonna "Release Binaries" qui:
https://en.wikipedia.org/wiki/Comparison_of_source_code_hosting_facilities#Features
Tra l'altro leggo in quella tabella che in effetti github la
supporta, ma non so esattamente in che forma la intendano (potrebbe
essere una trappola ! :slight_smile:

Se mettessi il solo codice xslt senza questi eseguibili.
L'utente normale (che e' il mio target) non riuscirebbe a usarlo.

Io credo di essere normale ma con quell'.exe e quelle .dll non
saprei che farmene :slight_smile:

--strk;

Certo.
Il mio obittivo era windows,
mica linux.
Io sul mio portatile ho windows, mica linux.

Non ho la piu' pallida idea se xsltproc esista su linux, o se esista
qualcosa altro che lo sostituisce.
Non ho obiettivi di supportare a 360gradi tutto lo scibile informatico
esistente.

I sistemi di download sono tutti a pagamento.
Eventualmente potrei metterli su google che fornisce una area di
download gratuito e da li' farli scaricare.
Pero' non so se anche Google richiede un tipo di licenza forse incompatibile.

Oppure li metto su dropbox in modalit'a condivisione e da li' li
faccio scaricare.
Stasera ci penso e modifico la cosa.

Nel frattempo ho inserito il disclaimer nel codice xslt.

Come vedrai non e' in testa.
Nei file xslt la prima riga e' obbligata quella che vedi altrimenti si
rischia l'incompatibilita' con qualche parser.

A.

Il 13 novembre 2015 09:00, Sandro Santilli <strk@keybit.net> ha scritto:

On Fri, Nov 13, 2015 at 08:39:19AM +0100, Andrea Peri wrote:

Come faccio a mettere l'xsltproc a tenerlo dentro gitbub, ma fuori
dalla parte soggetta a controllo di revisione ?

Non so se github supporti il concetto di "distribuzione binaria".
Tra l'altro distribuendo xslproc come eseguibile senza includere
le informazioni circa il suo copyright e la sua licenza non e'
consentito (licenza MIT, http://opensource.org/licenses/mit-license.html)

Il mio obiettivo e' rendere facile il suo impiego.

Intendi la sua installazione, immagino ?
Non e' quello lo scopo di un sistema di controllo di revisione.

C'e' da considerare soprattutto che ad una singola versione del codice
possono corrispondere diversi "pacchetti installabili", a seconda del
sistema su cui si vuole impiegare il codice finale.

Tenuto conto che per l'xsltproc richede 4 dll per funzionare e che non
sono tutte insieme ma vanno reperite ai 4 angoli del mondo, ho
ritenuto cosa utile per chi lo volesse usare di metterle tutte a
disposizione assieme.
Cosi' e pronto all'uso.

E' pronto all'uso solo per quelli che hanno un sistema operativo
compatibile con le .dll e gli .exe che stai distribuendo.

Dovresti prevedere la possibilita' di avere diversi pacchetti binari,
assicurandoti ovviamente di rispettare la licenza di quel che
distribuisci.

D'altronde sapevo bene che non centrano niente con il codice.
Ma quale altra soluzione avrei per pacchettizzzare ?

Usare un'altro servizio, solo per il download.
Alcuni servizi di "code hosting" hanno un'area dedicata, vedi la
colonna "Release Binaries" qui:
https://en.wikipedia.org/wiki/Comparison_of_source_code_hosting_facilities#Features
Tra l'altro leggo in quella tabella che in effetti github la
supporta, ma non so esattamente in che forma la intendano (potrebbe
essere una trappola ! :slight_smile:

Se mettessi il solo codice xslt senza questi eseguibili.
L'utente normale (che e' il mio target) non riuscirebbe a usarlo.

Io credo di essere normale ma con quell'.exe e quelle .dll non
saprei che farmene :slight_smile:

--strk;

--
-----------------
Andrea Peri
. . . . . . . . .
qwerty àèìòù
-----------------

On Fri, Nov 13, 2015 at 09:18:06AM +0100, Andrea Peri wrote:

Non ho la piu' pallida idea se xsltproc esista su linux, o se esista
qualcosa altro che lo sostituisce.

Te l'ho scritto nella prima mail che installare xsltproc su linux si fa
con un semplice apt-get :slight_smile:

Considera che i commenti associati alle funzioni PostGIS e il "garden
test" sono generati con xslproc (grazie a Regina).

Non ho obiettivi di supportare a 360gradi tutto lo scibile informatico
esistente.

Non e' richiesto.

I sistemi di download sono tutti a pagamento.

Non mi risulta.

Eventualmente potrei metterli su google che fornisce una area di
download gratuito e da li' farli scaricare.

...

Oppure li metto su dropbox in modalit'a condivisione e da li' li
faccio scaricare.

Appunto :slight_smile:

Nel frattempo ho inserito il disclaimer nel codice xslt.

Grande !

Come vedrai non e' in testa.
Nei file xslt la prima riga e' obbligata quella che vedi altrimenti si
rischia l'incompatibilita' con qualche parser.

Pure la seconda ?
https://github.com/aperi2007/xslt-mtd2html/blob/8069e22324035eaa55354300e91340cda9cac75c/procedura/iso19115-inspire-editor.xsl

--strk;