The following example transforms the supplied xml string, using XSL/T and outputs to another string
using (StringReader rdr = new StringReader(selectedLine.AdditionalInformation))
{
XPathDocument doc = new XPathDocument(rdr);
using (StringWriter writer = new StringWriter())
{
transformer.Transform(doc, null, writer);
titleLabel.Attributes.Add("onmouseover", string.Format(@"showDiv(""{0}"")", writer.ToString()));
}
}
The XSL/T loaded into the transformer variable is as follows
<table class='panelTable'></table>
<tr><td colspan='2' class='TitlePanelHeader'></td></tr>
<tr><td></td><td></td></tr>
And a sample xml string is as follows:
The result from the transformation is as follows:
|
Additional answer code | |
Additional answer date | |
Answer code | |
TOS | |
Answer date | |
Author | Richard Laymon |
Delivery to | Company Name, Address Line 1, AddressLine 2 |
Expected delivery | 09/08/2009 |
Held orders | |
Ordered on | 20/07/2009 |
Print runs | |
The code to build up the xml within the object is below, note that the values are HtmlEncoded to ensure that there are no problems in the web page.
public string AdditionalInformation
{
get
{
StringBuilder builder = new StringBuilder();
builder.Append(string.Format(CultureInfo.CurrentCulture,
@"",
HttpUtility.HtmlEncode(this.Title)));
AddLabelValue(builder, "Account number", ParentPurchaseOrder.AccountNumber);
AddLabelValue(builder, "Additional answer code", this.AdditionalAnswerCode);
AddLabelValue(builder, "Additional answer date",
this.AdditionalAnswerDate.Year != 1 ? this.AdditionalAnswerDate.ToShortDateString() : "" );
AddLabelValue(builder, "Answer code", this.AnswerCode);
AddLabelValue(builder, "Answer date",
this.AnswerDate.Year != 1 ? this.AnswerDate.ToShortDateString() : "");
AddLabelValue(builder,"Author", this.Author);
AddLabelValue(builder, "Delivery to",
ParentPurchaseOrder.DeliveryName + ", " + ParentPurchaseOrder.Address1 + ", " +
ParentPurchaseOrder.Address2 + ", " +
ParentPurchaseOrder.Address3 + ", " +
ParentPurchaseOrder.Address4 + ", " +
ParentPurchaseOrder.Address5 + ", " +
ParentPurchaseOrder.Postcode);
AddLabelValue(builder, "Expected delivery",
ParentPurchaseOrder.ExpectedDeliveryDate.ToShortDateString());
AddLabelValue(builder, "Held orders", this.HeldOrders);
AddLabelValue(builder, "Ordered on", ParentPurchaseOrder.OrderedOn.ToShortDateString());
AddLabelValue(builder, "Print runs", this.PrintRuns);
builder.Append("");
return builder.ToString();
}
}
private void AddLabelValue(StringBuilder builder, string label, string value)
{
builder.Append(string.Format(CultureInfo.CurrentCulture,
@"",
label, HttpUtility.HtmlEncode(value)));
}