» 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

~7d ago

joreg: Workshop on 22 02: Unlocking Shader Artistry: A Journey through ‘The Book of Shaders’ with FUSE. Signup here: https://thenodeinstitute.org/courses/ws23-vvvv-12-book-of-shaders/

~18d ago

joreg: Talk and Workshop on February 15 & 16 in Frankfurt: https://visualprogramming.net/blog/vvvv-at-node-code-frankfurt/

~20d ago

woei: @Joanie_AntiVJ: think so, looks doable

~20d ago

xd_nitro: Anyone remember who increased projector brightness by removing some components that product the color?

~21d ago

Joanie_AntiVJ: This looks super interesting (vectors over network) would anyone here know how to implement this in beta? https://github.com/madmappersoftware/Ponk

~28d ago

joreg: Workshop on 01 02: Data Sensing and Logging with Arduino Signup here: https://thenodeinstitute.org/courses/ws23-vvvv-09-data-sensing-and-logging-with-arduino-and-vvvv/

~1mth ago

domj: I've added myself to vvvv specialists available for hire See at the bottom, lmk if you want to collab or in need of tutoring! ❤️

~1mth ago

joreg: Workshop on 25.01: Create Sequencers and Precise Clock Based Tools. Signup here: https://thenodeinstitute.org/courses/ws23-vvvv-08-create-sequencers-and-precise-clock-based-tools-in-vvvv-gamma/