【问题标题】:How to pass parameter value to XSL?如何将参数值传递给 XSL?
【发布时间】:2010-05-26 06:51:28
【问题描述】:

假设我有一个如下的 XSL:

<xsl:stylesheet 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
  version="1.0">
  <xsl:output method="html" encoding="utf-8" omit-xml-declaration="yes" indent="yes"/>
    <xsl:param name="sortKey" select="'firstname'"/>
</xsl:stylesheet>

然后一个XML如下

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?xml-stylesheet type="text/xsl" href="XYZ.xsl"?>
<ABC>
     <firstname>GREG</firstname>
</ABC>

我想从 XML 向 XSL 参数 firstname 传递一个值。我可以这样做吗?如果是,如何?

从答案看来这是不可能的。

如何从同一个 XML 中读取值并将其分配给参数。这可以做到吗?如果是,怎么做?

【问题讨论】:

  • 但是如果你已经有了 XML 中的数据,为什么还要使用参数呢?

标签: xml xslt


【解决方案1】:

因为您想要作为参数的值在您的基础 XML 中,所以您只需为指定默认值的参数输入一个 XPath 表达式。

<xsl:param name="sortKey" select="/ABC/firstname"/> 

简单地使用一个变量,在这里也是有效的,如果值总是在 XML 中

<xsl:variable name="sortKey" select="/ABC/firstname"/> 

然后,要使用此参数/变量,您只需执行类似的操作

<xsl:template match="/">
    <xsl:value-of select="$sortKey" />
</xsl:template>

这将简单地输出值 GREG

【讨论】:

    【解决方案2】:

    假设您使用 .NET 进行转换,则可以在此处找到此重复问题的答案:Passing parameters to XSLT Stylesheet via .NET

    【讨论】:

    • 不...我只是在使用 XML 和 XSLT。
    【解决方案3】:

    W3C 尚未提出机制。可以定义一个能够执行此操作的新处理指令。但是,如果您打算在浏览器或其他现有工具中使用它,则将参数传递到通过处理指令调用的样式表不是一个可行的选择。

    另一种选择是将您的“参数”放在备用文档中,然后使用document() function 之类的内容加载它。

    【讨论】:

    • 如果我可以从同一个 XML 中读取一个值并将该值分配给参数怎么办?这个可以吗?
    猜你喜欢
    • 1970-01-01
    • 2020-12-08
    • 2012-11-03
    • 1970-01-01
    • 2012-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-05
    相关资源
    最近更新 更多