Procedura XSLT per convertire una scheda metadatao XML in HTML.

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
14 messages Options
Reply | Threaded
Open this post in threaded view
|

Procedura XSLT per convertire una scheda metadatao XML in HTML.

Andrea Peri
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 àèìòù
-----------------
_______________________________________________
[hidden email]
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
Reply | Threaded
Open this post in threaded view
|

Re: Procedura XSLT per convertire una scheda metadatao XML in HTML.

pcav
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
_______________________________________________
[hidden email]
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
Reply | Threaded
Open this post in threaded view
|

Re: Procedura XSLT per convertire una scheda metadatao XML in HTML.

Sandro Santilli
In reply to this post by Andrea Peri
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;
_______________________________________________
[hidden email]
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
Reply | Threaded
Open this post in threaded view
|

Re: Procedura XSLT per convertire una scheda metadatao XML in HTML.

Andrea Peri
In reply to this post by pcav
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 <[hidden email]> 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
> _______________________________________________
> [hidden email]
> 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 àèìòù
-----------------
_______________________________________________
[hidden email]
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
Reply | Threaded
Open this post in threaded view
|

Re: Procedura XSLT per convertire una scheda metadatao XML in HTML.

Sandro Santilli
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 :)

--strk;
_______________________________________________
[hidden email]
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
Reply | Threaded
Open this post in threaded view
|

Re: Procedura XSLT per convertire una scheda metadatao XML in HTML.

Andrea Peri
In reply to this post by Sandro Santilli
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 <[hidden email]> 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 àèìòù
-----------------
_______________________________________________
[hidden email]
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
Reply | Threaded
Open this post in threaded view
|

Re: Procedura XSLT per convertire una scheda metadatao XML in HTML.

Sandro Santilli
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 ! :)

> 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 :)

--strk;
_______________________________________________
[hidden email]
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
Reply | Threaded
Open this post in threaded view
|

Re: Procedura XSLT per convertire una scheda metadatao XML in HTML.

Andrea Peri
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 <[hidden email]> 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 ! :)
>
>> 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 :)
>
> --strk;



--
-----------------
Andrea Peri
. . . . . . . . .
qwerty àèìòù
-----------------
_______________________________________________
[hidden email]
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
Reply | Threaded
Open this post in threaded view
|

Re: Procedura XSLT per convertire una scheda metadatao XML in HTML.

Sandro Santilli
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 :)

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 :)

> 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;
_______________________________________________
[hidden email]
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
Reply | Threaded
Open this post in threaded view
|

Re: Procedura XSLT per convertire una scheda metadatao XML in HTML.

Matteo De Stefano
In reply to this post by Andrea Peri
Molto interessante,

grazie Andrea per la condivisione!

Ciao,

Matteo

_______________________________________________
[hidden email]
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
Reply | Threaded
Open this post in threaded view
|

Re: Procedura XSLT per convertire una scheda metadatao XML in HTML.

Andrea Peri
Salve a tutti.

Giustamente Santilli mi ha fatot notare alcuni errori che avevo fatto
con la condivisione mettendoci dentor la roba xslt che non centra
niente e pesa ben 40mb rispetto al codice.

L'unico modo per riuscire a risolvere per bene la questione e'
droppare via tutto quanto.
Cosa che ho appena fatto.
Poi co attenzione nel fine settmana procedero' a ripristinare solo il
pezzo essenziale , oppure a trovare una altra location piu' adeguata.

Quindi per ora il tutto e' di nuovo offline, faccio sapere appena
sara' nuovamente disponibile da qualche parte.

Saluti e scusate per ora.


Il 13 novembre 2015 09:34, Matteo De Stefano
<[hidden email]> ha scritto:
> Molto interessante,
>
> grazie Andrea per la condivisione!
>
> Ciao,
>
> Matteo



--
-----------------
Andrea Peri
. . . . . . . . .
qwerty àèìòù
-----------------
_______________________________________________
[hidden email]
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
Reply | Threaded
Open this post in threaded view
|

Re: Procedura XSLT per convertire una scheda metadatao XML in HTML.

ptagliolato
In reply to this post by Andrea Peri
Perché non usare direttamente il processore xslt del browser?
Non sono riuscito a vedere il tuo codice in github, ma se si tratta di un xslt e in particolare in versione 1, penso sia la strategia più "light".
Con quasi tutti i browser, tra l'altro, se un documento xml specifica uno "stylesheet" (ossia: un documento xslt)  il contenuto viene automaticamente convertito con il foglio di stile xsl.
La direttiva va all'inizio del documento xml, per intenderci dopo la prima riga
<?xml version="1.0" encoding="UTF-8"?>
ed è:
<?xml-stylesheet href="md2html.xsl" type="text/xsl"?>

A questo punto si potrebbe anche fare a meno di salvare l'html prodotto e basterebbe avere una copia dei file originali in xml con questo preambolo. Basta in tal caso lavorare con un processore di file di testo (penso a awk, per esempio).

In alternativa si può accedere al motore xslt del browser via Javascript.

P.S. per la numerazione delle righe io penserei alla funzione position() che è compatibile con xslt 1 e che puoi usare sia se applichi dei template (apply-template) o se realizzi dei cicli su delle liste di nodi (for-each).
p
Reply | Threaded
Open this post in threaded view
|

Re: Procedura XSLT per convertire una scheda metadatao XML in HTML.

Andrea Peri
Ciao ,
apprezzo il contributo.

La strategia del javascript e del parsing direttamente nella pagina
del browser e' cosa nota.

Se cerchi in mezzo alle slides, la troverai da me citata nella mia
presentazione di qualche anno fa' a Bologna (convegno gfoss).

Questo solo per dirti che la conoscevo e in partenza avevo pure
ipotizzato di andare per quella strada. Ma poi la ho esclusa perche'
era troppo complicata per un utente normale.
Io cercavo roba ancora piu' semplice e a massimo risultato e compatibilita'.

Se ti interessa tale strategia, in tale slides troverai una citazione
e dei links interesanti.

Infatti nella nostra infrastruttura ioho impiegato la strategia del
parsing al volo del XML su browser in javascript che te citi.
Per generare una pagina html di risposta a partire da una query syu un
server WFS che come saprai risponde in GML che e' a tutti gli effetti
un XML e quindi parserizzabile con un processore xslt.

Parserizzare un GML e' un po' difficile per tutti i namespaces che ha,
pero' alla fine deisalmi e' solo una lista di valori in fila indiana.
Uno dei quali e' una geomatria.
QUindi abbastanza semplice da processare in xslt e riportare in forma
tabellare (in html).

Ma soprattutto un GML e' sempre uguale a se stesso.

Invece la scheda xml di metadato e' tutta una altra storia.
Puo' non essere mai uguale, a seconda della sua provenienza e prevede
tantissimi tags in piu', tra loro anche nidificati e anche con
svariata molteplicita' e a volte cisono o non ci sono.

Un bel puzzle in cui districarsi con un xslt.

NOn ho comunque supportato il 100% dei possibili tags diuna scheda
dimetadato, ma son sceso abbastanza in profondita, studiandomi sia le
schede che avevano noi (tra le piu' complicate), sia alcune riprese da
RNDT e anche alcune generate dall'editor Inspire el JRC.

E in alcuni casi ho pure customizzato l'xml per inserirci dei tags che
volevo supportare per avere un xslt che fosse in grado di masticare
quanto piu'possibile tutti i tags piu' che immaginavo avrebbero mai
potuto comparire in una scheda compilata che ci poteva ritornare.

In merito alla funzione "position":

Certamente te saprai che la funzione position non e' un contatore, ma
riporta invece la posizione del tag.

Il che puo' coincidere con il valore di un contatore se i tags del xml
sono in fila indiana uno dopo l'altro e tutti al medesimo livello.

Ma la scheda XML di una scheda di metadato puo' non essere cosi'.
Anzi non lo e' quasi mai.
A meno che uno non compili solo quei 4-5 valori che sono nel primo
livello e che pero' sono sempre uguali.

Per semplificare il discorso per i non addetti:

Se il file XML e' semplice il comando position riporterebbe:

2,
3,
4,
5

e quindi rappresentando un progressivopoteva anche andare bene.

Ma poi in qualche caso , (quasi sempre in realta0) salta fuori una
qualche nifdificazione che fa saltare la posizione del tag
interferendo nel valore del progressivo.

Per intendersi in una scheda di metadato il position ritornerebbe
qualcosa di questo genere:

2,
6,
13,
34,
45

Certamente vi e' la progressivita' , ma non mi piaceva mostrare un
progressivo dopo il 2 mostrava il 6 e non il 3.
:

Per cui ho soprasseduto all'uso del position.

Un vero progressivo si riesce ad avere con l' xslt 20 che purtroppo
non e' molto diffuso e a quel che so' non esiste un processore in
forma di eseguibile su piataforma windows

ps:
Il Java lo avevo escluso a priori per tutta una serie di altre considerazioni.

A.


Il 13 novembre 2015 17:35, ptagliolato <[hidden email]> ha scritto:

> Perché non usare direttamente il processore xslt del browser?
> Non sono riuscito a vedere il tuo codice in github, ma se si tratta di un
> xslt e in particolare in versione 1, penso sia la strategia più "light".
> Con quasi tutti i browser, tra l'altro, se un documento xml specifica uno
> "stylesheet" (ossia: un documento xslt)  il contenuto viene automaticamente
> convertito con il foglio di stile xsl.
> La direttiva va all'inizio del documento xml, per intenderci dopo la prima
> riga
> <?xml version="1.0" encoding="UTF-8"?>
> ed è:
> <?xml-stylesheet href="md2html.xsl" type="text/xsl"?>
>
> A questo punto si potrebbe anche fare a meno di salvare l'html prodotto e
> basterebbe avere una copia dei file originali in xml con questo preambolo.
> Basta in tal caso lavorare con un processore di file di testo (penso a awk,
> per esempio).
>
> In alternativa si può accedere al motore xslt del browser via Javascript.
>
> P.S. per la numerazione delle righe io penserei alla funzione position() che
> è compatibile con xslt 1 e che puoi usare sia se applichi dei template
> (apply-template) o se realizzi dei cicli su delle liste di nodi (for-each).
>
>
>
> --
> View this message in context: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/Procedura-XSLT-per-convertire-una-scheda-metadatao-XML-in-HTML-tp7594995p7595038.html
> Sent from the Gfoss -- Geographic Free and Open Source Software - Italian mailing list mailing list archive at Nabble.com.
> _______________________________________________
> [hidden email]
> 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 àèìòù
-----------------
_______________________________________________
[hidden email]
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
Reply | Threaded
Open this post in threaded view
|

Re: Procedura XSLT per convertire una scheda metadatao XML in HTML.

Andrea Peri
Non lo avevo pensato.
Anzi avevo apprezzato il contributo.
Forse sono stato un po' troppo sbrigativo nella risposta e questo puo'
averti ingannato.

A questo proposito se ti interessano le trasformazioni xslt, puo dare
una occhiata alle mie trasformazioni xslt per la decodifica del GML.

La trovi a questo link.

Il codice xslt e' progettato per decodificare il GML generato dal
server wfs TinyOWS.

Purtroppo da server wfs a server wf ci sono piccole differenze
(quantomeno nei namespaces) e all'epoca non ero sufficientemente
skilled da riuscire a fare una trasformata xslt a prova di server wfs.

Di seguito te ne elenco alcune:

Questa invoca l'elenco delle strade di un comune (applicando un filtro
al volo) dal server wfs e lo decodifica con apposita trasformazione
xslt.
E' interessante anche perche' fa fare l filtro al server wfs anziche'
prendersi l'intero dataset e filtrarlo localmente dal javascript. Il
che aumenta notevolmente le performance del sistema.
http://www502.regione.toscana.it/geoscopio/servizi/wfs/html/elenco_strade.html?com=047001

Questa invece decodifica lo strato fogli catastali(onde evitare vane
speranze, la geometria e' il bbox)
http://www502.regione.toscana.it/geoscopio/servizi/wfs/html/elenco_foglicat.html?com=047001

Questa invece elenca i fiumi che ricadono nel comune.
http://www502.regione.toscana.it/geoscopio/servizi/wfs/html/elenco_fiumi.html?com=047001

La lista completa la trovi qui.
http://www502.regione.toscana.it/geoscopio/servizi/wfs/html/comuni.html

Il codice xslt della trasformazione della scheda metadato lo
rimettero' in linea penso domani o al massimo il giorno dopo.

Saluti,

A.

Il 13 novembre 2015 21:19, P <[hidden email]> ha scritto:

> Ciao Andrea, non volevo essere polemico o saccente,se lo sono sembrato ti
> chiedo veramente scusa...
> Sono molto interessato al tuo progetto mi sembra estremamente interessante e
> da un po' di tempo penso a qualcosa di analogo in ambito SWE.
> Ho cercato di accedere al codice ma non era disponibile.
> Lo guarderò volentieri appena lo rimetterai in rete. Come scrivevo in lista
> partivo dall'ipotesi che si trattasse di un foglio xslt che realizzasse la
> trasformazione da xml a html e che cercassi un processore xslt da includere
> nel progetto.
> Penso che in tal caso per un utente la  soluzione puro xml orlato con il
> richiamo della trasformazione sarebbe stata una buona soluzione (di certo
> non complicata per l'utente finale che semplicemente avrebbe aperto col
> browser quella che per lui sarebbe stata una comune pagina "web"). Ma mi
> sembra di capire che non sia questo lo scenario. Mi mancano degli elementi
> senza il codice.
> Circa la funzione position quello che dici è assolutamente vero e ci ho
> sbattuto la testa diverse volte,d'altra parte spesso si può piegare il
> codice per esempio selezionando in modo esplicito con gli xpath i nodi
> "giusti" da cui partire per il conteggio,nei for-each o negli
> apply-templates. Per lo meno per me è stato utile farlo.
>
>
>
>
> _________________________________
> Paolo Tagliolato, Ph.D. Computer Science
> Remote Sensing Dep., IREA-CNR
> Istituto di Rilevamento Elettromagnetico dell’Ambiente
> Consiglio Nazionale delle Ricerche
> Via Bassini, 15, 20133 Milano, Italy
> [hidden email]
> [hidden email]
> 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 àèìòù
> -----------------



--
-----------------
Andrea Peri
. . . . . . . . .
qwerty àèìòù
-----------------
_______________________________________________
[hidden email]
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