[Milos Prudek]
Dieter Maurer wrote:
Milos Prudek writes:
... quoting ' ... You can use triple quotes to enclose your string. Such strings may contain single quotes unless they are at the start or end of the string or happen to be three in a row:
'''This is a triple quoted string. It may contain '.'''
You are right.
But I found out that this advice can't be used in this particular case, because DTML rendering is impossible INSIDE the tag tag.
In practical example:
<dtml-var "tag(name=name, alt=name, onMouseOut='MM_swapImgRestore()', onMouseOver='''MM_swapImage('<dtml-var fld>','','',0)''')">
Here, <dtml-var fld> is not rendered but is reprinted verbatim. It's logical - you can't call <dtml-var> from <dtml-var>.... :-)
Can you see any other way except reconstructing IMG SRC like I did in my
post of Feb 6 2002 ?
But you don't need to put a <dtml> tag inside another one (and it doesn't work). Just refer to the variable or expression that you would are tempted to put inside a <dtml> tag, and don't use the inner tag. In this case, I assume that MM_swapImage() and MM_swapImgRestore() are functions that the browser will call, not expressions for Zope to evaluate. It seems the easiest and clearest to build the problem string separately. Thus (I have added a few spaces so you can see where the double quotes are), <dtml-let mouseover=" 'MM_swapImage(fld,' + _.chr(34)+_.chr(34)+','+ _.chr(34)+_.chr(34)+',0)' "> <dtml-var "tag(name=name, alt=name, onMouseOut='MM_swapImgRestore()', onMouseOver=mouseover)"> </dtml-let> I'm sure that line wrapped, but you get the idea. _.chr(34) inserts a double quote into the string. If you look at the result using <dtml-var mouseover> you will see that the string has been built correctly. Cheers, Tom P