我有一个XML文件,我正在通过XSLT进行转换。我通过C#将XML作为参数传递给XSLT。该参数的名称是附件,它包含XML。这是写如下:如何遍历XSLT中的XML参数
StringWriter sw = new StringWriter();
XmlTextWriter w = new XmlTextWriter(sw);
w.WriteStartElement("root");
if (!string.IsNullOrEmpty(sWordFileName)) {
w.WriteStartElement("mylink", sWordFileName);
w.WriteEndElement();
}
if (!string.IsNullOrEmpty(sPDFFileName)) {
w.WriteStartElement("mylink", sPDFFileName);
w.WriteEndElement();
}
w.Close();
XPathDocument doc = new XPathDocument(new StringReader(sw.ToString()));
XPathNavigator nav = doc.CreateNavigator();
_exportSet[currentExportSet].Format.ParamList["attachment"] = nav.Select("./*");
我的XML参数看起来像
<root><attachment xmlns=file1><attachment xmlns=file2></root>
现在在XSLT我需要通过这个XML参数去迭代,并创建一个链接。
这里是我的XSLT
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:my-scripts="urn:my-scripts"
xmlns="factiva.com/fcs/schemas/newsSummaries">
<xsl:param name="attachment"/>
<xsl:for-each select="$attachment">
<a target="_blank" href="#"><xsl:copy-of select="."/></a>
</xsl:for-each>
</xsl:stylesheet>
但它不会创建一个链接。
你为什么要问了你的“代码”不工作的原因是什么?你克兰河传递到转化参数的实际值甚至不是格式良好的XML文档 - 你应该已经得到了你想要这个加载到如下的时候例外。不要谈论XSLT样式表。最好的建议是,你需要阅读和学习XML,XPath和XSLT的至少的基本知识。 – 2011-02-24 00:18:27
现在这个问题已被很好地定义为MS特定的XSLT处理器。我认为@Dimitre可以提供帮助。 – 2011-02-24 14:09:08