我有以下xsl代码,但它不起作用,任何人都可以指导我。
<xsl:variable name="indent">
<xsl:if test="@type='Text'">
<xsl:if test="@required='yes'">
<xsl:variable name="indent" select="'return ValidateText(this)'" />
</xsl:if>
<asp:TextBox id="{@id}" onkeypress="{$indent}" runat="server" />
</xsl:if>
</xsl:variable>
我需要在onkeypress上指定return ValidateText(this)
,即使在xml中需要的是。
答案 0 :(得分:0)
很难准确得到你想要的东西,但我会做出以下猜测
<xsl:if test="@type='Text'>
<asp:TextBox id="{@id}" runat="server" >
<xsl:if test="@required='yes'">
<xsl:attribute name="onkeypress">
<xsl:text>return ValidateText(this)</xsl:text>
</xsl:attribute>
</xsl:if>
</asp:TextBox>
</xsl:if>
答案 1 :(得分:0)
目前还不清楚到底想要什么,但我想你想要这样的东西:
<xsl:variable name="indent">
<xsl:choose>
<xsl:when test="@type='Text' and @required='yes'">
<xsl:text>return ValidateText(this)</xsl:text>
</xsl:when>
<xsl:otherwise>someDefault</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<asp:TextBox id="{@id}" onkeypress="{$indent}" runat="server" />
答案 2 :(得分:0)
另一个猜测,这个样式表:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:asp="remove">
<xsl:template match="root">
<xsl:copy>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="/*/*">
<xsl:variable name="indent">
<xsl:if test="@type='Text'">
<asp:TextBox id="{@id}"
onkeypress="{substring('return ValidateText(this)',
1 div (@required='yes'))}"
runat="server" />
</xsl:if>
</xsl:variable>
<xsl:copy-of select="$indent"/>
</xsl:template>
</xsl:stylesheet>
使用此输入:
<root>
<form id="form1" type='Text' required="yes"/>
<form id="form2" type='Text' required="no"/>
<form id="form3" type='Input' required="yes"/>
</root>
输出:
<root>
<asp:TextBox id="form1" onkeypress="return ValidateText(this)" runat="server" xmlns:asp="remove" />
<asp:TextBox id="form2" onkeypress="" runat="server" xmlns:asp="remove" />
</root>