XSLT Newbie Câu hỏi: Vui lòng điền vào trống trong đoạn mã C# bên dưới:
public static string TransformXMLToHTML[string inputXml, string xsltString] {
// insert code here to apply the transform specified by xsltString to inputXml
// and return the resultant HTML string.
// You may assume that the xslt output type is HTML.
}
Thanks!
Đã hỏi ngày 22 tháng 11 năm 2009 lúc 9:48Nov 22, 2009 at 9:48
Shaul Behrshaul BehrShaul Behr
35,9K69 Huy hiệu vàng248 Huy hiệu bạc377 Huy hiệu đồng69 gold badges248 silver badges377 bronze badges
0
Bạn nghĩ thế nào về:
public static string TransformXMLToHTML[string inputXml, string xsltString]
{
XslCompiledTransform transform = new XslCompiledTransform[];
using[XmlReader reader = XmlReader.Create[new StringReader[xsltString]]] {
transform.Load[reader];
}
StringWriter results = new StringWriter[];
using[XmlReader reader = XmlReader.Create[new StringReader[inputXml]]] {
transform.Transform[reader, null, results];
}
return results.ToString[];
}
Lưu ý rằng lý tưởng nhất là bạn sẽ lưu trữ và sử dụng lại XslCompiledTransform
- hoặc có thể sử dụng
public static string TransformXMLToHTML[string inputXml, string xsltString]
{
XslCompiledTransform transform = new XslCompiledTransform[];
using[XmlReader reader = XmlReader.Create[new StringReader[xsltString]]] {
transform.Load[reader];
}
StringWriter results = new StringWriter[];
using[XmlReader reader = XmlReader.Create[new StringReader[inputXml]]] {
transform.Transform[reader, null, results];
}
return results.ToString[];
}
0 thay thế [mặc dù nó được đánh dấu là không dùng nữa].
Đã trả lời ngày 22 tháng 11 năm 2009 lúc 9:59Nov 22, 2009 at 9:59
Marc Gravellmarc GravellMarc Gravell
997K258 Huy hiệu vàng2515 Huy hiệu bạc2860 Huy hiệu Đồng258 gold badges2515 silver badges2860 bronze badges
3
Chỉ để giải trí, một phiên bản ít thanh lịch hơn một chút thực hiện bộ nhớ đệm được đề xuất bởi Marc:
public static string TransformXMLToHTML[string inputXml, string xsltString]
{
XslCompiledTransform transform = GetAndCacheTransform[xsltString];
StringWriter results = new StringWriter[];
using [XmlReader reader = XmlReader.Create[new StringReader[inputXml]]]
{
transform.Transform[reader, null, results];
}
return results.ToString[];
}
private static Dictionary cachedTransforms = new Dictionary[];
private static XslCompiledTransform GetAndCacheTransform[String xslt]
{
XslCompiledTransform transform;
if [!cachedTransforms.TryGetValue[xslt, out transform]]
{
transform = new XslCompiledTransform[];
using [XmlReader reader = XmlReader.Create[new StringReader[xslt]]]
{
transform.Load[reader];
}
cachedTransforms.Add[xslt, transform];
}
return transform;
}
Đã trả lời ngày 22 tháng 11 năm 2009 lúc 10:13Nov 22, 2009 at 10:13
2
Giới thiệu
Bạn có một tài liệu XML và bạn cần chuyển đổi nó thành định dạng tệp dễ đọc hơn. Ví dụ: bạn có dữ liệu nhân sự được lưu trữ dưới dạng tài liệu XML và bạn cần hiển thị nó trên trang web hoặc trong tệp văn bản.
Dung dịch
Giải pháp cho điều này là sử dụng bảng kiểu XSLT để chuyển đổi XML thành một định dạng khác bằng lớp
public static string TransformXMLToHTML[string inputXml, string xsltString]
{
XslCompiledTransform transform = new XslCompiledTransform[];
using[XmlReader reader = XmlReader.Create[new StringReader[xsltString]]] {
transform.Load[reader];
}
StringWriter results = new StringWriter[];
using[XmlReader reader = XmlReader.Create[new StringReader[inputXml]]] {
transform.Transform[reader, null, results];
}
return results.ToString[];
}
0. Trong mã ví dụ, chúng tôi đang chuyển đổi một số dữ liệu nhân sự từ một doanh nghiệp hư cấu được lưu trữ trong PLANNELENT.XML. Đầu tiên, chúng tôi tải bảng kiểu để tạo đầu ra HTML. Sau đó, chúng tôi thực hiện chuyển đổi thành HTML thông qua XSLT bằng cách sử dụng bảng kiểu PersonalHTML.xSL. Sau đó, chúng tôi chuyển đổi dữ liệu thành định dạng phân loại bằng dấu phẩy bằng cách sử dụng bảng kiểu PersonalCsv.xsl:public static void TransformXML[ ] { XmlUrlResolver resolver = new XmlUrlResolver[ ]; resolver.Credentials = System.Net.CredentialCache.DefaultCredentials; XslTransform transform = new XslTransform[ ]; transform.Load[@"..\PersonnelHTML.xsl",resolver]; transform.Transform[@"..\Personnel.xml",@"..\Personnel.html",resolver]; transform.Load[@"..\PersonnelCSV.xsl",resolver]; transform.Transform[@"..\Personnel.xml", @"..\Personnel.csv",resolver]; }
Tệp nhân sự.xml chứa các mục sau:
="1.0"="utf-8"
Biểu đồ personnelHTML.xSL trông như thế này:
="1.0"="UTF-8" Employee Name Employee Title Years with Company
Đây là nguồn HTML:
Employee Name Employee Title Years with Company Shahab Customer Service 1 Noosha Manager 12 Navid Salesman 3 Mehrdad CEO 27
Đầu ra phân loại dấu phẩy được tạo bằng cách sử dụng personnelCSV.xsl và personal.xml; Biểu đồ được hiển thị ở đây:
="1.0"="UTF-8" , ,
Đầu ra từ bảng kiểu PersonalCsv.xsl được hiển thị ở đây:
Shahab,Customer Service,1 Noosha,Manager,12 Navid,Salesman,3 Mehrdad,CEO,27
Lịch sử
- Ngày 22 tháng 10 năm 2005: Bài viết ban đầu
Tôi không sử dụng Microsoft.net và Crystal Report nữa. Tôi đã chuyển từ khoa học máy tính sang khoa học vũ trụ vào năm 2008. Hiện tại tôi là nhà nghiên cứu về vật lý plasma không gian ở Thụy Điển. Tôi xin lỗi nếu tôi không thể trả lời email/tin nhắn của bạn nữa. Điều này là do tôi không sử dụng Windows và bất kỳ sản phẩm nào của Microsoft.
I moved from computer science to space science in 2008. Currently I'm a researcher in space plasma physics in Sweden. I apologize
if I cannot reply your emails/messages anymore. This is because I am not using Windows and any of the Microsoft products.