--- /srv/rebuilderd/tmp/rebuilderdAWIOtZ/inputs/htp_1.19-8_armhf.deb +++ /srv/rebuilderd/tmp/rebuilderdAWIOtZ/out/htp_1.19-8_armhf.deb ├── file list │ @@ -1,3 +1,3 @@ │ -rw-r--r-- 0 0 0 4 2020-06-14 23:21:19.000000 debian-binary │ --rw-r--r-- 0 0 0 3616 2020-06-14 23:21:19.000000 control.tar.xz │ --rw-r--r-- 0 0 0 110704 2020-06-14 23:21:19.000000 data.tar.xz │ +-rw-r--r-- 0 0 0 3608 2020-06-14 23:21:19.000000 control.tar.xz │ +-rw-r--r-- 0 0 0 110784 2020-06-14 23:21:19.000000 data.tar.xz ├── control.tar.xz │ ├── control.tar │ │ ├── ./control │ │ │ @@ -1,12 +1,12 @@ │ │ │ Package: htp │ │ │ Version: 1.19-8 │ │ │ Architecture: armhf │ │ │ Maintainer: Marcelo Soares Mota │ │ │ -Installed-Size: 625 │ │ │ +Installed-Size: 631 │ │ │ Depends: libc6 (>= 2.4) │ │ │ Section: web │ │ │ Priority: optional │ │ │ Homepage: http://htp.sourceforge.net │ │ │ Description: nice HTML pre-processor │ │ │ htp is an HTML pre-processor. It is designed to be a flexible authoring tool │ │ │ that can easily be integrated into the HTML design process. │ │ ├── ./md5sums │ │ │ ├── ./md5sums │ │ │ │┄ Files differ ├── data.tar.xz │ ├── data.tar │ │ ├── file list │ │ │ @@ -5,23 +5,23 @@ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2020-06-14 23:21:19.000000 ./usr/share/ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2020-06-14 23:21:19.000000 ./usr/share/doc/ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/ │ │ │ -rw-r--r-- 0 root (0) root (0) 10522 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/alttext.html │ │ │ -rw-r--r-- 0 root (0) root (0) 1418 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/alttext.htp │ │ │ -rw-r--r-- 0 root (0) root (0) 8850 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/block.html │ │ │ -rw-r--r-- 0 root (0) root (0) 781 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/block.htp │ │ │ --rw-r--r-- 0 root (0) root (0) 10096 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/blockdef.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 9378 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/blockdef.html │ │ │ -rw-r--r-- 0 root (0) root (0) 1075 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/blockdef.htp │ │ │ -rw-r--r-- 0 root (0) root (0) 4763 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/bugs.html │ │ │ -rw-r--r-- 0 root (0) root (0) 737 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/bugs.htp │ │ │ -rw-r--r-- 0 root (0) root (0) 3273 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/changelog.Debian.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 10591 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/comment.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 15436 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/comment.html │ │ │ -rw-r--r-- 0 root (0) root (0) 676 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/comment.htp │ │ │ -rw-r--r-- 0 root (0) root (0) 13083 2020-06-14 23:16:46.000000 ./usr/share/doc/htp/copyright │ │ │ --rw-r--r-- 0 root (0) root (0) 20705 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/def.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 16936 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/def.html │ │ │ -rw-r--r-- 0 root (0) root (0) 3601 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/def.htp │ │ │ -rw-r--r-- 0 root (0) root (0) 8030 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/default.html │ │ │ -rw-r--r-- 0 root (0) root (0) 3149 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/default.htp │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/examples/ │ │ │ -rw-r--r-- 0 root (0) root (0) 536 2015-05-16 17:04:11.000000 ./usr/share/doc/htp/examples/Makefile.sub │ │ │ -rw-r--r-- 0 root (0) root (0) 2404 2015-05-16 17:04:11.000000 ./usr/share/doc/htp/examples/album.hti │ │ │ -rw-r--r-- 0 root (0) root (0) 1087 2015-05-16 17:04:11.000000 ./usr/share/doc/htp/examples/album.htt │ │ │ @@ -32,43 +32,43 @@ │ │ │ -rw-r--r-- 0 root (0) root (0) 818 2015-05-16 17:04:11.000000 ./usr/share/doc/htp/examples/prime.htp │ │ │ -rw-r--r-- 0 root (0) root (0) 1576 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/examples/quine.html │ │ │ -rw-r--r-- 0 root (0) root (0) 1576 2015-05-16 17:04:11.000000 ./usr/share/doc/htp/examples/quine.htp │ │ │ -rw-r--r-- 0 root (0) root (0) 604 2015-05-16 17:04:11.000000 ./usr/share/doc/htp/examples/section.def │ │ │ -rw-r--r-- 0 root (0) root (0) 1189 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/examples/section.html │ │ │ -rw-r--r-- 0 root (0) root (0) 918 2015-05-16 17:04:11.000000 ./usr/share/doc/htp/examples/section.htp │ │ │ -rw-r--r-- 0 root (0) root (0) 375 2015-05-16 17:04:11.000000 ./usr/share/doc/htp/examples/section.htt │ │ │ --rw-r--r-- 0 root (0) root (0) 13147 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/expand.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 11553 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/expand.html │ │ │ -rw-r--r-- 0 root (0) root (0) 3702 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/expand.htp │ │ │ --rw-r--r-- 0 root (0) root (0) 17388 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/file.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 17940 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/file.html │ │ │ -rw-r--r-- 0 root (0) root (0) 2490 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/file.htp.gz │ │ │ -rw-r--r-- 0 root (0) root (0) 14293 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/history.html │ │ │ -rw-r--r-- 0 root (0) root (0) 3946 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/history.htp.gz │ │ │ -rw-r--r-- 0 root (0) root (0) 3911 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/hlhtp.pl │ │ │ -rw-r--r-- 0 root (0) root (0) 165 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/htp.def │ │ │ -rw-r--r-- 0 root (0) root (0) 4049 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/htp.htt │ │ │ --rw-r--r-- 0 root (0) root (0) 9366 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/if.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 9265 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/if.html │ │ │ -rw-r--r-- 0 root (0) root (0) 932 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/if.htp │ │ │ --rw-r--r-- 0 root (0) root (0) 9420 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/imageurl.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 9669 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/imageurl.html │ │ │ -rw-r--r-- 0 root (0) root (0) 2507 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/imageurl.htp │ │ │ --rw-r--r-- 0 root (0) root (0) 8639 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/img.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 8277 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/img.html │ │ │ -rw-r--r-- 0 root (0) root (0) 1168 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/img.htp │ │ │ -rw-r--r-- 0 root (0) root (0) 8940 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/inc.html │ │ │ -rw-r--r-- 0 root (0) root (0) 1092 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/inc.htp │ │ │ -rw-r--r-- 0 root (0) root (0) 9881 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/include.html │ │ │ -rw-r--r-- 0 root (0) root (0) 1894 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/include.htp │ │ │ -rw-r--r-- 0 root (0) root (0) 4874 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/index.html │ │ │ -rw-r--r-- 0 root (0) root (0) 78 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/index.htp │ │ │ -rw-r--r-- 0 root (0) root (0) 7733 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/intro.html │ │ │ -rw-r--r-- 0 root (0) root (0) 3489 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/intro.htp │ │ │ -rw-r--r-- 0 root (0) root (0) 10774 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/license.html │ │ │ -rw-r--r-- 0 root (0) root (0) 454 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/license.htp │ │ │ -rw-r--r-- 0 root (0) root (0) 3782 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/macros.def │ │ │ -rw-r--r-- 0 root (0) root (0) 5088 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/macros.html │ │ │ -rw-r--r-- 0 root (0) root (0) 388 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/macros.htp │ │ │ --rw-r--r-- 0 root (0) root (0) 15002 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/metatag.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 15271 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/metatag.html │ │ │ -rw-r--r-- 0 root (0) root (0) 2439 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/metatag.htp.gz │ │ │ -rw-r--r-- 0 root (0) root (0) 8471 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/opt.html │ │ │ -rw-r--r-- 0 root (0) root (0) 608 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/opt.htp │ │ │ -rw-r--r-- 0 root (0) root (0) 7809 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/options.html │ │ │ -rw-r--r-- 0 root (0) root (0) 3100 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/options.htp │ │ │ -rw-r--r-- 0 root (0) root (0) 8130 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/output.html │ │ │ -rw-r--r-- 0 root (0) root (0) 695 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/output.htp │ │ │ @@ -81,15 +81,15 @@ │ │ │ -rw-r--r-- 0 root (0) root (0) 491 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/pic/manual.png │ │ │ -rw-r--r-- 0 root (0) root (0) 1313 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/pic/poweredbyhtp.png │ │ │ -rw-r--r-- 0 root (0) root (0) 679 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/pic/sficon.png │ │ │ -rw-r--r-- 0 root (0) root (0) 492 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/pic/source.png │ │ │ -rw-r--r-- 0 root (0) root (0) 523 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/pphtp.pl │ │ │ -rw-r--r-- 0 root (0) root (0) 8577 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/quote.html │ │ │ -rw-r--r-- 0 root (0) root (0) 390 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/quote.htp │ │ │ --rw-r--r-- 0 root (0) root (0) 10167 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/set.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 11277 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/set.html │ │ │ -rw-r--r-- 0 root (0) root (0) 1200 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/set.htp │ │ │ -rw-r--r-- 0 root (0) root (0) 500 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/styles.css │ │ │ -rw-r--r-- 0 root (0) root (0) 27219 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/template.html │ │ │ -rw-r--r-- 0 root (0) root (0) 2235 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/template.htp.gz │ │ │ -rw-r--r-- 0 root (0) root (0) 1914 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/toc.def │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/tut/ │ │ │ -rw-r--r-- 0 root (0) root (0) 146 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/tut/footer.hti │ │ │ @@ -104,21 +104,21 @@ │ │ │ -rw-r--r-- 0 root (0) root (0) 191 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/tut/tut3.htp │ │ │ -rw-r--r-- 0 root (0) root (0) 356 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/tut/tut3.htt │ │ │ -rw-r--r-- 0 root (0) root (0) 297 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/tut/tut4.htt │ │ │ -rw-r--r-- 0 root (0) root (0) 10517 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/tutorial.html │ │ │ -rw-r--r-- 0 root (0) root (0) 3393 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/tutorial.htp │ │ │ -rw-r--r-- 0 root (0) root (0) 9042 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/undef.html │ │ │ -rw-r--r-- 0 root (0) root (0) 460 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/undef.htp │ │ │ --rw-r--r-- 0 root (0) root (0) 9613 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/unset.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 10449 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/unset.html │ │ │ -rw-r--r-- 0 root (0) root (0) 658 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/unset.htp │ │ │ -rw-r--r-- 0 root (0) root (0) 7681 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/usage.html │ │ │ -rw-r--r-- 0 root (0) root (0) 2959 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/usage.htp │ │ │ -rw-r--r-- 0 root (0) root (0) 11448 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/use.html │ │ │ -rw-r--r-- 0 root (0) root (0) 3300 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/use.htp │ │ │ --rw-r--r-- 0 root (0) root (0) 9066 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/while.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 10282 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/while.html │ │ │ -rw-r--r-- 0 root (0) root (0) 938 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/while.htp │ │ │ -rw-r--r-- 0 root (0) root (0) 5288 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/wishlist.html │ │ │ -rw-r--r-- 0 root (0) root (0) 1311 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/wishlist.htp │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2020-06-14 23:21:19.000000 ./usr/share/doc-base/ │ │ │ -rw-r--r-- 0 root (0) root (0) 235 2020-06-14 17:36:12.000000 ./usr/share/doc-base/htp │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2020-06-14 23:21:19.000000 ./usr/share/lintian/ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2020-06-14 23:21:19.000000 ./usr/share/lintian/overrides/ │ │ ├── ./usr/share/doc/htp/blockdef.html │ │ │ @@ -114,37 +114,36 @@ │ │ │ Bugs │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

syntax

│ │ │

│ │ │ -  <[ref]alttext name="logo.gif" text="Company logo">
│ │ │ +<!--- comment --->
│ │ │
│ │ │ -  this line: <[ref]img src="logo.gif">
│ │ │ -  becomes this after processing: <[ref]img src="logo.gif" alt="Company logo">
│ │ │ -
│ │ │ -  this line: <[ref]img src="../image/logo.gif">
│ │ │ -  will also have an ALT attribute appended to it
│ │ │ -
│ │ │ -  this line: <[ref]img src="logo.gif" alt="Click here for more information!">
│ │ │ -  remains unchanged.
│ │ │

│ │ │

synopsis

│ │ │ BLOCKDEF creates block metatags, which is a fancy way of saying it │ │ │ creates new block tags. A block tag is a tag that takes a whole block │ │ │ as additional parameter. This block is surrounded by <tagname> and │ │ │ </tagname>. The contents of this block are automatically stored │ │ │ in the block macro named BLOCK. │ │ │

For example:

│ │ │

│ │ │ -<[ref]def name="tagname" [option="option1 [option2 ...]" ] [global] [expand]>
│ │ │ -<[ref]/def>
│ │ │ +  <[ref]blockdef name="section" option="title">
│ │ │ +   <h1><[ref]use title></h1>
│ │ │ +   <p class="section">
│ │ │ +     <[ref]use block>
│ │ │ +   </p>
│ │ │ +  <[ref]/blockdef>
│ │ │
│ │ │ +  <section title="My Section">
│ │ │ +    This is a fancy section.
│ │ │ +  </section>
│ │ │

│ │ │

│ │ │ All block metatags have the implicit option EXPAND, which tells htp to expand the contents │ │ │ of the block before the definition is expanded. │ │ │

│ │ │

│ │ │ ├── html2text {} │ │ │ │ @@ -1,41 +1,36 @@ │ │ │ │ [HTP] │ │ │ │ ************ hhttpp oonn--lliinnee rreeffeerreennccee :: BBLLOOCCKKDDEEFF,, //BBLLOOCCKKDDEEFF ************ │ │ │ │ _T_a_b_l_e_ _o_f_ _C_o_n_t_e_n_t_s ********** ssyynnttaaxx ********** │ │ │ │ -  _I_n_t_r_o_d_u_c_t_i_o_n   <_[_[_r_e_f_]_]_a_l_t_t_e_x_t name="logo.gif" text="Company │ │ │ │ -  _L_i_c_e_n_s_e logo"> │ │ │ │ -  _T_u_t_o_r_i_a_l │ │ │ │ -  _U_s_a_g_e   this line: <_[_[_r_e_f_]_]_i_m_g src="logo.gif"> │ │ │ │ -  HTP Tags   becomes this after processing: <_[_[_r_e_f_]_]_i_m_g │ │ │ │ -    _A_L_T_T_E_X_T src="logo.gif" alt="Company logo"> │ │ │ │ -    _B_L_O_C_K │ │ │ │ -  [>] _B_L_O_C_K_D_E_F   this line: <_[_[_r_e_f_]_]_i_m_g src="../image/logo.gif"> │ │ │ │ -    _D_E_F   will also have an ALT attribute appended to it │ │ │ │ -    _F_I_L_E │ │ │ │ -    _I_F   this line: <_[_[_r_e_f_]_]_i_m_g src="logo.gif" alt="Click │ │ │ │ -    _I_N_C here for more information!"> │ │ │ │ -    _I_M_G   remains unchanged. │ │ │ │ -    _I_M_A_G_E_U_R_L ********** ssyynnooppssiiss ********** │ │ │ │ -    _O_P_T BBLLOOCCKKDDEEFF creates block _m_e_t_a_t_a_g_s, which is a fancy │ │ │ │ -    _O_U_T_P_U_T way of saying it creates new block tags. A block │ │ │ │ -    _Q_U_O_T_E tag is a tag that takes a whole block as additional │ │ │ │ -    _S_E_T parameter. This block is surrounded by │ │ │ │ -    _U_N_D_E_F and . The contents of this block are │ │ │ │ -    _U_N_S_E_T automatically stored in the block macro named │ │ │ │ -    _U_S_E_,_ _$ BLOCK. │ │ │ │ -    _W_H_I_L_E For example: │ │ │ │ -    _<_!_-_-_- <_[_[_r_e_f_]_]_d_e_f name="tagname" [option="option1 │ │ │ │ -  _H_i_s_t_o_r_y [option2 ...]" ] [global] [expand]> │ │ │ │ -  _W_i_s_h_ _l_i_s_t <_[_[_r_e_f_]_]_/_d_e_f> │ │ │ │ -  _B_u_g_s │ │ │ │ - All block metatags have the implicit option _E_X_P_A_N_D, │ │ │ │ - which tells htp to expand the contents of the block │ │ │ │ - before the definition is expanded. │ │ │ │ - A more thorough discussion and more elaborate │ │ │ │ - examples are discussed in the _m_e_t_a_t_a_g section. │ │ │ │ +  _I_n_t_r_o_d_u_c_t_i_o_n │ │ │ │ +  _L_i_c_e_n_s_e │ │ │ │ +  _T_u_t_o_r_i_a_l ********** ssyynnooppssiiss ********** │ │ │ │ +  _U_s_a_g_e BBLLOOCCKKDDEEFF creates block _m_e_t_a_t_a_g_s, which is a fancy │ │ │ │ +  HTP Tags way of saying it creates new block tags. A block │ │ │ │ +    _A_L_T_T_E_X_T tag is a tag that takes a whole block as additional │ │ │ │ +    _B_L_O_C_K parameter. This block is surrounded by │ │ │ │ +  [>] _B_L_O_C_K_D_E_F and . The contents of this block are │ │ │ │ +    _D_E_F automatically stored in the block macro named │ │ │ │ +    _F_I_L_E BLOCK. │ │ │ │ +    _I_F For example: │ │ │ │ +    _I_N_C   <_[_[_r_e_f_]_]_b_l_o_c_k_d_e_f name="section" option="title"> │ │ │ │ +    _I_M_G    

<_[_[_r_e_f_]_]_u_s_e title>

│ │ │ │ +    _I_M_A_G_E_U_R_L    

│ │ │ │ +    _O_P_T      <_[_[_r_e_f_]_]_u_s_e block> │ │ │ │ +    _O_U_T_P_U_T    

│ │ │ │ +    _Q_U_O_T_E   <_[_[_r_e_f_]_]_/_b_l_o_c_k_d_e_f> │ │ │ │ +    _S_E_T │ │ │ │ +    _U_N_D_E_F  
│ │ │ │ +    _U_N_S_E_T     This is a fancy section. │ │ │ │ +    _U_S_E_,_ _$  
│ │ │ │ +    _W_H_I_L_E All block metatags have the implicit option _E_X_P_A_N_D, │ │ │ │ +    _<_!_-_-_- which tells htp to expand the contents of the block │ │ │ │ +  _H_i_s_t_o_r_y before the definition is expanded. │ │ │ │ +  _W_i_s_h_ _l_i_s_t A more thorough discussion and more elaborate │ │ │ │ +  _B_u_g_s examples are discussed in the _m_e_t_a_t_a_g section. │ │ ├── ./usr/share/doc/htp/comment.html │ │ │ @@ -114,51 +114,68 @@ │ │ │ Bugs │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

syntax

│ │ │

│ │ │ -<[ref]def name="tagname" [option="option1 [option2 ...]" ] [global] [expand]>
│ │ │ -<[ref]/def>
│ │ │ +  <[ref]blockdef name="section" option="title">
│ │ │ +   <h1><[ref]use title></h1>
│ │ │ +   <p class="section">
│ │ │ +     <[ref]use block>
│ │ │ +   </p>
│ │ │ +  <[ref]/blockdef>
│ │ │
│ │ │ +  <section title="My Section">
│ │ │ +    This is a fancy section.
│ │ │ +  </section>
│ │ │

│ │ │

synopsis

│ │ │

│ │ │ This is a simple comment that is not included in the output. This is useful │ │ │ when commenting metatags, since the metatags do not appear the output either. │ │ │ Example: │ │ │

│ │ │

│ │ │ -    <[ref]def name="centered">
│ │ │ -    <p align=center>
│ │ │ -    <[ref]/def>
│ │ │ -
│ │ │ -    <centered>
│ │ │ -    This text is centered.
│ │ │ +<!--- This comment doesn't appear in the HTML file --->
│ │ │

│ │ │

│ │ │ Note that these comments should not include < or >, that is you │ │ │ should not use it to comment out htp code. For that purpose use something │ │ │ like this: │ │ │

│ │ │

│ │ │ -  <[ref]def name="bigfont">
│ │ │ -    <font size="+4">
│ │ │ -  <[ref]/def>
│ │ │ -
│ │ │ -  <[ref]def name="/bigfont">
│ │ │ -    </font>
│ │ │ -  <[ref]/def>
│ │ │ -
│ │ │ -  <bigfont>Some large text</bigfont>
│ │ │ -panded at time 0.
│ │ │ -    c is expanded at time 1;   a is expanded at time 1.
│ │ │ -    d is expanded at time 1;   a is expanded at time 2.
│ │ │ -    e is expanded at time 2;   a is defined for the 2nd time <[ref]use time>.
│ │ │ +  <[ref]set time="0">
│ │ │ +  <[ref]block name=a>
│ │ │ +    a is expanded at time <[ref]use time>.
│ │ │ +  <[ref]/block>
│ │ │ +  <[ref]block name=b expand>
│ │ │ +    b is expanded at time <[ref]use time>.
│ │ │ +  <[ref]/block>
│ │ │ +  <[ref]set time="1">
│ │ │ +  <[ref]use a>
│ │ │ +  <[ref]use b>
│ │ │ +  contents of a: <[ref]use a noexpand>
│ │ │ +  contents of b: <[ref]use b noexpand>
│ │ │ +  <[ref]block name=c expand>
│ │ │ +    c is expanded at time <[ref]use time>; <[ref]use a>
│ │ │ +  <[ref]/block>
│ │ │ +  <[ref]block name=d expand>
│ │ │ +    d is expanded at time <[ref]use time>; <[ref]use a noexpand>
│ │ │ +  <[ref]/block>
│ │ │ +  <[ref]block name=e>
│ │ │ +    e is expanded at time <[ref]use time>; <[ref]use a noexpand>
│ │ │ +  <[ref]/block>
│ │ │ +  <[ref]set time="2">
│ │ │ +  <[ref]block name=a>
│ │ │ +    a is defined for the 2nd time <[ref]use time>.
│ │ │ +  <[ref]/block>
│ │ │ +  <[ref]use c>
│ │ │ +  <[ref]use d>
│ │ │ +  <[ref]use e>
│ │ │

│ │ │

Make sure that the variable is never defined and xyz should be the │ │ │ reason why you don't want to include this block

│ │ │

│ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ @@ -1,44 +1,62 @@ │ │ │ │ [HTP] │ │ │ │ ************ hhttpp oonn--lliinnee rreeffeerreennccee :: < │ │ │ │ -  _T_u_t_o_r_i_a_l <_[_[_r_e_f_]_]_/_d_e_f> │ │ │ │ -  _U_s_a_g_e │ │ │ │ -  HTP Tags ********** ssyynnooppssiiss ********** │ │ │ │ -    _A_L_T_T_E_X_T This is a simple comment that is not included in │ │ │ │ -    _B_L_O_C_K the output. This is useful when commenting │ │ │ │ -    _B_L_O_C_K_D_E_F metatags, since the metatags do not appear the │ │ │ │ -    _D_E_F output either. Example: │ │ │ │ -    _F_I_L_E     <_[_[_r_e_f_]_]_d_e_f name="centered"> │ │ │ │ -    _I_F    

│ │ │ │ -    _I_N_C     <_[_[_r_e_f_]_]_/_d_e_f> │ │ │ │ -    _I_M_G │ │ │ │ -    _I_M_A_G_E_U_R_L     │ │ │ │ -    _O_P_T     This text is centered. │ │ │ │ -    _O_U_T_P_U_T Note that these comments should not include < or >, │ │ │ │ -    _Q_U_O_T_E that is you should not use it to comment out htp │ │ │ │ -    _S_E_T code. For that purpose use something like this: │ │ │ │ -    _U_N_D_E_F   <_[_[_r_e_f_]_]_d_e_f name="bigfont"> │ │ │ │ -    _U_N_S_E_T     │ │ │ │ -    _U_S_E_,_ _$   <_[_[_r_e_f_]_]_/_d_e_f> │ │ │ │ -    _W_H_I_L_E │ │ │ │ -  [>] _<_!_-_-_-   <_[_[_r_e_f_]_]_d_e_f name="/bigfont"> │ │ │ │ -  _H_i_s_t_o_r_y     │ │ │ │ -  _W_i_s_h_ _l_i_s_t   <_[_[_r_e_f_]_]_/_d_e_f> │ │ │ │ -  _B_u_g_s │ │ │ │ -   Some large text │ │ │ │ - panded at time 0. │ │ │ │ -     c is expanded at time 1;   a is expanded at │ │ │ │ - time 1. │ │ │ │ -     d is expanded at time 1;   a is expanded at │ │ │ │ - time 2. │ │ │ │ -     e is expanded at time 2;   a is defined for the │ │ │ │ - 2nd time <_[_[_r_e_f_]_]_u_s_e time>. │ │ │ │ +  _I_n_t_r_o_d_u_c_t_i_o_n   <_[_[_r_e_f_]_]_b_l_o_c_k_d_e_f name="section" option="title"> │ │ │ │ +  _L_i_c_e_n_s_e    

<_[_[_r_e_f_]_]_u_s_e title>

│ │ │ │ +  _T_u_t_o_r_i_a_l    

│ │ │ │ +  _U_s_a_g_e      <_[_[_r_e_f_]_]_u_s_e block> │ │ │ │ +  HTP Tags    

│ │ │ │ +    _A_L_T_T_E_X_T   <_[_[_r_e_f_]_]_/_b_l_o_c_k_d_e_f> │ │ │ │ +    _B_L_O_C_K │ │ │ │ +    _B_L_O_C_K_D_E_F  
│ │ │ │ +    _D_E_F     This is a fancy section. │ │ │ │ +    _F_I_L_E  
│ │ │ │ +    _I_F ********** ssyynnooppssiiss ********** │ │ │ │ +    _I_N_C This is a simple comment that is not included in │ │ │ │ +    _I_M_G the output. This is useful when commenting │ │ │ │ +    _I_M_A_G_E_U_R_L metatags, since the metatags do not appear the │ │ │ │ +    _O_P_T output either. Example: │ │ │ │ +    _O_U_T_P_U_T │ │ │ │ +    _S_E_T Note that these comments should not include < or >, │ │ │ │ +    _U_N_D_E_F that is you should not use it to comment out htp │ │ │ │ +    _U_N_S_E_T code. For that purpose use something like this: │ │ │ │ +    _U_S_E_,_ _$   <_[_[_r_e_f_]_]_s_e_t time="0"> │ │ │ │ +    _W_H_I_L_E   <_[_[_r_e_f_]_]_b_l_o_c_k name=a> │ │ │ │ +  [>] _<_!_-_-_-     a is expanded at time <_[_[_r_e_f_]_]_u_s_e time>. │ │ │ │ +  _H_i_s_t_o_r_y   <_[_[_r_e_f_]_]_/_b_l_o_c_k> │ │ │ │ +  _W_i_s_h_ _l_i_s_t   <_[_[_r_e_f_]_]_b_l_o_c_k name=b expand> │ │ │ │ +  _B_u_g_s     b is expanded at time <_[_[_r_e_f_]_]_u_s_e time>. │ │ │ │ +   <_[_[_r_e_f_]_]_/_b_l_o_c_k> │ │ │ │ +   <_[_[_r_e_f_]_]_s_e_t time="1"> │ │ │ │ +   <_[_[_r_e_f_]_]_u_s_e a> │ │ │ │ +   <_[_[_r_e_f_]_]_u_s_e b> │ │ │ │ +   contents of a: <_[_[_r_e_f_]_]_u_s_e a noexpand> │ │ │ │ +   contents of b: <_[_[_r_e_f_]_]_u_s_e b noexpand> │ │ │ │ +   <_[_[_r_e_f_]_]_b_l_o_c_k name=c expand> │ │ │ │ +     c is expanded at time <_[_[_r_e_f_]_]_u_s_e time>; <_[ │ │ │ │ + _[_r_e_f_]_]_u_s_e a> │ │ │ │ +   <_[_[_r_e_f_]_]_/_b_l_o_c_k> │ │ │ │ +   <_[_[_r_e_f_]_]_b_l_o_c_k name=d expand> │ │ │ │ +     d is expanded at time <_[_[_r_e_f_]_]_u_s_e time>; <_[ │ │ │ │ + _[_r_e_f_]_]_u_s_e a noexpand> │ │ │ │ +   <_[_[_r_e_f_]_]_/_b_l_o_c_k> │ │ │ │ +   <_[_[_r_e_f_]_]_b_l_o_c_k name=e> │ │ │ │ +     e is expanded at time <_[_[_r_e_f_]_]_u_s_e time>; <_[ │ │ │ │ + _[_r_e_f_]_]_u_s_e a noexpand> │ │ │ │ +   <_[_[_r_e_f_]_]_/_b_l_o_c_k> │ │ │ │ +   <_[_[_r_e_f_]_]_s_e_t time="2"> │ │ │ │ +   <_[_[_r_e_f_]_]_b_l_o_c_k name=a> │ │ │ │ +     a is defined for the 2nd time <_[_[_r_e_f_]_]_u_s_e │ │ │ │ + time>. │ │ │ │ +   <_[_[_r_e_f_]_]_/_b_l_o_c_k> │ │ │ │ +   <_[_[_r_e_f_]_]_u_s_e c> │ │ │ │ +   <_[_[_r_e_f_]_]_u_s_e d> │ │ │ │ +   <_[_[_r_e_f_]_]_u_s_e e> │ │ │ │ Make sure that the variable is never defined and │ │ │ │ xyz should be the reason why you don't want to │ │ │ │ include this block │ │ ├── ./usr/share/doc/htp/def.html │ │ │ @@ -173,38 +173,14 @@ │ │ │

│ │ │ Options can be passed to a metatag, which can then expand as if it were │ │ │ a SET macro. Option names are parameterized with │ │ │ the OPTION attribute. Multiple options can be listed by separating their │ │ │ name with a space (which therefore requires they be surrounded by quotes.) │ │ │

│ │ │

│ │ │ -  <[ref]DEF NAME="HEADERIMG" OPTION="SRC TITLE SIZE">
│ │ │ -    <[ref]IF size>
│ │ │ -        <FONT SIZE=${size}>
│ │ │ -    <[ref]/IF>
│ │ │ -    <[ref]IMG SRC=pics/${src}>
│ │ │ -    <[ref]USE title>
│ │ │ -    <[ref]IF size>
│ │ │ -        </FONT>
│ │ │ -    <[ref]/IF>
│ │ │ -  <[ref]/DEF>
│ │ │ -
│ │ │ -  <HEADERIMG SRC="logo.gif" SIZE="+2" TITLE="A title">
│ │ │ -
│ │ │ -  <HEADERIMG SRC="logo.gif" TITLE="Normal sized title">
│ │ │ -
│ │ │ -  This will fail:
│ │ │ -  <HEADERIMG SRC="logo.gif" ALT="Our logo" TITLE="Another title">
│ │ │ -
│ │ │ -  Instead, use * like this:
│ │ │ -  <[ref]DEF NAME="MYIMG" OPTION="SRC *">
│ │ │ -    <[ref]IMG SRC="pics/${src}" $*>
│ │ │ -  <[ref]/DEF>
│ │ │ -   
│ │ │ -  <MYIMG SRC="logo.gif" ALT="Our logo">
│ │ │

│ │ │

│ │ │ htp will do very specific checking of parameters when a metatag is │ │ │ invoked. htp assumes that all parameter options to the metatag are │ │ │ optional. This is why the HEADERIMG definition uses IF to verify the │ │ │ SIZE option is defined before expanding it in the block. If a │ │ │ parameter is required, simply expand it without first checking. When │ │ │ ├── html2text {} │ │ │ │ @@ -54,42 +54,14 @@ │ │ │ │ check for matching end tag. It is not that slower. │ │ │ │ Options can be passed to a metatag, which can then │ │ │ │ expand as if it were a _S_E_T macro. Option names are │ │ │ │ parameterized with the OPTION attribute. Multiple │ │ │ │ options can be listed by separating their name with │ │ │ │ a space (which therefore requires they be │ │ │ │ surrounded by quotes.) │ │ │ │ -   <_[_[_r_e_f_]_]_D_E_F NAME="HEADERIMG" OPTION="SRC TITLE │ │ │ │ - SIZE"> │ │ │ │ -     <_[_[_r_e_f_]_]_I_F size> │ │ │ │ -         │ │ │ │ -     <_[_[_r_e_f_]_]_/_I_F> │ │ │ │ -     <_[_[_r_e_f_]_]_I_M_G SRC=pics/${src}> │ │ │ │ -     <_[_[_r_e_f_]_]_U_S_E title> │ │ │ │ -     <_[_[_r_e_f_]_]_I_F size> │ │ │ │ -         │ │ │ │ -     <_[_[_r_e_f_]_]_/_I_F> │ │ │ │ -   <_[_[_r_e_f_]_]_/_D_E_F> │ │ │ │ - │ │ │ │ -   │ │ │ │ - │ │ │ │ -   │ │ │ │ - │ │ │ │ -   This will fail: │ │ │ │ -   │ │ │ │ - │ │ │ │ -   Instead, use * like this: │ │ │ │ -   <_[_[_r_e_f_]_]_D_E_F NAME="MYIMG" OPTION="SRC *"> │ │ │ │ -     <_[_[_r_e_f_]_]_I_M_G SRC="pics/${src}" $*> │ │ │ │ -   <_[_[_r_e_f_]_]_/_D_E_F> │ │ │ │ -     │ │ │ │ -   │ │ │ │ htp will do very specific checking of parameters │ │ │ │ when a metatag is invoked. htp assumes that all │ │ │ │ parameter options to the metatag are optional. This │ │ │ │ is why the HEADERIMG definition uses IF to verify │ │ │ │ the SIZE option is defined before expanding it in │ │ │ │ the block. If a parameter is required, simply │ │ │ │ expand it without first checking. When htp expands │ │ ├── ./usr/share/doc/htp/expand.html │ │ │ @@ -98,49 +98,27 @@ │ │ │

However, if the block tag is marked with the expand │ │ │ modifier it is expanded immediately. This is useful if you want to │ │ │ store something in a block macro, that depends on the current value of │ │ │ another macro. This other macro may no longer have the correct value │ │ │ when the macro is expanded. Here is some code that demonstrate when │ │ │ the htp tags are expanded:

│ │ │

│ │ │ - 1.   <[ref]def name="bigfont">
│ │ │ - 2.     <font size="+4">
│ │ │ - 3.   <[ref]/def>
│ │ │ - 4.
│ │ │ - 5.   <[ref]def name="/bigfont">
│ │ │ - 6.     </font>
│ │ │ - 7.   <[ref]/def>
│ │ │ - 8.
│ │ │ - 9.   <bigfont>Some large text</bigfont>
│ │ │ + 1. <[ref]file execute="command-line" (output="filename" | redirect) [noerror]>
│ │ │ + 2. <[ref]file include="includefilename" [parameters ...]>
│ │ │ + 3. <[ref]file name>
│ │ │ + 4. <[ref]file [ name="filename" ] size[ = (byte|kbyte|mbyte|gbyte) ] [precision=n]>
│ │ │ + 5. <[ref]file [ name="filename" ] time[ ="format" ]>
│ │ │ + 6. <[ref]file [ name="filename" ] date[ ="format" ]>
│ │ │ + 7. <[ref]file search="searchpath">
│ │ │ + 8. <[ref]file template="templatefilename">
│ │ │ + 9.
│ │ │

│ │ │ This produces the following: │ │ │

│ │ │     <EM>File "<[ref]FILE NAME>" last updated <[ref]FILE TIME>, <[ref]FILE DATE></EM>
│ │ │ - <FONT SIZE=${size}>
│ │ │ -    <[ref]/IF>
│ │ │ -    <[ref]IMG SRC=pics/${src}>
│ │ │ -    <[ref]USE title>
│ │ │ -    <[ref]IF size>
│ │ │ -        </FONT>
│ │ │ -    <[ref]/IF>
│ │ │ -  <[ref]/DEF>
│ │ │ -
│ │ │ -  <HEADERIMG SRC="logo.gif" SIZE="+2" TITLE="A title">
│ │ │ -
│ │ │ -  <HEADERIMG SRC="logo.gif" TITLE="Normal sized title">
│ │ │ -
│ │ │ -  This will fail:
│ │ │ -  <HEADERIMG SRC="logo.gif" ALT="Our logo" TITLE="Another title">
│ │ │ -
│ │ │ -  Instead, use * like this:
│ │ │ -  <[ref]DEF NAME="MYIMG" OPTION="SRC *">
│ │ │ -    <[ref]IMG SRC="pics/${src}" $*>
│ │ │ -  <[ref]/DEF>
│ │ │ -   
│ │ │ -  <MYIMG SRC="logo.gif" ALT="Our logo">
│ │ │

│ │ │

│ │ │ When block a and block b are defined in lines 2-7 the contents of a │ │ │ are taken literally, however, the contents for b are already expanded │ │ │ so the macro time is evaluated. So a is expanded when it │ │ │ is used, while the contents of b are already expanded. │ │ │

│ │ │ ├── html2text {} │ │ │ │ @@ -24,51 +24,31 @@ │ │ │ │ However, if the block tag is marked with the expand │ │ │ │ modifier it is expanded immediately. This is useful │ │ │ │ if you want to store something in a block macro, │ │ │ │ that depends on the current value of another macro. │ │ │ │ This other macro may no longer have the correct │ │ │ │ value when the macro is expanded. Here is some code │ │ │ │ that demonstrate when the htp tags are expanded: │ │ │ │ -  1.   <_[_[_r_e_f_]_]_d_e_f name="bigfont"> │ │ │ │ -  2.     │ │ │ │ -  3.   <_[_[_r_e_f_]_]_/_d_e_f> │ │ │ │ -  4. │ │ │ │ -  5.   <_[_[_r_e_f_]_]_d_e_f name="/bigfont"> │ │ │ │ -  6.     │ │ │ │ -  7.   <_[_[_r_e_f_]_]_/_d_e_f> │ │ │ │ -  8. │ │ │ │ -  9.   Some large text │ │ │ │ +  1. <_[_[_r_e_f_]_]_f_i_l_e execute="command-line" │ │ │ │ + (output="filename" | redirect) [noerror]> │ │ │ │ +  2. <_[_[_r_e_f_]_]_f_i_l_e include="includefilename" │ │ │ │ + [parameters ...]> │ │ │ │ +  3. <_[_[_r_e_f_]_]_f_i_l_e name> │ │ │ │ +  4. <_[_[_r_e_f_]_]_f_i_l_e [ name="filename" ] size[ = │ │ │ │ + (byte|kbyte|mbyte|gbyte) ] [precision=n]> │ │ │ │ +  5. <_[_[_r_e_f_]_]_f_i_l_e [ name="filename" ] time │ │ │ │ + [ ="format" ]> │ │ │ │ +  6. <_[_[_r_e_f_]_]_f_i_l_e [ name="filename" ] date │ │ │ │ + [ ="format" ]> │ │ │ │ +  7. <_[_[_r_e_f_]_]_f_i_l_e search="searchpath"> │ │ │ │ +  8. <_[_[_r_e_f_]_]_f_i_l_e template="templatefilename"> │ │ │ │ +  9. │ │ │ │ This produces the following: │ │ │ │     File "<_[_[_r_e_f_]_]_F_I_L_E NAME>" last updated <_[ │ │ │ │ _[_r_e_f_]_]_F_I_L_E TIME>, <_[_[_r_e_f_]_]_F_I_L_E DATE> │ │ │ │ -   │ │ │ │ -     <_[_[_r_e_f_]_]_/_I_F> │ │ │ │ -     <_[_[_r_e_f_]_]_I_M_G SRC=pics/${src}> │ │ │ │ -     <_[_[_r_e_f_]_]_U_S_E title> │ │ │ │ -     <_[_[_r_e_f_]_]_I_F size> │ │ │ │ -         │ │ │ │ -     <_[_[_r_e_f_]_]_/_I_F> │ │ │ │ -   <_[_[_r_e_f_]_]_/_D_E_F> │ │ │ │ - │ │ │ │ -   │ │ │ │ - │ │ │ │ -   │ │ │ │ - │ │ │ │ -   This will fail: │ │ │ │ -   │ │ │ │ - │ │ │ │ -   Instead, use * like this: │ │ │ │ -   <_[_[_r_e_f_]_]_D_E_F NAME="MYIMG" OPTION="SRC *"> │ │ │ │ -     <_[_[_r_e_f_]_]_I_M_G SRC="pics/${src}" $*> │ │ │ │ -   <_[_[_r_e_f_]_]_/_D_E_F> │ │ │ │ -     │ │ │ │ -   │ │ │ │ When block a and block b are defined in lines 2- │ │ │ │ 7 the contents of a are taken literally, however, │ │ │ │ the contents for b are already expanded so the │ │ │ │ macro time is evaluated. So a is expanded when it │ │ │ │ is used, while the contents of b are already │ │ │ │ expanded. │ │ │ │ In line 10 and 12 the _[_[_r_e_f_]_]_u_s_e tag is used with │ │ ├── ./usr/share/doc/htp/file.html │ │ │ @@ -114,21 +114,23 @@ │ │ │ Bugs │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

syntax

│ │ │

│ │ │ -    a is expanded at time 1.
│ │ │ -    b is expanded at time 0.
│ │ │ -  contents of a:   a is expanded at time <[ref]use time>.
│ │ │ -  contents of b:   b is expanded at time 0.
│ │ │ -    c is expanded at time 1;   a is expanded at time 1.
│ │ │ -    d is expanded at time 1;   a is expanded at time 2.
│ │ │ -    e is expanded at time 2;   a is defined for the 2nd time <[ref]use time>.
│ │ │ +  <[ref]def name="bigfont">
│ │ │ +    <font size="+4">
│ │ │ +  <[ref]/def>
│ │ │ +
│ │ │ +  <[ref]def name="/bigfont">
│ │ │ +    </font>
│ │ │ +  <[ref]/def>
│ │ │ +
│ │ │ +  <bigfont>Some large text</bigfont>
│ │ │

│ │ │

synopsis

│ │ │ FILE has several optional parameters of differing purpose. │ │ │ The output file's name, the current date and time, and the contents of │ │ │ another file may be included. Another file's time, date, or size may be │ │ │ added to the output file as well. │ │ │

│ │ │ @@ -201,15 +203,18 @@ │ │ │

│ │ │ Additional parameters can be set in the FILE INCLUDE tag, which are │ │ │ interpreted as macros that are "passed" to the included file. The macros │ │ │ are available only to the include file (and any macros or included files it │ │ │ holds). After the file is completely included, the macros are no longer │ │ │ available. So: │ │ │

│ │ │ -    <[ref]IF name="Jim">...<[ref]/IF>
│ │ │ +<[ref]imageurl url="imageurl" [ path="path/in/local/filesystem" ]>
│ │ │ +
│ │ │ +n@crl.com">
│ │ │ +    This tag will fail: <[ref]USE name>
│ │ │

│ │ │

│ │ │ Macros named "name" and "email" are set, and available inside the included │ │ │ file. They are not available, however, past the tag (which is why the │ │ │ second statement will fail.) │ │ │

│ │ │

TEMPLATE

│ │ │ ├── html2text {} │ │ │ │ @@ -1,38 +1,36 @@ │ │ │ │ [HTP] │ │ │ │ ************ hhttpp oonn--lliinnee rreeffeerreennccee :: FFIILLEE ************ │ │ │ │ _T_a_b_l_e_ _o_f_ _C_o_n_t_e_n_t_s ********** ssyynnttaaxx ********** │ │ │ │ -  _I_n_t_r_o_d_u_c_t_i_o_n     a is expanded at time 1. │ │ │ │ -  _L_i_c_e_n_s_e     b is expanded at time 0. │ │ │ │ -  _T_u_t_o_r_i_a_l   contents of a:   a is expanded at time <_[ │ │ │ │ -  _U_s_a_g_e _[_r_e_f_]_]_u_s_e time>. │ │ │ │ -  HTP Tags   contents of b:   b is expanded at time 0. │ │ │ │ -    _A_L_T_T_E_X_T     c is expanded at time 1;   a is expanded at │ │ │ │ -    _B_L_O_C_K time 1. │ │ │ │ -    _B_L_O_C_K_D_E_F     d is expanded at time 1;   a is expanded at │ │ │ │ -    _D_E_F time 2. │ │ │ │ -  [>] _F_I_L_E     e is expanded at time 2;   a is defined for the │ │ │ │ -    _I_F 2nd time <_[_[_r_e_f_]_]_u_s_e time>. │ │ │ │ -    _I_N_C ********** ssyynnooppssiiss ********** │ │ │ │ -    _I_M_G FFIILLEE has several optional parameters of differing │ │ │ │ -    _I_M_A_G_E_U_R_L purpose. The output file's name, the current date │ │ │ │ -    _O_P_T and time, and the contents of another file may be │ │ │ │ -    _O_U_T_P_U_T included. Another file's time, date, or size may be │ │ │ │ -    _Q_U_O_T_E added to the output file as well. │ │ │ │ -    _S_E_T As with all HTML, these tags do not have to be on │ │ │ │ -    _U_N_D_E_F their own line, so the following is perfectly │ │ │ │ -    _U_N_S_E_T acceptable: │ │ │ │ -    _U_S_E_,_ _$   <_[_[_r_e_f_]_]_D_E_F NAME="HEADERIMG" OPTION="SRC TITLE │ │ │ │ -    _W_H_I_L_E SIZE"> │ │ │ │ -    _<_!_-_-_-     <_[_[_r_e_f_]_]_I_F size> │ │ │ │ -  _H_i_s_t_o_r_y         │ │ │ │ -  _W_i_s_h_ _l_i_s_t     <_[_[_r_e_f_]_]_/_I_F> │ │ │ │ -  _B_u_g_s     <_[_[_r_e_f_]_]_I_M_G SRC=pics/${src}> │ │ │ │ -     <_[_[_r_e_f_]_]_U_S_E title> │ │ │ │ -     <_[_[_r_e_f_]_]_I_F size> │ │ │ │ +  _I_n_t_r_o_d_u_c_t_i_o_n   <_[_[_r_e_f_]_]_d_e_f name="bigfont"> │ │ │ │ +  _L_i_c_e_n_s_e     │ │ │ │ +  _T_u_t_o_r_i_a_l   <_[_[_r_e_f_]_]_/_d_e_f> │ │ │ │ +  _U_s_a_g_e │ │ │ │ +  HTP Tags   <_[_[_r_e_f_]_]_d_e_f name="/bigfont"> │ │ │ │ +    _A_L_T_T_E_X_T     │ │ │ │ +    _B_L_O_C_K   <_[_[_r_e_f_]_]_/_d_e_f> │ │ │ │ +    _B_L_O_C_K_D_E_F │ │ │ │ +    _D_E_F   Some large text │ │ │ │ +  [>] _F_I_L_E ********** ssyynnooppssiiss ********** │ │ │ │ +    _I_F FFIILLEE has several optional parameters of differing │ │ │ │ +    _I_N_C purpose. The output file's name, the current date │ │ │ │ +    _I_M_G and time, and the contents of another file may be │ │ │ │ +    _I_M_A_G_E_U_R_L included. Another file's time, date, or size may be │ │ │ │ +    _O_P_T added to the output file as well. │ │ │ │ +    _O_U_T_P_U_T As with all HTML, these tags do not have to be on │ │ │ │ +    _Q_U_O_T_E their own line, so the following is perfectly │ │ │ │ +    _S_E_T acceptable: │ │ │ │ +    _U_N_D_E_F   <_[_[_r_e_f_]_]_D_E_F NAME="HEADERIMG" OPTION="SRC TITLE │ │ │ │ +    _U_N_S_E_T SIZE"> │ │ │ │ +    _U_S_E_,_ _$     <_[_[_r_e_f_]_]_I_F size> │ │ │ │ +    _W_H_I_L_E         │ │ │ │ +    _<_!_-_-_-     <_[_[_r_e_f_]_]_/_I_F> │ │ │ │ +  _H_i_s_t_o_r_y     <_[_[_r_e_f_]_]_I_M_G SRC=pics/${src}> │ │ │ │ +  _W_i_s_h_ _l_i_s_t     <_[_[_r_e_f_]_]_U_S_E title> │ │ │ │ +  _B_u_g_s     <_[_[_r_e_f_]_]_I_F size> │ │ │ │         │ │ │ │     <_[_[_r_e_f_]_]_/_I_F> │ │ │ │   <_[_[_r_e_f_]_]_/_D_E_F> │ │ │ │ │ │ │ │   │ │ │ │ │ │ │ │ @@ -90,15 +88,19 @@ │ │ │ │ Additional parameters can be set in the FILE │ │ │ │ INCLUDE tag, which are interpreted as macros that │ │ │ │ are "passed" to the included file. The macros are │ │ │ │ available only to the include file (and any macros │ │ │ │ or included files it holds). After the file is │ │ │ │ completely included, the macros are no longer │ │ │ │ available. So: │ │ │ │ -     <_[_[_r_e_f_]_]_I_F name="Jim">...<_[_[_r_e_f_]_]_/_I_F> │ │ │ │ + <_[_[_r_e_f_]_]_i_m_a_g_e_u_r_l url="imageurl" [ path="path/in/ │ │ │ │ + local/filesystem" ]> │ │ │ │ + │ │ │ │ + n@crl.com"> │ │ │ │ +     This tag will fail: <_[_[_r_e_f_]_]_U_S_E name> │ │ │ │ Macros named "name" and "email" are set, and │ │ │ │ available inside the included file. They are not │ │ │ │ available, however, past the tag (which is why the │ │ │ │ second statement will fail.) │ │ │ │ ******** TTEEMMPPLLAATTEE ******** │ │ │ │ A template file is nothing more than a default │ │ │ │ include file, one that is included once the input │ │ ├── ./usr/share/doc/htp/if.html │ │ │ @@ -114,25 +114,28 @@ │ │ │ Bugs │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

syntax

│ │ │

│ │ │ -    <[ref]FILE INCLUDE="include.hti" name="Jim Nelson" email="jnelson@crl.com">
│ │ │ -    This tag will fail: <[ref]USE name>
│ │ │ +<[ref]img src="filename" ...>
│ │ │ +
│ │ │

│ │ │

synopsis

│ │ │ IF, NOT, ELSEIF, ELSE, and /IF are the building │ │ │ blocks for conditional processing. The basic form is shown above. │ │ │

"Conditional" is either a "compare" or "is defined" operation. A │ │ │ compare operator is a test of the value of a macro against a literal │ │ │ string: │ │ │

│ │ │ -    <[ref]IF name="Jim">...<[ref]/IF>
│ │ │ +<[ref]imageurl url="imageurl" [ path="path/in/local/filesystem" ]>
│ │ │ +
│ │ │ +n@crl.com">
│ │ │ +    This tag will fail: <[ref]USE name>
│ │ │

│ │ │

│ │ │ and a defined operator is a test of a macro's existance: │ │ │

│ │ │

│ │ │ <[ref]INC macroname1="increment1" [macroname2="increment2" ... ] [GLOBAL]>
│ │ │
│ │ │ ├── html2text {} │ │ │ │ @@ -1,36 +1,39 @@ │ │ │ │ [HTP] │ │ │ │ ************ hhttpp oonn--lliinnee rreeffeerreennccee :: IIFF,, EELLSSEEIIFF,, EELLSSEE,, //IIFF ************ │ │ │ │ _T_a_b_l_e_ _o_f_ _C_o_n_t_e_n_t_s ********** ssyynnttaaxx ********** │ │ │ │ -  _I_n_t_r_o_d_u_c_t_i_o_n     <_[_[_r_e_f_]_]_F_I_L_E INCLUDE="include.hti" name="Jim │ │ │ │ -  _L_i_c_e_n_s_e Nelson" email="jnelson@crl.com"> │ │ │ │ -  _T_u_t_o_r_i_a_l     This tag will fail: <_[_[_r_e_f_]_]_U_S_E name> │ │ │ │ -  _U_s_a_g_e ********** ssyynnooppssiiss ********** │ │ │ │ -  HTP Tags IIFF,, NNOOTT,, EELLSSEEIIFF,, EELLSSEE,, aanndd //IIFF are the building │ │ │ │ -    _A_L_T_T_E_X_T blocks for conditional processing. The basic form │ │ │ │ -    _B_L_O_C_K is shown above. │ │ │ │ -    _B_L_O_C_K_D_E_F "Conditional" is either a "compare" or "is defined" │ │ │ │ -    _D_E_F operation. A compare operator is a test of the │ │ │ │ -    _F_I_L_E value of a macro against a literal string: │ │ │ │ -  [>] _I_F     <_[_[_r_e_f_]_]_I_F name="Jim">...<_[_[_r_e_f_]_]_/_I_F> │ │ │ │ -    _I_N_C and a defined operator is a test of a macro's │ │ │ │ -    _I_M_G existance: │ │ │ │ -    _I_M_A_G_E_U_R_L <_[_[_r_e_f_]_]_I_N_C macroname1="increment1" │ │ │ │ -    _O_P_T [macroname2="increment2" ... ] [GLOBAL]> │ │ │ │ -    _O_U_T_P_U_T │ │ │ │ -    _Q_U_O_T_E If the NOT tag is present in the IF markup, the │ │ │ │ -    _S_E_T evaluation of the conditional is reversed. The │ │ │ │ -    _U_N_D_E_F first IF or ELSEIF condition that evaluates to true │ │ │ │ -    _U_N_S_E_T is chosen. If none of the conditions is true the │ │ │ │ -    _U_S_E_,_ _$ ELSE block is taken if it is present. A conditional │ │ │ │ -    _W_H_I_L_E block mmuusstt be closed with the /IF tag. IF tags can │ │ │ │ -    _<_!_-_-_- be nested. │ │ │ │ -  _H_i_s_t_o_r_y │ │ │ │ -  _W_i_s_h_ _l_i_s_t │ │ │ │ -  _B_u_g_s │ │ │ │ +  _I_n_t_r_o_d_u_c_t_i_o_n <_[_[_r_e_f_]_]_i_m_g src="filename" ...> │ │ │ │ +  _L_i_c_e_n_s_e │ │ │ │ +  _T_u_t_o_r_i_a_l ********** ssyynnooppssiiss ********** │ │ │ │ +  _U_s_a_g_e IIFF,, NNOOTT,, EELLSSEEIIFF,, EELLSSEE,, aanndd //IIFF are the building │ │ │ │ +  HTP Tags blocks for conditional processing. The basic form │ │ │ │ +    _A_L_T_T_E_X_T is shown above. │ │ │ │ +    _B_L_O_C_K "Conditional" is either a "compare" or "is defined" │ │ │ │ +    _B_L_O_C_K_D_E_F operation. A compare operator is a test of the │ │ │ │ +    _D_E_F value of a macro against a literal string: │ │ │ │ +    _F_I_L_E <_[_[_r_e_f_]_]_i_m_a_g_e_u_r_l url="imageurl" [ path="path/in/ │ │ │ │ +  [>] _I_F local/filesystem" ]> │ │ │ │ +    _I_N_C │ │ │ │ +    _I_M_G n@crl.com"> │ │ │ │ +    _I_M_A_G_E_U_R_L     This tag will fail: <_[_[_r_e_f_]_]_U_S_E name> │ │ │ │ +    _O_P_T and a defined operator is a test of a macro's │ │ │ │ +    _O_U_T_P_U_T existance: │ │ │ │ +    _Q_U_O_T_E <_[_[_r_e_f_]_]_I_N_C macroname1="increment1" │ │ │ │ +    _S_E_T [macroname2="increment2" ... ] [GLOBAL]> │ │ │ │ +    _U_N_D_E_F │ │ │ │ +    _U_N_S_E_T If the NOT tag is present in the IF markup, the │ │ │ │ +    _U_S_E_,_ _$ evaluation of the conditional is reversed. The │ │ │ │ +    _W_H_I_L_E first IF or ELSEIF condition that evaluates to true │ │ │ │ +    _<_!_-_-_- is chosen. If none of the conditions is true the │ │ │ │ +  _H_i_s_t_o_r_y ELSE block is taken if it is present. A conditional │ │ │ │ +  _W_i_s_h_ _l_i_s_t block mmuusstt be closed with the /IF tag. IF tags can │ │ │ │ +  _B_u_g_s be nested. │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ ├── ./usr/share/doc/htp/imageurl.html │ │ │ @@ -114,15 +114,18 @@ │ │ │ Bugs │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

syntax

│ │ │

│ │ │ -    <[ref]IF name="Jim">...<[ref]/IF>
│ │ │ +<[ref]imageurl url="imageurl" [ path="path/in/local/filesystem" ]>
│ │ │ +
│ │ │ +n@crl.com">
│ │ │ +    This tag will fail: <[ref]USE name>
│ │ │

│ │ │

synopsis

│ │ │

│ │ │ IMAGEURL tells htp, where to find images on the local │ │ │ file system. declares an URL replacement that is used for │ │ │ size lookups in any IMG tag. This definitions │ │ │ takes effect only if the IMGXY option is │ │ │ ├── html2text {} │ │ │ │ @@ -1,36 +1,40 @@ │ │ │ │ [HTP] │ │ │ │ ************ hhttpp oonn--lliinnee rreeffeerreennccee :: IIMMAAGGEEUURRLL ************ │ │ │ │ _T_a_b_l_e_ _o_f_ _C_o_n_t_e_n_t_s ********** ssyynnttaaxx ********** │ │ │ │ -  _I_n_t_r_o_d_u_c_t_i_o_n     <_[_[_r_e_f_]_]_I_F name="Jim">...<_[_[_r_e_f_]_]_/_I_F> │ │ │ │ -  _L_i_c_e_n_s_e ********** ssyynnooppssiiss ********** │ │ │ │ -  _T_u_t_o_r_i_a_l IIMMAAGGEEUURRLL tells htp, where to find images on the │ │ │ │ -  _U_s_a_g_e local file system. declares an URL replacement that │ │ │ │ -  HTP Tags is used for size lookups in any _I_M_G tag. This │ │ │ │ -    _A_L_T_T_E_X_T definitions takes effect only if the _I_M_G_X_Y option │ │ │ │ -    _B_L_O_C_K is enabled. Beacause htp can't lookup files in the │ │ │ │ -    _B_L_O_C_K_D_E_F world wide web you have to map absolute image URLs │ │ │ │ -    _D_E_F to a directory in the local file system. │ │ │ │ -    _F_I_L_E When an IMG tag is encountered where htp has to │ │ │ │ -    _I_F insert width and height the defined URL │ │ │ │ -    _I_N_C replacements will be taken into account (later │ │ │ │ -    _I_M_G definitions take precedence to earlier): For each │ │ │ │ -  [>] _I_M_A_G_E_U_R_L defined imageurl it checks (case-insensitive) if it │ │ │ │ -    _O_P_T is a prefix of the image's SRC attribute. If it │ │ │ │ -    _O_U_T_P_U_T matches this prefix is replaced by the given PATH. │ │ │ │ -    _Q_U_O_T_E If no IMAGEURL matches the SRC is considered as │ │ │ │ -    _S_E_T relative link and looked up in the current │ │ │ │ -    _U_N_D_E_F directory. │ │ │ │ -    _U_N_S_E_T For example: │ │ │ │ -    _U_S_E_,_ _$ <_[_[_r_e_f_]_]_I_N_C macroname1="increment1" │ │ │ │ -    _W_H_I_L_E [macroname2="increment2" ... ] [GLOBAL]> │ │ │ │ -    _<_!_-_-_- │ │ │ │ -  _H_i_s_t_o_r_y If IMAGEURL is specified with a URL but no PATH │ │ │ │ -  _W_i_s_h_ _l_i_s_t attribute, it is treated as an undefine, and is │ │ │ │ -  _B_u_g_s removed. │ │ │ │ +  _I_n_t_r_o_d_u_c_t_i_o_n <_[_[_r_e_f_]_]_i_m_a_g_e_u_r_l url="imageurl" [ path="path/in/ │ │ │ │ +  _L_i_c_e_n_s_e local/filesystem" ]> │ │ │ │ +  _T_u_t_o_r_i_a_l │ │ │ │ +  _U_s_a_g_e n@crl.com"> │ │ │ │ +  HTP Tags     This tag will fail: <_[_[_r_e_f_]_]_U_S_E name> │ │ │ │ +    _A_L_T_T_E_X_T ********** ssyynnooppssiiss ********** │ │ │ │ +    _B_L_O_C_K IIMMAAGGEEUURRLL tells htp, where to find images on the │ │ │ │ +    _B_L_O_C_K_D_E_F local file system. declares an URL replacement that │ │ │ │ +    _D_E_F is used for size lookups in any _I_M_G tag. This │ │ │ │ +    _F_I_L_E definitions takes effect only if the _I_M_G_X_Y option │ │ │ │ +    _I_F is enabled. Beacause htp can't lookup files in the │ │ │ │ +    _I_N_C world wide web you have to map absolute image URLs │ │ │ │ +    _I_M_G to a directory in the local file system. │ │ │ │ +  [>] _I_M_A_G_E_U_R_L When an IMG tag is encountered where htp has to │ │ │ │ +    _O_P_T insert width and height the defined URL │ │ │ │ +    _O_U_T_P_U_T replacements will be taken into account (later │ │ │ │ +    _Q_U_O_T_E definitions take precedence to earlier): For each │ │ │ │ +    _S_E_T defined imageurl it checks (case-insensitive) if it │ │ │ │ +    _U_N_D_E_F is a prefix of the image's SRC attribute. If it │ │ │ │ +    _U_N_S_E_T matches this prefix is replaced by the given PATH. │ │ │ │ +    _U_S_E_,_ _$ If no IMAGEURL matches the SRC is considered as │ │ │ │ +    _W_H_I_L_E relative link and looked up in the current │ │ │ │ +    _<_!_-_-_- directory. │ │ │ │ +  _H_i_s_t_o_r_y For example: │ │ │ │ +  _W_i_s_h_ _l_i_s_t <_[_[_r_e_f_]_]_I_N_C macroname1="increment1" │ │ │ │ +  _B_u_g_s [macroname2="increment2" ... ] [GLOBAL]> │ │ │ │ + │ │ │ │ + If IMAGEURL is specified with a URL but no PATH │ │ │ │ + attribute, it is treated as an undefine, and is │ │ │ │ + removed. │ │ │ │ Since you usually need the url mapping for a number │ │ │ │ of images used throughout a set of documents, │ │ │ │ IMAGEURL is most appropriately put into an _i_n_c_l_u_d_e │ │ │ │ _f_i_l_e or the _h_t_p_._d_e_f file. │ │ │ │ In addition to WIDTH and HEIGHT, htp can also │ │ │ │ (semi-)automatically add an _A_L_T_ _t_e_x_t attribute to │ │ │ │ _I_M_G tags. │ │ ├── ./usr/share/doc/htp/img.html │ │ │ @@ -114,15 +114,14 @@ │ │ │ Bugs │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

syntax

│ │ │

│ │ │ -    <[ref]IF name="Jim">...<[ref]/IF>
│ │ │

│ │ │

synopsis

│ │ │

img is a standard HTML tag. htp can add the specified │ │ │ image's width and height to the tag automatically. This has the advantage │ │ │ of not having to determine each image's size manually, which is especially │ │ │ useful if the image may change frequently.

│ │ │

htp adds this information with the WIDTH and HEIGHT markup │ │ │ ├── html2text {} │ │ │ │ @@ -1,44 +1,43 @@ │ │ │ │ [HTP] │ │ │ │ ************ hhttpp oonn--lliinnee rreeffeerreennccee :: IIMMGG ************ │ │ │ │ _T_a_b_l_e_ _o_f_ _C_o_n_t_e_n_t_s ********** ssyynnttaaxx ********** │ │ │ │ -  _I_n_t_r_o_d_u_c_t_i_o_n     <_[_[_r_e_f_]_]_I_F name="Jim">...<_[_[_r_e_f_]_]_/_I_F> │ │ │ │ -  _L_i_c_e_n_s_e ********** ssyynnooppssiiss ********** │ │ │ │ -  _T_u_t_o_r_i_a_l iimmgg is a standard HTML tag. htp can add the │ │ │ │ -  _U_s_a_g_e specified image's width and height to the tag │ │ │ │ -  HTP Tags automatically. This has the advantage of not having │ │ │ │ -    _A_L_T_T_E_X_T to determine each image's size manually, which is │ │ │ │ -    _B_L_O_C_K especially useful if the image may change │ │ │ │ -    _B_L_O_C_K_D_E_F frequently. │ │ │ │ -    _D_E_F htp adds this information with the WIDTH and HEIGHT │ │ │ │ -    _F_I_L_E markup attributes. If htp detects these attributes │ │ │ │ -    _I_F are already present in the tag, it will nnoott modify │ │ │ │ -    _I_N_C the values. If htp cannot find the image file, it │ │ │ │ -  [>] _I_M_G will issue a warning but not halt processing. │ │ │ │ -    _I_M_A_G_E_U_R_L At this time, GIF (Graphic Interchange Format), PNG │ │ │ │ -    _O_P_T (Portable Network Graphics), and JFIF (JPEG File │ │ │ │ -    _O_U_T_P_U_T Interchange Format) are supported. │ │ │ │ -    _Q_U_O_T_E The _I_M_G_X_Y_ _a_n_d_ _N_O_I_M_G_X_Y options control whether or │ │ │ │ -    _S_E_T not htp actually adds this information as it │ │ │ │ -    _U_N_D_E_F executes. │ │ │ │ -    _U_N_S_E_T Since htp is able to lookup files only in the local │ │ │ │ -    _U_S_E_,_ _$ filesystem, the _I_M_A_G_E_U_R_L tag may be used to map │ │ │ │ -    _W_H_I_L_E URLs to local files. │ │ │ │ -    _<_!_-_-_- htp can also add default ALT text to IMG tags using │ │ │ │ -  _H_i_s_t_o_r_y _A_L_T_T_E_X_T. │ │ │ │ +  _I_n_t_r_o_d_u_c_t_i_o_n ********** ssyynnooppssiiss ********** │ │ │ │ +  _L_i_c_e_n_s_e iimmgg is a standard HTML tag. htp can add the │ │ │ │ +  _T_u_t_o_r_i_a_l specified image's width and height to the tag │ │ │ │ +  _U_s_a_g_e automatically. This has the advantage of not having │ │ │ │ +  HTP Tags to determine each image's size manually, which is │ │ │ │ +    _A_L_T_T_E_X_T especially useful if the image may change │ │ │ │ +    _B_L_O_C_K frequently. │ │ │ │ +    _B_L_O_C_K_D_E_F htp adds this information with the WIDTH and HEIGHT │ │ │ │ +    _D_E_F markup attributes. If htp detects these attributes │ │ │ │ +    _F_I_L_E are already present in the tag, it will nnoott modify │ │ │ │ +    _I_F the values. If htp cannot find the image file, it │ │ │ │ +    _I_N_C will issue a warning but not halt processing. │ │ │ │ +  [>] _I_M_G At this time, GIF (Graphic Interchange Format), PNG │ │ │ │ +    _I_M_A_G_E_U_R_L (Portable Network Graphics), and JFIF (JPEG File │ │ │ │ +    _O_P_T Interchange Format) are supported. │ │ │ │ +    _O_U_T_P_U_T The _I_M_G_X_Y_ _a_n_d_ _N_O_I_M_G_X_Y options control whether or │ │ │ │ +    _Q_U_O_T_E not htp actually adds this information as it │ │ │ │ +    _S_E_T executes. │ │ │ │ +    _U_N_D_E_F Since htp is able to lookup files only in the local │ │ │ │ +    _U_N_S_E_T filesystem, the _I_M_A_G_E_U_R_L tag may be used to map │ │ │ │ +    _U_S_E_,_ _$ URLs to local files. │ │ │ │ +    _W_H_I_L_E htp can also add default ALT text to IMG tags using │ │ │ │ +    _<_!_-_-_- _A_L_T_T_E_X_T. │ │ │ │ +  _H_i_s_t_o_r_y │ │ │ │   _W_i_s_h_ _l_i_s_t │ │ │ │   _B_u_g_s │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ ├── ./usr/share/doc/htp/metatag.html │ │ │ @@ -133,15 +133,17 @@ │ │ │

When you are using templates, the html should only be written by │ │ │ the template file. The normal htp files should just define macros │ │ │ that are used later in the template. So you may want to write block │ │ │ tags that just save the block in a macro for later use. Although this │ │ │ is possible with htp it is quite tricky, so here we present the way to │ │ │ do this:

│ │ │

│ │ │ - 1.     <[ref]SET emailaddr="jnelson@crl.com">
│ │ │ + 1. <[ref]UNDEF tagname>
│ │ │ + 2. <[ref]UNDEF tagname1 tagname2 ... >
│ │ │ + 3.
│ │ │

│ │ │

This defines a block macro named section. This macro uses a │ │ │ counter sect-ctr that enumerates the sections. It is │ │ │ increased for every section (line 3) and then the block macro name is │ │ │ build from this counter. So the first section is stored in block │ │ │ sect-1, the second in sect-2 and so on. The [ref]global flag │ │ │ in line 4 tells htp that these macros should be defined globally │ │ │ ├── html2text {} │ │ │ │ @@ -53,15 +53,17 @@ │ │ │ │ When you are using templates, the html should only │ │ │ │ be written by the template file. The normal htp │ │ │ │ files should just define macros that are used later │ │ │ │ in the template. So you may want to write block │ │ │ │ tags that just save the block in a macro for later │ │ │ │ use. Although this is possible with htp it is quite │ │ │ │ tricky, so here we present the way to do this: │ │ │ │ -  1.     <_[_[_r_e_f_]_]_S_E_T emailaddr="jnelson@crl.com"> │ │ │ │ +  1. <_[_[_r_e_f_]_]_U_N_D_E_F tagname> │ │ │ │ +  2. <_[_[_r_e_f_]_]_U_N_D_E_F tagname1 tagname2 ... > │ │ │ │ +  3. │ │ │ │ This defines a block macro named section. This │ │ │ │ macro uses a counter sect-ctr that enumerates the │ │ │ │ sections. It is increased for every section (line │ │ │ │ 3) and then the block macro name is build from this │ │ │ │ counter. So the first section is stored in block │ │ │ │ sect-1, the second in sect-2 and so on. The _[ │ │ │ │ _[_r_e_f_]_]_g_l_o_b_a_l flag in line 4 tells htp that these │ │ ├── ./usr/share/doc/htp/set.html │ │ │ @@ -114,17 +114,21 @@ │ │ │ Bugs │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

syntax

│ │ │

│ │ │ -<[ref]UNDEF tagname>
│ │ │ -<[ref]UNDEF tagname1 tagname2 ... >
│ │ │ -
│ │ │ +  <[ref]set sect-ctr="0">
│ │ │ +  <[ref]blockdef name="section">
│ │ │ +    <[ref]inc sect-ctr>
│ │ │ +    <[ref]block name="sect-${sect-ctr}" expand global>
│ │ │ +      <[ref]use block noexpand>
│ │ │ +    <[ref]/block>
│ │ │ +  <[ref]/blockdef>
│ │ │

│ │ │

synopsis

│ │ │ SET creates a macro definition that can later be expanded │ │ │ anywhere in the HTML document. To create a macro: │ │ │

│ │ │ <[ref]file include="header.hti">
│ │ │   <[ref]set sect-ctr="1">
│ │ │ ├── html2text {} │ │ │ │ @@ -1,36 +1,41 @@ │ │ │ │ [HTP] │ │ │ │ ************ hhttpp oonn--lliinnee rreeffeerreennccee :: SSEETT ************ │ │ │ │ _T_a_b_l_e_ _o_f_ _C_o_n_t_e_n_t_s ********** ssyynnttaaxx ********** │ │ │ │ -  _I_n_t_r_o_d_u_c_t_i_o_n <_[_[_r_e_f_]_]_U_N_D_E_F tagname> │ │ │ │ -  _L_i_c_e_n_s_e <_[_[_r_e_f_]_]_U_N_D_E_F tagname1 tagname2 ... > │ │ │ │ -  _T_u_t_o_r_i_a_l │ │ │ │ -  _U_s_a_g_e ********** ssyynnooppssiiss ********** │ │ │ │ -  HTP Tags SSEETT creates a macro definition that can later be │ │ │ │ -    _A_L_T_T_E_X_T expanded anywhere in the HTML document. To create a │ │ │ │ -    _B_L_O_C_K macro: │ │ │ │ -    _B_L_O_C_K_D_E_F <_[_[_r_e_f_]_]_f_i_l_e include="header.hti"> │ │ │ │ -    _D_E_F   <_[_[_r_e_f_]_]_s_e_t sect-ctr="1"> │ │ │ │ -    _F_I_L_E   <_[_[_r_e_f_]_]_w_h_i_l_e sect-${sect-ctr}> │ │ │ │ -    _I_F     <_[_[_r_e_f_]_]_u_s_e sect-${sect-ctr}> │ │ │ │ -    _I_N_C     <_[_[_r_e_f_]_]_i_n_c sect-ctr> │ │ │ │ -    _I_M_G   <_[_[_r_e_f_]_]_/_w_h_i_l_e> │ │ │ │ -    _I_M_A_G_E_U_R_L <_[_[_r_e_f_]_]_f_i_l_e include="footer.hti"> │ │ │ │ -    _O_P_T The macro "emailaddr" can then be expanded later. │ │ │ │ -    _O_U_T_P_U_T The _U_S_E tag is used to expand the macro outside a │ │ │ │ -    _Q_U_O_T_E tag (i.e., into the regular text). If the macro │ │ │ │ -  [>] _S_E_T needs to be expanded inside a markup tag, use the │ │ │ │ -    _U_N_D_E_F _'_$_' operator. │ │ │ │ -    _U_N_S_E_T Multiple macros can be declared in a single markup │ │ │ │ -    _U_S_E_,_ _$ tag, as the second syntax line shows. │ │ │ │ -    _W_H_I_L_E SET should only be used for a single line's worth │ │ │ │ -    _<_!_-_-_- of text. Multi-line macros can be defined with the │ │ │ │ -  _H_i_s_t_o_r_y _B_L_O_C_K tag. The _B_L_O_C_K tag is also useful if the │ │ │ │ -  _W_i_s_h_ _l_i_s_t macro contains a quotation character and you don't │ │ │ │ -  _B_u_g_s want to fool around with special escape characters. │ │ │ │ +  _I_n_t_r_o_d_u_c_t_i_o_n   <_[_[_r_e_f_]_]_s_e_t sect-ctr="0"> │ │ │ │ +  _L_i_c_e_n_s_e   <_[_[_r_e_f_]_]_b_l_o_c_k_d_e_f name="section"> │ │ │ │ +  _T_u_t_o_r_i_a_l     <_[_[_r_e_f_]_]_i_n_c sect-ctr> │ │ │ │ +  _U_s_a_g_e     <_[_[_r_e_f_]_]_b_l_o_c_k name="sect-${sect-ctr}" expand │ │ │ │ +  HTP Tags global> │ │ │ │ +    _A_L_T_T_E_X_T       <_[_[_r_e_f_]_]_u_s_e block noexpand> │ │ │ │ +    _B_L_O_C_K     <_[_[_r_e_f_]_]_/_b_l_o_c_k> │ │ │ │ +    _B_L_O_C_K_D_E_F   <_[_[_r_e_f_]_]_/_b_l_o_c_k_d_e_f> │ │ │ │ +    _D_E_F ********** ssyynnooppssiiss ********** │ │ │ │ +    _F_I_L_E SSEETT creates a macro definition that can later be │ │ │ │ +    _I_F expanded anywhere in the HTML document. To create a │ │ │ │ +    _I_N_C macro: │ │ │ │ +    _I_M_G <_[_[_r_e_f_]_]_f_i_l_e include="header.hti"> │ │ │ │ +    _I_M_A_G_E_U_R_L   <_[_[_r_e_f_]_]_s_e_t sect-ctr="1"> │ │ │ │ +    _O_P_T   <_[_[_r_e_f_]_]_w_h_i_l_e sect-${sect-ctr}> │ │ │ │ +    _O_U_T_P_U_T     <_[_[_r_e_f_]_]_u_s_e sect-${sect-ctr}> │ │ │ │ +    _Q_U_O_T_E     <_[_[_r_e_f_]_]_i_n_c sect-ctr> │ │ │ │ +  [>] _S_E_T   <_[_[_r_e_f_]_]_/_w_h_i_l_e> │ │ │ │ +    _U_N_D_E_F <_[_[_r_e_f_]_]_f_i_l_e include="footer.hti"> │ │ │ │ +    _U_N_S_E_T The macro "emailaddr" can then be expanded later. │ │ │ │ +    _U_S_E_,_ _$ The _U_S_E tag is used to expand the macro outside a │ │ │ │ +    _W_H_I_L_E tag (i.e., into the regular text). If the macro │ │ │ │ +    _<_!_-_-_- needs to be expanded inside a markup tag, use the │ │ │ │ +  _H_i_s_t_o_r_y _'_$_' operator. │ │ │ │ +  _W_i_s_h_ _l_i_s_t Multiple macros can be declared in a single markup │ │ │ │ +  _B_u_g_s tag, as the second syntax line shows. │ │ │ │ + SET should only be used for a single line's worth │ │ │ │ + of text. Multi-line macros can be defined with the │ │ │ │ + _B_L_O_C_K tag. The _B_L_O_C_K tag is also useful if the │ │ │ │ + macro contains a quotation character and you don't │ │ │ │ + want to fool around with special escape characters. │ │ │ │ Macros can be redefined by using another SET │ │ │ │ command with the same macro name. The prior │ │ │ │ definition will be destroyed, however. Also, the │ │ │ │ macro can be removed (destroyed) with the _U_N_S_E_T │ │ │ │ tag. │ │ ├── ./usr/share/doc/htp/tut/jh.html │ │ │ @@ -16,10 +16,10 @@ │ │ │ Phone:+49 761 203-8243 │ │ │ Fax:+49 761 203-8242 │ │ │ │ │ │ │ │ │ │ │ │


│ │ │ Copyright by Joe Doe.
│ │ │ - last updated Tue Jun 16, 2020 │ │ │ + last updated Wed Dec 03, 2025 │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ @@ -1,8 +1,8 @@ │ │ │ │ ************ JJoocchheenn HHooeenniicckkee ************ │ │ │ │ Navigation bar [Photo] │ │ │ │ _M_a_i_n RRoooomm:: Bld.52 00-020 │ │ │ │ _E_x_a_m_p_l_e PPhhoonnee:: +49 761 203-8243 │ │ │ │ FFaaxx:: +49 761 203-8242 │ │ │ │ =============================================================================== │ │ │ │ Copyright by _J_o_e_ _D_o_e. │ │ │ │ -last updated Tue Jun 16, 2020 │ │ │ │ +last updated Wed Dec 03, 2025 │ │ ├── ./usr/share/doc/htp/tut/tut1.html │ │ │ @@ -5,9 +5,9 @@ │ │ │ │ │ │ │ │ │ │ │ │ This page was produced by htp. │ │ │
│ │ │ Copyright by Joe Doe, │ │ │ webmaster@domain.com, │ │ │ -last updated Tue Jun 16, 2020 │ │ │ +last updated Wed Dec 03, 2025 │ │ │ │ │ │ ├── html2text {} │ │ │ │ @@ -1,3 +1,3 @@ │ │ │ │ This page was produced by htp. │ │ │ │ =============================================================================== │ │ │ │ -Copyright by Joe Doe, _w_e_b_m_a_s_t_e_r_@_d_o_m_a_i_n_._c_o_m, last updated Tue Jun 16, 2020 │ │ │ │ +Copyright by Joe Doe, _w_e_b_m_a_s_t_e_r_@_d_o_m_a_i_n_._c_o_m, last updated Wed Dec 03, 2025 │ │ ├── ./usr/share/doc/htp/tut/tut2.html │ │ │ @@ -13,10 +13,10 @@ │ │ │

│ │ │ As you can see the file contains almost only the contents. │ │ │

│ │ │ │ │ │ │ │ │
│ │ │ Copyright by Joe Doe.
│ │ │ - last updated Tue Jun 16, 2020 │ │ │ + last updated Wed Dec 03, 2025 │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ @@ -1,6 +1,6 @@ │ │ │ │ Navigation bar ********** HHeerree iiss tthhee ccoonntteenntt ********** │ │ │ │ _M_a_i_n As you can see the file contains almost only the contents. │ │ │ │ _E_x_a_m_p_l_e │ │ │ │ =============================================================================== │ │ │ │ Copyright by _J_o_e_ _D_o_e. │ │ │ │ -last updated Tue Jun 16, 2020 │ │ │ │ +last updated Wed Dec 03, 2025 │ │ ├── ./usr/share/doc/htp/tut/tut3.html │ │ │ @@ -13,10 +13,10 @@ │ │ │

│ │ │ As you can see the file contains almost only the contents. │ │ │

│ │ │ │ │ │ │ │ │
│ │ │ Copyright by Joe Doe.
│ │ │ - last updated Tue Jun 16, 2020 │ │ │ + last updated Wed Dec 03, 2025 │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ @@ -1,6 +1,6 @@ │ │ │ │ Navigation bar ********** HHeerree aarree tthhee ccoonntteennttss ********** │ │ │ │ _M_a_i_n As you can see the file contains almost only the contents. │ │ │ │ _E_x_a_m_p_l_e │ │ │ │ =============================================================================== │ │ │ │ Copyright by _J_o_e_ _D_o_e. │ │ │ │ -last updated Tue Jun 16, 2020 │ │ │ │ +last updated Wed Dec 03, 2025 │ │ ├── ./usr/share/doc/htp/unset.html │ │ │ @@ -128,26 +128,29 @@ │ │ │ The macro is subsequently not available for use in the pre-processed files. │ │ │ (Note that simply redefining the macro with another SET or │ │ │ BLOCK definition with the same name is acceptable. The │ │ │ old macro definition will be removed automatically.) │ │ │

│ │ │ For example: │ │ │

│ │ │ -  <[ref]WHILE NOT i="10">
│ │ │ -    ...
│ │ │ -    <[ref]INC i>
│ │ │ -  <[ref]/WHILE>
│ │ │ +<[ref]block stuff>
│ │ │ +  <a href=$email>send email</a>
│ │ │ +<[ref]/block>
│ │ │ +
│ │ │ +<[ref]set morestuff=$email>
│ │ │ +
│ │ │ +This works:     <[ref]use stuff email="jnelson@crl.com">
│ │ │ +But this fails: <[ref]use email>
│ │ │ +And this fails: <[ref]use morestuff email="jnelson@crl.com">
│ │ │

│ │ │

│ │ │ More than one macro may be removed in the same tag: │ │ │

│ │ │ -  <[ref]WHILE sect-$i>
│ │ │ -    ...
│ │ │ -    <[ref]INC i>
│ │ │ -  <[ref]/WHILE>
│ │ │ +<a href="mailto:$email">mailto hyperlink</a>
│ │ │ +<a href="http://$domain/~${username}/">another hyperlink</a>
│ │ │

│ │ │

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ @@ -10,27 +10,33 @@ │ │ │ │     _B_L_O_C_K definition. The macro is subsequently not available │ │ │ │     _B_L_O_C_K_D_E_F for use in the pre-processed files. (Note that │ │ │ │     _D_E_F simply redefining the macro with another _S_E_T or │ │ │ │     _F_I_L_E _B_L_O_C_K definition with the same name is acceptable. │ │ │ │     _I_F The old macro definition will be removed │ │ │ │     _I_N_C automatically.) │ │ │ │     _I_M_G For example: │ │ │ │ -    _I_M_A_G_E_U_R_L   <_[_[_r_e_f_]_]_W_H_I_L_E NOT i="10"> │ │ │ │ -    _O_P_T     ... │ │ │ │ -    _O_U_T_P_U_T     <_[_[_r_e_f_]_]_I_N_C i> │ │ │ │ -    _Q_U_O_T_E   <_[_[_r_e_f_]_]_/_W_H_I_L_E> │ │ │ │ -    _S_E_T More than one macro may be removed in the same tag: │ │ │ │ -    _U_N_D_E_F   <_[_[_r_e_f_]_]_W_H_I_L_E sect-$i> │ │ │ │ -  [>] _U_N_S_E_T     ... │ │ │ │ -    _U_S_E_,_ _$     <_[_[_r_e_f_]_]_I_N_C i> │ │ │ │ -    _W_H_I_L_E   <_[_[_r_e_f_]_]_/_W_H_I_L_E> │ │ │ │ -    _<_!_-_-_- │ │ │ │ -  _H_i_s_t_o_r_y │ │ │ │ -  _W_i_s_h_ _l_i_s_t │ │ │ │ -  _B_u_g_s │ │ │ │ +    _I_M_A_G_E_U_R_L <_[_[_r_e_f_]_]_b_l_o_c_k stuff> │ │ │ │ +    _O_P_T   send email │ │ │ │ +    _O_U_T_P_U_T <_[_[_r_e_f_]_]_/_b_l_o_c_k> │ │ │ │ +    _Q_U_O_T_E │ │ │ │ +    _S_E_T <_[_[_r_e_f_]_]_s_e_t morestuff=$email> │ │ │ │ +    _U_N_D_E_F │ │ │ │ +  [>] _U_N_S_E_T This works:     <_[_[_r_e_f_]_]_u_s_e stuff │ │ │ │ +    _U_S_E_,_ _$ email="jnelson@crl.com"> │ │ │ │ +    _W_H_I_L_E But this fails: <_[_[_r_e_f_]_]_u_s_e email> │ │ │ │ +    _<_!_-_-_- And this fails: <_[_[_r_e_f_]_]_u_s_e morestuff │ │ │ │ +  _H_i_s_t_o_r_y email="jnelson@crl.com"> │ │ │ │ +  _W_i_s_h_ _l_i_s_t More than one macro may be removed in the same tag: │ │ │ │ +  _B_u_g_s mailto hyperlink │ │ │ │ + another │ │ │ │ + hyperlink │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ ├── ./usr/share/doc/htp/while.html │ │ │ @@ -114,35 +114,41 @@ │ │ │ Bugs │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

syntax

│ │ │

│ │ │ -    <[ref]unset email_addr>
│ │ │ +<[ref]block stuff>
│ │ │ +  <a href=$email>send email</a>
│ │ │ +<[ref]/block>
│ │ │ +
│ │ │ +<[ref]set morestuff=$email>
│ │ │ +
│ │ │ +This works:     <[ref]use stuff email="jnelson@crl.com">
│ │ │ +But this fails: <[ref]use email>
│ │ │ +And this fails: <[ref]use morestuff email="jnelson@crl.com">
│ │ │

│ │ │

synopsis

│ │ │ WHILE is the building block for repeated processing. │ │ │ The basic form is shown above. │ │ │

│ │ │ "Conditional" is either a "compare" or "is defined" operation. │ │ │ A compare operator is a test of the value of a macro against a literal string. │ │ │ If the NOT tag is present in the WHILE markup, the evaluation of the │ │ │ conditional is reversed: │ │ │

│ │ │ -    <[ref]unset email_addr home_url login_name>
│ │ │ +<a href="mailto:$email">mailto hyperlink</a>
│ │ │ +<a href="http://$domain/~${username}/">another hyperlink</a>
│ │ │

│ │ │

│ │ │ Just as with [ref]IF you can also check for a │ │ │ macro's existance: │ │ │

│ │ │ -  <[ref]WHILE sect-$i>
│ │ │ -    ...
│ │ │ -    <[ref]INC i>
│ │ │ -  <[ref]/WHILE>
│ │ │ +    <${tagName} ${attrName}=${value$ctr}>
│ │ │

│ │ │

│ │ │ If the condition is true, the block is evaluated and afterwards the │ │ │ WHILE tag is evaluated again. If the '$'-operator is used in the │ │ │ WHILE tag it is also reevaluated on each iteration. │ │ │

│ │ │ A loop block must be closed with the /WHILE tag. │ │ │ ├── html2text {} │ │ │ │ @@ -1,36 +1,45 @@ │ │ │ │ [HTP] │ │ │ │ ************ hhttpp oonn--lliinnee rreeffeerreennccee :: WWHHIILLEE ************ │ │ │ │ _T_a_b_l_e_ _o_f_ _C_o_n_t_e_n_t_s ********** ssyynnttaaxx ********** │ │ │ │ -  _I_n_t_r_o_d_u_c_t_i_o_n     <_[_[_r_e_f_]_]_u_n_s_e_t email_addr> │ │ │ │ -  _L_i_c_e_n_s_e ********** ssyynnooppssiiss ********** │ │ │ │ -  _T_u_t_o_r_i_a_l WWHHIILLEE is the building block for repeated │ │ │ │ -  _U_s_a_g_e processing. The basic form is shown above. │ │ │ │ -  HTP Tags "Conditional" is either a "compare" or "is defined" │ │ │ │ -    _A_L_T_T_E_X_T operation. A compare operator is a test of the │ │ │ │ -    _B_L_O_C_K value of a macro against a literal string. If the │ │ │ │ -    _B_L_O_C_K_D_E_F NOT tag is present in the WHILE markup, the │ │ │ │ -    _D_E_F evaluation of the conditional is reversed: │ │ │ │ -    _F_I_L_E     <_[_[_r_e_f_]_]_u_n_s_e_t email_addr home_url login_name> │ │ │ │ -    _I_F Just as with _[_[_r_e_f_]_]_I_F you can also check for a │ │ │ │ -    _I_N_C macro's existance: │ │ │ │ -    _I_M_G   <_[_[_r_e_f_]_]_W_H_I_L_E sect-$i> │ │ │ │ -    _I_M_A_G_E_U_R_L     ... │ │ │ │ -    _O_P_T     <_[_[_r_e_f_]_]_I_N_C i> │ │ │ │ -    _O_U_T_P_U_T   <_[_[_r_e_f_]_]_/_W_H_I_L_E> │ │ │ │ -    _Q_U_O_T_E If the condition is true, the block is evaluated │ │ │ │ -    _S_E_T and afterwards the WHILE tag is evaluated again. If │ │ │ │ -    _U_N_D_E_F the '$'-operator is used in the WHILE tag it is │ │ │ │ -    _U_N_S_E_T also reevaluated on each iteration. │ │ │ │ -    _U_S_E_,_ _$ A loop block mmuusstt be closed with the /WHILE tag. │ │ │ │ -  [>] _W_H_I_L_E │ │ │ │ -    _<_!_-_-_- │ │ │ │ -  _H_i_s_t_o_r_y │ │ │ │ -  _W_i_s_h_ _l_i_s_t │ │ │ │ -  _B_u_g_s │ │ │ │ +  _I_n_t_r_o_d_u_c_t_i_o_n <_[_[_r_e_f_]_]_b_l_o_c_k stuff> │ │ │ │ +  _L_i_c_e_n_s_e   send email │ │ │ │ +  _T_u_t_o_r_i_a_l <_[_[_r_e_f_]_]_/_b_l_o_c_k> │ │ │ │ +  _U_s_a_g_e │ │ │ │ +  HTP Tags <_[_[_r_e_f_]_]_s_e_t morestuff=$email> │ │ │ │ +    _A_L_T_T_E_X_T │ │ │ │ +    _B_L_O_C_K This works:     <_[_[_r_e_f_]_]_u_s_e stuff │ │ │ │ +    _B_L_O_C_K_D_E_F email="jnelson@crl.com"> │ │ │ │ +    _D_E_F But this fails: <_[_[_r_e_f_]_]_u_s_e email> │ │ │ │ +    _F_I_L_E And this fails: <_[_[_r_e_f_]_]_u_s_e morestuff │ │ │ │ +    _I_F email="jnelson@crl.com"> │ │ │ │ +    _I_N_C ********** ssyynnooppssiiss ********** │ │ │ │ +    _I_M_G WWHHIILLEE is the building block for repeated │ │ │ │ +    _I_M_A_G_E_U_R_L processing. The basic form is shown above. │ │ │ │ +    _O_P_T "Conditional" is either a "compare" or "is defined" │ │ │ │ +    _O_U_T_P_U_T operation. A compare operator is a test of the │ │ │ │ +    _Q_U_O_T_E value of a macro against a literal string. If the │ │ │ │ +    _S_E_T NOT tag is present in the WHILE markup, the │ │ │ │ +    _U_N_D_E_F evaluation of the conditional is reversed: │ │ │ │ +    _U_N_S_E_T mailto hyperlink │ │ │ │ +    _U_S_E_,_ _$ another │ │ │ │ +  [>] _W_H_I_L_E hyperlink │ │ │ │ +    _<_!_-_-_- Just as with _[_[_r_e_f_]_]_I_F you can also check for a │ │ │ │ +  _H_i_s_t_o_r_y macro's existance: │ │ │ │ +  _W_i_s_h_ _l_i_s_t     <${tagName} ${attrName}=${value$ctr}> │ │ │ │ +  _B_u_g_s If the condition is true, the block is evaluated │ │ │ │ + and afterwards the WHILE tag is evaluated again. If │ │ │ │ + the '$'-operator is used in the WHILE tag it is │ │ │ │ + also reevaluated on each iteration. │ │ │ │ + A loop block mmuusstt be closed with the /WHILE tag. │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +