Mallattributspråk

Template Attribute Language (TAL) är ett mallspråk som används för att generera dynamiska HTML- och XML -sidor. Dess huvudsakliga mål är att förenkla samarbetet mellan programmerare och designers. Detta uppnås genom att bädda in TAL-satser i giltiga HTML (eller XML)-taggar som sedan kan arbetas med med vanliga designverktyg.

TAL skapades för Zope men används även i andra Python -baserade projekt.

Attribut

Följande attribut används, normalt med prefixet " tal: ":

define
skapar lokala variabler, giltigt i elementet som bär attributet (inklusive inneslutna element)
villkoret
avgör om taggen (och all innesluten text) ska renderas eller inte.
repeat
skapar en loopvariabel och upprepar taggen genom att iterera en sekvens, t.ex. för att skapa ett urval list eller en tabell
innehåll
ersätter innehållet i taggen
ersätt
ersätter taggen (och är därför inte användbar tillsammans med innehåll eller attribut)
attribut
ersätter de givna attributen (t.ex. genom att använda tal:attributes="namnnamn; id-namn" namnet och id-attribut för ett inmatningsfält skulle kunna ställas in på värdet för variabeln " name ")
omit-tag
tillåter att utelämna start- och sluttaggen och endast rendera innehållet om det givna uttrycket är sant.
on-error
om ett fel uppstår, fungerar detta attribut som innehållstaggen.

Om en tagg har mer än ett TAL-attribut, utvärderas de i ovanstående (ganska logiska) ordning.

I de fall då det inte finns någon tagg som lämpar sig för att ta attributen, kan speciella TAL-taggar användas, vilket gör prefixet " tal: " valfritt. t.ex:

  <tal:if  condition=  "context/itemlist"  >  ...  </tal:if> 

skulle få koden inuti tal:if- taggarna att användas närhelst kontexten (oavsett vilken applikationsservern definierar sammanhanget, t.ex. ett objekt) innehåller variabeln " itemlist " med ett sant värde, t.ex. en lista som innehåller minst ett element. Identifieraren efter kolon är godtycklig; den behöver helt enkelt vara där och vara densamma för öppnings- och stängningsetiketten.

METALL

Macro Expansion Template Attribute Language (METAL) kompletterar TAL och tillhandahåller makron som tillåter återanvändning av kod över mallfiler. Båda skapades för Zope men används också i andra Python- projekt.

METAL kompletterar TAL med möjligheten att återanvända kod. Det tillåter utvecklaren att definiera och använda makron, som i sin tur kan ha slots ; när ett makro används kan variationsinnehåll anges för en plats.

När XML- dokument genereras måste XML-namnrymden anges ( xmlns:metal="http://xml.zope.org/namespaces/metal" ) .

METALL attribut

Följande attribut känns igen, normalt kräver ett „ metall: “ prefix:

define-macro
skapar ett makro
define-slot
skapar en lucka inuti ett makro
use-macro
använder ett makro (normalt givet via ett TALES sökvägsuttryck)
fill-slot
när du använder ett makro, ersätter standardinnehållet i det givna luckan
extend-makro
eftersom Zope v3: utökar ett makro, jämförbart med underklassning , genom att omdefiniera slots

Normalt används bara en av dem åt gången.

I de fall då det inte finns någon tagg som lämpar sig för att ta attributen, och i speciella fall då mer än ett METAL-attribut behövs, kan speciella METAL-taggar användas, vilket gör prefixet "metal:" valfritt. T.ex. (skissad med Roundup i åtanke):

   
 
  
   
         
  <  html  metal:define-macro  =  "isning"  >  ...  <  metal:myslot  define-slot  =  "valfri-form"  >  ...  </  html  >  <  html  metal:use-macro  =  "mallar/sida/makron /icing"  >  <  form  metal:fill-slot  =  "valfritt-form"  action  =  "."  tal:attributes  =  "action context/designator"  >  ...  </  form  >  </  html  > 

Användande

TAL/TALES/METAL används av följande projekt:

Andra implementeringar

Förutom den ursprungliga Zope- implementeringen finns det (inte uttömmande):

Pytonorm

C#

  • SharpTAL

Gå (Golang)

  • tal, en infödd Go-implementering av TAL, TALES och METAL

JavaScript

Java

  • JPT: Java sidmallar
  • JavaZPT
  • ZPT-Java

Perl

  • PETAL, Perl Template Attribut Language
  • Mall-TAL

Raku

  • Flower, en Raku -implementering av TAL, med några Petal- och PHPTAL-tillägg.

PHP

  • PHPTAL
  • Twital
  • Kex
  • zTAL

XSL

Vanlig Lisp

  • TALCL: Ett bibliotek som implementerar mallspråket TAL för vanlig lisp

Liknande implementeringar

  • ATal – Egentligen inte en TAL-implementering, men inspirerad av TAL-koncept
  • Thymeleaf - Inte en TAL-implementering, utan ett liknande "naturlig mall"-språk

externa länkar