1.4. 1. TAL – Declaracões

•27/07/2010 • 2 Comentários

Zope Page Template – índice

Estas são as declaracões TAL:

  • tal:attributes → muda atributos do elemento (tag) dinamicamente.
  • tal:define → define variáveis.
  • tal:condition → testa condições
  • tal:content → substitui o conteúdo de um elemento (tag).
  • tal:omit-tag → remove um elemento, deixando o conteúdo do elemento
  • tal:on-error → trata os erros.
  • tal:repeat → repete um elemento.
  • tal:replace → substitui o conteúdo da tag e remove a tag.

Expressões usadas nas declaracões podem retornar valores de algum tipo, embora a maioria das declaracões aceitarem apenas strings, ou converter-los para uma representação string.

Ordem dos elementos (tags)

Quando existe apenas uma declaração TAL por tag, a ordem na qual eles são executadas é simples. Começando com a tag principal, cada declaração das tags filhas é executada, em ordem.

Algumas combinações de declaracões podem aparecer na mesma tag, exceto as declaracões content e replace que não podem aparecer juntos.

Devido ao fato de que TAL olha as declaracões como atributos XML, mesmo em documentos HTML, ele não pode usar a ordem em que as declaracões são escritas na tag para determinar a ordem em que elas são executadas. O TAL deve também proibir múltiplas declaracões do mesmo tipo em um único elemento, então isto e’ o suficiente para organizar os tipos de declaracões em uma lista de prioridade.

Quando um elemento tem múltiplas declaracões, eles são executadas na seguinte ordem:

  1. define
  2. condition
  3. repeat
  4. content or replace
  5. attributes
  6. omit-tag

Como a declaração on-error é apenas invocada quando um erro ocorre, ele não aparece na lista.

Pode não ser aparente que existe necessidades para se ter uma ordem. A razão de dever existir um é que a linguagem de atributos TAL é baseado no XML.

Introdução a sintaxe de comandos TAL

1.1. tal:define: Definindo Variáveis

A declaração tal:define permite a criação e a e reutilização de variáveis dentro dos templates.

Por exemplo:

<p tal:define=”container_title here/title_or_id”>

<i tal:content=”container_title”>The title</i>

</p>

Neste exemplo, o título da variável é criado e determinado pelo resultado de here/title_or_id; depois a variável container_title é usada na declaração tal:content.

Por padrão a variável é criada localmente dentro do namespace do elemento atual. Assim, no exemplo anterior, só elementos dentro da tag parágrafo <p> podem usar a variável container_title. Você pode redefinir a variável em qualquer lugar dentro da declaração ou reutilizá-la em outros elementos quantas vezes forem necessárias.

Para criar uma variável para ser usada globalmente, você pode usar o prefixo global. Isto permitirá acesso para a variável de qualquer lugar dentro do template, não apenas definindo dentro do elemento.

Por exemplo:

<p tal:define=”global title_exemple string:Foo bar”>

… <i tal:content=”title_exemple”> The titl e</i> …

</p>

<i tal:content=”title”>We still have a title</i>

1.2. tal:condition: Avaliando Condições

A declaração tal:condition permite que a condição seja testada antes de exibir o elemento. Por exemplo:

<p tal:condition=”request/message”>

Minha menssagem

</p>

<p tal:condition=”not: request/message”>

Nenhuma menssagem

</p>


O parágrafo com o texto para mensagem será mostrado somente se a variável request conter um atributo (solucionado como true). O prefixo not: inverte a declaração, assim not: request/message resulta em true se a mensagem da variável pedida resulta false.

Em TAL, os seguintes resultados resultam em false:

  • O número zero
  • Qualquer float ou complex que resultam em zero (por exemplo, 0.0)
  • Strings com zero caracteres de tamanho (por exemplo, “”)
  • Uma lista ou tupla vazia
  • Um dicionário Python vazio
  • Valor Python None
  • Valor TALES nothing

Os seguinte resultados resultam em true:

  • O valor padrão
  • Qualquer número diferente de zero
  • Strings que não estão vazias
  • Strings que são apenas espaços (por exemplo, ” “)
  • Qualquer outra coisa

1.3. tal:content: Substituindo Texto

A declaração tal:content é geralmente a declaração mais usada em um page template. Esta declaração é também uma das mais simples, substituindo o conteúdo de um elemento com o valor especificado.

Exemplo:

<i tal:content=”context/title_or_id”>Some title</i>


A saída:

<i>The title</i>


Isto substituirá o texto Some title com o valor da expressão context/title_or_id. Se o texto a ser colocado possuir elementos HTML, aqueles elementos serão retirados.

Por padrão, o texto a ser substituído é não HTML (ou seja, escaped); o prefixo structure permitirá o HTML ser incorporado sem os elementos que estão sendo suprimidos. Por exemplo:

<i tal:content=”structure here/title_or_id”>Do not escape HTML</i>


Saída:

<i><b>The title<b></i>


1.4. tal:replace: Adicionando Texto

A declaração tal:replace é similar para tal:content com uma diferença, esta remove a tag inteira.

Exemplo:

<p tal:replace=”context/title_or_id”>Some title</p>


Isto fará o resultado da expressão context/title_or_id mas removerá do resultado as tags do parágrafo. Isto é o equivalente a:

<p

tal:content=”here/title_or_id”

tal:omit-tag=””>Some title

</p>

Se a declaração tal:replace contém outros elemento, então todos os elementos serão substituídos. Você não pode usar a declaração tal:replace com tal:attributes ou tal:content; eles são mutuamente exclusivos, e um erro será mostrado se você coloca-los no mesmo elemento.

1.5. tal:omit-tag: Removendo elementos

O tal:omit-tag é bastante incomum, ele permite a remoção de uma tag. O sistema Zope Page Templates requer o uso de tags HTML, páginas complexas podem precisar freqüentemente de muitos elementos e podem resultar em tags extras. Para está declaração, a tag é removida, deixando apenas o conteúdo das tags.

Por exemplo:

<p tal:omit-tag=””>This is some text</p>


A saída é como a seguinte:

This is some text


Neste exemplo, o texto This is some text será passado; porém, a tag não será passada. Opcionalmente, a declaração tal:omit-tag pode receber uma expressão como um argumento. Se a expressão for avaliada false, então a tal:omit-tag não ocorre.

Exemplo:

<p tal:omit-tag=”nothing”>This is some text</p>


1.6. tal:attributes: Mudando os Atributos de um Elemento

O tal:attributes permite que você substitua um ou mais atributos de um elemento. Uma declaração contém o atributo para ser mudado, separado por um espaço da declaração.

Exemplo:

<a href=”#”

tal:attributes=”href context/absolute_url”>

Clique aqui

</a>


Isto mudará o atributo href do link para o resultado da expressão here/absolute_url. O atributo href já foi definido neste elemento, então se um designer abrir a página, o designer irá ver um elemento válido (embora o link não faça sentido até que a página seja processada pelo servidor). Segue exemplo de uma saída depois de processada:

<a href=”http://plone.org/”>Clique aqui</a>


Sabendo que cada elemento possa ter múltiplos atributos, tal:attributes permite que você altere um ou mais atributos simultaneamente tendo declarações múltiplas. Para mudar múltiplos atributos de uma vez, separe as declarações com ponto-e-vírgula (;). Se o atributo ou a declaração conter ponto-e-vírgula, você pode deverá digitar outro ponto-e-vírgula (;;).

Por exemplo, para mudar ambos os elementos href e title, faça o seguinte:

<a href=”#”

tal:attributes=”href context/absolute_url; title context/title_or_id”>

Link

</a>


A saída será:

<a href=”http://plone.org/”>Plone Org</a>


1.7. tal:on-error: Executando a Manipulação de Erro

A declaração tal:on-error fornece um método para manipular erros. Funciona com o comando tal:content que promove a substituição do conteúdo da tag, mas somente quando ocorre um erro.

<p tal:content=”request/message”

tal:on-error=”string: No message”>

Message

</p>


Se houver um erro na avaliação da expressão request/message, então o atributo on-error será ativado. Isto faz com que o conteúdo da tag seja substituído com o texto No message.

Infelizmente, a declaração on-error é bastante limitada. A tag não consegue distinguir entre os diferentes tipo de erro e permite apenas que uma expressão seja avaliada e usada. Está limitação é de projeto assim a tag não pode ter um uso excessivo. A manipulação de erro deve realmente ser segurada na lógica de sua aplicação.

Felizmente, para todas as expressões, você pode fornecer alternativas na declaração se a primeira parte da declaração resultar algo diferente de true ou false (em outras palavras, se um erro é mostrado). Cada alternativa é separada por um caractere pipe (|), e múltiplas alternativas podem aparecer em uma declaração. Se você está apoiado nas variáveis da requisição que chega, então sempre adicione um |nothing no final para assegurar que o erro atribuído não seja mostrado.

Por exemplo:

<p tal:content=”request/message”

tal:condition=”request/message | nothing”>

There’s a message

</p>

<p tal:condition=”not: request/message | nothing”>

No message

</p>


Este segundo exemplo é mais trabalhoso, porém mais desejável por um par de razões:

  • O programador pode ver a condição positiva e negativa.
  • Você pode controlar uma condição de erro mais complicada do que apenas através da impressão de uma string.
Anúncios

Plone para leigos

•26/07/2010 • 3 Comentários

O Plone é uma solução poderosa e flexível de Gerenciamento de Conteúdo (Content Management System, CMS), fácil de instalar, usar e entender. [saber mais sobre CMS] [como instalar o Plone]

O Plone permite que as pessoas sem nenhum conhecimento técnico possam criar e manter informações em um site publico ou numa intranet/extranet usando apenas um navegador web.

Misturando a criatividade, a velocidade de um open source e a avançada tecnologia da linguagem de programação Python, o Plone oferece também uma segurança superior sem sacrificar a sua potencia ou sua extensibilidade.


I. Segurança

Por ser um produto open source, um grande numero de desenvolvedores investigam questões de segurança em potencial no código do Plone.

Baseado nas bibliotecas do Python e do Zope, o Plone tem uma tecnologia de ponta, que tem o ajudado atingir o recorde de melhor lugar no quesito segurança de todos os CMSs principais. (fonte: National CVE and CCE Vulnerability Database). De fato, segurança é a principal razão do porque muitos usuários de CMSs estão escolhendo o Plone. [confira: cms security.] [saber mais sobre o Zope]

II. Padrões abertos

Por estar nos padrões abertos ele é bem documentado, livremente implementável e mantido por uma comunidade via processo aberto (plone.org). O Brasil também tem uma comunidade em torno das tecnologias Python, Zope e Plone. A comunidade brasileira acompanha o desenvolvimento da plataforma desde sua criação. (Tchezope) (Zope & Plone – Brasil/Portugal Forum)

III. Acessibilidade – W3C

O Plone adere aos padrões World Wide Web Consortium (W3C). Sites desenvolvidos segundo esses padrões podem ser acessados e visualizados por qualquer pessoa (com qualquer deficiência ou não) ou tecnologia, independente de hardware ou software utilizados, como celulares e PDAs, de maneira rápida e compatível com os novos padrões e tecnologias que possam surgir com a evolução da internet. O W3C define padrões para linguagens voltadas para Web (como HTML, XHTML, CSS, ), entre outros.

IV. Casos de uso

Varias instituições/empresas/órgãos utilizam o Plone. O Governo brasileiro é um dos principais usuários desta tecnologia, possuindo vários portais com o mesmo.

Exemplos:


1. Plone: http://plone.org/
2. IFRN: http://www.ifrn.edu.br/
3. SEBRAE: http://www.sebrae.com.br/paginaInicial
4. Presidência da republica: http://www.presidencia.gov.br/
5. Procuradoria Geral da União: http://www.pgr.mpf.gov.br/
6. CIA: https://www.cia.gov/
7. Simples Consult.: http://www.simplesconsultoria.com.br/
8. Interlegis: http://www.interlegis.gov.br/
9. Serpro: http://www.serpro.gov.br/
10. Embrapa: http://www.embrapa.br/
11. IFMG: http://www.ifmg.edu.br/
12. IDG Now: http://idgnow.uol.com.br/
13. Metodista – SP: http://www.metodista.br/
14. Editora Moderna: http://www.moderna.com.br/
15. Portal Brasil: http://www.brasil.gov.br/

V. Integração – Produtos – Python

Integração é um vasto assunto em qualquer organização que já possui um grande número de sistemas legados. Devido ao fato do Plone ser open source, ele possui muitos produtos complementares (add-ons), skins, e ferramentas que provêem funcionalidades extras, já desenvolvidos e totalmente gratuitos.

O mesmo acontece, como a linguagem de programação Python, que tem uma grande gama de excelentes produtos (pacotes) grátis. A maioria destes produtos não interferem diretamente no Plone. Em outras palavras, eles não dão funcionalidade ao contrário dos produtos desenvolvidos especificamente para o Plone. Porém, frequentemente as pessoas perguntam: “Plone pode fazer isto ou aquilo?” E a resposta mais frequente é, ‘Sim, se você puder desenvolver em Python, o Plone faz.” (O guia definitivo do Plone)

VI. Suporte Workflow

O Plone oferece suporte a políticas de Workflow com muita excelência. Workflow é o mecanismo que possibilita automatizar processos de publicação de informações, racionalizando-os e potencializando-os por meio de dois componentes implícitos: organização e tecnologia.

De maneira simples, um Workflow define:

  1. Quais tipos informações (ex. tipos de paginas) devem transitar por um grupo de usuários e sob quais condições;
  2. O controle de movimentação (rota) exercido sobre os documentos;
  3. E o papel de cada usuário (“Quem-faz-o-quê” – Organograma). Basicamente existe três papeis no Plone: O editor – cria os conteúdos para o portal; O revisor – verifica se os conteúdos podem ser publicados; E o publicador – publica os conteúdos.

VII. A Escolha certa

O mercado está cheio de Sistemas de Gerenciamento de conteúdo, então é importante fazer sua lição de casa antes de escolher um. Lembre-se que um simples CMS pode funcionar muito bem no inicio da sua utilização, mas conduzir a problemas de escalabilidade e migração quando você precisa de mais capacidade que ele pode prover. Por outro lado, um CMS poderoso pode ser difícil de aprender e manter de tal maneira que ele nunca ganhe aceitação dos usuários. Tenha certeza que o CMS que você escolher satisfaça suas necessidades hoje sem comprometer seu crescimento futuro.

Esperamos que você tenha tempo para aprender mais sobre o Plone e o que ele pode fazer por você.

VIII. Referencias

Plone. http://plone.org/

Wikipedia. http://pt.wikipedia.org/

NVD. http://web.nvd.nist.gov/view/vuln/search

Plone Metrics. http://plonemetrics.blogspot.com

por fernando jr

CMS – Sistemas de Gerenciamento de Conteúdo

•26/07/2010 • Deixe um comentário

Com o dinamismo e rapidez que surgem as informações nos dias atuais, o desenvolvimento tradicional de conteúdo para Internet não estava mais acompanhando tamanha velocidade. Para poder controlar melhor as páginas de forma mais rápida, organizada e eficiente surgiram os Sistemas de Gerenciamento de Conteúdo (Content Management System – CMS). Estes nada mais são do que sistemas gestores de Websites, Portais e Intranets/Extranets que integram ferramentas necessárias para gerenciar conteúdos em tempo real, sem a necessidade de programação de código, cujo objetivo é estruturar e facilitar a criação, administração, distribuição, publicação e disponibilização da informação.

I. Vantagens de ter um site CMS

  1. Você pode atualizar o site de qualquer computador conectado a internet.
  2. Por não necessitar de uploads de arquivos manualmente, o processo de criação do conteúdo se torna mais rápido.
  3. É possível aumentar as funcionalidade ou melhorar as existentes.
  4. Um site feito utilizando um CMS pode ser administrado por mais de uma pessoa.
  5. Por serem sistemas interativos, os CMSs permitem que os visitantes interajam no site. Isso faz com que o visitante se sinta importante no site, resultando em um aumento nas visitas.

II. Classificação – Exemplos

Os Sistemas de Gerenciamento de Conteúdo podem ser classificados pelo seu funcionamento e características. Abaixo encontram-se alguns tipos de CMSs conhecidos:

  • LMS – Sistema de Gestão da Aprendizagem (Learning Management System, LMS, também chamado de plataforma e-learning ou ainda sistema de gerenciamento de cursos, SGC) disponibiliza uma série de recursos, síncronos e assíncronos, que dão suporte ao processo de aprendizagem, permitindo seu planejamento, implementação e avaliação.→ Ex.: Moodle;→ Casos de uso:1. Centro de difusão de tecnologia e conhecimento: http://comunidade.cdtc.org.br/
  • Wiki – É uma tecnologia de comunicação e autoria colaborativa (open source) que possibilita aos seus usuários acessar, procurar e editar páginas de hipertexto em um ambiente de tempo real. Ex.: MoinMoin (Python);Casos de Uso: Python Brasil: http://www.python.org.br/wiki/PythonBrasil
  • Blogs – São ferramentas que funcionam como web blogs.→ Ex.: WordPress (PHP);
  • Forum – Ferramenta para páginas de Internet destinada a promover debates através de mensagens publicadas abordando uma mesma questão. Também é chamado de “comunidade” ou “board”.
  • CMS puro – São sistemas mais complexos e geralmente mais robustos, contendo repositórios de dados que guardam os conteúdos armazenados, geralmente em banco de dados estruturados ou sistemas de arquivos. Possui, em geral, vários módulos disponíveis para serem incorporados ao pacote principal, de acordo com a necessidade de cada usuário. A disponibilidade de novos módulos é oferecida por comunidades de desenvolvedores dos CMS open souce. Exemplos: Joomla! (PHP), Drupal (PHP), o famoso WordPress (PHP) e o Plone (Python);Casos de Uso (Plone):
  • 1. Plone: http://plone.org/

    2. IFRN: http://www.ifrn.edu.br/

    3. SEBRAE: http://www.sebrae.com.br/paginaInicial

    4. Presidência da republica: http://www.presidencia.gov.br/

    5. Procuradoria Geral da União: http://www.pgr.mpf.gov.br/

    6. CIA: https://www.cia.gov/

    7. Simples Consultoria: http://www.simplesconsultoria.com.br/

    8. Interlegis: http://www.interlegis.gov.br/

    9. Serpro: http://www.serpro.gov.br/

    10. Embrapa: http://www.embrapa.br/

    11. IFMG: http://www.ifmg.edu.br/

[mais sobre o Plone]

III. Referencias

– Lemes, Celso. CMS – Sistema gerenciador de conteúdo. Disponível em <http://www.criarsites.com/cms-sistema-gerenciador-de-conteudo/> acesso em 26/07/2010;

– Wikipedia. link <http://pt.wikipedia.org/> acesso em 26/07/2010;

2.2. TALES

•25/07/2010 • Deixe um comentário

Zope Page Template – índice

A sintaxe/semântica das expressões da linguagem de atributo TAL (Template Attribute Language Expression Syntax (TALES) descreve expressões que abastecem o TAL e METAL (Macro Expansion TAL) com dados.

Antes de mergulhar no sistema de Zope Page Templates, você tem que entender o TALES. Freqüentemente em uma aplicação você precisa escrever expressões que podem ser avaliadas dinamicamente. Estas expressões não são scripts; mais simples expressões que podem fazer algo simples e fácil em uma única linha de código.

Uma expressão é avaliada juntamente com uma série de variáveis locais. Estas variáveis são determinadas pelo que a expressão está chamando. O sistema de Workflow fornece um conjunto de variáveis, e o sistema Zope Page Templates fornece um outro.

O principal uso de TALES está no Zope Page Template, é o sistema de geração de código HTML para o Plone. Embora seu nome possa sugerir que somente é apropriado em templates, muitas ferramentas no Plone usam esta sintaxe para gerar expressões simples, como ações, workflow, e segurança. Existem diferentes tipos de expressões, falaremos de cada um mais adiante.

2.1. 1. TAL

•25/07/2010 • Deixe um comentário

Zope Page Templates – índice

A linguagem de atributo TAL (Template Attribute Language) permite que elementos de um documento seja substituído, repetido, ou omitido.

Por exemplo, uma página dinâmica ZPT (utilizando TAL) mais simples poderia assemelhar-se à isto:

<title tal:content=“here/title”>Page Title</title>

O atributo tal:content é uma declaração (comando) TAL. Perceba a presença de um espaço de nomes (namespace) XML (tal:), a maior parte dos editores HTML não dá atenção, não se incomoda, com a parte que não é compreensível por eles e não suprime os atributos que considera estranhos. Dessa forma a estrutura ou a aparência da página não será alterada quando interpretada por um editor HTML ou um navegador Internet. As páginas TAL são interpretadas pelo servidor Zope, uma vez demandadas pelo navegador.

Em TAL, o comando content indica que o conteúdo do tag HTML title será substituído, e here/title é uma expressão da qual o resultado será o texto a inserir no corpo do tag title.

A maioria das declaracões TAL precisam de expressões, mas a sintaxe e as semânticas dessas expressões não são parte do TAL. O TALES (Template Attribute Language Expression Syntax) é recomendado para este proposito.

1.1. Demonstração do segundo princípio ZPT

Considera uma pagina ZPT com o seguinte conteúdo:

<title tal:content=“here/title”> Texto Exemplo </title>

Quando você vê um template ZPT num editor HTML como o Dreamwaver o texto da tag title “Texto Exemplo” ocupa o lugar do texto dinâmico; quando a página for interpretada pelo Zope será gerado texto dinâmico da expressão here/title . O template pode então ser considerado como um exemplo fiel de representação dos documentos como aparecerão mais tarde no navegador, o que facilita bastante o trabalho dos designers.

1.2. Sobre declaracões (comandos) TAL

Existem comandos TAL que substituem a totalidade do tag (incluindo seus marcadores e seu conteúdo/contexto), apenas o seu conteúdo, ou simplesmente apenas seus atributos. Você pode fazer também repetir várias vezes uma tag ou retirá-lo inteiramente.

Todas estas características juntas, permitem definir a estrutura dos documentos e gerar seu conteúdo dinamicamente. Porém, apesar de relativamente potente, utilizando TAL não se pode criar sub-rotinas ou classes, escrever laços (loops) complicados ou testes de múltipla escolha, ou realizar algoritmos complexos.

1.3. Particularidades

A linguagem TAL não é deliberadamente tão potente e de uso universal como uma linguagem de programação padrão. Com efeito, ela foi feita para ser utilizada dentro de uma arquitetura (como Zope, por exemplo) na qual outros objetos irão tomar para si a responsabilidade de gerar a lógica de negócio da aplicação, tarefas independentes da página com a diagramação visual HTML. Em geral os códigos de uma aplicação Zope são escritos na linguagem Python.

Por exemplo, TAL seria muito útil para a geração de uma fatura, criando uma linha para cada elemento, e inserindo a descrição, a quantidade, o preço, etc. Embora ela não será utilizada para criar o registro da fatura no interior da base de dados ou para interagir com um sistema de pagamento.

2. Aplicação dos princípios

•25/07/2010 • 1 Comentário

Zope Page Templates – índice

O ZPT tem uma linguagem denominada TAL ( Template Attribute Language) que consiste de uma série de atributos especiais adicionados aos tags HTML para criar templates dinâmicos. A maioria das declaracões TAL precisam de expressões, mas a sintaxe e as semânticas dessas expressões não são parte do TAL. O TALES (Template Attribute Language Expression Syntax) foi feito para este proposito.

2.1.  1. TAL

1.1. Demonstração do segundo principio ZPT

1.2. Sobre declaracões (comandos) TAL

1.3. Particularidades

1.4.  1. As declaracões TAL

1.1. tal:define: Definindo Variáveis

1.2. tal:condition: Avaliando Condições

1.3. tal:content: Substituindo Texto

1.4. tal:replace: Adicionando Texto

1.5. tal:omit-tag: Removendo elementos

1.6. tal:attributes: Mudando os Atributos de um Elemento

1.7. tal:on-error: Executando a Manipulação de Erro

1.8. tal:repeat: Executando Looping

2.2. TALES

2.3. METAL

1. ZPT – Introdução

•25/07/2010 • 2 Comentários

Zope Page Templates – índice

Zope Page Templates (ou linguagem de templates Zope) é um instrumento do servidor de aplicação Zope para a geração de páginas web dinâmicas. ZPT facilita a colaboração entre programadores e designers web aumentando a produtividade de páginas web dinâmicas que constituem a interface de qualquer aplicação Zope.

Os designers web podem usar ZPT para a criação e o acompanhamento/manutenção de páginas dinâmicas, sem que para isso precisem abandonar seus instrumentos habituais de trabalho (como o Dreamwever), e preservando, ao mesmo tempo, o esforço de programação feito para incluir as páginas numa aplicação.

O objetivo é proporcionar um fluxo de tarefas natural, sem que uma equipe (designers) atrapalhe o trabalho da outra (programadores). Um designer web utilizará um editor HTML WYSIWYG para criar o template, em seguida um programador poderá edita-lo para que este possa comunicar com a aplicação, introduzindo os comandos ZPT necessários.

Seguindo as especificações do projeto ou eventuais alterações, mais tarde o designer poderá carregar o template no seu editor para fazer modificações sobre a sua estrutura e sobre a sua aparência. Tomando cuidado para preservar as mudanças efetuadas pelo programador, ele não correrá o risco de desorganizar a aplicação.

1.1. Princípios

    ZPT visa estes objetivos adotando 3 princípios:
  1. Integração fácil com os editores HTML
  2. Apesar dos códigos de programa, a página aparece no editor WYSIWYG exatamente como apareceria em um navegador
  3. Manter o código mais complexo (regras do negócio) fora dos templates

Uma página ZPT é um modelo, ou molde (do termo da língua inglesa template) para outras páginas que serão geradas a partir dela. Mais especificamente uma página ZPT é uma página HTML válida. Como o HTML é altamente estruturado, e os editores WYSIWYG preservam esta estrutura, existem limites muito estritos para que os programadores alterem uma página sem desrespeitar o primeiro princípio acima.

1.2. Para quem são feitas as páginas ZPT?

As páginas templates foram especialmente feitas para os programadores e designers web que têm a necessidade de trabalhar juntos para a criação de páginas web dinâmicas. Um programador que edita suas próprias páginas web com um editor de texto, pode não ter necessidade de utilizar ZPT. No entanto, páginas ZPT podem ser mais simples de utilizar e mais facilmente compreensíveis do que páginas DTML.

1.3. Por que ter definido mais uma nova linguagem?

Existe um grande número de linguagens para a criação de templates, das quais algumas são bastante populares, como por exemplo, ASP, JSP e PHP. Por que inventar outra?

Em primeiro lugar, nenhuma destas linguagens foi criada para designers web, ou pensando neles. Uma vez que a página foi convertida em um template contendo scripts que geram conteúdos dinamicamente, a página não é mais uma página HTML válida, tornando-a de difícil manipulação fora da aplicação, por um editor HTML WYSIWYG.

Porém, estes sistemas têm problemas:

  • Os templates de HTML podem ser difíceis de modificar a medida que cada vez mais e mais conteúdo é acrescentado ao script. As Páginas rapidamente ficam enormes e difíceis de administrar.
  • A lógica e conteúdo não são separados nitidamente. Eles podem ser separados como alguns destes sistemas; porém, a habilidade para intercalar qualquer HTML com um pedaço de código programado é muito fácil. Freqüentemente, o conteúdo, a apresentação, e a lógica se tornam uma grande bagunça.
  • As páginas não podem facilmente serem editadas. Freqüentemente as páginas ou os templates vêm com a informação “just leave these bits alone…” pois se forem editadas quebraria o código. Editores WYSIWYG (O que você vê é o que você tem) podem ser configurados para não alterar algumas tags, mas eles podem quebrar outras facilmente. Em grandes organizações, todos os usuários com diferentes funções têm que editar a mesma página.

Pode ser difícil visualizar um resultado padrão. Pegue, por exemplo, uma busca (query) no banco de dados que mostra o resultado em uma tabela. Como pode um designer visualizar o resultado da busca sem executar aquele trecho de código de fato?

Ou seja, nenhuma delas respeita o primeiro e segundo princípios do ZPT. Os programadores não deveriam ter de apropriar-se à “força” do conhecimento de designers web para alterar código HTML em aplicação; cada profissional deve dominar sua tarefa, especializando-se em design ou em programação.

Por estas razões, foi criado o sistema Zope Page Templates. As páginas templates apresentam um acesso moderno; em vez de prover um outro método de codificação do tipo <%..%> , o código é acrescentado aos atributos das tags existentes. Este mecanismo não é somente utilizado pelo Zope, atualmente, versões desse sistema existem em Python, Perl, e Java.