|
|
|||||||||
|
|||||||||
| |||||||||
|
|
|
| |||||||||
![]() |
|
|
«
Previous Thread
|
Next Thread
»
|
Thread Tools | Search this Thread | Rate Thread | Display Modes |
|
#1
|
|||
|
|||
|
XSL Help
Hi,
I am beginner for XSL. I have a strange problem with variable. <xsl:variable name="where_query" select="'WHERE 1=1'"/> <xsl:variable name="T"/> <xsl:if test="string-length($name) > 0"> <xsl:value-of select="concat($name, ' with IF condition')"/> <xsl:variable name="T" select="concat($name, ' with IF Condition')"/> </xsl:if> <xsl:value-of select="$where_query"/> <b> Result of IF condition - <xsl:value-of select="$T"/> </b> <sql:execute-query xmlns:sql="http://apache.org/cocoon/SQL/2.0"> <sql:query> SELECT * FROM PersonTest <xsl:copy-of select="$where_query"/> </sql:query> </sql:execute-query> For example default value of T variable is Empty. When User type something in Name field , I want to put it inside in Query. But I can't change Variable value. When a length of Name is more than 0 can saw "Name" + "with IF condition". But not in the variable.!!!! Please send my your comment, Thanks, Erdenemandal |
|
#2
|
||||
|
||||
|
You can only assign a value to a variable once in XSL. If you want to assign a value to a variable using a conditional you must do something like:
Code:
<xsl:variable name="test">
<xsl:choose>
<xsl:when test="...">
.....
</xsl:when>
<xsl:otherwise>
...
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
There are other way too, let me know if something like above does not work. |
|
#3
|
|||
|
|||
|
Thanks,
I saw also reference of XSL. It was written "Variable is not real variable. It is constant." Than I search another way. |
|
#4
|
|||
|
|||
|
Problem solved
Hi,
I just use simple method "When". Also I feel XSL is not so strong for programming !. It I am wrong, let me correct Code:
<xsl:variable name="myname" select="translate($name,'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/>
<xsl:variable name="myvorname" select="translate($vorname,'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/>
<xsl:choose>
<xsl:when test="string-length($myname) and string-length($myvorname)">
SELECT * FROM PersonTest WHERE upper(Name) LIKE ('%<xsl:value-of select="$myname"/>%') AND upper(VORNAME) LIKE ('%<xsl:value-of select="$myvorname"/>%')
<sql:execute-query xmlns:sql="http://apache.org/cocoon/SQL/2.0">
<sql:query>
SELECT * FROM PersonTest WHERE upper(Name) LIKE ('%<xsl:value-of select="$myname"/>%') AND upper(VORNAME) LIKE ('%<xsl:value-of select="$myvorname"/>%')
</sql:query>
</sql:execute-query>
</xsl:when>
<xsl:when test="string-length($myname)">
SELECT * FROM PersonTest WHERE Name LIKE ('%<xsl:value-of select="$myname"/>%')
<sql:execute-query xmlns:sql="http://apache.org/cocoon/SQL/2.0">
<sql:query>
SELECT * FROM PersonTest WHERE upper(Name) LIKE ('%<xsl:value-of select="$myname"/>%')
</sql:query>
</sql:execute-query>
</xsl:when>
<xsl:when test="string-length($myvorname)">
SELECT * FROM PersonTest WHERE VORNAME LIKE ('%<xsl:value-of select="$myvorname"/>%')
<sql:execute-query xmlns:sql="http://apache.org/cocoon/SQL/2.0">
<sql:query>
SELECT * FROM PersonTest WHERE upper(VORNAME) LIKE ('%<xsl:value-of select="$myvorname"/>%')
</sql:query>
</sql:execute-query>
</xsl:when>
<xsl:otherwise>
<sql:execute-query xmlns:sql="http://apache.org/cocoon/SQL/2.0">
<sql:query>
SELECT * FROM PersonTest
</sql:query>
</sql:execute-query>
</xsl:otherwise>
</xsl:choose>
At least it is working, ![]() |
![]() |
| Viewing: Dev Shed Forums > Programming Languages - More > XML Programming > XSL Help |
| Thread Tools | Search this Thread |
| Display Modes | Rate This Thread |
|
|
|
|