.NET中的xslt:param数组

And*_*rew 3 c# xslt

简单的问题,但是解决方案?

我有一个典型的C#应用​​程序运行"new XslCompiledTransform.Transform(...);" 我传递param参数,所有类型字符串.

我想传递一个类型为array的字符串:字符串,甚至可以说是一个对象数组.

我正在使用C#我受限于XSL 1.0.

我怎样才能以干净的方式完成这项任务,以避免在.NET中编写不必要的代码?

dtb*_*dtb 7

XsltArgumentList.AddParam接受以下类型的值:

W3C Type                      Equivalent.NET Class (Type)

String (XPath)                String
Boolean (XPath)               Boolean
Number (XPath)                Double
Result Tree Fragment (XSLT)   XPathNavigator
Node Set (XPath)              XPathNodeIterator, XPathNavigator[]
Node* (XPath)                 XPathNavigator

因此,您无法传入数组,但可以使用您的值构造XML片段并将其作为XPathNavigator传递.

string[] strings = new string[] { "a", "b", "c" };

XPathNavigator[] navigators =
    strings.Select(s => new XElement("item", s).CreateNavigator()).ToArray();

XsltArgumentList args = new XsltArgumentList();
args.AddParam("items", "", navigators);
Run Code Online (Sandbox Code Playgroud)

构造的XML节点如下所示:

<item>a</item>
<item>b</item>
<item>c</item>
Run Code Online (Sandbox Code Playgroud)