What's confusing about this is that single and double quotes have the same meaning in Python... but this is not so in DTML. Not really. When you use a DTML tag like: <dtml-if "some expression"> or <dtml-var "some expression"> The "some expression" that's in double quotes is a Python expression. A Python expression is a bit of Python code that evaluates to a value. It can be simple or complex. The important thing is that it returns a value. The double quotes are not part of the expression, they merely show where the expression begins and ends. Single quotes will not work for this purpose. Single quotes *will* work if you need quote marks *within* an expression, eg: <dtml-if "my_var == 'w'"> This tests if my_var is equal to the string 'w'. If you wanted to see if my_var is equal to the value of a variable called w, you'd say: <dtml-if "my_var == w"> HTH, Dylan On Thu, 2003-09-04 at 18:08, J Cameron Cooper wrote:
Does anyone know the syntax to use with dtml-if when i want to do something like this:
<dtml-if <dtml-var w>==1>
do stuff </dtml-if> ?
This means, well, nothing. It's syntactically invalid. DTML is not a macro language, but an interpreted one, and the use of DTML inside a DTML tag is at best confusing and at worst a syntax error, and in no case is such a tag evaluated. The contents of a dtml-if can be either a name (without quotes) or a python statement (inside quotes, perhaps preceded by 'expr='.)
In this case, you are asking dtml-if about the truth value of an object named '<dtml-var w>==1', which is not a valid name. Or, at least, since I haven't tried, it shouldn't be.
How is that different from
<dtml-if expr="w == 1"> ...
This is asking about the truth value of the Python expression 'w==1', which will be true iff the contents of the first thing in the DTML namespace stack (the request, parameters, properties, acquisition, dtml loops, defines, et al) with the name of 'w' is equal within the Python definition to the integer 1.
or possibly
<dtml-if expr="`w` == 1"> ...
This is asking about the truth value of the Python expression " 'w'==1 ", which means "the character 'w' is equal to the integer 1." This will never be true, since 'w' is not 1.
--jcc