DataContractSerializer and XSLT
- by Russ Clark
I've got a simple Employee class that I'm trying to serialize to an XDocument and then use XSLT to transform the document to a page that displays both the properties (Name and ID) from the Employee class, and an html form with 2 radio buttons (Approve and Reject) and a submit button.  Here is the Employee class:
    [Serializable, DataContract(Namespace="XSLT_MVC.Controllers/")]
    public class Employee
    {
    [DataMember]
    public string Name { get; set; }
    [DataMember]
    public int ID { get; set; }
    public Employee()
    {
    }
    public Employee(string name, int id)
    {
        Name = name;
        ID = id;
    }
    public XDocument GetDoc()
    {
        XDocument doc = new XDocument();
        var serializer = new DataContractSerializer(typeof(Employee));
        using (var writer = doc.CreateWriter())
        {
            serializer.WriteObject(writer, this);
            writer.Close();
        }
        return doc;
    }
    }
And here is the XSLT file:
    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
    <xsl:output method="html" indent="yes"/>
    <xsl:template match="/">
    <html>
    <body>
    <xsl:value-of select="Employee/Name"/>
      <br />
    <xsl:value-of select="Employee/ID"/>
      <br />
    <form method="post" action="/Home/ProcessRequest?id={Employee/ID}">
      <input id="Action" name="Action" type="radio" value="Approved"></input>  Approved     <br />
      <input id="Action" name="Action" type="radio" value="Rejected"></input>  Rejected <br />
      <input type="submit" value="Submit"></input>
    </form>
    </body>
    </html>
  </xsl:template>
</xsl:stylesheet>
When I run this, all I get is the html form with the 2 radio buttons and the submit button, but not the properties from the Employee class.  I saw a separate StackOverflow post that said I need to change the   <xsl:template match="/"> to match on the namespace of my Employee class like this:   <xsl:template match="/XSLT_MVC.Controllers">, but when I do that, now all I get are the Employee properties, and not the html form with the 2 radio buttons and the submit button.  Does anyone know what needs to be done so that my transform will select and display both the Employee properties and the html form?