Beschrijving van de DHP syntax, ondersteund door de Meteo en Tijd server.
Dhp Aanwijzing Omschrijving Voorbeeld
<?--dhp[]c> Aan het begin van een dhp bestand moet de dhp processing aangezet worden. De blokhaken na het woord 'dhp' geven tussen welke 2 karakters de dhp aanwijzingen staan. De 'c' achter de blokhaken geeft aan dat het bestand compact verstuurd wordt, dat wil zeggen: twee of meer 'spaties' (ook nieuwe regels, tabs etc.) worden door 1 nieuwe regel vervangen
De compacte modus kan ook tijdelijk in en uitgeschakeld worden.
<?--dhp[]c>
<?--dhp{}>
<?--dhp«»c>
[COMPACT]12  34[NO_COMPACT]1234
processor Een processor geeft aan hoe een bepaalde tekstuele waarde verwerkt moet worden. Een processor kan opgeslagen worden in P1..P9,PA..PZ. Een processor kan een 'translator' zijn, een 'formatter' of beide. Een translator kan simpelweg vertalen. Een formatter kan een variabele in een string omzetten m.b.v. een format string (vergelijkbaar met de printf format-string uit de taal c). Een formatter kan ook in een translatie gebruikt worden. Verder kunnen formatters gegevenswaarden in andere eenheden omzetten, of in een bepaalde textuele representatie. Een processor kan ook vanuit een bestand gevuld worden, wat handig kan zijn voor grote vertaaltabellen.
[PROCESSOR P1:0=nul,1=een,2=twee,*=veel]
[PROCESSOR P2:de temperatuur is %.1f graden]
[PROCESSOR P3:(celsius_2_fahrenheit)is %.1f F]
[PROCESSOR P4:<0=koud,0=fris,>0=%d graden]
[PROCESSOR P5:(ymdhms)]
[PROCESSOR PA:FILE(algorithm.def)]
variabele Een variabele kan een tekst bevatten. Deze tekst kan letterlijk opgegeven worden, maar kan ook een tekst uit de interne Meteo en Tijd database van de server zijn. Ook kunnen teksten via processors omgezet worden. Deze processors kunnen direct ingegeven worden, of er kan een P1..PZ gebruikt worden. De processors kunnen in serie gezet worden door middel van het pipe symbol ('|'). Variabelen hebben de naam V1..V9,VA..VZ. Daarnaast zijn er variabelen met de naam C1..C9 (als counters). Counters worden niet gereset wanneer een dhp pagina opgevraagd worden, terwijl variabelen wel 'leeg' gemaakt worden.
Wanneer een dhp bestand opgevraagd word, worden de variabelen gevuld met de argumenten die bij het opvragen meegegeven worden.
[VARIABLE V1:&12]
[VARIABLE V2:outside_temp]
[VARIABLE V3:out_side_temp|P2]
[INCREMENT C1]
gegevens Teksten kunnen worden afgewisseld met gegevens uit de meteo en tijd server. Deze kunnen op verschillende manieren bewerkt worden voordat ze aan de aanvrager doorgegeven worden. Uitgangspunt is een gegevenswaarde die door de Meteo en Tijd Server beheerd wordt, maar kan ook vanuit een variabele (met naam V1..VZ) gehaald worden, of 'letterlijk' opgegeven worden (door de tekst door een '&` vooraf te laten gaan). Daarna kan deze waarde bewerkt worden door middel van processors, zoals die ook bij processor beschreven zijn. Een reeds gedefinieerde processor (met naam P1..PZ) kan natuurlijk ook gebruikt worden. De processors kunnen in serie gezet worden door middel van het pipe symbol ('|').
[chill_siple_passel|%.0f]
[&12|(celsius_2_fahrenheit)12 <sup>o</sup>C is %.1f F]
[V2|P1|P2|0=nul,*=niet nul]
[jd|(hms)]
conditionele tekst Er kan tekst uitgevoerd worden afhankelijk van condities. Dit gebeurt met 'if'-'else'-'endif' combinaties. De 'else' tak is niet echt nodig, en binnen een 'if' (of na een 'else') kan ook een nieuwe 'if' opgevoerd worden. Maar let op: als een 'if' niet waar is worden alle andere teksten overgeslagen tot de eerste 'else' of 'endif'.
De waarde (in het voorbeeld 'gust_speed') die vergeleken wordt kan iedere waarde zijn die onder 'data' beschreven is. De vergelijker (in het voorbeeld 'LESS_THAN') kan ook andere waarden hebben. Afhankelijk van welke vergelijker er gebruikt wordt, kan er een getal of data gebruikt worden.
[IF gust_speed GREATER_EQUAL (real)2.5]
  De gevoelstemperatuur is nu
  [chill_siple_passel|%.0f]
  [IF av24_wind_chill LESS_THAN (real*)chill_steadman]
  en het voelt tamelijk koud aan
[ELSE]
  Het waait bijna niet.
[ENDIF]
include Wanneer je in een bestand een ander bestand wilt oproepen, dan kan dat met de include aanwijzing. Hiermee is het mogelijk om veel gebruikte functionaliteit op slechts 1 plaats te definieren. Ook is het handig om dit te gebruiken zodat de bestanden handig compact blijven. Variablelen en Processoren blijven van kracht, en wanneer ze vanuit een 'include' bestand overschreven worden, dan gelden ze daarna ook in het aanroepende bestand
[INCLUDE cultural.inc]
assert Een assert controleert of variabelen gedefinieerd zijn. Variabele V0, V1 enzovoort, worden gecontroleerd, en als ze geen geldige waarde hebben wordt een berichtje afgedrukt die ook gelijk een hint kan geven over het gebruik van de variabelen.
[ASSERT 2:kopje#V1 beschrijving#V2 beschrijving]
commentaar De 'commentaar' aanwijzing is bedoeld om teksten in het dhp-bestand op te nemen, zonder dat deze in de uiteindelijke uitvoer terecht komen.
[COMMENT blablabla]
spaties Soms is het nodig dat spaties die wel in het bronbestand staan, toch tegen te houden. Hiervoor zijn de 'no_spaces' en 'no_leading_spaces' aanwijzing. Dit kan ongedaan gemaakt worden met 'spaces'. Wil met heel bewust in een 'no_spaces' gedeelte toch een spatie toevoegen, dan kan dat met 'space'
[NO_LEADING_SPACES]1 2 3=123[SPACE]met_1_spatie[SPACES]
uitvoermarkeringen Wanneer het nodig is om te weten of er tussen twee gedeelten van dhp bestand ook daadwerkelijk uitvoer plaatsgevonden heeft, kan er gebruik gemaakt worden van 'mark' 'mark output' en 'mark no output'. Wanneer nadat een markering gezet is uitvoer gepleegd is, dan kan dit met 'mark output' gevolgd worden door een op te geven tekst. Wanneer er na de markering geen uitvoer gepleegd is kan dit met 'mark no output' van een tekst vergezeld laten gaan. De markeringen gelden binnen het dhp bestand (dus een ge-include bestand heeft z'n eigen markeringen). Verder wordt aan het begin van een bestand automatisch een markering geplaatst, en zetten de 'mark output' en 'mark no output' ook een markering.
[NO_LEADING_SPACES] [MARK]
[MARK_NO_OUTPUT:uitvoer] x [MARK_NO_OUTPUT:geen uitvoer]
[MARK_OUTPUT:geen uitvoer]x[MARK_OUTPUT:uitvoer]
lettervervanging Het is mogelijk om een letter die uitgevoerd zou worden te vervangen door een andere letter. Een voorbeeld is het vervangen van de decimale punt door een 'decimale komma'.
[REPLACE .=,]tekst met commas: ..
[NO_REPLACE]en met punten..
ingebouwde tabel weergave Er zijn een aantal ingebouwde tabellen, waarvan de 'body' opgeroepen kan worden. De schrijver van het dhp-script kan dan zelf nog tabel-regels toevoegen, zoals bijvoorbeeld de tabel-koppen. Er zijn ingebouwde tabellen voor
  • IP: ip adressen van bezoekers
  • URL: de URL van de pagina die opgevraagd werd
  • REFERER: de URL van de pagina van waaruit de opvraging werd gedaan
  • BROWSER: het bladerprogramma waarmee de pagina werd opgevraagd
  • VIA: de machine via welke de pagina opgevraagd werd
  • LOGGING: gegevens van de laatste 100 bezoekers
  • STATUS: diverse statistieken van clienten, binnenkomende datapakketten van de sensor, activiteiten van de server. Ook wordt de configuratie van de server weergegeven.
  • EXTRA_STATUS: een samenvatting van de interne logging van de server
  • REPORT: de speciale rapportage door gebruikers
[TABLE IP]
[TABLE URL]
[TABLE REFERER]
[TABLE BROWSER]
[TABLE VIA]
[TABLE STATUS]
[TABLE EXTRA_STATUS]
[TABLE LOGGING]