Re: [xsl] XML attribute value to pattern match of the replace function

Subject: Re: [xsl] XML attribute value to pattern match of the replace function
From: Martin Honnen <Martin.Honnen@xxxxxx>
Date: Mon, 22 Feb 2010 12:23:39 +0100
Selvaganesh wrote:


You need to concat the attribute values e.g.
select="replace(., concat('(', @party1, '.*?', @party2, ')'), '&lt;cite&gt;$1&lt;/cite&gt;')"

In case the xml content appear parenthesis () does not process the replace function can u suggest any other way.

Also I have tried below way, but does not working.

select="(concat('(', string(@party1), '.*?', string(@party2), ')'),
'&lt;cite&gt;$1&lt;/cite&gt;')"/>


Also I have tried the analyze-string method but it was working fine but
above issue was repeated.

Use the function defined here http://www.xsltfunctions.com/xsl/functx_escape-for-regex.html to escape the attribute values e.g.

<xsl:element name="caseref">
<xsl:analyze-string select="." regex="({functx:escape-for-regex(@party1)}.*?{functx:escape-for-regex(@party2)})">
<xsl:matching-substring>
<xsl:element name="casetitle">
<xsl:value-of select="regex-group(1)"/>
</xsl:element>
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-of select="."/>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:element>
</xsl:template>


--

	Martin Honnen
	http://msmvps.com/blogs/martin_honnen/

Current Thread