如何在XSLT中迭代XML参数
我有一个XML文件,我正在通过XSLT进行转换。我通过C#将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>
但它没有创建链接。
没有找到相关结果
已邀请:
5 个回复
屠创氓读叔
这里将是每个包含标记的访问参数匹配的XSL:
扭湘阀柿蹄
并且
资源为:
输出:
屑凉赦
。没有
符号,因为
是XML元素的名称,而不是变量。 在给出完整的XSLT和XML之后编辑。 您的XML存在以下几个问题: 应关闭所有标签。 您不能将
用于其名称的任何其他内容 - 名称空间。 您必须在属性值周围加上双引号 因此,XML文件的正确版本将是(例如):
XSLT文件也存在一些问题:
命名空间应绑定到确切的URI
。 您必须至少具有一个模板,以便XSLT转换处理您的输入XML文档。 例如,正确的版本将是:
我不确定它是你想要的,但是对于上面的文档,它产生了以下片段:
挂帘妈乡
这将选择当前xml元素的属性。
谦响局豢报
或者像那样。