2013-01-21 42 views
1

我有一个由xsl创建的联系人页面。该页面中的提交按钮将重定向到由xsl创建的感谢页面。现在我想要输出为Thank You <name i enter>。作为查询字符串在URL中传递。现在我怎样才能在页面中访问它? xsl中是否有像request.getParameter(<parameter name>)这样的等价物,我可以在这里使用?访问xsl中的查询字符串参数值

在此先感谢。

+0

您是使用代码通过XSLT生成页面,还是仅仅通过'<?xml-stylesheet?>处理指令提供XML文件?如果它是前者,也许有办法事先获取该值并将其作为参数传递给XSLT。你能告诉我们一些相关的代码吗? – JLRishe

回答

0

使用HttpRequestQueryString属性。

下面是一个例子(C#)该属性可以如何使用:

INT LOOP1,循环2;

// Load NameValueCollection object. 
NameValueCollection coll=Request.QueryString; 
// Get names of all keys into a string array. 
String[] arr1 = coll.AllKeys; 
for (loop1 = 0; loop1 < arr1.Length; loop1++) 
{ 
    Response.Write("Key: " + Server.HtmlEncode(arr1[loop1]) + "<br>"); 
    String[] arr2 = coll.GetValues(arr1[loop1]); 
    for (loop2 = 0; loop2 < arr2.Length; loop2++) 
    { 
     Response.Write("Value " + loop2 + ": " + Server.HtmlEncode(arr2[loop2]) + "<br>"); 
    } 
} 

在你的情况,当你找到想要的名称 - 值对,获得的价值,并将其作为参数传递给XSLT转换。在.NET中做到这一点的方法之一是使用XsltArgumentList.AddParam()方法

同样,这里是一个完整的C#示例

using System; 
using System.IO; 
using System.Xml; 
using System.Xml.Xsl; 

public class Sample 
{ 

    public static void Main() 
    { 

     // Create the XslCompiledTransform and load the stylesheet. 
     XslCompiledTransform xslt = new XslCompiledTransform(); 
     xslt.Load("order.xsl"); 

     // Create the XsltArgumentList. 
     XsltArgumentList xslArg = new XsltArgumentList(); 

     // Create a parameter which represents the current date and time. 
     DateTime d = DateTime.Now; 
     xslArg.AddParam("date", "", d.ToString()); 

     // Transform the file. 
     using (XmlWriter w = XmlWriter.Create("output.xml")) 
     { 
      xslt.Transform("order.xml", xslArg, w); 
     } 
    } 
} 

XSLT转换必须有一个全球性的xsl:param命名date

<xsl:param name="date"/> 

而上面的代码将这个全局参数设置为想要的值。然后在XSLT代码中,只需访问参数$date

相关问题