码迷,mamicode.com
首页 > 其他好文 > 详细

XLT格式化XML那点事(二)

时间:2015-09-11 14:24:23      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:

接上篇《XML通过XSL格式化的那点事(XML到自定义节点折叠显示)》,本文就如何将大的XLST分割成小文件和如何用C#将XML通过XSL生成HTML文件中的问题做下分析,避免有同样需求的朋友走弯路。

Import的使用

<xsl:Import> 元素必须在第一个节点

技术分享

技术分享

如何避免输出SelfClose的非法元素

 

简单繁琐的办法

<script type="text/javascript" src="nowhere.js">
<xsl:comment></xsl:comment>
</script>

 

一劳永逸的方法

不用XMLWriter使用自己定义的XMLHTMLWriter

using System; 
using System.Collections.Generic; 
using System.Text; 
using System.Xml;

namespace XSLSelfClosing 
{ 
    public class XmlHtmlWriter : XmlTextWriter 
    { 
        public XmlHtmlWriter(System.IO.Stream stream, Encoding en) 
            : base(stream, en) 
        {

            //Put all the elemnts for which you want self closing tags in this list. 
            //Rest of the tags would be explicitely closed 
            fullyClosedElements.AddRange(new string[] { "br", "hr" }); 
        }

        string openingElement = ""; 
        List<string> fullyClosedElements = new List<string>();

        public override void WriteEndElement() 
        { 
            if (fullyClosedElements.IndexOf(openingElement) < 0) 
                WriteFullEndElement(); 
            else 
                base.WriteEndElement(); 
        } 

        public override void WriteStartElement(string prefix, string localName, string ns) 
        { 
            base.WriteStartElement(prefix, localName, ns); 
            openingElement = localName; 
        } 
    } 
}

 

参考

XSLT self-closing tags issue

How to force Non-Self Closing tags for empty nodes when using XslCompiledTransform class

XLT格式化XML那点事(二)

标签:

原文地址:http://www.cnblogs.com/HQFZ/p/4798652.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!