将Request.QueryString传递给xslt doc

时间:2013-08-14 10:10:03

标签: xslt

我是asp.net和xslt的新手,所以请在这里和我一起玩。

所以我有一个如下所示的网址:

www.example.com/careers/job.aspx?jobTitle=analytics-developer

我想使用<%=Request.QueryString["jobTitle"]%>

将'jobTitle'传递到xslt文件中

我在job.aspx中使用的代码将信息传递给jobTitle.xslt文件是这样的:

<asp:Xml ID="Xml1" runat="server" DocumentSource="~/_/xml/Jobs.xml" TransformSource="~/_/xslt/jobTitle.xslt"></asp:Xml>

其中Jobs.xml是包含所有作业信息的xml文件。

Jobs.xml看起来像这样:

<?xml version="1.0" encoding="utf-8" ?>
<jobs>
    <devjobs>
      <job>
        <title>Analytics Developer</title>
        <group>Mobile Analytics Group</group>
        <url>analytics-developer</url>
        <shortdesc>We are looking for talented developers.</shortdesc>
     </job>
  </devjobs>
</jobs>

基本上我希望能够在xslt文件中写入“如果Jobs.xml文件中的url元素等于url中给出的'jobTitle',那么我们就会显示该作业的详细信息”。

这可能吗?

1 个答案:

答案 0 :(得分:0)

asp XML控件有一个“TransformArgumentList”属性,可用于将参数传递给XSLT。说实话,我不知道你是否可以直接在asp:xml标签本身,但你总是可以在你的代码后面,在page_load事件中设置,例如

protected void Page_Load(Object Sender, EventArgs e)
{
    string param = Request.QueryString["jobTitle"];
    XsltArgumentList args = new XsltArgumentList();
    args.AddParam("jobtitle", "", param);
    Xml1.TransformArgumentList = ags;
}

然后,在您的XSLT文件本身中,您需要相应地拥有 xsl:param 元素:

<xsl:param name="jobtitle" />

然后,您可以像任何变量一样访问它(通过将其称为 $ jobtitle )。