通过.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
看到这个链接
不是一个很好的例子,但我可以用快速谷歌找到最好的。