phpDocumentor tag
[ class tree: tag ] [ index: tag ] [ all elements ]

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

[ Top ]
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)

[ Top ]
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.)

[ Top ]
Properties
static array   $CLASSI_TAG = array(
'VAR' => 'XML_VAR'
,'PHP' => 'XML_PHP'
,'IF' => 'XML_IF'
,'SWITCH'=> 'XML_SWITCH'
,'TEST' => 'TAG'
,'CASE' => 'TAG'
,'AZIONE' => 'TAG'
,'REAZIONE' => 'TAG'
,'EXTRA_GET' => 'TAG'
,'EXTRA_RE_GET' => 'TAG'
,'POP_UP' => 'TAG'
,'THEN' => 'CONTENITORE'
,'ELSE' => 'CONTENITORE'
,'CONTENUTO' => 'CONTENITORE'
,'PAGINA' => 'TAG'
,'HREF' => 'XML_PHP'
,'INTESTAZIONE' => 'CONTENITORE'
,'LINK' => 'TAG'
,'CONST' => 'XML_CONST'
,'INCLUDE' => 'XML_INCLUDE'
)
[line 49]

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:
Access:  private


[ Top ]
static array   $CONTESTI_CLASSE = array(
'THEN' => array(
'/IF/THEN'
,'/WHEN/THEN'
,'/SWITCH/THEN'
),'ELSE'=>array('/IF/ELSE','/WHEN/ELSE','/SWITCH/ELSE'),'TEST'=>array('/IF/TEST','/WHEN/TEST','/SWITCH/TEST'),'CASE'=>'/SWITCH/CASE','HREF'=>array('/LINK_MAILTO/HREF','/LINK_HTML/HREF'),'AZIONE'=>array('/LINK_GENERICO/AZIONE','/LINK_CREA/AZIONE','/LINK_AGGIORNA/AZIONE','/LINK_ELIMINA/AZIONE','/LINK_FILTRA/AZIONE','/LINK_ANNULLA_FILTRO/AZIONE','/LINK_AGGIORNA_TUTTO/AZIONE','/LINK_AJAX_GENERICO/AZIONE','/LINK_AJAX_CREA/AZIONE','/LINK_AJAX_AGGIORNA/AZIONE','/LINK_AJAX_ELIMINA/AZIONE','/LINK_AJAX_FILTRA/AZIONE','/LINK_AJAX_ANNULLA_FILTRO/AZIONE','/LINK_AJAX_AGGIORNA_TUTTO/AZIONE'),'REAZIONE'=>array('/LINK_GENERICO/REAZIONE','/LINK_CREA/REAZIONE','/LINK_AGGIORNA/REAZIONE','/LINK_ELIMINA/REAZIONE','/LINK_FILTRA/REAZIONE','/LINK_ANNULLA_FILTRO/REAZIONE','/LINK_AGGIORNA_TUTTO/REAZIONE','/LINK_AJAX_GENERICO/REAZIONE','/LINK_AJAX_CREA/REAZIONE','/LINK_AJAX_AGGIORNA/REAZIONE','/LINK_AJAX_ELIMINA/REAZIONE','/LINK_AJAX_FILTRA/REAZIONE','/LINK_AJAX_ANNULLA_FILTRO/REAZIONE','/LINK_AJAX_AGGIORNA_TUTTO/REAZIONE'),'POP_UP'=>array('/LINK_GENERICO/POP_UP','/PICKER/LINK/POP_UP','/PICKER_FILTRO/LINK/POP_UP','/COD_DESC/LINK/POP_UP','/COD_DESC_FILTRO/LINK/POP_UP'),'EXTRA_GET'=>array('/LINK_GENERICO/EXTRA_GET','/LINK_CREA/EXTRA_GET','/LINK_AGGIORNA/EXTRA_GET','/LINK_ELIMINA/EXTRA_GET','/LINK_FILTRA/EXTRA_GET','/LINK_ANNULLA_FILTRO/EXTRA_GET','/LINK_AGGIORNA_TUTTO/EXTRA_GET','/PICKER/LINK/EXTRA_GET','/LINK_AJAX_GENERICO/EXTRA_GET','/LINK_AJAX_CREA/EXTRA_GET','/LINK_AJAX_AGGIORNA/EXTRA_GET','/LINK_AJAX_ELIMINA/EXTRA_GET','/LINK_AJAX_FILTRA/EXTRA_GET','/LINK_AJAX_ANNULLA_FILTRO/EXTRA_GET','/LINK_AJAX_AGGIORNA_TUTTO/EXTRA_GET'),'EXTRA_RE_GET'=>array('/LINK_GENERICO/EXTRA_RE_GET','/LINK_CREA/EXTRA_RE_GET','/LINK_AGGIORNA/EXTRA_RE_GET','/LINK_ELIMINA/EXTRA_RE_GET','/LINK_FILTRA/EXTRA_RE_GET','/LINK_ANNULLA_FILTRO/EXTRA_RE_GET','/LINK_AGGIORNA_TUTTO/EXTRA_RE_GET','/PICKER/LINK/EXTRA_RE_GET','/LINK_AJAX_GENERICO/EXTRA_RE_GET','/LINK_AJAX_CREA/EXTRA_RE_GET','/LINK_AJAX_AGGIORNA/EXTRA_RE_GET','/LINK_AJAX_ELIMINA/EXTRA_RE_GET','/LINK_AJAX_FILTRA/EXTRA_RE_GET','/LINK_AJAX_ANNULLA_FILTRO/EXTRA_RE_GET','/LINK_AJAX_AGGIORNA_TUTTO/EXTRA_RE_GET'),'LINK'=>array('/PICKER/LINK','/PICKER_FILTRO/LINK','/COD_DESC/LINK','/COD_DESC_FILTRO/LINK'))
[line 76]

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:
Access:  private


[ Top ]
static array   $TAG_NO_NS = array('SCRIPT', 'STYLE') [line 43]

Definisce quali tag vengono trasformati senza il namespace UBK

API Tags:
Access:  public


[ Top ]
static array   $TAG_SINGOLI = array('BR', 'LINK', 'META', 'BASE', 'HR', 'PARAM', 'SPACER', 'AREA', 'FRAME', 'IMG', 'INPUT') [line 37]

Definisce quali tag necessitano di chiusura "inline" in XML

API Tags:
Access:  public


[ Top ]
static array   $time = array('PARSE' => 0, 'NUM' => 0) [line 31]

Mantiene il conteggio delle pagine parsificate e del tempo impiegato, per le statistiche

API Tags:
Access:  public


[ Top ]
string   $contesto [line 194]

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:
Access:  private


[ Top ]
array   $errore [line 182]

Stringa contenente la descrizione dell'ultimo errore di parsing, impostata solo se la funzione parsifica ritorna null

API Tags:
Access:  public


[ Top ]
string   $livello [line 200]

Indica il livello di nidificazione, utile per l'identificazione univoca dei tag al momento della chiusura (vedi _chiusura)

API Tags:
Access:  private


[ Top ]
array   $pila [line 188]

Stack contenente gli oggetti-tag istanziati durante l'analisi del sorgente XML, impilati secondo la nidificazione sul sorgente stesso

API Tags:
Access:  private


[ Top ]
boolean   $XML = FALSE [line 207]

dice come trattare tag e attributi (lowercase, as-is)

API Tags:
Access:  private


[ Top ]
Methods
parsifica  [line 461]

  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:
Access:  public


[ Top ]
_aggiungi_a_contenitore  [line 350]

  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:
string   $dati: 

API Tags:
Access:  private


[ Top ]
_apertura  [line 362]

  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:
Access:  private


[ Top ]
_chiusura  [line 416]

  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:
Access:  private


[ Top ]
_contesto_corretto  [line 260]

  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:
Access:  private


[ Top ]
_dati  [line 443]

  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:
   $parser: 
   $dati: 

API Tags:
Access:  private


[ Top ]
_esiste_classe  [line 285]

  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:
Access:  private


[ Top ]
_in_contenitore  [line 336]

  bool _in_contenitore( )

Dice se il nodo in cima alla $pila e' un contenitore.


API Tags:
Access:  private


[ Top ]
_match  [line 215]

  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:
Access:  private


[ Top ]

Documentation generated on Thu, 25 Sep 2008 23:29:21 +0200 by phpDocumentor 1.4.0