代码改变世界

Asp.Net里的XML+Xlst输出代码的标准化的解决与问题

2008-11-27 16:08  咒语  阅读(752)  评论(4编辑  收藏  举报

这两天一直在搞XML+Xslt输出的标准化,即输出Xhtml标准的代码

在.Net2.0的XslCompiledTransform 里 名字空间 xmlns="http://www.w3.org/1999/xhtml"  是正确输出xhtml标准的关键
如果没有这个命名空间的话,输出的文档标签会自动去掉结尾的 / 符号即<meta xxx /> 变成了<meta xxx>

有两种角决的办法:
一,自定义一个XHtmlWrite类,重写一下WriteEndElement() 方法,自已判断那些情况要关闭;
二,就是在模板文件Xlst里加上上面的合字空间啦~ .

对于第一种方法,结果就是xslt模板里的所有<xsl:output 里的方法都失去作用,并且输出的格式看起来和W3上的看起来就是不一样.

对于第二种方法就是输出的结果会自动合并空内容的标签,即<div></div>变成了<div /> 这个结果很是让人难受. 目前的解决办法是要么加<xsl:text> </xsl:text> 要么是在不想关闭的标签尾加上 xml:space="preserve"> 并且把结束标签换行.

我不知微软是乍想的,从XslTransform改到XslCompiledTransform 结果就出来这么一个事.哎~

如果有哪位大侠有更好的解决办法,万望提醒一下 .