将xslt输出附加到Div或TextWriter [英] Append xslt output to Div or TextWriter

查看:76
本文介绍了将xslt输出附加到Div或TextWriter的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,

我有一组xml数据,它来自数据库,我将xml绑定到xslt,bt在哪里,我想要添加xslt返回输出到像div,表等的html元素。



 受保护  string  RenderFolderBasedTree()
{
// 我想创建与此相关的TextWriter或somne​​thing。如果使用someother而不是textWriter会更好..需要返回
TextWriter output = File.CreateText( C:\\perl.txt);
StringBuilder sb = new StringBuilder();
sb.Append( <?xml version = \1.0 \encoding = \ UTF-8\ >?);
sb.Append(<跨度类= 代码串> <跨度类= 代码串 ><文件夹FolderId = \ AAMkADljNDMxMTY3LTI3NzYtNDc5Ny05ODI0LThhZTk3Yzc2MWU3MwAuAAAAAABtfBYgWY8sTr4MGI3HqzHtAQA0z9duLrAlQZAgxeM + D8i3AAAA6LgTAAA = \ DisplayName的= \Inbox \ParentFolderId = \None \>
);
sb.Append( < Folder expanded = \false \FolderId = \ AAMkADljNDMxMTY3LTI3NzYtNDc5Ny05ODI0LThhZTk3Yzc2MWU3MwAuAAAAAABtfBYgWY8sTr4MGI3HqzHtAQCfuv2rnteuQ512SPTH2nNRAAVGqlyFAAA = \ DisplayName的= \ Test1\ ParentFolderId = \ AAMkADljNDMxMTY3LTI3NzYtNDc5Ny05ODI0LThhZTk3Yzc2MWU3MwAuAAAAAABtfBYgWY8sTr4MGI3HqzHtAQA0z9duLrAlQZAgxeM + D8i3AAAA6LgTAAA = \ > 中);
sb.Append(<跨度类= 代码串> <跨度类= 代码串 ><文件夹FolderId = \ AAMkADljNDMxMTY3LTI3NzYtNDc5Ny05ODI0LThhZTk3Yzc2MWU3MwAuAAAAAABtfBYgWY8sTr4MGI3HqzHtAQCfuv2rnteuQ512SPTH2nNRAAVGqlyIAAA = \ DisplayName的= \ Test1-1 \ParentFolderId = \AAMkADljNDMxMTY3LTI3NzYtNDc5Ny05ODI0LThhZTk3Yzc2MWU3MwAuAAAAAABtfBYgWY8sTr4MGI3HqzHtAQCfuv2rnteuQ512SPTH2nNRAAVGqlyFAAA = \>
);
sb.Append( < / Folder>);
sb.Append(<跨度类= 代码串> <跨度类= 代码串 ><文件夹FolderId = \ testAAMkADljNDMxMTY3LTI3NzYtNDc5Ny05ODI0LThhZTk3Yzc2MWU3MwAuAAAAAABtfBYgWY8sTr4MGI3HqzHtAQCfuv2rnteuQ512SPTH2nNRAAVGqlyIAAA = \ DisplayName的= \ Test1-2 \ParentFolderId = \AAMkADljNDMxMTY3LTI3NzYtNDc5Ny05ODI0LThhZTk3Yzc2MWU3MwAuAAAAAABtfBYgWY8sTr4MGI3HqzHtAQCfuv2rnteuQ512SPTH2nNRAAVGqlyFAAA = \>
);
sb.Append( < / Folder>);
sb.Append( < / Folder>);
sb.Append( < Folder expanded = \false \FolderId = \ AAMkADljNDMxMTY3LTI3NzYtNDc5Ny05ODI0LThhZTk3Yzc2MWU3MwAuAAAAAABtfBYgWY8sTr4MGI3HqzHtAQCfuv2rnteuQ512SPTH2nNRAAVGqlyGAAA = \ DisplayName的= \ Test2\ ParentFolderId = \ AAMkADljNDMxMTY3LTI3NzYtNDc5Ny05ODI0LThhZTk3Yzc2MWU3MwAuAAAAAABtfBYgWY8sTr4MGI3HqzHtAQA0z9duLrAlQZAgxeM + D8i3AAAA6LgTAAA = \ > 中);
sb.Append(<跨度类= 代码串> <跨度类= 代码串 ><文件夹FolderId = \ AAMkADljNDMxMTY3LTI3NzYtNDc5Ny05ODI0LThhZTk3Yzc2MWU3MwAuAAAAAABtfBYgWY8sTr4MGI3HqzHtAQCfuv2rnteuQ512SPTH2nNRAAVHTFyFAAA = \ DisplayName的= \ Test2-1 \ParentFolderId = \AAMkADljNDMxMTY3LTI3NzYtNDc5Ny05ODI0LThhZTk3Yzc2MWU3MwAuAAAAAABtfBYgWY8sTr4MGI3HqzHtAQCfuv2rnteuQ512SPTH2nNRAAVGqlyGAAA = \>< / Folder>
);
sb.Append(<跨度类= 代码串> <跨度类= 代码串 ><文件夹FolderId = \ TestADljNDMxMTY3LTI3NzYtNDc5Ny05ODI0LThhZTk3Yzc2MWU3MwAuAAAAAABtfBYgWY8sTr4MGI3HqzHtAQCfuv2rnteuQ512SPTH2nNRAAVHTFyFAAA = \ DisplayName的= \ Test2-2 \ParentFolderId = \AAMkADljNDMxMTY3LTI3NzYtNDc5Ny05ODI0LThhZTk3Yzc2MWU3MwAuAAAAAABtfBYgWY8sTr4MGI3HqzHtAQCfuv2rnteuQ512SPTH2nNRAAVGqlyGAAA = \>);
sb.Append(<跨度类= 代码串> <跨度类= 代码串 ><文件夹FolderId = \ 测试$ AAMkADljNDMxMTY3LTI3NzYtNDc5Ny05ODI0LThhZTk3Yzc2MWU3MwAuAAAAAABtfBYgWY8sTr4MGI3HqzHtAQCfuv2rnteuQ512SPTH2nNRAAVHTFyFAAA = \ DisplayName的= \Test2-2-1 \ParentFolderId = \TestADljNDMxMTY3LTI3NzYtNDc5Ny05ODI0LThhZTk3Yzc2MWU3MwAuAAAAAABtfBYgWY8sTr4MGI3HqzHtAQCfuv2rnteuQ512SPTH2nNRAAVHTFyFAAA = \>< / Folder>< / Folder>);
sb.Append( < / Folder>);
sb.Append( < Folder expanded = \false \FolderId = \ AAMkADljNDMxMTY3LTI3NzYtNDc5Ny05ODI0LThhZTk3Yzc2MWU3MwAuAAAAAABtfBYgWY8sTr4MGI3HqzHtAQCfuv2rnteuQ512SPTH2nNRAAVGqlyHAAA = \ DisplayName的= \ Test3\ ParentFolderId = \ AAMkADljNDMxMTY3LTI3NzYtNDc5Ny05ODI0LThhZTk3Yzc2MWU3MwAuAAAAAABtfBYgWY8sTr4MGI3HqzHtAQA0z9duLrAlQZAgxeM + D8i3AAAA6LgTAAA = \ > 中);
sb.Append( < / Folder>);
sb.Append( < / Folder>);

// 加载样式表
XslCompiledTransform oXSL = new XslCompiledTransform();
XsltArgumentList args = new XsltArgumentList();
args.AddParam( Tree.Alt.Expand string .Empty,AppResourceManager.Default.GetString( Tree.Alt.Expand< /跨度>));
args.AddParam( Tree.Alt.Collapse string .Empty,AppResourceManager.Default.GetString( Tree.Alt.Collapse< /跨度>));
args.AddParam( RTL string .Empty,CrmCultureInfo.CurrentUICulture.TextInfo.IsRightToLeft);
args.AddParam( id string .Empty, this .ID);
XmlDocument xslDocument = XmlUtil.LoadXmlDocumentFromFileId(ApplicationFileId.FolderBasedTrackingTreeXsl);
oXSL.Load(xslDocument, null null );

// 转换树数据
using (StringReader reader = new StringReader(sb.ToString()))
{
oXSL.Transform (XmlReader.Create(reader),args,output);
}
output.Close();
// 将xslt数据返回到设计此实际方法的设计页面。
return output.ToString();
}





从html页面调用上述方法。

 <   tr  >  
< td >
<% = RenderFolderBasedTree()%>

< / td >
< / tr >







请在此代码中告诉我任何错误



非常感谢,

-Sanjeev

解决方案
AAMkADljNDMxMTY3LTI3NzYtNDc5Ny05ODI0LThhZTk3Yzc2MWU3MwAuAAAAAABtfBYgWY8sTr4MGI3HqzHtAQCfuv2rnteuQ512SPTH2nNRAAVHTFyFAAA = \ DisplayName的= \Test2-2-1 \ParentFolderId = \TestADljNDMxMTY3LTI3NzYtNDc5Ny05ODI0LThhZTk3Yzc2MWU3MwAuAAAAAABtfBYgWY8sTr4MGI3HqzHtAQCfuv2rnteuQ512SPTH2nNRAAVHTFyFAAA = \>< / Folder>< / Folder>);
sb.Append( < / Folder>);
sb.Append( < Folder expanded = \false \FolderId = \ AAMkADljNDMxMTY3LTI3NzYtNDc5Ny05ODI0LThhZTk3Yzc2MWU3MwAuAAAAAABtfBYgWY8sTr4MGI3HqzHtAQCfuv2rnteuQ512SPTH2nNRAAVGqlyHAAA = \ DisplayName的= \ Test3\ ParentFolderId = \ AAMkADljNDMxMTY3LTI3NzYtNDc5Ny05ODI0LThhZTk3Yzc2MWU3MwAuAAAAAABtfBYgWY8sTr4MGI3HqzHtAQA0z9duLrAlQZAgxeM + D8i3AAAA6LgTAAA = \ > 中);
sb.Append( < / Folder>);
sb.Append( < / Folder>);

// 加载样式表
XslCompiledTransform oXSL = new XslCompiledTransform();
XsltArgumentList args = new XsltArgumentList();
args.AddParam( Tree.Alt.Expand string .Empty,AppResourceManager.Default.GetString( Tree.Alt.Expand< /跨度>));
args.AddParam( Tree.Alt.Collapse string .Empty,AppResourceManager.Default.GetString( Tree.Alt.Collapse< /跨度>));
args.AddParam( RTL string .Empty,CrmCultureInfo.CurrentUICulture.TextInfo.IsRightToLeft);
args.AddParam( id string .Empty, this .ID);
XmlDocument xslDocument = XmlUtil.LoadXmlDocumentFromFileId(ApplicationFileId.FolderBasedTrackingTreeXsl);
oXSL.Load(xslDocument, null null );

// 转换树数据
using (StringReader reader = new StringReader(sb.ToString()))
{
oXSL.Transform (XmlReader.Create(reader),args,output);
}
output.Close();
// 将xslt数据返回到设计此实际方法的设计页面。
return output.ToString();
}





从html页面调用上述方法。

 <   tr  >  
< td >
<% = RenderFolderBasedTree()%>

< / td >
< / tr >







请在此代码中告诉我任何错误
-Sanjeev


首先,你需要编译你的XSLT,然后你可以将它应用于任何XML。这是使用类 System.Xml.Xsl.XslCompiledTransform 完成的:

http://msdn.microsoft.com/en-us/library/system.xml.xsl.xslcompiledtransform%28v = vs.110%29.aspx [ ^ ]。



注意方法系统。 Xml.Xsl.XslCompiledTransform.Transform 。基本上,您可以将转换结果放入任何文件,或者放入 System.Xml.XmlWriter 的某个实例:

http://msdn.microsoft.com/en-us/library/system。 xml.xmlwriter(v = vs.110).aspx [ ^ ]。



也就是说,拥有目标HTML(div)很方便或者其他任何东西)由作者的同一个实例写的。你的问题假定你能够做到这一点。



-SA


这是如果您需要有关如何创建XSLT文件本身的信息,那么这是一个很好的起点。 XSLT教程 [ ^ ]

本教程是关于如何使用XSLT将XML转换为HTML。

你可以使用用于编辑和调试XSLT的Visual Studio。



如果有合适的XSLT文件,可以使用解决方案1中的方法在ac#应用程序中进行转换。

Hi everyone,
I have a set of xml data , which is coming from database, and im binding that xml to xslt, bt where im struck is, i wanted to add xslt returned output to html element like div, table etc.

protected string RenderFolderBasedTree()
		{
                        // I wanted to create TextWriter or somnething related this. what would be better if use someother instead of textWriter.. need to return 
			TextWriter output = File.CreateText("C:\\perl.txt");
			StringBuilder sb = new StringBuilder();
			sb.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
			sb.Append("<Folder FolderId=\"AAMkADljNDMxMTY3LTI3NzYtNDc5Ny05ODI0LThhZTk3Yzc2MWU3MwAuAAAAAABtfBYgWY8sTr4MGI3HqzHtAQA0z9duLrAlQZAgxeM+D8i3AAAA6LgTAAA=\" DisplayName=\"Inbox\" ParentFolderId=\"None\">");
			sb.Append("<Folder expanded=\"false\" FolderId=\"AAMkADljNDMxMTY3LTI3NzYtNDc5Ny05ODI0LThhZTk3Yzc2MWU3MwAuAAAAAABtfBYgWY8sTr4MGI3HqzHtAQCfuv2rnteuQ512SPTH2nNRAAVGqlyFAAA=\" DisplayName=\"Test1\" ParentFolderId=\"AAMkADljNDMxMTY3LTI3NzYtNDc5Ny05ODI0LThhZTk3Yzc2MWU3MwAuAAAAAABtfBYgWY8sTr4MGI3HqzHtAQA0z9duLrAlQZAgxeM+D8i3AAAA6LgTAAA=\">");
			sb.Append("<Folder FolderId=\"AAMkADljNDMxMTY3LTI3NzYtNDc5Ny05ODI0LThhZTk3Yzc2MWU3MwAuAAAAAABtfBYgWY8sTr4MGI3HqzHtAQCfuv2rnteuQ512SPTH2nNRAAVGqlyIAAA=\" DisplayName=\"Test1-1\" ParentFolderId=\"AAMkADljNDMxMTY3LTI3NzYtNDc5Ny05ODI0LThhZTk3Yzc2MWU3MwAuAAAAAABtfBYgWY8sTr4MGI3HqzHtAQCfuv2rnteuQ512SPTH2nNRAAVGqlyFAAA=\" >");
			sb.Append("</Folder>");
			sb.Append("<Folder FolderId=\"testAAMkADljNDMxMTY3LTI3NzYtNDc5Ny05ODI0LThhZTk3Yzc2MWU3MwAuAAAAAABtfBYgWY8sTr4MGI3HqzHtAQCfuv2rnteuQ512SPTH2nNRAAVGqlyIAAA=\" DisplayName=\"Test1-2\" ParentFolderId=\"AAMkADljNDMxMTY3LTI3NzYtNDc5Ny05ODI0LThhZTk3Yzc2MWU3MwAuAAAAAABtfBYgWY8sTr4MGI3HqzHtAQCfuv2rnteuQ512SPTH2nNRAAVGqlyFAAA=\" >");
			sb.Append("</Folder>");
			sb.Append("</Folder>");
			sb.Append("<Folder expanded=\"false\" FolderId=\"AAMkADljNDMxMTY3LTI3NzYtNDc5Ny05ODI0LThhZTk3Yzc2MWU3MwAuAAAAAABtfBYgWY8sTr4MGI3HqzHtAQCfuv2rnteuQ512SPTH2nNRAAVGqlyGAAA=\" DisplayName=\"Test2\" ParentFolderId=\"AAMkADljNDMxMTY3LTI3NzYtNDc5Ny05ODI0LThhZTk3Yzc2MWU3MwAuAAAAAABtfBYgWY8sTr4MGI3HqzHtAQA0z9duLrAlQZAgxeM+D8i3AAAA6LgTAAA=\">");
			sb.Append("<Folder FolderId=\"AAMkADljNDMxMTY3LTI3NzYtNDc5Ny05ODI0LThhZTk3Yzc2MWU3MwAuAAAAAABtfBYgWY8sTr4MGI3HqzHtAQCfuv2rnteuQ512SPTH2nNRAAVHTFyFAAA=\" DisplayName=\"Test2-1\" ParentFolderId=\"AAMkADljNDMxMTY3LTI3NzYtNDc5Ny05ODI0LThhZTk3Yzc2MWU3MwAuAAAAAABtfBYgWY8sTr4MGI3HqzHtAQCfuv2rnteuQ512SPTH2nNRAAVGqlyGAAA=\" ></Folder>");
			sb.Append("<Folder FolderId=\"TestADljNDMxMTY3LTI3NzYtNDc5Ny05ODI0LThhZTk3Yzc2MWU3MwAuAAAAAABtfBYgWY8sTr4MGI3HqzHtAQCfuv2rnteuQ512SPTH2nNRAAVHTFyFAAA=\" DisplayName=\"Test2-2\" ParentFolderId=\"AAMkADljNDMxMTY3LTI3NzYtNDc5Ny05ODI0LThhZTk3Yzc2MWU3MwAuAAAAAABtfBYgWY8sTr4MGI3HqzHtAQCfuv2rnteuQ512SPTH2nNRAAVGqlyGAAA=\" >");
			sb.Append("<Folder FolderId=\"Test$AAMkADljNDMxMTY3LTI3NzYtNDc5Ny05ODI0LThhZTk3Yzc2MWU3MwAuAAAAAABtfBYgWY8sTr4MGI3HqzHtAQCfuv2rnteuQ512SPTH2nNRAAVHTFyFAAA=\" DisplayName=\"Test2-2-1\" ParentFolderId=\"TestADljNDMxMTY3LTI3NzYtNDc5Ny05ODI0LThhZTk3Yzc2MWU3MwAuAAAAAABtfBYgWY8sTr4MGI3HqzHtAQCfuv2rnteuQ512SPTH2nNRAAVHTFyFAAA=\" ></Folder></Folder>");
			sb.Append("</Folder>");
			sb.Append("<Folder expanded=\"false\" FolderId=\"AAMkADljNDMxMTY3LTI3NzYtNDc5Ny05ODI0LThhZTk3Yzc2MWU3MwAuAAAAAABtfBYgWY8sTr4MGI3HqzHtAQCfuv2rnteuQ512SPTH2nNRAAVGqlyHAAA=\" DisplayName=\"Test3\" ParentFolderId=\"AAMkADljNDMxMTY3LTI3NzYtNDc5Ny05ODI0LThhZTk3Yzc2MWU3MwAuAAAAAABtfBYgWY8sTr4MGI3HqzHtAQA0z9duLrAlQZAgxeM+D8i3AAAA6LgTAAA=\" >");
			sb.Append("</Folder>");
			sb.Append("</Folder>");

			// load stylesheet
			XslCompiledTransform oXSL = new XslCompiledTransform();
			XsltArgumentList args = new XsltArgumentList();
			args.AddParam("Tree.Alt.Expand", string.Empty, AppResourceManager.Default.GetString("Tree.Alt.Expand"));
			args.AddParam("Tree.Alt.Collapse", string.Empty, AppResourceManager.Default.GetString("Tree.Alt.Collapse"));
			args.AddParam("RTL", string.Empty, CrmCultureInfo.CurrentUICulture.TextInfo.IsRightToLeft);
			args.AddParam("id", string.Empty, this.ID);
			XmlDocument xslDocument = XmlUtil.LoadXmlDocumentFromFileId(ApplicationFileId.FolderBasedTrackingTreeXsl);
			oXSL.Load(xslDocument, null, null);

			// transform tree data
			using (StringReader reader = new StringReader(sb.ToString()))
			{
				oXSL.Transform(XmlReader.Create(reader), args, output);
			}
			output.Close();
                        // Returning xslt data to desing page where this actual method is called.
			return output.ToString();
		}



calling above method from html page.

<tr>
                                    <td>
										<%=RenderFolderBasedTree() %>
                                        
                                    </td>
                                </tr>




Please let me know anything wrong in this code

Many thanks,
-Sanjeev

解决方案

AAMkADljNDMxMTY3LTI3NzYtNDc5Ny05ODI0LThhZTk3Yzc2MWU3MwAuAAAAAABtfBYgWY8sTr4MGI3HqzHtAQCfuv2rnteuQ512SPTH2nNRAAVHTFyFAAA=\" DisplayName=\"Test2-2-1\" ParentFolderId=\"TestADljNDMxMTY3LTI3NzYtNDc5Ny05ODI0LThhZTk3Yzc2MWU3MwAuAAAAAABtfBYgWY8sTr4MGI3HqzHtAQCfuv2rnteuQ512SPTH2nNRAAVHTFyFAAA=\" ></Folder></Folder>"); sb.Append("</Folder>"); sb.Append("<Folder expanded=\"false\" FolderId=\"AAMkADljNDMxMTY3LTI3NzYtNDc5Ny05ODI0LThhZTk3Yzc2MWU3MwAuAAAAAABtfBYgWY8sTr4MGI3HqzHtAQCfuv2rnteuQ512SPTH2nNRAAVGqlyHAAA=\" DisplayName=\"Test3\" ParentFolderId=\"AAMkADljNDMxMTY3LTI3NzYtNDc5Ny05ODI0LThhZTk3Yzc2MWU3MwAuAAAAAABtfBYgWY8sTr4MGI3HqzHtAQA0z9duLrAlQZAgxeM+D8i3AAAA6LgTAAA=\" >"); sb.Append("</Folder>"); sb.Append("</Folder>"); // load stylesheet XslCompiledTransform oXSL = new XslCompiledTransform(); XsltArgumentList args = new XsltArgumentList(); args.AddParam("Tree.Alt.Expand", string.Empty, AppResourceManager.Default.GetString("Tree.Alt.Expand")); args.AddParam("Tree.Alt.Collapse", string.Empty, AppResourceManager.Default.GetString("Tree.Alt.Collapse")); args.AddParam("RTL", string.Empty, CrmCultureInfo.CurrentUICulture.TextInfo.IsRightToLeft); args.AddParam("id", string.Empty, this.ID); XmlDocument xslDocument = XmlUtil.LoadXmlDocumentFromFileId(ApplicationFileId.FolderBasedTrackingTreeXsl); oXSL.Load(xslDocument, null, null); // transform tree data using (StringReader reader = new StringReader(sb.ToString())) { oXSL.Transform(XmlReader.Create(reader), args, output); } output.Close(); // Returning xslt data to desing page where this actual method is called. return output.ToString(); }



calling above method from html page.

<tr>
                                    <td>
										<%=RenderFolderBasedTree() %>
                                        
                                    </td>
                                </tr>




Please let me know anything wrong in this code

Many thanks,
-Sanjeev


First, you need to compile your XSLT, and then you can apply it to any XML. This is done using the class System.Xml.Xsl.XslCompiledTransform:
http://msdn.microsoft.com/en-us/library/system.xml.xsl.xslcompiledtransform%28v=vs.110%29.aspx[^].

Pay attention for the methods System.Xml.Xsl.XslCompiledTransform.Transform. Basically, you can put the result of transformation to any file, or to some instance of System.Xml.XmlWriter:
http://msdn.microsoft.com/en-us/library/system.xml.xmlwriter(v=vs.110).aspx[^].

That said, it's convenient to have your target HTML (div or whatever else) written by the same instance of the writer. Your question assumes that you will be able to do that.

—SA


This is a good place to start if you need information for how to create the XSLT file itself. XSLT Tutorial[^]
The tutorial is about how to convert XML to HTML using XSLT.
You can use Visual Studio to edit and debug your XSLT.

When you have a proper XSLT file, you can use the methods in solution 1 to do the conversion in a c# application.


这篇关于将xslt输出附加到Div或TextWriter的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆