Class: PARSER
Source Location: /c_parser.inc
Class PARSER
Class Overview
|
Parser dei documenti XHTML. Ha lo scopo di trasformare un documento XML in un albero di oggetti-tag su cui richiamare la trasformazione in HTML.
Located in /c_parser.inc [line 25]
|
Properties
|
Methods
|
Property Summary
| static array |
$CLASSI_TAG |
Definisce, per tutti quei TAG che hanno nome della classe di definizione differente dal nome del tag, o piu' classi associabili a seconda del contesto CONTESTI_CLASSE, i nomi della o delle classi che il tag puo' diventare |
| static array |
$CONTESTI_CLASSE |
Definisce, i contesti (ambiti di posizionamento entro il sorgente XHML) in cui certi tag o classi sono attivabili, ossia i contesti in cui il tag viene trasformato nella classe corrispondente o la classe viene istanziata |
| static array |
$TAG_NO_NS |
Definisce quali tag vengono trasformati senza il namespace UBK |
| static array |
$TAG_SINGOLI |
Definisce quali tag necessitano di chiusura "inline" in XML |
| static array |
$time |
Mantiene il conteggio delle pagine parsificate e del tempo impiegato, per le statistiche |
| string |
$contesto |
Indicazione del percorso (sequenza di tag nidificati) in cui il parser si trova al momento, guida l'istanziazione dei tag contestuali (vedi $CONTESTI_CLASSE) |
| array |
$errore |
Stringa contenente la descrizione dell'ultimo errore di parsing, impostata solo se la funzione parsifica ritorna null |
| string |
$livello |
Indica il livello di nidificazione, utile per l'identificazione univoca dei tag al momento della chiusura (vedi _chiusura) |
| array |
$pila |
Stack contenente gli oggetti-tag istanziati durante l'analisi del sorgente XML, impilati secondo la nidificazione sul sorgente stesso |
| boolean |
$XML |
dice come trattare tag e attributi (lowercase, as-is) |
Method Summary
| TAG |
&parsifica() |
Esegue il parsing del testo XML passato. Crea un parser SAX, imposta le routine di gestione evento (_apertura, _chiusura, _dati) e lancia il processo. Prima di questo vengono eseguite delle trasformazioni XSLT sugli oggetti di tipo grafico. Incrementa $PARSE_TIME. Ritorna null se il parsing non va a buon fine. |
| void |
_aggiungi_a_contenitore() |
Aggiunge una sezione testuale del sorgente nel contenitore in cima alla $pila. Da chiamare solo se siamo _in_contenitore. |
| void |
_apertura() |
Routine di gestione dell'evento di apertura di un tag nel sorgente XML dal parser. Se _esiste_classe associata al tag nel contesto corrente, una sua istanza viene generata e aggiunta alla $pila e collegata all'oggetto padre; altrimenti, se siamo {@_link _in_contenitore} viene aggiunto il testo di apertura ai suoi dati. |
| void |
_chiusura() |
Routine di gestione dell'evento di chiusura di un tag nel sorgente XML dal parser. Se abbiamo chiuso il nodo in cima alla $pila, esso ne viene rimosso; altrimenti, se siamo {@_link _in_contenitore} viene aggiunto il testo di chiusura ai suoi dati. |
| bool |
_contesto_corretto() |
E' fondamentale capire se il tag e' istanziabile nel contesto attuale ($contesto). Se la classe non ha contesti di validitïa' particolari, allora e' istanziabile in qualunque contesto. Se e' attivabile in un solo contesto, il controllo e' puntuale e diretto. Se e' attivabile in piu' contesti, bisogna cercare fra tutti. |
| void |
_dati() |
Routine di gestione delle sezioni dati del sorgente XML. Se siamo {@_link _in_contenitore} viene aggiunto il testo ai suoi dati; altrimenti, se c'e' un oggetto non-contenitore in cima alla pila, il testo va a costruire il suo contenuto. |
| mixed |
_esiste_classe() |
Dice se, nel contesto attuale, esiste una classe associata ad un certo tag, e se esiste, qual e'. Ad un tag corrisponde una classe se esiste una classe chiamata come il tag, oppure al tag e' associata una classe specifica, e se ci troviamo nel contesto corretto (_contesto_corretto). Ritorna false o il nome della classe. |
| bool |
_in_contenitore() |
Dice se il nodo in cima alla $pila e' un contenitore. |
| bool |
_match() |
Dice se il contesto passato matcha con il contesto attuale, in base anche ai meta-caratteri (*, !, |, etc.) |
Properties
Definisce, per tutti quei TAG che hanno nome della classe di definizione differente dal nome del tag, o piu' classi associabili a seconda del contesto CONTESTI_CLASSE, i nomi della o delle classi che il tag puo' diventare
API Tags:
Definisce, i contesti (ambiti di posizionamento entro il sorgente XHML) in cui certi tag o classi sono attivabili, ossia i contesti in cui il tag viene trasformato nella classe corrispondente o la classe viene istanziata
API Tags:
Definisce quali tag vengono trasformati senza il namespace UBK
API Tags:
Definisce quali tag necessitano di chiusura "inline" in XML
API Tags:
Mantiene il conteggio delle pagine parsificate e del tempo impiegato, per le statistiche
API Tags:
Indicazione del percorso (sequenza di tag nidificati) in cui il parser si trova al momento, guida l'istanziazione dei tag contestuali (vedi $CONTESTI_CLASSE)
API Tags:
Stringa contenente la descrizione dell'ultimo errore di parsing, impostata solo se la funzione parsifica ritorna null
API Tags:
Indica il livello di nidificazione, utile per l'identificazione univoca dei tag al momento della chiusura (vedi _chiusura)
API Tags:
Stack contenente gli oggetti-tag istanziati durante l'analisi del sorgente XML, impilati secondo la nidificazione sul sorgente stesso
API Tags:
dice come trattare tag e attributi (lowercase, as-is)
API Tags:
Methods
TAG &parsifica(
$filename, [string
$xml = NULL], [
$xml_type = FALSE], [
$xsl = TRUE]
)
|
|
Esegue il parsing del testo XML passato. Crea un parser SAX, imposta le routine di gestione evento (_apertura, _chiusura, _dati) e lancia il processo. Prima di questo vengono eseguite delle trasformazioni XSLT sugli oggetti di tipo grafico. Incrementa $PARSE_TIME. Ritorna null se il parsing non va a buon fine.
Parameters:
|
string |
$xml: |
testo XML da parsificare |
|
|
$filename: |
|
|
|
$xml_type: |
|
|
|
$xsl: |
|
API Tags:
void _aggiungi_a_contenitore(
string
$dati
)
|
|
Aggiunge una sezione testuale del sorgente nel contenitore in cima alla $pila. Da chiamare solo se siamo _in_contenitore.
Parameters:
API Tags:
void _apertura(
resource
$parser, string
$nome, array
$attributi
)
|
|
Routine di gestione dell'evento di apertura di un tag nel sorgente XML dal parser. Se _esiste_classe associata al tag nel contesto corrente, una sua istanza viene generata e aggiunta alla $pila e collegata all'oggetto padre; altrimenti, se siamo {@_link _in_contenitore} viene aggiunto il testo di apertura ai suoi dati.
Parameters:
|
resource |
$parser: |
|
|
string |
$nome: |
il nome del tag che viene chiuso |
|
array |
$attributi: |
coppie nome - valore degli attributi del tag |
API Tags:
void _chiusura(
resource
$parser, string
$nome
)
|
|
Routine di gestione dell'evento di chiusura di un tag nel sorgente XML dal parser. Se abbiamo chiuso il nodo in cima alla $pila, esso ne viene rimosso; altrimenti, se siamo {@_link _in_contenitore} viene aggiunto il testo di chiusura ai suoi dati.
Parameters:
|
resource |
$parser: |
|
|
string |
$nome: |
il nome del tag che viene chiuso |
API Tags:
bool _contesto_corretto(
string
$classe
)
|
|
E' fondamentale capire se il tag e' istanziabile nel contesto attuale ($contesto). Se la classe non ha contesti di validitïa' particolari, allora e' istanziabile in qualunque contesto. Se e' attivabile in un solo contesto, il controllo e' puntuale e diretto. Se e' attivabile in piu' contesti, bisogna cercare fra tutti.
Parameters:
|
string |
$classe: |
classe di cui verificare l'istanziabilita' |
API Tags:
void _dati(
$parser,
$dati
)
|
|
Routine di gestione delle sezioni dati del sorgente XML. Se siamo {@_link _in_contenitore} viene aggiunto il testo ai suoi dati; altrimenti, se c'e' un oggetto non-contenitore in cima alla pila, il testo va a costruire il suo contenuto.
Parameters:
API Tags:
mixed _esiste_classe(
string
$tag
)
|
|
Dice se, nel contesto attuale, esiste una classe associata ad un certo tag, e se esiste, qual e'. Ad un tag corrisponde una classe se esiste una classe chiamata come il tag, oppure al tag e' associata una classe specifica, e se ci troviamo nel contesto corretto (_contesto_corretto). Ritorna false o il nome della classe.
Parameters:
|
string |
$tag: |
tag aperto dal parser |
API Tags:
Dice se il nodo in cima alla $pila e' un contenitore.
API Tags:
bool _match(
string
$contesto
)
|
|
Dice se il contesto passato matcha con il contesto attuale, in base anche ai meta-caratteri (*, !, |, etc.)
Parameters:
|
string |
$contesto: |
contesto da verificare con $contesto |
API Tags:
|
|