当选择下拉列表时,如何调用xsl的模板函数

时间:2012-06-18 03:43:09

标签: javascript html xml xslt

当用户在下拉列表中选择一个选项时,我试图在XSl代码中调用模板函数

    

<xsl:element name="select">
<xsl:attribute name="id">
<xsl:value-of select="$l" />
</xsl:attribute>

<xsl:attribute name="onchange">
<xsl:value-of select="TEMPLATE SHOULD BE CALLED HERE"/>
</xsl:attribute>

    <option value="1">Select</option>
    <option value="2">Daily</option>
    <option value="3">Weekly</option>
    <option value="4">Monthly</option>
    <option value="5">RunOnStartup</option>

任何人都可以告诉我调用模板的语法。

2 个答案:

答案 0 :(得分:1)

在浏览器中实现XSLT 1.0时,XSLT样式表会生成HTML,并且所有事件处理必须在您作为HTML的一部分生成的Javascript代码中完成。如果您想从该Javascript回调XSLT,则必须使用转换API来启动新的转换。

如果您使用Saxon-CE中实现的XSLT 2.0,则会发生这种情况。 Saxon-CE样式表可以包含响应用户事件的代码。您不需要为select元素生成“onchange”属性。你只需要写一个这样的模板规则:

<xsl:template match="select" mode="ixsl:onchange">
  ... code goes here ...
</xsl:template>

,当HTML中的“select”元素发生“onchange”事件时,模板将自动执行。

Saxon-CE的更多信息(和示例)可以在这里找到:

http://www.saxonica.com/ce/download.xml

答案 1 :(得分:0)

可以在此处找到xsl:template元素的语法:http://www.w3schools.com/xsl/el_template.asp

<xsl:template
name="name"
match="pattern"
mode="mode"
priority="number">

  <!-- Content:(<xsl:param>*,template) -->

</xsl:template>

name:   name    Optional. Specifies a name for the template.
Note: If this attribute is omitted there must be a match attribute

match   pattern Optional. The match pattern for the template.
Note: If this attribute is omitted there must be a name attribute

mode:   mode    Optional. Specifies a mode for this template
priority    number  Optional. A number which indicates the numeric priority of the template