好的,我有product.xml和product.xsl
在product.xml中说我有两位数据
<productInfo productID="Product1">
<title>Product One</title>
</productInfo>
<productInfo productID="Product2">
<title>Product Two</title>
</productInfo>
在我的product.xsl中,根据productID参数,是否只能显示一组数据?
因此,如果product.xml加载为 product.xml?productID = Product1 ,我该如何才能显示Product1数据?
我尝试从网址获取productID的值,但这不起作用..
<xsl:param name="productID" />
<xsl:value-of select="$productIDParam"/>
通过使用XML和XSLT,我正在尝试做什么?
答案 0 :(得分:1)
因此,如果将product.xml加载为 product.xml?productID = Product1
怎么可以 我只显示Product1数据?我试图获得productID的值 从URL但这不起作用..
<xsl:param name="productID" /> <xsl:value-of select="$productIDParam"/>
我正在尝试做什么 只使用XML和XSLT可以吗?
在启动转换之前,您需要获取“productId”查询变量的值,然后将此值作为全局级外部参数的值传递。
不同的XSLT处理器具有不同的API来实现此目的。例如,.NET XslCompiledTransform 处理器使用作为 XsltArgumentList
的参数传递的Transform()
类的实例来实现此目的方法
以下是完整的代码示例:
using System;
using System.IO;
using System.Xml;
using System.Xml.XPath;
using System.Xml.Xsl;
public class Sample {
public static void Main() {
// Create the XslCompiledTransform and load the style sheet.
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load("discount.xsl");
// Create the XsltArgumentList.
XsltArgumentList argList = new XsltArgumentList();
// Calculate the discount date.
DateTime orderDate = new DateTime(2004, 01, 15);
DateTime discountDate = orderDate.AddDays(20);
argList.AddParam("discount", "", discountDate.ToString());
// Create an XmlWriter to write the output.
XmlWriter writer = XmlWriter.Create("orderOut.xml");
// Transform the file.
xslt.Transform(new XPathDocument("order.xml"), argList, writer);
writer.Close();
}
}
因此,您需要阅读XSLT处理器的文档,以获取有关如何将外部参数传递给转换的说明。
答案 1 :(得分:0)
XSLT允许您使用顶级xsl:param
元素定义全局参数,这些元素应该从XSLT处理器外部设置,主要是使用XSLT处理器的API进行编程。如果要读取URL中的查询字符串参数,则需要使用您选择的客户端或服务器端语言(即主要是客户端上的Javascript或各种框架/语言,如ASP.NET,Servlet,服务器上的PHP)然后使用暴露于该语言或该框架的任何API运行转换。这样您就可以将查询字符串参数传递给XSLT样式表。