Subject: [xsl] Re: dynamic xpath from variable evaluate function is failing From: M Balaji <msbalaji82@xxxxxxxxx> Date: Mon, 22 Oct 2012 11:11:03 +0530 |
I need to construct the dynamic XPATH predicate from the input XML. I tried with evaluate function, but its not converting the String to XPATH predicate. Can any one let me know how can I achieve this? Input: test.xml <a> <b test="(x=Windows)">content</b> <b test="(z=Unix)">content</b> <b test="(y=Unix) and (y=Solaris)">content</b> <b test="(z=Unix) and (y=Windows7)">content</b> </a> Configuration/condition evaluation file (config.xml) <root> <condition name="x" value="Windows8"/> <condition name="z" value="Unix"/> <condition name="y" value="Solaris"/> <condition name="y" value="Windows7"/> </root> XSLT: test.xsl <xsl:variable name="conlist"><s><xsl:for-each select="document('config.xml')// condition"><xsl:element name="{@name}">test</xsl:element><xsl:element name="{@value}">test</xsl:element></xsl:for-each></s></xsl:variable> <xsl:template match="*[@test]"> <xsl:param name="t" select="concat('$', conlist,'//s','[',@test,']')"/> <xsl:if test='saxon:evaluate("$p1",$t)'> <xsl:copy-of select="."/> </xsl:if> </xsl:template> Result: I'm getting true for all above <b> elements Expected result: 1st and 3rd <b> should not printed in the output (condition is failing) Thanks in Advance, Balaji. M On Mon, Oct 22, 2012 at 11:04 AM, M Balaji <msbalaji82@xxxxxxxxx> wrote: > I need to construct the dynamic XPATH predicate from the input XML. I tried > with evaluate function, but its not converting the String to XPATH > predicate. Can any one let me know how can I achieve this? > > Input: test.xml > > <a> > > <b test=3D=94(x=3DWindows)=94>content</b> > > <b test=3D=94(z=3DUnix)=94>content</b> > > <b test=3D=94(y=3DUnix) and (y=3DSolaris)=94>content</b> > > <b test=3D=94(z=3DUnix) and (y=3DWindows7)=94>content</b> > > </a> > > Configuration/condition evaluation file (config.xml) > > <root> > > <condition name=3D=94x=94 value=3D=94Windows8=94/> > > <condition name=3D=94z=94 value=3D=94Unix=94/> > > <condition name=3D=94y=94 value=3D=94Solaris=94/> > > <condition name=3D=94y=94 value=3D=94Windows7=94/> > > </root> > > XSLT: test.xsl > > <xsl:variable name=3D"conlist"><s><xsl:for-each > select=3D"document('config.xml')// condition"><xsl:element > name=3D"{@name}">test</xsl:element><xsl:element > name=3D"{@value}">test</xsl:element></xsl:for-each></s></xsl:variable> > > <xsl:template match=3D=94*[@test]=94> > > <xsl:param name=3D"t" select=3D"concat('$', conlist,'//s','[',@test,']')"/> > > > > <xsl:if test=3D'saxon:evaluate("$p1",$t)'> > > <xsl:copy-of select=3D"."/> > > </xsl:if> > > > > </xsl:template> > > > Result: > > I'm getting true for all above <b> elements > > Expected result: > > 1st and 3rd <b> should not printed in the output (condition is failing) > > > Thanks in Advance, > > Balaji. M
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] dynamic xpath from variable e, M Balaji | Thread | Re: [xsl] Re: dynamic xpath from va, Michael Kay |
[xsl] dynamic xpath from variable e, M Balaji | Date | Re: [xsl] Re: dynamic xpath from va, Michael Kay |
Month |