» it.XML
This site relies heavily on Javascript. You should enable it if you want the full experience. Learn more.

it.XML

English

Intro

I documenti sono visti come costituiti di Elementi (tag) ed Attributi, piuttosto che di stringhe, migliorando quindi le performance.

Si può estrarre parti del documento in maniera semplice ed utilizzarle come spread di Elementi nella patch, dove sarà possibile analizzarle ulteriormente.

Rimane la possibilità di convertire un elemento in stringa col nodo AsString (Object), e riconvertirlo in un elemento col nodo AsElement (XML). Di norma e regola vorrete compiere questa operazione una sola volta: in lettura del documento, o in scrittura. Possiamo aggiungere che con tutte le altre operazioni che riguardano Elementi ed Attributi, questo nuovo modo di operare semplifica molto il lavoro dato che consente di pensarli come oggetti (object oriented).

Unire e Separare

Esistono nodi con i quali si può con facilità separare ed unire Elementi-XML (Tag XML) e Attributi: Element (XML Join), Element (XML Split), Attribute (XML Join), Attribute (XML Split).

Notate che concatenando differenti nodi Element (XML Split) - che restituisce inoltre gli elementi figli di elementi - si avrà la possibilità di scavare in profondità nella struttura XML: per esempio è possibile ottenere tutti gli elementi figli di un elemento, controllare le sue proprietà ed utilizzare il nodo Select (Node) per selezionare solo alcuni elementi. Diventa quindi possibile patchare una query...
Abbiamo notato come le cose possano complicarsi un bel po' durante queste operazioni, così abbiamo aggiunto altri nodi.

Nodi Utili per l'analisi di XML

Con GetElements e GetAttributes sono stati aggiunti ulteriori modi per scavare in profondità nel codice.
Facendo una ricerca per nome, si ottengono quelli che hanno un certo nome del tag o dell'attributo e sono figli diretti di un elemento o attributi di uno specifico elemento.
I nodi in questione: GetElements (XML ByName) e GetAttributes (XML ByName)

Facendo una ricerca tramite XPath, si può costruire una query più complessa che consenta di andare più a fondo: fatelo con i nodi GetElements (XML ByXPath) e GetAttributes (XML ByXPath)

Sebbene questi nodi siano flessibili e spreaddabili per quello che concerne una ricerca complessiva, potrebbero non essere molto utili quando, nella vostra patch, sapete che solo un certo tag o attributo sono rilevanti.

Per questi casi è stati generato il nodo Prune (XML), che consente di impostare questi tag o attributi nei pin di configurazione (quindi in modo statico, e non dinamico all'interno della patch stessa), con l'ottimo risultato che ottenete pin con nomi che non hanno la necessità di essere processati ulteriormente.

Per essere sicuri che la vostra patch possa lavorare con certi file XML o con certe stringhe, potete controllare la validità con il nodo IsValid (XML RelaxNG). Link: RelaxNG
Vengono supportati sia file .rng, XML Syntax, che .rnc, Compact Syntax.

XML

vvvv consente di analizzare codice XML usando i nodi XPath (XML) e XSLT (XML), agevolmente ed in diversi modi.

Il nodo XPath (XML)

XPath (XML) restituisce uno spread di corrispondenze da una XPath-Query.
XPath è una raccomandazione W3C e descrive il modo in cui navigare attraverso i documenti XML.
Si può usare Xpath per selezionare valori di elementi da un file XML. Ciascuna Espressione XPath, (XPath Expression), deve cominciare con "/". Un'espressione XPath è simile alla navigazione in un file system, in cui un "/", forward slash, seleziona le subdirectories.
Dentro le Parentesi [ ] si può specificare la Query; quindi si continuerà a definire il Percorso, (Path), con "/". Il simbolo "@" significa che si vuole selezionare un attributo.

Ci sono molte funzioni e operatori che possono essere usati. Non è possibile fornire qui spiegazioni dettagliate su XPath; per cui si suggerisce di fare riferimento a Microsoft Reference Online.
Un buon sito in cui imparare tutto a proposito di "X" èhttp://www.w3schools.com
Un buon punto di riferimento per la Sintassi e le Funzioni XPath è
XPath Reference su msdn.

Esempi

Nel caso in cui abbiate aperto un file .v4p usando un editor di testo, avrete notato come siano in realtà contentitori per puro codice XML. Gli esempi seguenti saranno quindi basati sui vostri files di vvvv.

Analizzando un file .v4p con questa query

/PATCH/NODE/PIN[@pinname='Descriptive Name']/@values

si produrrà uno spread che contiene tutti i Nomi Descrittivi, (Descriptive Names) usati nella patch.
con questa invece

/PATCH/NODE[@id='7']/@nodename

si produce il nodename del nodo avente id="7"

In questo modo si può navigare in XML con percorsi simili alla struttura delle cartelle nel vostro harddisk.

Si possono effettuare queries più avanzate come:

/PATCH/NODE[(@nodename='IOBox (Value Advanced)')and(not(PIN[contains(@pinname,'Descriptive Name')]))]/@id

che produrrà uno spread contenente tutti gli id degli IOBox Values che NON hanno un Descriptive Name.

Suggerimenti

Il nodo XSLT (XML)

Applica una Trasformazione XSL alla Stringa XML in ingresso.

Per poter sfruttare questo nodo si dovrebbe avere familiarità con (X)HTML, XML, XPath. Non avete idea di cosa siano? Visitate http://www.w3schools.com.

XSLT è basato su XSL, che corrisponde al CSS per HTML: un linguaggio stylesheet. Ulteriori funzioni consentono di trasformare lo Input Document. E questo è ciò che è chiamato XSLT.

Con XSLT si può aggiungere\rimuovere elementi ed attributi da\verso il file in output. Si può anche riordinare e smistare elementi, eseguire test e decidere quali elementi mostrare o nascondere; e molto altro.

XSLT usa XPath per navigare nel Documento. Leggere qui per altre informazioni.

In pratica...

Esempio:

<xsl:value-of select="BOUNDS/@top" />

Spiegazione:
L'Elemento "value-of" restituisce l'output. Il suo attributo "select" contiene l'Espressione XPath, (XPath Expression). Questa Espressione ci dice quale elemento debba essere restituito.

Messaggi d'errore

Messaggi d'errore verranno prodotti nel linguaggio del sistema operativo. Visitate il sito di Microsoft per Informazioni sui Codici d'Errore (Error Code Informations).

Altre info

https://www.w3schools.com/xml/xsl_intro.asp

anonymous user login

Shoutbox

~9h ago

Yoctopory: The EDSDK (DX11) doesn't seem to work with the newe r Canon EOS 2000D. The same patch works with the older EOS 1200D Any Ideas?

~14h ago

levi: Any one knows of solutions for large touch surfaces (fingers)? 5 meters or so ?

~2d ago

CeeYaa: https://www.youtube.com/watch?v=OkzfYQCLrCE thanks for the insights, impressive stuff @mediadog yes, it is a very nice CAVE

~2d ago

mediadog: @CeeYaa Why I'm learning Unreal, now if I could just afford wrap-around LED walls! Can do in vvvv too, it's just a CAVE

~3d ago

kleinkariert: @tonfilm any hint on how to generate Mel-Frequency images out of audio for mel-GAN in v4

~3d ago

joreg: @mediadog we're aware of this, see: https://discourse.vvvv.org/t/visual-c-2008-this-download-is-no-longer-available/17895 and i now also fixed the resp. links on the download page.

~3d ago

mediadog: FYI VC redist 2008 links bad in 38.1 installer and on web page

~4d ago

joreg: Reminder: Intro workshop to the all-new vvvv this Tuesday before the #vvvv meetup in #berlin. Signup here: https://nodeforum.org/announcements/2020-series-of-2h-introduction-workshops-to-vvvv-gamma/