我有以下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