Correct XSLT for XML Transform to CSV VB.NET

I have the following XML file:

 <?xml version="1.0" standalone="yes" ?>
- <NewDataSet>
- <Students>
  <Class>1 - A</Class>
  <Last_x0020_Name>Gilbert</Last_x0020_Name>
  <First_x0020_Name>F D</First_x0020_Name>
  <New_x0020_Score>21</New_x0020_Score>
  <Level>H</Level>
  <MaxScore>30</MaxScore>
  <NewNumScore>21</NewNumScore>
  <PercentDec>0.7</PercentDec>
  </Students>
- <Students>
  <Class>1 - A</Class>
  <Last_x0020_Name>Johnson</Last_x0020_Name>
  <First_x0020_Name>F</First_x0020_Name>
  <New_x0020_Score>18</New_x0020_Score>
  <Level>H</Level>
  <MaxScore>30</MaxScore>
  <NewNumScore>18</NewNumScore>
  <PercentDec>0.6</PercentDec>
 </Students>
</NewDataSet>


I just want the Class and Level field output as comma delimeted. Is this the right XSLT code? I got this from a similar question on EE but my XML is slightly different:

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" version="1.0">
<xsl:template match="NewDataSet">
<xsl:for-each select="Students">
<xsl:value-of select="Class"/><xsl:text>,</xsl:text><xsl:value-of select="Level"/><xsl:text>&#013;</xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:output>
</xsl:stylesheet>

Does anyone have some working code of an XslTransform in VB.NET? I cannot get past an error in the myxsltransform.Load(.......) command. According to gotdotnet the transform should be as easy as:

Dim xsltransform as XslTransform = new XslTransform()
xsltransform.Load("favorite.xsl")
xsltransform.Transform("MyDocument.xml", "TransformResult.xml")

Does this require the xml, xslt and result file to be in a certain directory?

Any help would be much appreciated.


nathanpzAsked:
Who is Participating?
 
J_MakConnect With a Mentor Commented:
Now that you've shown your stylesheet, I've noticed quite a few errors in it. For starters you have more than one root node which is not proper. Try this:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:output method="text" version="1.0"/>
      <xsl:template match="/">
            <xsl:apply-templates select="NewDataSet"/>
      </xsl:template>
      <xsl:template match="NewDataSet">
            <xsl:for-each select="Students">
                  <xsl:value-of select="Class"/>
                  <xsl:text>,</xsl:text>
                  <xsl:value-of select="Level"/>
                  <xsl:text/>
            </xsl:for-each>
      </xsl:template>
</xsl:stylesheet>
0
 
J_MakCommented:
ALso, one important thing you were missing was the 'xsl' namespace prefix which I have placed in my example above. Cheers.
0
 
nathanpzAuthor Commented:
Thanks J_Mak,

My stylesheet was a mess, and that was the problem.

Ta.

0
 
J_MakCommented:
Cheers, glad I could help.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.