function prestazione(data,diagnosi){
this.data=data;
this.diagnosi=diagnosi;
}
function paziente(){
this.prestazioni=new Array;
this.aggiungiPrestazione = function(data,diagnosi){
var prest=new prestazione(data,diagnosi);
this.prestazioni.push(prest);
}
}
function paziente1(){
this.problemi=new Array;
this.aggiungiProblema = function(problema){
this.problemi.push(problema);
}
}
paziente1.prototype=new paziente();
var Paziente=new paziente1();
Paziente.aggiungiProblema("diabete");
Paziente.aggiungiPrestazione("14/2/2013","ipertensione");
Paziente.aggiungiPrestazione("10/3/2013","colica renale");
for(var i=0;i<Paziente.prestazioni.length;i++)
alert(Paziente.prestazioni[i].data+" "+Paziente.prestazioni[i].diagnosi);
for(var i=0;i<Paziente.problemi.length;i++)
alert(Paziente.problemi[i]);
Con questa ho aggiunto anche i problemi in anamnesi.
Queste non sono lezioni, ma appunti che prendo, da non professionista del campo ma da semplice appassionato, per facilitarmi lo studio della programmazione, quindi possono contenere, e in effetti contengono, diversi errori e improprietà, che poi correggo, quando me ne accorgo, con i miei progressi. Per questo non sono assolutamente da prendere per oro colato, ma anzi con molto senso critico.
venerdì 9 maggio 2014
Classe derivata di paziente per mezzo di ereditarietà tramite prototipo
Creazione di una classe derivata di "paziente" per mezzo dell'ereditarietà tramite prototipo.
Un oggetto di tipo "paziente" per l'archiviazione delle pregresse prestazioni.
Un codice scritto di getto senza neanche un errore...
Ecco il mio modello per elencare le prestazioni di un paziente.
Ecco il mio modello per elencare le prestazioni di un paziente.
function prestazione(data,diagnosi){
this.data=data;
this.diagnosi=diagnosi;
}
function paziente(){
this.prestazioni=new Array;
this.aggiungiPrestazione = function(data,diagnosi){
var prest=new prestazione(data,diagnosi);
this.prestazioni.push(prest);
}
}
var Paziente=new paziente();
Paziente.aggiungiPrestazione("14/2/2013","ipertensione");
Paziente.aggiungiPrestazione("10/3/2013","colica renale");
for(var i=0;i<Paziente.prestazioni.length;i++)
alert(Paziente.prestazioni[i].data+" "+Paziente.prestazioni[i].diagnosi);
giovedì 8 maggio 2014
Artifizio per salvare un file XML (da un mio vecchio studio).
Ecco come salvare un file XML modificato: ho trovato il link nel mio diario "grezzo".
Questo è il codice:
Ecco: creazione di un ActiveXObject FileSystemObject. Quindi creazione di un file di testo:
Il problema del path
Vediamo il path.
Il problema si pone quando una cartella del path ha degli spazi vuoti nel nome.
Pongo il file in una cartella con spazi vuoti ed ecco cosa ottengo prima di inserire questa riga. Il codice è ancora lo stesso, ma il file è salvato in una cartella chiamata "Cartella con gli spazi".
var fso=new ActiveXObject("Scripting.FileSystemObject");
var path=document.location.pathname;
path=path.substr(1,path.lastIndexOf("/"));
path=path.replace(/%20/g," ");
var f=fso.CreateTextFile(path+"data.xml",true);
f.write(xmlDoc.xml);
f.Close();
fso=null;
Rianalizziamolo...
Ecco: creazione di un ActiveXObject FileSystemObject. Quindi creazione di un file di testo:
function funzione(){
var fso=new ActiveXObject("Scripting.FileSystemObject");
var f=fso.CreateTextFile("Ciao.txt",true);
}
funzione();
Questo è sufficiente a crearmi nella stessa locazione del file in cui viene eseguito il codice un file "Ciao.txt".Il problema del path
Vediamo il path.
function funzione(){
var path=document.location.pathname;
document.write(path);
}
funzione();
Output:
/C:/Users/Antonello/Desktop/js.htmlNel codice che avevo creato in passato c'era anche una riga che ritagliava il path, ottenendo l'eliminazione del primo slash e del nome del file:
function funzione(){
var path=document.location.pathname;
path=path.substr(1,path.lastIndexOf("/"));
document.write(path);
}
funzione();
Output:
C:/Users/Antonello/Desktop/E anche una riga un po' "misteriosa"...:
path=path.replace(/%20/g," ");Ecco, ho ripassato il metodo replace e ho decifrato che questa riga l'avevo messa per sostituire globalmente (g) tutti i simboli %20 (codice ASCII per spazio) con uno spazio reale.
Il problema si pone quando una cartella del path ha degli spazi vuoti nel nome.
Pongo il file in una cartella con spazi vuoti ed ecco cosa ottengo prima di inserire questa riga. Il codice è ancora lo stesso, ma il file è salvato in una cartella chiamata "Cartella con gli spazi".
function funzione(){
var path=document.location.pathname;
path=path.substr(1,path.lastIndexOf("/"));
document.write(path);
}
funzione();
Output:
C:/Users/Antonello/Desktop/Cartella%20con%20gli%20spazi/Ecco con l'aggiunta di quella riga:
function funzione(){
var path=document.location.pathname;
path=path.substr(1,path.lastIndexOf("/"));
path=path.replace(/%20/g," ");
document.write(path);
}
funzione();
Output:
C:/Users/Antonello/Desktop/Cartella con gli spazi/Unendo questa stringa al nome del file da salvare, ottengo il path completo!
Alcuni metodi dell'oggetto XmlDoc
childNodes:
firstChild:
hasChildNodes:
var mioXml = new ActiveXObject("Microsoft.XMLDOM");
mioXml.async=false;
mioXml.load("doc.xml");
var radice=mioXml.documentElement;
var figli=radice.childNodes;
document.write(figli[0].text);
Ciao, ciccio.
firstChild:
var mioXml = new ActiveXObject("Microsoft.XMLDOM");
mioXml.async=false;
mioXml.load("doc.xml");
var radice=mioXml.documentElement;
var primoFiglio=radice.firstChild;
document.write(primoFiglio.text);
hasChildNodes:
var mioXml = new ActiveXObject("Microsoft.XMLDOM");
mioXml.async=false;
mioXml.load("doc.xml");
var radice=mioXml.documentElement;
document.write(radice.hasChildNodes);
true
Iniziamo XMLDOM
Apriamo un semplice file XML con XMLDOM.
Usiamo IE.
Buttiamo giù il codice JavaScript.
Adesso carico il file:
Provo a mettere in opera alcune istruzioni per manipolare il file XML:
nodeName che restituirebbe il nome del nodo.
Essendo posizionato sulla radice, mi dovrebbe restituire il nome del tag radice.
Correggo, e ottengo il risultato giusto: una casella di avviso con scritto
Adesso esploro tutti i metodi che mi permettono di manipolare il documento XML in Internet Explorer...
Usiamo IE.
Buttiamo giù il codice JavaScript.
var mioXml = new ActiveXObject("Microsoft.XMLDOM");
mioXml.async=false;
Non mi importa di dire fesserie, vado per ipotesi a valanga, suscettibili di correzioni e integrazioni successive:
Adesso carico il file:
var mioXml = new ActiveXObject("Microsoft.XMLDOM");
mioXml.async=false;
mioXml.load("doc.xml");
Adesso mi posiziono sulla radice del documento:
var mioXml = new ActiveXObject("Microsoft.XMLDOM");
mioXml.async=false;
mioXml.load("doc.xml");
var radice=mioXml.documentElement;
E adesso che mi sono posizionato, che faccio?Provo a mettere in opera alcune istruzioni per manipolare il file XML:
nodeName che restituirebbe il nome del nodo.
Essendo posizionato sulla radice, mi dovrebbe restituire il nome del tag radice.
var mioXml = new ActiveXObject("Microsoft.XMLDOM");
mioXml.async=false;
mioXml.load("doc.xml");
var radice=mioXml.documentElement;
var nome=radice.nodeName;
alert(nome);
Ottengo messaggi di errore, finché scopro il motivo: il documento non è valido perché è così formato:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE capitolo [ <!ELEMENT capitolo (paragrafo?)> <!ELEMENT paragrafo (#PCDATA)> ]> <capitolo> <paragrafo> Ciao, ciccio. </paragrafo> <paragrafo> </paragrafo> </capitolo>Provando con il mitico validatore svelo l'arcano: nel DTD c'è un punto interrogativo che esprime un numero di occorrenze del tag paragrafo da 0 a 1 volta, e invece esso è rappresentato due volte!
Correggo, e ottengo il risultato giusto: una casella di avviso con scritto
capitolo
Adesso esploro tutti i metodi che mi permettono di manipolare il documento XML in Internet Explorer...
mercoledì 7 maggio 2014
Simboli relativi alle occorrenze di un tag
Ora vediamo di capire i simboli che significano il numero di occorrenze di un tag.
Scrivo un + che dovrebbe significare una o più volte, e provo:
Con zero occorrenze del tag:
Con una occorrenza del tag:
con più occorrenze del tag:
Adesso con *, che dovrebbe significare "zero o più volte".
Zero occorrenze:
Una occorrenza:
Con più occorrenze:
Adesso metto il segno ? che dovrebbe significare zero o una occorrenza, e provo:
Zero occorrenze:
Una occorrenza:
Più occorrenze:
Riassumendo:
+ va da 1 a molte;
* va da 0 a molte;
? va da 0 a una.
Scrivo un + che dovrebbe significare una o più volte, e provo:
Con zero occorrenze del tag:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE capitolo [ <!ELEMENT capitolo (paragrafo+)> <!ELEMENT paragrafo (#PCDATA)> ]> <capitolo> </capitolo>
Non valido
Con una occorrenza del tag:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE capitolo [ <!ELEMENT capitolo (paragrafo+)> <!ELEMENT paragrafo (#PCDATA)> ]> <capitolo> <paragrafo> </paragrafo> </capitolo>
Valido!
con più occorrenze del tag:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE capitolo [ <!ELEMENT capitolo (paragrafo+)> <!ELEMENT paragrafo (#PCDATA)> ]> <capitolo> <paragrafo> </paragrafo> <paragrafo> </paragrafo> </capitolo>
Valido!
Adesso con *, che dovrebbe significare "zero o più volte".
Zero occorrenze:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE capitolo [ <!ELEMENT capitolo (paragrafo*)> <!ELEMENT paragrafo (#PCDATA)> ]> <capitolo> </capitolo>
Valido!
Una occorrenza:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE capitolo [ <!ELEMENT capitolo (paragrafo*)> <!ELEMENT paragrafo (#PCDATA)> ]> <capitolo> <paragrafo> </paragrafo> </capitolo>
Valido!
Con più occorrenze:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE capitolo [ <!ELEMENT capitolo (paragrafo*)> <!ELEMENT paragrafo (#PCDATA)> ]> <capitolo> <paragrafo> </paragrafo> <paragrafo> </paragrafo> </capitolo>
Valido!
Adesso metto il segno ? che dovrebbe significare zero o una occorrenza, e provo:
Zero occorrenze:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE capitolo [ <!ELEMENT capitolo (paragrafo?)> <!ELEMENT paragrafo (#PCDATA)> ]> <capitolo> </capitolo>
Valido!
Una occorrenza:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE capitolo [ <!ELEMENT capitolo (paragrafo?)> <!ELEMENT paragrafo (#PCDATA)> ]> <capitolo> <paragrafo> </paragrafo> </capitolo>
Valido!
Più occorrenze:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE capitolo [ <!ELEMENT capitolo (paragrafo?)> <!ELEMENT paragrafo (#PCDATA)> ]> <capitolo> <paragrafo> </paragrafo> <paragrafo> </paragrafo> </capitolo>
Non valido
Riassumendo:
+ va da 1 a molte;
* va da 0 a molte;
? va da 0 a una.
Ancora DTD: definizione di diversi tags.
Ecco un tag capitolo che contiene un tag paragrafo, validato dal validatore:
Andiamo a vederlo:
Ah, ecco: dovrebbe significare che contiene testo. E va bene pure questa!
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE capitolo [ <!ELEMENT capitolo (paragrafo+)> <!ELEMENT paragrafo (#PCDATA)> ]> <capitolo> <paragrafo> </paragrafo> </capitolo>Ho definito paragrafo come #PCDATA senza sapere minimamente cosa significasse.
Andiamo a vederlo:
Ah, ecco: dovrebbe significare che contiene testo. E va bene pure questa!
Iscriviti a:
Post (Atom)