User talk:Krauss/arXiv-1

Article title
Two sugestions (votar):
 * 1) "Digital Document Template Systems - Towards a Definition"
 * 2) "Template Systems, a formal reference model"

Article appendix

 * Web template hook styles
 * List of popular template systems and associeted properties
 * Exemples of identification and classification
 * Simplest examples

strict sense and broad sense
Sugestion to use 2 definitions, one to simple algebra expressions, and other for the general final expressions.
 * Strict sense template system: for Par comparisons and didactic use. Use only start document restricted sintax,
 * (brod sense) template system: the object of the article,
 * no information transform property: .. MVC constraints...
 * use of a library of templates: XSLT, etc.
 * option of unrestrited (Turing complete) languages in non-mvc context

Other examples, appendix
... decidir se listaremos exemplos nos apendices

Discussion section
Falta incluir.

Depois de fininalizar tudo, incluindo apendices, discutir o uso das definicoes, os resultados (fixamos terminologia e conceitos), sugerir convencoes terminologicas, comentar mais os exemplos...

REFERENCIAS PRINCIPAIS
Por hora temos Parr e Hsu-Yih definitions... Ok, vejamos se alguem citou eles para propor novas definicoes, ou para fazer uso (explicito) das definicoes.

PARR: No G.Scholar foram 39 citacoes. Analisemos uma a uma e documentemos aqui:
 * Visser 2008, "WebDSL: A case study in domain-specific language engineering". Parece nao trazer nada de util, verificar.
 * Arnoldus 2007, "Repleo: a syntax-safe template engine". Olhar. Parece bom, cita coisas atuais, templates de geracao de codigo.

Black-box didática
Para efeitos didáticos pode-se usar a producao de bolo.


 * Inputs:
 * Forma e receita: forma quadrada ou redonda, receita salgada ou doce, grande ou pequena, etc.
 * Ingreditentes: disponibilizados farinha, leite e ovos
 * Output: bolo pronto
 * Processador: cozinheiro seguindo a receita, na lingua dele, e forno.

O template faz papel tanto de forma (conteudo-template e estrutura forçada ao output) como de receita (logica). O conteudo de input sao os ingredientes, que podem mudar de qualidade (ruim ou bom), ou mesmo de tipo (leite de cabra, de vaca, farinha integral, etc.).

Na visão de Bunge63 esse caso não permite a separação entre canais.

A separacao em canais é muito específica. Na modelagem de um rio como caixa preta, por exemplo, pode-se usar como inputs do canal "agua" a chuva e os aportes de liquido dos afluentes, tendo como resultante, no mesmo canal, o fluxo de saida. Ja o input/output de sedimento, seria um segundo canal. A análise demonstraria forte correlacao entre os canais.

The pluralize function
Ver javascript pluralize-function ou simple-php-pluralize. No primeiro um exemplo de implementacao mais sofisticado, no último dois exemplos ilustrativos de template: Em ambos os casos o input content $n que determina o resultado final. A rigor, pelas definições de filtro tipado que tomamos no artigo, não seria uma filtragem pois fez uso de $n. Para fazer valer as definições teriamos que equipar $n com as palavras que pluralizou: Temos agora um filtro tipado: assim como podemos arredondar números com o método round ($x->round), podemos flexionar lemas com métodos de dicionário (numa implementação real $n->dic(lemma)). Não existem restrições ao filtro.
 * (($n==1)? "There is 1 user": "There are 2 users") = "There {$word[is]->plurz($n)} $n {$word[user]->plurz($n)}".
 * "My $n {$word[octopus]->plurz($n)} has $m {$word[leg]->plurz($m)}", valendo "7 Octopi have 56 legs" e "1 leg" para deficientes.
 * "There {$n->is} $n {$n->user}"
 * "My $n {$n->octopus} has $m {$m->leg}"

Mas e no caso de aplicativos de correção ortográfica modernos (que fazem análise sintática), já bastante difundidos e em geral pré-requisito de editores tais como OpenOffice ou MS-Word? Pode-se imaginar a função pluralize aplicada a um texto inteiro.

Aplicar uma função a um sub-template é algo que não abordamos, e pode ser colocado, neste caso particular da pluralização, podemos supor sintaxe da template output language e sintaxe da template script linguage totalmente imbricadas. Na situação inversa, quando fazendo uso da template hypothesis, é comum a redução das palavras de dicionário aos seus respectivos lemas, de modo que o modelo de referência (de template system) utilizado já vinha supondo a equivalência de subtemplates que diferem apenas pela flexão.

Suponhamos os 3 seguintes subtemplates: A concordância com objeto ($n), explícito (casos T1 e T2) ou implícito (T3), deve ser realizada pelo template system, não mais pelo programador. Do ponto de vista do usuário (designers e programadores) o template ficou muito mais amigável (!). Apesar desse tipo de estratégia tornar o template system muito mais complicado, trata-se de um requisito com demanda crescente, a ser considerado no escopo dos "unrestrited template systems". Questões que ficam: Todo o arcabouço, de Parr04 e o nosso até o momemto, se baseia na hipotese de validade da separação léxica entre script e conteúdo. Neste caso não há mais como separar o placeholder (lemas flexionados) do conteúdo, exceto se fizermos uso de um parser de conteúdo.
 * T1= "There is $n user."
 * T2 = "My $n octopus has $m legs."
 * T3($n) = "There are users that do that."
 * Será escopo apenas de "unrestried templates", ou também de templates mais simples?
 * Quando a sintaxe do documento se encontra desta forma imbricada ao script, o "split model" ainda é válido??

Sugestão: manter o "split model" e apenas comentar que templates sintáticos devem sofrer parsering de script e de conteúdo, dando exemplos.

Imbrication levels for the language sepator
The more commum template script blocks/template output blocks separator are the lexical one, like "$" for placeholders and "&lt;?"/"?&gt;" for script blocks. But template systems are free for choose separetors, or choose of lexical/sintatic separation... To be didactic we propose "imbrication levels" between script language and output language:


 * Level-0: Lexical unknowed separator. Neither script nor output language know the separator. Example: the "&lt;?"/"?&gt;" for Perl scripts or HTML 4.0 documents.


 * Level-1: Lexical knowed separator. Script, output or both know the separator. Example: the "&lt;?"/"?&gt;" for PHP scripts and XHTML 1.0 documents.


 * Level-2: (syntactic) Namespace separation. Tag (like coldfusion or TAL) or tag-namespace (like XSLT). Example: XHTML and XSLT are imbricated into XML, but only XML. XSLT not know XHTML tags and XHTML not know XSLT.


 * Level-3: Formal syntax separation. Like C++ templates. A language with a formal definition can be parsered to produce a lower level (0-2).


 * Level-4: Natural syntax separation. Like in the example of pluralize integral text... Need a parser, like level-3, but there are cases where only a human user can do adequate separation. See Reiter95 for details and requiriments of template-NLG systems.