通过.NET将参数传递给XSLT样式表

我正在尝试将参数传递给XSLT样式表,但是当使用XSlCompiledTransform转换文档时,我得到的是一个空的xml文档。

这是用于添加参数的C#方法(在添加人们的建议之后)

private static void CreateHierarchy(string manID) { string man_ID = manID; XsltArgumentList argsList = new XsltArgumentList(); argsList.AddParam("Boss_ID","",man_ID); XslCompiledTransform transform = new XslCompiledTransform(); transform.Load("htransform.xslt"); using (StreamWriter sw = new StreamWriter("output.xml")) { transform.Transform("LU AIB.xml", argsList, sw); } } 

这是样式表。 我传入的参数是’Boss_ID’

        type="text/xsl" href="..\styles\orgcharts.xsl"                        

我无法发布所有输入文档,因为它是机密信息,但这里是一个简短的清理版本

  

有人可以帮忙吗?

谢谢

您需要在XSLT中定义参数,并且还需要将XsltArgumentList作为参数传递给Transform调用:

 private static void CreateHierarchy(string manID) { string man_ID = manID; XsltArgumentList argsList = new XsltArgumentList(); argsList.AddParam("Boss_ID", "", man_ID); XslCompiledTransform transform = new XslCompiledTransform(true); transform.Load("htransform.xslt"); using (StreamWriter sw = new StreamWriter("output.xml")) { transform.Transform("LU AIB.xml", argsList, sw); } } 

请注意,必须在xsl:stylesheet元素下面定义xsl:param

         

这个简单的XSLT示例将只创建一个包含一个XML节点的小型输出文档,其内容设置为参数的值。 试试:

           

您可能需要在XSLT的顶部定义参数:

   //rest of the XSLT  

看到这个链接

http://projects.ischool.washington.edu/tabrooks/545/2004Autumn/ContentManagement/PassingParameters.htm

不是一个很好的例子,但我可以用快速谷歌找到最好的。