首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XSLT捕获参数

XSLT捕获参数
EN

Stack Overflow用户
提问于 2010-05-14 03:46:58
回答 2查看 155关注 0票数 0

情况是,我有两个xslt文件:一个从我的ASP.NET代码中调用,第二个xslt文件被导入。

我想要完成的是将一个参数传递给第一个xslt,以便第二个xslt(在第一个xslt中导入的那个)可以读取它。

我的c#代码如下所示:

代码语言:javascript
复制
    var oArgs = new XsltArgumentList();
    oArgs.AddParam("fbLikeFeatureName", "", "Facebook_Like_Button");
    ltlContentBody.Text = xmlUtil.TransformXML(oXmlDoc, Server.MapPath(eSpaceId + "/styles/ExploringXSLT/ExploreContentObjects.xslt"), true);

我以这种方式捕获第一个xslt中的参数:

代码语言:javascript
复制
<xsl:param name="fbLikeFeatureName" />

然后,将其传递给第二个xslt,如下所示(之前,我导入了该文件):

代码语言:javascript
复制
<xsl:call-template name="Articles">
    <xsl:with-param name="fbLikeFeatureName"></xsl:with-param>
  </xsl:call-template>

最后,我捕获了第二个xslt文件上的参数,如下所示:

代码语言:javascript
复制
<xsl:value-of select="$fbLikeButtonName"/>

我做错了什么?我是xslt的新手。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-05-14 04:49:16

您不需要将参数从第一个样式表“传递”到导入的样式表。当您在第一个样式表的顶层声明参数时,它对所有导入的样式表都自动可见。考虑以下样式表:

template1.xsl:

代码语言:javascript
复制
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:import href="template2.xsl"/>
    <xsl:param name="input-param"/>
    <xsl:template match="/">
        <xsl:apply-templates select="doc"/>
    </xsl:template>
</xsl:stylesheet>

它导入template2.xsl:

代码语言:javascript
复制
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text"/>
    <xsl:template match="doc">
        <xsl:value-of select="$input-param"/>
    </xsl:template>
</xsl:stylesheet>

然后,我转换了以下文档:

代码语言:javascript
复制
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="template1.xsl"?>
<doc/>

将输入参数" input -param“设置为"This is a test”。我得到以下输出(Saxon-B 9.1.0.7):

代码语言:javascript
复制
This is a test
票数 1
EN

Stack Overflow用户

发布于 2010-05-14 03:56:16

在将参数传递给Articles模板时,您没有设置该参数的值。试一试

代码语言:javascript
复制
<xsl:call-template name="Articles">
  <xsl:with-param name="fbLikeButtonName" select="$fbLikeFeatureName"/>
</xsl>

和十个

代码语言:javascript
复制
<xsl:template name="Articles">
  <xsl:param name="fbLikeButtonName"/>
   ...
  <xsl:value-of select="$fbLikeButtonName"/>
   ...
</xsl:template>

当使用with-param时,名称属性被设置为被调用模板使用的参数的名称(本例中为Articles)。然后使用select (或xsl:with-param的主体)设置该值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2829803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档