我有以下XML结构:XSLT批处理
<School>
<SchoolInfo>
<SchoolName>The Big School</SchoolName>
<Opened>2008</Opened>
<SchoolID>SCH1122</SchoolID>
<Geograpics>
<Location>London</Location>
<PostCode>ZZ11 1ZZ</PostCode>
</Geographics>
</SchoolInfo>
<Pupil>
<Name>Tom</Name>
<LastName>Jones</LastName>
<Class>12B</Class>
<Age>16</Age>
</Pupil>
<Pupil>
<Name>Steve</Name>
<LastName>Jobs</LastName>
<Class>09A</Class>
<Age>17</Age>
</Pupil>
<Pupil>
<Name>Joe</Name>
<LastName>Blogs</LastName>
<Class>13A</Class>
<Age>15</Age>
</Pupil>
</School>
如果我的XML结构都包含说.. 400个学生,我想处理它们在50批次,并写入单独PSV的每个50学生,所以前50,然后50-100,然后100-150等等,并将每批写入一个新的文件..这可以使用XSLT来完成,还是必须是程序化的?
我现在有代码来处理PSV等即时通讯只是被如何批量处理,因为我坦率地没有线索!
- PSV:管道分隔的数值
SCH1122|London|Tom|12B|16
SCH1122|London|Steve|09A|17
SCH1122|London|Joe|13A|15
用来转换XML的代码如下:
private string PerformTransformation(string FilePath)
{
string fullXsltFile;
if (chkDateIncrement.Checked == false)
fullXsltFile = Resources.XSLTTest; // Resources.XSLT;
else
fullXsltFile = Resources.XSLTTest;
XmlDocument xsltTransformDocument = new XmlDocument();
xsltTransformDocument.LoadXml(fullXsltFile);
FileInfo xmlFileInfo = new FileInfo(FilePath);
string outputFile = CreateXmlOutputFileName(xmlFileInfo);
// load the Xslt with any settings
XslCompiledTransform transformation = new XslCompiledTransform();
XsltSettings settings = new XsltSettings(true, false);
settings.EnableScript = true;
transformation.Load(xsltTransformDocument, settings, new XmlUrlResolver());
using (XmlReader reader = XmlReader.Create(FilePath))
{
using (FileStream stream = new FileStream(outputFile, FileMode.Create))
{
transformation.Transform(reader, null, stream);
stream.Close();
}
reader.Close();
}
return outputFile;
}
我也使用与VS2010的微软processer那么伤心不支持v2.0,因此必须是v1.0 XSLT
最好的做法是使用标准的xslt1.0版本, onal组件不是最容易做的事情。
请提供确切的结果。另外,不是每个人都可以猜测PSV的含义 - 我目前的猜测是“管道分离值”。请编辑问题并提供这些必要的信息。 – 2012-03-09 14:23:26
当然,XSLT是“程序化的”:) – 2012-03-09 14:24:09
我之后可以批量处理数据(例如,400名学生,只有50个到.txt文件,因此制作8个文件)而不是实际的输出结构你给了,正如我在下面的例子XML中所述。 – Mike 2012-03-12 13:16:14