我有一个 C# 控制台应用程序,它使用 XSLT 文档Transformer.xsl将大约 100 个 XML 文件批量转换为不同的标记。这些 XML 文件中的每一个都包含一个主题层次结构,这些主题层次结构根据文档标题及其层次位置分配了一个 ID,例如
<topic id="BSAR_1.5.2">...some content...</topic>
为此,我使用GetFileNameWithoutExtension C# 方法获取文件名并将其用作 ID,方法是将其作为参数传递给XSLCompliedTransform 。
我知道该参数在 XSL 文档中有效,因为它已经使用 Oxygen 进行了测试,而且我知道没有参数,XSL 转换器在 C# 中运行如下。
//create XSLT complied transformer
XslCompiledTransform xslTrans = new XslCompiledTransform();
//load in xslt
xslTrans.Load(xslPath);string fileExtension = Path.GetFileName(xmlPath);
string output= (pathDITA+"/DITA_"+fileExtension);
//Add arguments for TopicID
//XsltArgumentList argXSLT = new XsltArgumentList();
//String fileID = Path.GetFileNameWithoutExtension(xmlPath);
//argXSLT.AddParam("topicID","",fileID);
//convert XML document
xslTrans.Transform(xmlPath, output);
其中 pathDITA 是应用程序中文件输出到的变量,并且参数部分已被注释掉。
我的问题在于当想要从 XML 转换为包含参数的 XML 时使用什么 Transformer。目前使用的转换器方法是XslCompiledTransform.Transform(string URI, string ResultsFile)。我正在努力寻找一个版本,它允许中间有一个参数,同时仍然直接在 C# 资源库中输出到 XML 文件。
简单地说,需要什么方法(或过程)来模仿
xslTrans.Transform(xmlPath,argXSLT,output);
其中XMLpath和output都是 XML 文件,而argsXSLT是传入的参数,因为当前版本返回类型错误。如有必要,将添加示例 XML 和 XSLT。