如果用户登录,则应显示welcome, [name]
,否则显示register link
。
使用aspdotnet
店面 - 以下显示welcome,
(没有登录名)并显示register link
?似乎无法让它正常工作。
<xsl:when test="/root/System/CustomerFirstName!=''">
Welcome, <a href='/account.aspx'><xsl:value-of select="/root/System/CustomerFirstName" disable-output-escaping="yes" /></a>
</xsl:when>
<xsl:otherwise>
<a href='createaccount.aspx?checkout=False' class='register'>
Register </a>
</xsl:otherwise>
</xsl:choose>
我甚至在here上关注了第30页,但无济于事。
答案 0 :(得分:1)
我建议改为检查CustomerIsRegistered节点,以确定用户当前是否已登录并注册。该值将为“true”或“false”。
这是一个有效的例子:
<xsl:choose>
<xsl:when test="/root/System/CustomerIsRegistered='true'">
<!--Customer is registered-->
<a href="account.aspx">
<xsl:value-of select="concat('Welcome, ',/root/System/CustomerFirstName)"/>
</a>
</xsl:when>
<xsl:otherwise>
<!--Customer is not registered-->
<a href="createaccount.aspx">
<xsl:attribute name="class">register</xsl:attribute>
<xsl:text>Register</xsl:text>
</a>
</xsl:otherwise>
</xsl:choose>
如果您更愿意检查CustomerFirstName,那么我建议测试字符串长度是否大于0.例如:
<xsl:when test="string-length(/root/System/CustomerFirstName) > 0>
像迈克尔所说,确保你的选择元素格式正确。如果xslt标记不正确,则在尝试运行Xml包时会收到错误。
答案 1 :(得分:0)
你应该拥有它。确保选择节点包围它。
<xsl:choose>
<xsl:when test="/root/System/CustomerFirstName!=''">
Welcome, <a href='/account.aspx'>
<xsl:value-of select="/root/System/CustomerFirstName" disable-output-escaping="yes" />
</a>
</xsl:when>
<xsl:otherwise>
<a href='createaccount.aspx?checkout=False' class='register'>
Register
</a>
</xsl:otherwise>
</xsl:choose>
尝试在
开始后放置它<xsl:template match="/">
并打开顶部的调试模式以帮助进行测试。