Introduction
  Publishing web pages
  RXML
  Information tags
  String tags
  Variable tags
  URL tags
  If tags
    <if>
    <else>
    <elseif>
    <true>
    <false>
  Graphics tags
  Database tags
  LDAP
  Programming tags
  SSI tags
  Image maps
  IntraSeek
  LogView
  Templates
  Navigation
  SiteBuilder tags
  Supports system
  Security
  Appendix
 
<if> </> Main RXML parser

 

<if> is used to conditionally show its contents. <else>, <elif> or <elseif> can be used to suggest alternative content.

It is possible to use glob patterns in almost all attributes, where * means match zero or more characters while ? matches one character. * Thus t*f?? will match trainfoo as well as * tfoo but not trainfork or tfo.

 

Attributes

accept=type1[,type2,...]
Returns true is the browser accept certain content types as specified by it's Accept-header, for example image/jpeg or text/html. If browser states that it accepts */* that is not taken in to account as this is always untrue.

config=name
Has the config been set by use of the <aconf> tag?

cookie=name[ is value]
Does the cookie exist and if value is given, does it contain the value value?

date=yyyymmdd
Is the date yyyymmdd? The attributes before, after and inclusive modifies the behavior.

defined=define
Is the define define defined?

domain=pattern[,pattern...]
Does the user's computer's DNS name match any of the patterns? Note that domain names are resolved asynchronously, and the the first time someone accesses a page, the domain name will probably not have been resolved.

eval=RXML expression
Returns true if RXML expression returns a string that evaluates to true if casted to an integer in Pike, i.e. the string begins with 1-9 or a number of zeroes followed by 1-7 (octal greater than zero).

exists=path
Returns true if the file path exists. If path does not begin with /, it is assumed to be a URL relative to the directory containing the page with the <if>-statement.

filename=filepattern1[,filepattern2,...]
Returns true if the current page is among the listed filepatterns.

host=pattern[,pattern...]
Does the users computers IP address match any of the patterns?

language=language1[,lang2,...]
Does the client prefer one of the languages listed, as specified by the Accept-Language header?

match=string[ is pattern[,pattern,...]]
Does the string match one of the patterns?

name=pattern[,pattern...]
Does the full name of the browser match any of the patterns?

prestate=option1[,option2, ...]
Are all of the specified prestate options present in the URL?

referrer=[=pattern[,pattern,...]]
Does the referrer header match any of the patterns?

supports=feature
Does the browser support this feature? See the Supports classes page page for a list of all available features.

time=ttmm
Is the date ttmm? The attributes before, after and inclusive modifies the behavior.

user=name[,name,...]|any
Has the user been authenticated as one of these users? If any is given as argument, any authenticated user will do.

variable=name[ is pattern]
Does the variable exist and, optionally, does it's content match the pattern?

Modifier Attributes

after
Used together with the date attribute.

and
If several conditional attributes are given all must be true for the contents to be shown. This is the default behavior. The and attribute cannot be compined with the or attribute.

before
Used together with the date attribute.

file=path
Used together with the user attribute. An external file will be used to authenticate the user, rather than the current Authentication module. The file should have the following format:
user name : encrypted password
user name : encrypted password
Unless the wwwfile attribute is given the path is a path in the computers real file system, rather than Challenger's virtual file system.

group=group, groupfile path
Used together with the user attribute to check if the current user is a member of the group according the the groupfile. The groupfile is of the following format:
group : user1, user2, user3
group : user4

inclusive
Used together with the date and before or after attributes. The contents will also be shown if the date is the current date.

wwwfile
Used together with the file attribute to indicate what Challenger's virtual file system should be used to find the password file. This might be a security hazard, since anyone will be able to read the password file.

not
Inverts the results of all tests.

or
If several conditional attributes are given, only one of them has to be true for the contents to be shown. The or attribute cannot be compined with the and attribute.

Complex expressions

You might be tempted to write expressions like:
<if variable="foo is bar" 
  or variable="bar isfoo">
Something
</if>
This will not work, as you can only use an attribute once.

Another common problem is a misconception of how the and, or and not attributes work.

<if user=foo 
  or not domain="*.foobar.com">
...
</if>
will not work since the not attribute negates the whole tag, not just the domain attribute.

 

Example


<if supports=tables>
Your browser supports tables.
</if>


<if user=any>
You are logged in.
</if>
<else>
You are not logged in.
</else>

You are not logged in.

<if date=20000101 before>
The year 2000 is yet to come.
</if>

The year 2000 is yet to come.