以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XSL/XSLT/XSL-FO/CSS 』  (http://bbs.xml.org.cn/list.asp?boardid=8)
----  关于标签关闭的问题,高手入  (http://bbs.xml.org.cn/dispbbs.asp?boardid=8&rootid=&id=63634)


--  作者:Kimi
--  发布时间:6/11/2008 10:08:00 AM

--  关于标签关闭的问题,高手入
XSL文件(c:\test.xsl)如下:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="html" encoding="utf-8" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
 <xsl:template match="/" priority="0">
  <html>
   <div id="abc"></div>
  </html>
 </xsl:template>
</xsl:stylesheet>

.NET2.0 (C#) 代码如下:
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load("c:\\test.xsl");
StringBuilder sb = new StringBuilder();
XmlWriterSettings mysetting = new XmlWriterSettings();
mysetting.Indent = true;
mysetting.IndentChars = " ";
XmlWriter writer = XmlWriter.Create(sb, mysetting);
XmlDocument xml = new XmlDocument();
xml.LoadXml(“<?xml version=\"1.0\" encoding=\"UTF-8\"?><Root></Root>”);
xslt.Transform(xml, null, writer);
re = sb.ToString();

re的输出为:
<?xml version=\"1.0\" encoding=\"utf-16\"?>
<html>
 <div id="abc" />
</html>

问题:
如何让<div id="abc" />保持<div id="abc"></div>不变

这个问题已经困扰了很久了,哪位高手能告知?先谢过


--  作者:Qr
--  发布时间:6/12/2008 9:01:00 AM

--  
http://blogger.org.cn/blog/more.asp?name=Qr&id=30125
仅供参考,没有用.NET2.0 (C#) 测试过。
--  作者:Kimi
--  发布时间:6/12/2008 9:54:00 AM

--  
先谢谢Qr
用XML和XSL直接转换后是空元素的结束标记是可以保持完整的。
我的困扰主要是在.NET2.0中用XslCompiledTransform对象进行转换后无法保持完整的结束标记。
--  作者:Qr
--  发布时间:6/12/2008 11:39:00 AM

--  
test.xsl中用<xsl:element>来创建<DIV>试试看。要不就用SAX来写XML咯,我在.NET试过,结束标记可以保持完整。
--  作者:Kimi
--  发布时间:6/12/2008 2:21:00 PM

--  
用xsl:element试过了,还是那样。
“我在.NET试过,结束标记可以保持完整”。能不能把你的代码贴出来看看啊?谢谢。
--  作者:Qr
--  发布时间:6/12/2008 4:17:00 PM

--  
你误解我的意思了,我是说,用SAX写XML可以让空节点的结束标记保持完整,这个我曾经用.NET测试过,建议你从这方便考虑。至于SAX写XML的代码,随便搜一下就有了。但是解决你问题的代码没有考虑过,我这里没有.NET环境。
我看你的代码,似乎是将XML通过XSLT转换成HTML(空标记要有结束标记那种),我BLOG上的那篇文章应该可以解决空标记的问题,尽管我用的不是C#来Transform输出HTML,而是用javascript Transform 为XML,但理论是相同的。你仔再细看看,我这里没有.NET环境,就不去测试了。
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
78.125ms