Knowledge (XXG)

User:Krauss/ART

Source πŸ“

42:, when used in the context of digital documents and word processing, refers to a "fill-in-the-blank" document that can be completed either by hand or through an automated process. Form letters are typical example: a letter written from a template, frequently used for "spam", by marketing campaigns. It allows a mass production of very similar letters. Another classic example is the "letter frame": any content is filled in the blank of a "header and footer" frame template. It allows a mass production of non-similar content letters, with a "standard frame". Both are examples of (production of) a set of "template derived documents". 2096: 2012: 1772:
For specify projects and division of tasks, designers and programmers need to adopt objective point of view to see and to organize a template set, that result into a certain dichotomy of "referential types of systems". The types of system strategies are with respective P process, and how engines do
49:
In the web jargon, dynamic document is a kind of document that has been prepared with fresh or customized information, for each individual viewing. It is not static because it changes with: the time (ex. a news content), the user (ex. preferences in a login session), the user interaction (ex. web
56:
If the context is changed from "document" to "software source code file", we emerge with another similar aplications: template metaprogramming, macro-languages, pre-processors, documentation generators, and others. Intuitivelly we can label all of then "template systems".
2201: 308:. Then, template syntax need special care with the "border" between languages, to avoid mixing and to supply scaping forms. There are well defined tags, marks or characteres, named "hooks", that intend to separate (and compatibilize) the two languages. 159:
To arrive at our formal definition, we first evaluate a "candidate system" and determine whether it meets a predetermined set of standards based on its input and output characteristics. For any "candidate system" to be characterized as a
45:
Digital documents, when used in a distribution or interchange context, like in the web (web pages as documents), have another demand. Instead of a set of documents, the web designers want a unique "adaptative" dynamic document.
860:
file) is also a valid template. On other template languages we can not only copy/paste a document to the template for this proposition, we need to add hooks (and/or headers) to express a "template container", see
176:
as our methods of evaluation. This methodology ensures that our formal definition is based solely on observable elements (input and output) and thus does not rely on informally promoted definitions.
2401:
The resulted sequence of tokens is not arbitrary, and, theoretically the "contiguous hypothesis" enforce a pattern that avoid validation necessity. Technically it is validated by a
2464: 545: 2546: 627: 2750: 2693: 831: 774: 252:
is a "output document with holes", where holes are place-holders or macro references. A simple and well-accepted example of "hole" is a HTML document with a place-holder:
82:
Another authors, like Parr , X , Y , was working with these problems, and draw a lot of cues and partial solutions. We are "updating" and generalizing these author ideas.
76:
terminologic diversty: conflics and/or ambiguities in terms as "template engine", "template processor", "style sheet", "template script", "template oriented program", etc.
2508: 589: 2636: 1477: 1429: 1010: 717: 53:
Resuming, digital documents obtained from a "templating process" have two kinds of popular products: a set of "derived documents" or a unique "dynamical document".
2786: 2586: 2566: 667: 647: 64:
Conceptual problem: there are many things that we can considerate "template systems", but there are a lack of a rigourous (mathematic) definition for it.
90:
There are many ways to express dynamical documents, all of then requer documents peaces and logic peaces. This is a very simple HTML dynamic document:
486:
The resulted sequence of tokens is not arbitrary, and, theoretically the "contiguous hypothesis" enforce a pattern that avoid validation necessity.
1608: 70:
observable diversty: at Knowledge (XXG) listing and comparing about 60 distint "web template engines", and another more ... not web templates...
914: 2402: 2322:
Informally a simple template T is a "document with holes", where holes are place-holders or macro references. A template T, from the
60:
This article was motivated by a set of observable problems in the context of what we will more rigorousely naming "template systems",
266: 183:
illustration (like that below) indicates what we need to consider in our black box testing, based on specfic inputs and outputs:
897:, have also only variations on presentation, independent of the content. If we compare both, they contain the same information. 852:
Content independence on a template without instructions: for usual template languages, an output document file (like using an
841:
Writing for Knowledge (XXG) community, the first author was suggested a little set of "essential properties", translated as:
2368: 453: 873:<html><? if ($ flag){?> Hello <?= $ x; ?>! <? } else { ?> Bye <? }?> </html> 1016: 1638: 1604:, and usually templates are internal (not customizable) to the system, the configuration files are modeled as content. 416:
There are a hi diversity of styles for hook encoding, but a generative grammar (...) show that is a common approach.
1792:: all the logic about sub-template choices (typically a if/then or switch/case logic) are explicit into the script. 902: 2189: 2865:", T. Parr (2004). In Proceedings International WWW Conference, New York, USA. Access also at USFCA University. 2364: 1912:
reference model, is the main split criteria for group then. There are illustrated (see on links) three groups:
1863: 449: 2339: 1704:
All template language need clear rules and "syntax facilities" (simple for human and machine) to evaluate the
424: 112: 2129:)    Output "on-demand production", "on-fly publication" and receiving (over distribution method). 2376: 2372: 1593: 1260:
process, returns a "expanded equivalent template". A engine (or manual procedure) that only find and expand
461: 457: 237: 1049: 2205: 1905: 980:
need a pre-defined root. For express an input with a single template (N=1) the alternative notation L={T
2419: 2268:, the possibility of use a "distributed library", L, where the templates are not at the same resource. 1615:), if the content, C, and output, R, are on the same format, like XML. Example: a composition   500: 2313:
when producing with a pre-determined demand, can also use similar strategy, to "cache by publication".
1587:
Template systems modeled as complex dataflows, must use simplifier hypothesis to the characterization.
2513: 1799: 1224:, that specify the output language into an "alternative syntax", it is necessary that this syntax is 1082: 594: 2698: 2641: 1921: 1917: 1913: 1752: 1117: 779: 722: 293: 2804:
with the output language". Languages like XQuery permits both of the "template embeddeding modes".
2815: 2469: 1951: 922: 869:
from the template. This cleaning function can be exemplified with a little PHP code (see fig. 1):
550: 233: 2591: 1462: 1414: 995: 672: 1862:
language feature (content choice by a dynamic context), the engine use a dispatcher or another
1097:(T, C) process β€” perhaps using implicit sub-templates, but not a template library β€” can said " 2824:: this definition is given by a generalization over "Parr split model" , that must start with 2045:
The system act only on local transfer process. The "global transfer process" need two stages:
1590:
Template systems modeling is the first and fundamental step to the characterization. Example:
934: 926: 214: 169: 1837:
as pre-defined rules, that permit the content choose (select) what sub-template will be used.
1760: 277:
marks. It permits the separation between logic (hidden for blue designers-view) and design.
2005:"information A, at X, is a received information B from Y". Attribution with communication. 1813:
Notes: need a "root template", to express the logic for select "first level sub-templates".
2862: 1834: 1125: 1078: 977: 188: 2771: 2571: 2551: 2413: 2343: 1053: 913: 652: 632: 494: 428: 1827:: the template engine "select desirable content and frame it with template fragments". 1056:β€” when C is not a single set of values, like a sequence (ordered set), or a XML input. 2852:", C. Brabrand, A. Moller, M. I. Schwartzbach. (2006). University of Aarhus, Denmark. 2832:... Somente citar Parr e outros, sem se aprofundar, remetendo a trabalhos futuros... 1909: 1634: 1213:(T) is a "clean function" that extract all fragments (with respective hooks) of the 135:
if the language have "ever balanced", there are no final "s?" or "t?" pattern. ....
2811: 2793: 2200: 2095: 1859: 1745: 1741: 1612: 1261: 1121: 1020: 945: 887:. All the "template language code" is processed by the template engine in one step. 2818:
or viewer/editor choose) a template as a "output language embedded with a script".
2215:  All other combinations, with one or more elements, but not all, on sever: 1392:
R have nothing to process if it is used as a template, it can only be used as a T
383:: to encode scalar variables, sub-template references, or expressions. Examples: 2106:  there no flow between nets, all are server-side net (or server machine). 17: 865:. To generalize the idea we can use a kind of "cleaning function" to eliminate 2390: 2011: 1881: 1661: 1657: 1044: 475: 73:
methodologic diversty: how to select, when use one or another type of solution
1019:. C is in principle read-only, but engine can assign values for simplify the 883:
The output document is always a "cleaned document", without any trace of the
2849: 1925: 1228:
to the output language, then, the clean operator also embody this reversion.
1150:: a template with no programming operation (without template instructions). 1074: 265: 192: 165: 1880:
augmented with a kind of "match and referrer sub-template by ID" (a simple
1786:: the template engine "select template fragments and fill it with content". 2166:)    Output "on demand production" (first request) and caching. 1669: 218: 173: 2083:   Publication (using another system or something like manual 1310:ΓΈ bypass (equivalence between cleaned empty template and empty output). 1950:"A is at X", or "the resource for A is at the X machine or at the same 1931:
Using the system notation (defs. for R, T, C, and P above) and adding:
2814:
see the script fragments as "holes", then, designers always see (by a
1660:. There are cases where the template language is like a "programmable 1833:: part of the logic is implicit (not expressed on script), and is on 1807: 1803: 1716: 1629: 152:. We need an objective criteria to select what is and what is not a 2199: 2094: 2010: 1248:(X). If it is a library, it is applied for all library templates. 912: 264: 322:: encloses blocks of developer-supplied program logic. Examples: 2386: 2088: 1852: 1844: 1720: 1712: 1665: 1620: 1600:, the source code (commented or not) is modeled as (structured) 1581: 1221: 862: 853: 471: 1884:
dispatcher can do it) instead direct control. By other hand, a
1697:
The simplest "substitution string system" can characterized as
1023:. Alternative notation for express elements (attributes) C = {c 221:
tests. A set of positive results on the tests must reflect the
2193: 2084: 1924:. A formal characterization avoid mistakes about systems with 857: 1015:
C is a set (or a sequence) of incoming data values, from the
240:
a formal analytical framework to establish these properties.
1675:
For validate a "candidate system" we need the correspondent
370:<xsl:template name="stName"> ... </xsl:template> 2863:
Enforcing Strict Model-View Separation in Template Engines
893:
The output documents of templates with only variations on
1350:
Content independence on the "no instructions template". T
361:<!-- BEGIN stName --> ... <!-- END stName --> 2828:
and not is submitted to system context considerations.
1143:ΓΈ: an empty content, empty template or empty document. 300:) require a low-level separation strategy to isolate 2774: 2701: 2644: 2594: 2574: 2554: 2516: 2472: 2422: 1465: 1417: 998: 782: 725: 675: 655: 635: 597: 553: 503: 1236:(X) is a "information content set" function, like a 1052:) set of all possible contents. It can also specify 27: 2338:
A template T is a string that can be split (using "
890:
No information is generated by the template engine.
2780: 2744: 2687: 2630: 2580: 2560: 2540: 2502: 2458: 2275:do also the publication, it is characterized as a 2068:)    Output production, with the system. 1653: 1471: 1423: 1004: 917:Elements (C,T,P,R) on the dataflow representation. 845:An empty template supplies an empty document: the 825: 768: 711: 661: 641: 621: 583: 539: 357:: to fix the frontiers of the sub-template block. 296:necessities (e. g. content from presentation on 2188:Note: system generating meta-templates (like a 1730:interpreter, that need output instruction like 968:There are N templates, identified by the index 876:Cleaned PHP (only the black portion of fig.1): 2326:, is an input it self, or an element from the 1240:from a txt converter. If X is a template, the 1214: 976:is also used as "default root template", when 884: 866: 849:can not add information to the empty template. 2196:output) use cache also for the first request. 2183:   (next request), using the cache. 1354:bypass. For lib-less systems (where L={T}), 8: 2535: 2523: 2497: 2479: 2323: 616: 604: 578: 560: 2792:), it is a template with "output language 2393:, is transformed into a unique "contiguous 878:<html> Hello ! Bye </html> 837:Informal check-list of essential properties 478:, is transformed into a unique "contiguous 1978:erver (or on a same high performance LAN). 2773: 2728: 2717: 2700: 2671: 2660: 2643: 2620: 2612: 2604: 2593: 2573: 2553: 2515: 2471: 2421: 1464: 1416: 997: 809: 798: 781: 752: 741: 724: 701: 693: 685: 674: 654: 634: 596: 552: 502: 344:<cfscript> script </cfscript> 148:There are many systems promoted as being 144:Motivations and methodological background 50:page game), the context, or all of them. 2762:About convention for "embed" terminology 2588:the following production rules:   2015:Outside (or cached) server architecture. 1933: 1755:is also a feature (may be formalized by 1286: 1189:) is a library relationship where all T 669:the following production rules:   67:Diversity problems: ("Babel problems"), 2841: 1692:Important conclusions from definitions: 125:: document-background template language 1773:decisions about sub-template choices: 423:is a string that can be split (using " 93:<html>Hello {$ x}!</html> 30:ARTICLE COLABORATIVE COSNTRUCTION ... 2363:: script contiguous fragments, like 1888:can express traditional logic into a 1860:content-driven sub-template reference 1093:({T},C). Systems that only work as a 448:: script contiguous fragments, like 279:Below the source code example, where 255:<html>Hello {$ x}!</html> 198:The template and contents are inputs; 131:: script-background template language 7: 2796:with the script", else (starts with 1988:utside server (and outside client). 1759:but not is modeled to preserve the 1711:Template files from languages like 405:<xsl:value-of select="$ x" /> 86:From dynamic documents to templates 2800:) it is a template with a "script 2517: 2438: 1928:strategies and remote references. 1748:, is not a general characteristic. 1734:and has no hook notation, are not. 1683:, as specific checking tools, and 1268:Essential properties (for all L, L 598: 519: 311:Refs X, Y, Z suggest os seguintes 244:Informal Template characterization 24: 2459:{\displaystyle G=(N,\Sigma ,Q,A)} 540:{\displaystyle G=(N,\Sigma ,Q,A)} 201:The output documents are outputs. 1751:The possibility of sub-template 1737:The process cannot be arbitrary. 1719:are templates, but files like a 2541:{\displaystyle \Sigma =\{t,s\}} 2342:") into 2 distinct, not empty, 2324:template system reference model 1819:Content-driven template systems 1763:of template system definition). 1554:,C))   and, For lib-less 622:{\displaystyle \Sigma =\{t,s\}} 427:") into 2 distinct, not empty, 2850:"Dual Syntax for XML Languages 2729: 2718: 2672: 2661: 2621: 2613: 2605: 2453: 2429: 2208:(decentralized) architectures. 1886:content-driven template system 1778:Script-driven template systems 905:about use of the definitions. 810: 799: 753: 742: 702: 694: 686: 534: 510: 164:, we have to abstract it as a 118:Document designer perseption: 1: 2745:{\displaystyle Y:=stY|st|sts} 2688:{\displaystyle X:=tsX|ts|tst} 2412:Formally it is supplied by a 2381:Note: a sequence of repeated 1900:Architecture characterization 1878:script-driven template system 1723:script, evaluated by a usual 826:{\displaystyle Y:=stY|st|sts} 769:{\displaystyle X:=tsX|ts|tst} 466:Note: a sequence of repeated 217:methodology, to fix a set of 2407:/^((t(st)*s?)|(s(ts)*t?))$ / 2260:)    Typical case. 2238:)    Generic case. 1908:of template systems, into a 1639:XML transformation languages 1447:No information generated by 1250:For T on the above example, 1220:For template languages like 1128:, R is any kind of document. 1085:, to express singular case, 1021:variable declaration feature 262:is a input variable. (...) 2503:{\displaystyle N=\{A,X,Y\}} 2271:Note: when a system with a 1855:(lib-less on typical uses). 1687:as a generic checking tool. 1644:If no content on template, 921:To formally define, we can 871:PHP source (all template): 584:{\displaystyle N=\{A,X,Y\}} 289:are two distinct languages. 2883: 2631:{\displaystyle A:=X|Y|s|t} 2371:β€” simple instructions, or 1806:(sophisticated lib-less), 1768:Referential "driven types" 1472:{\displaystyle \subseteq } 1424:{\displaystyle \subseteq } 1005:{\displaystyle \subseteq } 712:{\displaystyle A:=X|Y|s|t} 456:β€” simple instructions, or 207:What is and what is not a 2788:productions (starts with 2334:Template characterization 2318:Language characterization 2099:Server-side architecture. 2087:) and distribution (e.g. 1520:Content conservation on " 234:mathematical system model 2133:Or caching on server: 1244:(X) process starts with 205:To answer the question, 1864:event-driven algorithms 1831:Programmer's perception 1790:Programmer's perception 1740:The possibility of use 1594:documentation generator 909:Formal characterization 335:<? script ?> 326:<% script %> 273:are exemplified by the 139:System characterization 100:is a input variable. 26:...THIS PLACE IS FOR A 2782: 2746: 2689: 2632: 2582: 2568:the start symbol, and 2562: 2542: 2504: 2460: 2209: 2100: 2020:Outside server systems 2016: 1914:Outside server systems 1473: 1425: 1197:have a correspondent T 1006: 918: 827: 770: 713: 663: 649:the start symbol, and 643: 623: 585: 541: 294:Separation of concerns 290: 238:specify with precision 2822:About Parr definition 2783: 2747: 2690: 2633: 2583: 2563: 2543: 2505: 2461: 2379:, or blocks of them. 2357:contiguous fragments. 2273:outside server engine 2203: 2098: 2022:(or "local systems") 2014: 1858:Notes: to supply the 1825:Designer's perception 1802:(simplest lib-less), 1784:Designer's perception 1474: 1426: 1007: 937:and your parameters: 916: 828: 771: 714: 664: 644: 624: 586: 542: 464:, or blocks of them. 442:contiguous fragments. 268: 107:Hooks and backgrounds 2772: 2699: 2642: 2592: 2572: 2552: 2514: 2470: 2420: 2264:There are also, on 1670:RELAX Compact_syntax 1662:schema specification 1463: 1415: 1135:Essential properties 1118:web template systems 996: 780: 723: 673: 653: 633: 595: 551: 501: 223:essential properties 191:, a process, is the 2808:About point of view 2385:, like occurs with 2311:server-side systems 2266:distributed systems 2213:Distributed systems 2104:Server-side systems 1922:Distributed systems 1918:Server-side systems 1849:attribute languages 1753:recurrence relation 1656:, then T is like a 1607:It is possible a P 1592:for characterize a 1582:informal properties 1526:Obs.: imply   1254:(T) = {Hello, Bye}. 984:}={T}, can be used. 470:, like occurs with 213:, we need, for the 2778: 2764:: if the template 2742: 2685: 2628: 2578: 2558: 2538: 2500: 2456: 2414:generative grammar 2403:regular expression 2277:distributed system 2210: 2101: 2017: 1984:- On another LAN, 1746:template languages 1633:(T, C))   on 1580:See corresponding 1469: 1421: 1002: 919: 901:-- Note: see also 823: 766: 709: 659: 639: 619: 581: 537: 495:generative grammar 387:<%=x %> 355:Sub-template hooks 291: 248:A simple template 2816:background effect 2781:{\displaystyle X} 2581:{\displaystyle Q} 2561:{\displaystyle A} 2009: 2008: 1744:is a feature for 1574: 1573: 1081:. Suppose P as a 662:{\displaystyle Q} 642:{\displaystyle A} 493:is supplied by a 215:Black box testing 170:Black box testing 2874: 2866: 2859: 2853: 2846: 2787: 2785: 2784: 2779: 2768:is generated by 2751: 2749: 2748: 2743: 2732: 2721: 2694: 2692: 2691: 2686: 2675: 2664: 2637: 2635: 2634: 2629: 2624: 2616: 2608: 2587: 2585: 2584: 2579: 2567: 2565: 2564: 2559: 2547: 2545: 2544: 2539: 2509: 2507: 2506: 2501: 2465: 2463: 2462: 2457: 2408: 2305: 2301: 2297: 2290: 2286: 2259: 2255: 2251: 2244: 2237: 2233: 2229: 2222: 2204:Client-side and 2182: 2175: 2165: 2161: 2157: 2150: 2143: 2128: 2124: 2120: 2113: 2082: 2078: 2074: 2067: 2063: 2059: 2052: 2040: 2036: 2032: 2002: 1998: 1983: 1973: 1963: 1957: 1947: 1934: 1810:(sophisticated). 1733: 1478: 1476: 1475: 1470: 1451:. For lib-less 1430: 1428: 1427: 1422: 1287: 1282:template systems 1157:= { T | T is a T 1126:template systems 1017:content resource 1011: 1009: 1008: 1003: 972:. The template T 946:Template library 879: 874: 832: 830: 829: 824: 813: 802: 775: 773: 772: 767: 756: 745: 718: 716: 715: 710: 705: 697: 689: 668: 666: 665: 660: 648: 646: 645: 640: 628: 626: 625: 620: 590: 588: 587: 582: 546: 544: 543: 538: 406: 397: 388: 381:Expression hooks 371: 362: 348:ColdFusion style 345: 336: 327: 288: 276: 261: 150:template systems 130: 124: 99: 2882: 2881: 2877: 2876: 2875: 2873: 2872: 2871: 2870: 2869: 2860: 2856: 2847: 2843: 2838: 2770: 2769: 2697: 2696: 2640: 2639: 2590: 2589: 2570: 2569: 2550: 2549: 2512: 2511: 2468: 2467: 2418: 2417: 2406: 2380: 2355:output document 2320: 2303: 2299: 2295: 2288: 2284: 2257: 2253: 2249: 2242: 2235: 2231: 2227: 2220: 2180: 2179: 2174: 2170: 2163: 2159: 2155: 2148: 2147: 2142: 2138: 2126: 2122: 2118: 2111: 2080: 2076: 2072: 2065: 2061: 2057: 2050: 2038: 2034: 2030: 2000: 1996: 1981: 1971: 1961: 1955: 1945: 1902: 1872:There are also 1770: 1731: 1729: 1699:template system 1650:script language 1635:Cocoon pipeline 1632: 1623: 1598:template system 1591: 1569: 1561: 1553: 1549: 1539: 1535: 1525: 1516: 1504: 1461: 1460: 1439: 1413: 1412: 1395: 1369: 1361: 1353: 1346: 1342: 1332: 1324: 1280:, and C), that 1279: 1275: 1271: 1249: 1215:script language 1204: 1200: 1196: 1192: 1188: 1184: 1173: 1169: 1160: 1156: 1149: 1124:. On (generic) 1079:template engine 1038: 1034: 1030: 1026: 994: 993: 983: 975: 964: 960: 956: 952: 931:template system 911: 885:script language 877: 875: 872: 870: 867:script language 847:template system 839: 778: 777: 721: 720: 671: 670: 651: 650: 631: 630: 593: 592: 549: 548: 499: 498: 465: 440:output document 404: 395: 386: 369: 360: 343: 334: 325: 306:output language 302:script language 284: 278: 274: 259: 256: 246: 227:template system 209:template system 189:template engine 181:template system 162:template system 154:template system 141: 128: 122: 109: 97: 94: 88: 36: 22: 21: 20: 12: 11: 5: 2880: 2878: 2868: 2867: 2854: 2840: 2839: 2837: 2834: 2830: 2829: 2819: 2805: 2777: 2741: 2738: 2735: 2731: 2727: 2724: 2720: 2716: 2713: 2710: 2707: 2704: 2684: 2681: 2678: 2674: 2670: 2667: 2663: 2659: 2656: 2653: 2650: 2647: 2627: 2623: 2619: 2615: 2611: 2607: 2603: 2600: 2597: 2577: 2557: 2537: 2534: 2531: 2528: 2525: 2522: 2519: 2499: 2496: 2493: 2490: 2487: 2484: 2481: 2478: 2475: 2455: 2452: 2449: 2446: 2443: 2440: 2437: 2434: 2431: 2428: 2425: 2399: 2398: 2358: 2319: 2316: 2315: 2314: 2307: 2262: 2261: 2239: 2198: 2197: 2185: 2184: 2177: 2172: 2167: 2145: 2140: 2131: 2130: 2093: 2092: 2069: 2043: 2042: 2007: 2006: 2003: 1992: 1991: 1990: 1989: 1979: 1969: 1948: 1942: 1941: 1938: 1901: 1898: 1870: 1869: 1868: 1867: 1856: 1838: 1828: 1816: 1815: 1814: 1811: 1793: 1787: 1769: 1766: 1765: 1764: 1749: 1738: 1735: 1727: 1709: 1702: 1689: 1688: 1673: 1642: 1628: 1619: 1605: 1588: 1585: 1572: 1571: 1567: 1559: 1551: 1548: 1537: 1534: 1518: 1514: 1502: 1492: 1488: 1487: 1468: 1445: 1438: 1420: 1402: 1398: 1397: 1393: 1390: 1376: 1372: 1371: 1367: 1359: 1351: 1348: 1344: 1341: 1330: 1322: 1316: 1312: 1311: 1308: 1302: 1298: 1297: 1294: 1291: 1277: 1273: 1269: 1266: 1265: 1255: 1231: 1230: 1229: 1208: 1207: 1206: 1202: 1198: 1194: 1190: 1186: 1182: 1171: 1167: 1164: 1163: 1162: 1158: 1154: 1147: 1144: 1132: 1131: 1130: 1129: 1107:Process output 1104: 1103: 1102: 1077:model for the 1061: 1060: 1059: 1058: 1057: 1054:data structure 1048:, formally a ( 1040: 1036: 1032: 1028: 1024: 1001: 987: 986: 985: 981: 973: 962: 958: 954: 950: 910: 907: 899: 898: 891: 888: 881: 850: 838: 835: 822: 819: 816: 812: 808: 805: 801: 797: 794: 791: 788: 785: 765: 762: 759: 755: 751: 748: 744: 740: 737: 734: 731: 728: 708: 704: 700: 696: 692: 688: 684: 681: 678: 658: 638: 618: 615: 612: 609: 606: 603: 600: 580: 577: 574: 571: 568: 565: 562: 559: 556: 536: 533: 530: 527: 524: 521: 518: 515: 512: 509: 506: 484: 483: 443: 414: 413: 412: 411: 402: 393: 378: 377: 376: 367: 352: 351: 350: 341: 332: 313:types of hooks 254: 245: 242: 203: 202: 199: 196: 140: 137: 133: 132: 126: 108: 105: 92: 87: 84: 80: 79: 78: 77: 74: 71: 65: 35: 32: 23: 15: 14: 13: 10: 9: 6: 4: 3: 2: 2879: 2864: 2858: 2855: 2851: 2845: 2842: 2835: 2833: 2827: 2823: 2820: 2817: 2813: 2809: 2806: 2803: 2799: 2795: 2791: 2775: 2767: 2763: 2760: 2759: 2758: 2757: 2753: 2739: 2736: 2733: 2725: 2722: 2714: 2711: 2708: 2705: 2702: 2682: 2679: 2676: 2668: 2665: 2657: 2654: 2651: 2648: 2645: 2625: 2617: 2609: 2601: 2598: 2595: 2575: 2555: 2532: 2529: 2526: 2520: 2494: 2491: 2488: 2485: 2482: 2476: 2473: 2450: 2447: 2444: 2441: 2435: 2432: 2426: 2423: 2415: 2410: 2404: 2396: 2392: 2388: 2384: 2378: 2374: 2370: 2366: 2362: 2359: 2356: 2352: 2349: 2348: 2347: 2345: 2341: 2340:hook criteria 2336: 2335: 2331: 2329: 2325: 2317: 2312: 2308: 2294: 2282: 2281: 2280: 2278: 2274: 2269: 2267: 2248: 2240: 2226: 2218: 2217: 2216: 2214: 2207: 2202: 2195: 2192:generating a 2191: 2187: 2186: 2168: 2154: 2136: 2135: 2134: 2117: 2109: 2108: 2107: 2105: 2097: 2090: 2086: 2070: 2056: 2048: 2047: 2046: 2029: 2025: 2024: 2023: 2021: 2013: 2004: 1994: 1993: 1987: 1980: 1977: 1970: 1967: 1960: 1959: 1953: 1949: 1944: 1943: 1939: 1936: 1935: 1932: 1929: 1927: 1923: 1919: 1915: 1911: 1910:client-server 1907: 1899: 1897: 1895: 1894:script-driven 1891: 1890:root template 1887: 1883: 1879: 1875: 1865: 1861: 1857: 1854: 1850: 1846: 1842: 1839: 1836: 1832: 1829: 1826: 1823: 1822: 1820: 1817: 1812: 1809: 1805: 1801: 1797: 1794: 1791: 1788: 1785: 1782: 1781: 1779: 1776: 1775: 1774: 1767: 1762: 1758: 1754: 1750: 1747: 1743: 1742:sub-templates 1739: 1736: 1726: 1722: 1718: 1714: 1710: 1708:(T) function. 1707: 1703: 1700: 1696: 1695: 1694: 1693: 1686: 1682: 1678: 1674: 1671: 1667: 1663: 1659: 1655: 1651: 1647: 1643: 1640: 1636: 1631: 1627: 1622: 1618: 1614: 1610: 1606: 1603: 1599: 1595: 1589: 1586: 1583: 1579: 1578: 1577: 1565: 1557: 1547: 1543: 1533: 1529: 1523: 1519: 1512: 1508: 1500: 1496: 1493: 1490: 1489: 1485: 1481: 1466: 1458: 1454: 1450: 1446: 1443: 1437: 1433: 1418: 1410: 1406: 1403: 1400: 1399: 1391: 1388: 1384: 1380: 1377: 1374: 1373: 1365: 1357: 1349: 1340: 1336: 1328: 1320: 1317: 1314: 1313: 1309: 1306: 1303: 1300: 1299: 1295: 1292: 1289: 1288: 1285: 1283: 1263: 1259: 1256: 1253: 1247: 1243: 1239: 1235: 1232: 1227: 1223: 1219: 1218: 1216: 1212: 1209: 1180: 1179: 1177: 1165: 1152: 1151: 1145: 1142: 1141: 1140: 1137: 1136: 1127: 1123: 1119: 1115: 1114: 1112: 1108: 1105: 1100: 1096: 1092: 1088: 1084: 1080: 1076: 1072: 1071: 1069: 1065: 1062: 1055: 1051: 1047: 1046: 1041: 1022: 1018: 1014: 1013: 999: 991: 988: 979: 971: 967: 966: 948: 947: 943: 942: 940: 939: 938: 936: 932: 928: 924: 915: 908: 906: 904: 896: 892: 889: 886: 882: 868: 864: 859: 855: 851: 848: 844: 843: 842: 836: 834: 820: 817: 814: 806: 803: 795: 792: 789: 786: 783: 763: 760: 757: 749: 746: 738: 735: 732: 729: 726: 706: 698: 690: 682: 679: 676: 656: 636: 613: 610: 607: 601: 575: 572: 569: 566: 563: 557: 554: 531: 528: 525: 522: 516: 513: 507: 504: 496: 492: 487: 481: 477: 473: 469: 463: 459: 455: 451: 447: 444: 441: 437: 434: 433: 432: 430: 426: 425:hook criteria 422: 417: 410: 403: 401: 394: 392: 385: 384: 382: 379: 375: 368: 366: 359: 358: 356: 353: 349: 342: 340: 333: 331: 324: 323: 321: 318: 317: 316: 314: 309: 307: 303: 299: 298:Web templates 295: 287: 282: 272: 267: 263: 253: 251: 243: 241: 239: 235: 230: 228: 224: 220: 216: 212: 210: 200: 197: 194: 190: 186: 185: 184: 182: 177: 175: 171: 168:and then use 167: 163: 157: 155: 151: 146: 145: 138: 136: 129:/^s(Ds)*D?$ / 127: 123:/^D(sD)*s?$ / 121: 120: 119: 116: 114: 106: 104: 101: 91: 85: 83: 75: 72: 69: 68: 66: 63: 62: 61: 58: 54: 51: 47: 43: 41: 33: 31: 29: 19: 2857: 2844: 2831: 2825: 2821: 2807: 2801: 2797: 2789: 2765: 2761: 2755: 2754: 2411: 2400: 2394: 2382: 2369:instructions 2360: 2354: 2350: 2337: 2333: 2332: 2327: 2321: 2310: 2292: 2276: 2272: 2270: 2265: 2263: 2246: 2224: 2212: 2211: 2152: 2132: 2115: 2103: 2102: 2054: 2044: 2027: 2019: 2018: 1985: 1975: 1965: 1930: 1906:architecture 1903: 1893: 1892:, used as a 1889: 1885: 1877: 1873: 1871: 1848: 1840: 1830: 1824: 1818: 1795: 1789: 1783: 1777: 1771: 1756: 1724: 1705: 1698: 1691: 1690: 1684: 1680: 1676: 1649: 1645: 1625: 1616: 1601: 1597: 1575: 1563: 1555: 1545: 1541: 1531: 1527: 1522:presentation 1521: 1510: 1506: 1498: 1494: 1483: 1479: 1456: 1452: 1448: 1441: 1435: 1431: 1408: 1404: 1386: 1382: 1378: 1363: 1355: 1338: 1334: 1326: 1318: 1307:({ΓΈ},C) = ΓΈ 1304: 1281: 1267: 1262:sub-template 1257: 1251: 1245: 1241: 1238:set of words 1237: 1233: 1225: 1210: 1176:presentation 1175: 1138: 1134: 1133: 1122:web document 1110: 1106: 1098: 1094: 1090: 1086: 1067: 1063: 1043: 989: 969: 944: 930: 920: 900: 895:presentation 894: 846: 840: 490: 488: 485: 479: 467: 454:instructions 445: 439: 435: 420: 418: 415: 408: 400:XQuery style 399: 390: 380: 373: 365:PHPlib style 364: 354: 347: 338: 329: 320:Script hooks 319: 312: 310: 305: 301: 297: 292: 285: 280: 270: 257: 249: 247: 231: 226: 222: 208: 206: 204: 180: 178: 161: 158: 153: 149: 147: 143: 142: 134: 117: 110: 102: 95: 89: 81: 59: 55: 52: 48: 44: 39: 37: 34:Introduction 25: 2365:expressions 2206:distributed 1940:Definition 1874:mixed types 1664:" (compare 1648:(T)=ΓΈ, and 1609:composition 1524:variants". 1264:references. 1178:variants". 1083:overloading 450:expressions 419:A template 269:The use of 18:User:Krauss 2836:References 2391:ColdFusion 2377:directives 2373:statements 2091:browsing). 1896:template. 1761:simplicity 1637:(see also 1440:(L, C)) U 1226:reversible 1101:" systems. 1045:data model 856:file as a 476:ColdFusion 462:directives 458:statements 409:XSLT style 374:XSLT style 2812:designers 2638:;   2518:Σ 2439:Σ 1937:Notation 1467:⊆ 1419:⊆ 1381:(L, C) = 1293:Property 1284:satisfy: 1120:, R is a 1075:black box 1042:D is the 1000:⊆ 719:;   599:Σ 520:Σ 391:ASP style 339:PHP style 330:ASP style 232:We use a 193:Black box 179:A simple 174:Use cases 166:black box 38:The term 28:ARXIV.ORG 2802:embedded 2794:embedded 2695:;   2397:" block. 2346:types: 2309:Typical 1958:can be: 1796:Examples 1613:pipeline 1459:(T, C)) 1411:(L, C)) 1389:(L, C)) 1099:lib-less 1073:It is a 1050:universe 949:, L = {T 941:Inputs: 935:function 927:dataflow 923:modeling 776:;   489:A rigor 482:" block. 431:types: 219:use case 40:template 2466:, with 2328:library 1847:(lib), 1841:Example 1654:regular 1602:content 1576:Notes: 1540:,C)) = 1505:,C)) = 1362:,ΓΈ) = 1333:, C) = 1113:(L, C) 1089:(T, C)= 1070:(L, C) 1064:Process 990:Content 547:, with 407:  398:  389:  372:  363:  346:  337:  328:  2756:Notes: 1968:lient. 1920:, and 1835:engine 1808:Smarty 1804:XQuery 1717:XQuery 1658:schema 1630:XQuery 1482:(T) U 1325:,ΓΈ) = 1296:Notes 1201:from L 1193:from L 1109:, R = 978:engine 258:where 96:where 2375:, or 2344:token 2178:cache 2146:cache 1974:- On 1964:- On 1926:cache 1851:like 1732:print 1706:Clear 1677:Clean 1668:with 1596:as a 1517:,C)) 1486:(C). 1383:Clean 1364:Clean 1347:,ΓΈ)) 1335:Clean 1246:Clean 1211:Clean 1174:are " 1139:Let: 1035:, … c 1031:, … c 961:, … T 957:, … T 933:as a 925:the ( 460:, or 429:token 396:{$ x} 304:from 286:green 281:black 271:hooks 260:{$ x} 225:of a 113:hooks 111:... 103:... 98:{$ x} 16:< 2387:XSLT 2089:HTTP 2026:R ← 1904:The 1882:hash 1876:: a 1853:Zope 1845:XSLT 1728:perl 1721:Perl 1713:XSLT 1679:and 1666:Haml 1624:(L, 1621:XSLT 1570:) . 1562:) = 1444:(C) 1222:Haml 1199:b, j 1191:a, i 992:, C 863:XSLT 854:HTML 472:XSLT 283:and 187:The 172:and 115:... 2510:, 2389:or 2367:or 2287:← R 2258:@S2 2254:@S1 2236:@S4 2232:@S3 2228:@S2 2221:@S1 2194:PHP 2190:CMS 2176:← R 2144:← R 2085:FTP 2079:← R 2075:← R 1999:← B 1954:". 1952:LAN 1946:A@X 1800:SSI 1715:or 1652:is 1394:nop 1370:). 1368:nop 1360:nop 1352:nop 1345:nop 1331:nop 1323:nop 1278:nop 1276:, L 1272:, L 1185:, L 1170:, T 1159:nop 1155:nop 1148:nop 1116:On 1027:, c 953:, T 903:FAQ 858:PHP 591:, 474:or 452:or 275:red 236:to 2810:: 2752:. 2706::= 2649::= 2599::= 2548:, 2416:, 2409:. 2405:: 2353:: 2330:. 2304:@O 2302:,C 2300:@O 2298:(L 2296:@O 2291:← 2289:@O 2285:@S 2279:: 2256:,C 2252:(L 2250:@C 2245:← 2243:@C 2234:,C 2230:(L 2223:← 2181:@S 2171:@C 2164:@S 2162:,C 2160:@S 2158:(L 2156:@S 2151:← 2149:@S 2139:@C 2127:@S 2125:,C 2123:@S 2121:(L 2119:@S 2114:← 2112:@C 2081:@O 2077:@S 2073:@C 2066:@O 2064:,C 2062:@O 2060:(L 2058:@O 2053:← 2051:@O 2039:@O 2037:,C 2035:@O 2033:(L 2031:@O 2001:@Y 1997:@X 1982:@O 1972:@S 1962:@C 1956:@X 1916:, 1843:: 1821:: 1798:: 1780:: 1757:P' 1681:P' 1672:). 1641:). 1566:(T 1558:(T 1550:(L 1546:P' 1536:(L 1532:P' 1513:(L 1501:(L 1491:5 1436:P' 1401:4 1396:. 1375:3 1366:(T 1358:(T 1343:(L 1339:P' 1329:(L 1321:(L 1315:2 1301:1 1290:# 1258:P' 1217:. 1181:(L 1066:, 1012:D 965:} 929:) 833:. 787::= 730::= 680::= 629:, 497:, 438:: 315:: 229:. 156:. 2861:" 2848:" 2826:t 2798:s 2790:t 2776:X 2766:T 2740:s 2737:t 2734:s 2730:| 2726:t 2723:s 2719:| 2715:Y 2712:t 2709:s 2703:Y 2683:t 2680:s 2677:t 2673:| 2669:s 2666:t 2662:| 2658:X 2655:s 2652:t 2646:X 2626:t 2622:| 2618:s 2614:| 2610:Y 2606:| 2602:X 2596:A 2576:Q 2556:A 2536:} 2533:s 2530:, 2527:t 2524:{ 2521:= 2498:} 2495:Y 2492:, 2489:X 2486:, 2483:A 2480:{ 2477:= 2474:N 2454:) 2451:A 2448:, 2445:Q 2442:, 2436:, 2433:N 2430:( 2427:= 2424:G 2395:s 2383:s 2361:s 2351:t 2306:) 2293:P 2283:R 2247:P 2241:R 2225:P 2219:R 2173:2 2169:R 2153:P 2141:1 2137:R 2116:P 2110:R 2071:R 2055:P 2049:R 2041:) 2028:P 1995:A 1986:O 1976:S 1966:C 1866:. 1725:P 1701:. 1685:I 1646:I 1626:P 1617:P 1611:( 1584:. 1568:b 1564:I 1560:a 1556:I 1552:b 1544:( 1542:I 1538:a 1530:( 1528:I 1515:b 1511:P 1509:( 1507:I 1503:a 1499:P 1497:( 1495:I 1484:I 1480:I 1457:P 1455:( 1453:I 1449:P 1442:I 1434:( 1432:I 1409:P 1407:( 1405:I 1387:P 1385:( 1379:P 1356:P 1337:( 1327:P 1319:P 1305:P 1274:b 1270:a 1252:I 1242:I 1234:I 1205:. 1203:b 1195:a 1187:b 1183:a 1172:b 1168:a 1166:T 1161:} 1153:L 1146:T 1111:P 1095:P 1091:P 1087:P 1068:P 1039:} 1037:M 1033:j 1029:2 1025:1 982:1 974:1 970:i 963:N 959:i 955:2 951:1 880:. 821:s 818:t 815:s 811:| 807:t 804:s 800:| 796:Y 793:t 790:s 784:Y 764:t 761:s 758:t 754:| 750:s 747:t 743:| 739:X 736:s 733:t 727:X 707:t 703:| 699:s 695:| 691:Y 687:| 683:X 677:A 657:Q 637:A 617:} 614:s 611:, 608:t 605:{ 602:= 579:} 576:Y 573:, 570:X 567:, 564:A 561:{ 558:= 555:N 535:) 532:A 529:, 526:Q 523:, 517:, 514:N 511:( 508:= 505:G 491:T 480:s 468:s 446:s 436:t 421:T 250:T 211:? 195:;

Index

User:Krauss
ARXIV.ORG
hooks
black box
Black box testing
Use cases
template engine
Black box
Black box testing
use case
mathematical system model
specify with precision

Separation of concerns
hook criteria
token
expressions
instructions
statements
directives
XSLT
ColdFusion
generative grammar
HTML
PHP
XSLT
script language
script language
FAQ

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.

↑