Thanks for answering Ken, but ...
On 22 Apr, G. Ken Holman wrote:
At 2006-04-23 02:27 +0200, rolf(_at_)pointsman(_dot_)de wrote:
As far as I see, there is no way to have both ' (') and " (")
in one XPath literal.
Correct ... but literal operands can be constructed easily enough.
Example:
(copied and modified below)
[...]
How about the following?
[...]
T:\ftemp>type rolf.xml
<doc>
<e att="foo">foo</e>
<e att="a'"b">bar</e>
<e att="grill">grill</e>
</doc>
T:\ftemp>type rolf.xsl
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="doc">
<xsl:for-each select="e[(_at_)att=concat("a'",'"b')]">
<xsl:value-of select="."/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Nice workaround for the my example. But as I wrote, that example is not
the real problem. I provided it only to illustrate the underlying
problem, I see with the XPath syntax.
The question (or problem) is not (only) an XSLT one, but more an XPath
problem.
Imagine a script language (in fact, that's the real scenario), which
got a DOM tree and is able to execute XPath expressions on that
tree. Now, the programmer want to select the elements with an
attribute x with an attribute value given by outside (say: user
input). If you want to programmatically create the needed XPath expr
(simplified something like: e[(_at_)x='<that random value comming from
elsewhere, you've no control over>']) then the question arises how to
escape the XPath literal delimiter character in that string.
There is no way to escape the XPath literal delimiter character
within a literal with the XPath syntax rules, as you confirm. OK, in
the scribbled case, the programmer could write a complex parsing rule,
to rewrite the wanted expression along the line you showed, but that
is, to word tempered, tedious.
rolf
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--