Pre-elaborazione del motore Web

Questo articolo contiene i seguenti argomenti:
casm173
Questo articolo contiene i seguenti argomenti:
Il funzionamento del motore Web prevede due fasi per l'elaborazione di un file HTMPL:
  • Fase di pre-elaborazione: durante questa fase esegue la lettura del file HTMPL e di tutti i file a cui fa riferimento (inclusi i file richiamati dai tag PDM_INCLUDE e PDM_MACRO). L'output della pre-elaborazione corrisponde a una voce nella cache interna del motore Web.
  • Fase di generazione: durante questa fase esegue la lettura del modulo dalla cache e genera l'HTML. L'output della generazione corrisponde all'HTML passato al browser.
Generalmente, la fase di pre-elaborazione viene eseguita una sola volta per ogni modulo nel corso dell'attività del motore Web. La fase di generazione avviene ogni volta che viene richiesto un modulo.
Durante la fase di pre-elaborazione è possibile usare i tag PDM_SET e PDM_EVAL per generare e memorizzare le informazioni, ad esempio testo HTML, utilizzabili dal motore Web durante la fase di generazione.
Variabili di pre-elaborazione
Le variabili di pre-elaborazione iniziano con la stringa “$PRE.”. Vengono create e aggiornate con il tag PDM_SET. La sintassi di questo tag, usato con una variabile di pre-elaborazione, è la seguente:
<PDM_SET PRE.name[+]=value>
Questo tag assegna o aggiorna una variabile di preelaborazione, creandola se necessario. Viene elaborato quando il motore Web lo incontra leggendo un modulo. Solo le istruzioni PDM_IF invarianti interessano il PDM_SET di una variabile di preelaborazione; le altre vengono ignorate.
Rilevamento di istruzioni PDM_IF invarianti
Quando analizza un modulo, il motore Web rileva le istruzioni PDM_IF invarianti. Un'istruzione PDM_IF invariante è un'istruzione il cui argomento è costituito interamente da variabili letterali, di ambiente, di preelaborazione e di proprietà costanti. Quando il motore Web rileva un'istruzione PDM_IF invariante, ne valuta immediatamente la condizione. Le conseguenze sono:
  • I tag PDM_SET e PDM_EVAL non elaborati da un'istruzione PDM_IF invariante vengono ignorati. Notare che tutti gli altri tag pdm_eval e PDM_SET che fanno riferimento alle variabili di preelaborazione vengono eseguiti al momento dell'elaborazione, anche se si trovano all'interno di un'istruzione PDM_IF non invariante.
  • I riferimenti alle variabili del modulo non elaborati da un'istruzione PDM_IF invariante vengono ignorati e il loro valore non viene caricato quando viene usato il modulo. È possibile utilizzare questa tecnica per migliorare le prestazioni di un modulo. Ad esempio, se un modulo contiene i seguenti dati, il motore Web carica il valore di $args.def prima di visualizzarlo:
    <PDM_IF "$env.NX_OTB_MARKET == "itil" && "$args.a" == 1> <h1>This is form $args.def</h1> </PDM_IF>
    Tuttavia, se viene scritto il seguente segmento, il motore Web determina che il primo PDM_IF è invariante e recupera il valore di $args.def solo se $NX_OTB_MARKET è "itil".
    <PDM_IF "$env.NX_OTB_MARKET == "itil"> <PDM_IF "$args.a" == 1> <h1>This is form $args.def</h1> </PDM_IF> </PDM_IF>
PDM_EVAL: inserimento del testo di una variabile di preelaborazione
Il tag PDM_EVAL inserisce il valore di una variabile di preelaborazione nell'input per il parser del motore Web. Se usata all'interno di una macro, l'effetto viene ritardato fino al completamento della macro.
Il tag PDM_EVAL funziona in modo simile a PDM_INCLUDE o PDM_MACRO. Inserisce il testo nel parser in corrispondenza del tag, esattamente come se il valore della variabile fosse stato codificato al posto del tag.
La sintassi di PDM_EVAL è la seguente:
<PDM_EVAL text=PRE.name>
dove PRE.nome specifica il nome della variabile di preelaborazione il cui valore deve essere inserito nell'input del motore Web.
L'esecuzione del tag PDM_EVAL può essere controllata dalle istruzioni PDM_IF invarianti.
su UNIX, è necessario impostare LIBPATH prima di eseguire l'utilità. Usare pdm_task per realizzare questa operazione. Per esempio, prima di avviare l'utilità, eseguire "pdm_task pdm_eval".