迭代xslt中的字符串列表,并使用index

本文关键字:index 列表 xslt 字符串 迭代 | 更新日期: 2023-09-27 18:12:37

我用c#工作。我使用XSL转换(XSLT) 1.0版本。https://www.w3.org/TR/xslt我使用xslt是为了从类MyClass中的数据创建xmlMyClass匹配模板并且有一个属性

 List<string> Strings

我需要这样导出:

<Line1> first string value Here </Line1>
<Line2> Second string value here </Line2>
.
.
.

有人能告诉我怎么做吗?愿一切都好!Tal

迭代xslt中的字符串列表,并使用index

非常简单:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Xml;
using System.Xml.Linq;

namespace ConsoleApplication16
{
    class Program
    {
        static void Main(string[] args)
        {
            List<string> Strings = new List<string>() {
                    "first string value Here",
                    "Second string value here"
            };
            List<XElement> output = Strings.Select((x, i) => new XElement("Line" + (i + 1).ToString(), x)).ToList(); 
        }
    }
}

我找到了一个解决方案。也许有一个更好的……我已经创建了一个新的ExportClass:

public class ExportString
{
   [XmlElement("StringObject")]
   public string StringObject{get; set;}
}

我已经创建了一个列表作为属性是MyExportClass匹配XSLT:

public class MyExportClass
{
   [XmlElement("LOS"]
   public List<StringObject> LOS<get; set;}
}

我在XSLT中使用了这种语法:代码中包含元素名称中的index:

<xsl:for-each select="LOS" xml:space="default">
 //Get the index
  <xsl:variable name ="index" select="position()"/>
  <xsl:element name ="Line{$index}">
  <xsl:value-of select = "StringObject"/>
  </xsl:element>
   //Line break
  <xsl:text> &#xa;</xsl:text>
</xsl:for-each>
结果:

<Line1> my first string </Line1>
<Line2> my second string </Line2>
.
.
.