【问题标题】:Use parameter value as in select in xslt使用参数值,如在 xslt 中选择
【发布时间】:2014-12-31 00:28:46
【问题描述】:

我在用于转换 XML 的 XSLT 文件中有一个名为 event 的参数,其值为 event_val

我想获得<xsl:value-of select="event_val"/>,但生成的转换是<TimeCommenced> 块内的event_val

代码如下:

<xsl:param name="event"/><xsl:template match="/">
<Event>
      <TimeCommenced>
        <xsl:variable name="time_commenced" select="$event"/>
        <xsl:value-of select="$time_commenced"/>
      </TimeCommenced>
</Event>

【问题讨论】:

  • 不清楚。我想你可能会说你想传入一个元素名称(例如'event_val')作为参数,并用它来初始化变量time_commenced。但是你目前没有得到根event_val 元素的值;相反,您将获得作为参数传入的名称。
  • 我希望 event_val 成为 time_commenced 的值。这有帮助吗?
  • 不多。如果您希望字符串“event_val”成为变量time_commenced 的值,那么如果将字符串“event_val”作为参数event 的值传递,您现有的样式表应该可以工作。如果你想要别的东西,你应该说你想要的。

标签: xml xslt select parameters parameter-passing


【解决方案1】:

参数的内容是字符串,而不是XPath 表达式。如果你有一个名为“param”的参数并且它包含字符串“last_name”,那么指令:

<xsl:value-of select="param"/>

将被评估为:

<xsl:value-of select="'last_name'"/>

导致输出文字字符串“last_name”。

将参数传递给变量没有任何区别,而且完全是多余的。试试类似的东西:

<xsl:value-of select="*[local-name() = $param]"/>

如果您想获取名为“last_name”的节点的内容。或者(最好是恕我直言)找到其他(不那么尴尬)的方式来处理这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多