Переменная XSLT не работает - PullRequest
       1

Переменная XSLT не работает

0 голосов
/ 14 сентября 2010

У меня есть код ниже 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>

Мне нужно назначить return ValidateText(this) onkeypress, даже если внутри xml требуется yes.

Ответы [ 3 ]

0 голосов
/ 14 сентября 2010

Не совсем ясно, что именно нужно, но я думаю, вы хотите что-то вроде этого :

<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" />
0 голосов
/ 14 сентября 2010

Другое предположение, эта таблица стилей:

<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>
0 голосов
/ 14 сентября 2010

Трудно получить именно то, что вы ищете, но я бы сделал следующее предположение

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...