﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Tinysun-随笔分类-XML相关</title><link>http://www.blogjava.net/tinysun/category/38100.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 05 Mar 2009 04:58:33 GMT</lastBuildDate><pubDate>Thu, 05 Mar 2009 04:58:33 GMT</pubDate><ttl>60</ttl><item><title>由一道面试题引起的疑问与思考（转）</title><link>http://www.blogjava.net/tinysun/archive/2009/03/05/257967.html</link><dc:creator>何克勤</dc:creator><author>何克勤</author><pubDate>Thu, 05 Mar 2009 04:30:00 GMT</pubDate><guid>http://www.blogjava.net/tinysun/archive/2009/03/05/257967.html</guid><wfw:comment>http://www.blogjava.net/tinysun/comments/257967.html</wfw:comment><comments>http://www.blogjava.net/tinysun/archive/2009/03/05/257967.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tinysun/comments/commentRss/257967.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tinysun/services/trackbacks/257967.html</trackback:ping><description><![CDATA[<p><font size="2">前两天去一家公司面试，里面有一道XML的题目，题目没什么难的，但由于编码问题引发了一些问</font> <font size="2">题，我回来后尝试探索了一下<br />
题目要求：把下面的XML文件用XSL转换成html表格显示出来,并按pubDate降序排列<br />
</font></p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img id="Code_Closed_Image_013442" style="display: none" onclick="this.style.display='none'; Code_Closed_Text_013442.style.display='none'; Code_Open_Image_013442.style.display='inline'; Code_Open_Text_013442.style.display='inline';" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"  alt="" /> <img id="Code_Open_Image_013442" style="display: inline" onclick="this.style.display='none'; Code_Open_Text_013442.style.display='none'; Code_Closed_Image_013442.style.display='inline'; Code_Closed_Text_013442.style.display='inline';" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top"  alt="" /> <span id="Code_Closed_Text_013442" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">XML文件</span> <span id="Code_Open_Text_013442" style="display: inline"><br />
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080">&nbsp;1</span> <img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /> <span style="color: #0000ff">&lt;?</span> <span style="color: #ff00ff">xml&nbsp;version="1.0"</span> <span style="color: #0000ff">?&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;2</span> <span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /> </span><span style="color: #0000ff">&lt;?</span> <span style="color: #ff00ff">xml-stylesheet&nbsp;type="text/xsl"&nbsp;href="books.xsl"</span> <span style="color: #0000ff">?&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;3</span> <span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /> </span><span style="color: #0000ff">&lt;</span> <span style="color: #800000">books</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;4</span> <span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span> <span style="color: #0000ff">&lt;</span> <span style="color: #800000">book&nbsp;</span> <span style="color: #ff0000">id</span> <span style="color: #0000ff">="1"</span> <span style="color: #ff0000">&nbsp;pubDate</span> <span style="color: #0000ff">="20050707"</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;5</span> <span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #0000ff">&lt;</span> <span style="color: #800000">title</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000">c#&nbsp;XML入门经典</span> <span style="color: #0000ff">&lt;/</span> <span style="color: #800000">title</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;6</span> <span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #0000ff">&lt;</span> <span style="color: #800000">description</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000">编程人员必被的XML技能</span> <span style="color: #0000ff">&lt;/</span> <span style="color: #800000">description</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;7</span> <span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span> <span style="color: #0000ff">&lt;/</span> <span style="color: #800000">book</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;8</span> <span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span> <span style="color: #0000ff">&lt;</span> <span style="color: #800000">book&nbsp;</span> <span style="color: #ff0000">id</span> <span style="color: #0000ff">="2"</span> <span style="color: #ff0000">&nbsp;pubDate</span> <span style="color: #0000ff">="20050607"</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;9</span> <span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #0000ff">&lt;</span> <span style="color: #800000">title</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000">XSL编程精要</span> <span style="color: #0000ff">&lt;/</span> <span style="color: #800000">title</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #008080">10</span> <span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #0000ff">&lt;</span> <span style="color: #800000">description</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000">从XML到HTML</span> <span style="color: #0000ff">&lt;/</span> <span style="color: #800000">description</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #008080">11</span> <span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span> <span style="color: #0000ff">&lt;/</span> <span style="color: #800000">book</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #008080">12</span> <span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span> <span style="color: #0000ff">&lt;</span> <span style="color: #800000">book&nbsp;</span> <span style="color: #ff0000">id</span> <span style="color: #0000ff">="3"</span> <span style="color: #ff0000">&nbsp;pubDate</span> <span style="color: #0000ff">="20050607"</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #008080">13</span> <span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #0000ff">&lt;</span> <span style="color: #800000">title</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000">.NET&nbsp;framework框架程序设计</span> <span style="color: #0000ff">&lt;/</span> <span style="color: #800000">title</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #008080">14</span> <span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #0000ff">&lt;</span> <span style="color: #800000">description</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000">框架程序设计</span> <span style="color: #0000ff">&lt;/</span> <span style="color: #800000">description</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #008080">15</span> <span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span> <span style="color: #0000ff">&lt;/</span> <span style="color: #800000">book</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #008080">16</span> <span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /> </span><span style="color: #0000ff">&lt;/</span> <span style="color: #800000">books</span> <span style="color: #0000ff">&gt;</span> </span></div>
<p>当时我习惯的在桌面上建立文本文件，然后手工输入：<font size="2"></font></p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img id="Code_Closed_Image_013510" style="display: none" onclick="this.style.display='none'; Code_Closed_Text_013510.style.display='none'; Code_Open_Image_013510.style.display='inline'; Code_Open_Text_013510.style.display='inline';" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"  alt="" /> <img id="Code_Open_Image_013510" style="display: inline" onclick="this.style.display='none'; Code_Open_Text_013510.style.display='none'; Code_Closed_Image_013510.style.display='inline'; Code_Closed_Text_013510.style.display='inline';" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top"  alt="" /> <span id="Code_Closed_Text_013510" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">XSLT</span> <span id="Code_Open_Text_013510" style="display: inline"><br />
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080">&nbsp;1</span> <img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /> <span style="color: #0000ff">&lt;?</span> <span style="color: #ff00ff">xml&nbsp;version="1.0"</span> <span style="color: #0000ff">?&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;2</span> <span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /> </span><span style="color: #0000ff">&lt;</span> <span style="color: #800000">xsl:stylesheet&nbsp;</span> <span style="color: #ff0000">version</span> <span style="color: #0000ff">="1.0"</span> <span style="color: #ff0000">&nbsp;xmlns:xsl</span> <span style="color: #0000ff">="http://www.w3.org/1999/XSL/Transform"</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;3</span> <span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span> <span style="color: #0000ff">&lt;</span> <span style="color: #800000">xsl:template&nbsp;</span> <span style="color: #ff0000">match</span> <span style="color: #0000ff">="/"</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;4</span> <span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #0000ff">&lt;</span> <span style="color: #800000">html</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;5</span> <span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #0000ff">&lt;</span> <span style="color: #800000">body</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;6</span> <span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #0000ff">&lt;</span> <span style="color: #800000">table&nbsp;</span> <span style="color: #ff0000">border</span> <span style="color: #0000ff">="1pt"</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;7</span> <span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #0000ff">&lt;</span> <span style="color: #800000">tr</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;8</span> <span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #0000ff">&lt;</span> <span style="color: #800000">td</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000">BookId</span> <span style="color: #0000ff">&lt;/</span> <span style="color: #800000">td</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;9</span> <span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #0000ff">&lt;</span> <span style="color: #800000">td</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000">Title</span> <span style="color: #0000ff">&lt;/</span> <span style="color: #800000">td</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #008080">10</span> <span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #0000ff">&lt;</span> <span style="color: #800000">td</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000">Description</span> <span style="color: #0000ff">&lt;/</span> <span style="color: #800000">td</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #008080">11</span> <span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #0000ff">&lt;</span> <span style="color: #800000">td</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000">PubDate</span> <span style="color: #0000ff">&lt;/</span> <span style="color: #800000">td</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #008080">12</span> <span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #0000ff">&lt;/</span> <span style="color: #800000">tr</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #008080">13</span> <span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #0000ff">&lt;</span> <span style="color: #800000">xsl:apply-templates&nbsp;</span> <span style="color: #ff0000">select</span> <span style="color: #0000ff">="//book"</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #008080">14</span> <span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #0000ff">&lt;</span> <span style="color: #800000">xsl:sort&nbsp;</span> <span style="color: #ff0000">select</span> <span style="color: #0000ff">="@pubDate"</span> <span style="color: #ff0000">&nbsp;order</span> <span style="color: #0000ff">="descending"</span> <span style="color: #ff0000">&nbsp;</span> <span style="color: #0000ff">/&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #008080">15</span> <span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #0000ff">&lt;/</span> <span style="color: #800000">xsl:apply-templates</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #008080">16</span> <span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #0000ff">&lt;/</span> <span style="color: #800000">table</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #008080">17</span> <span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #0000ff">&lt;/</span> <span style="color: #800000">body</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #008080">18</span> <span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #0000ff">&lt;/</span> <span style="color: #800000">html</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #008080">19</span> <span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span> <span style="color: #0000ff">&lt;/</span> <span style="color: #800000">xsl:template</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #008080">20</span> <span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span> <span style="color: #0000ff">&lt;</span> <span style="color: #800000">xsl:template&nbsp;</span> <span style="color: #ff0000">match</span> <span style="color: #0000ff">="book"</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #008080">21</span> <span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #0000ff">&lt;</span> <span style="color: #800000">tr</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #008080">22</span> <span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #0000ff">&lt;</span> <span style="color: #800000">td</span> <span style="color: #0000ff">&gt;&lt;</span> <span style="color: #800000">xsl:value-of&nbsp;</span> <span style="color: #ff0000">select</span> <span style="color: #0000ff">="@id"</span> <span style="color: #ff0000">&nbsp;</span> <span style="color: #0000ff">/&gt;&lt;/</span> <span style="color: #800000">td</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #008080">23</span> <span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #0000ff">&lt;</span> <span style="color: #800000">td</span> <span style="color: #0000ff">&gt;&lt;</span> <span style="color: #800000">xsl:value-of&nbsp;</span> <span style="color: #ff0000">select</span> <span style="color: #0000ff">="title/text()"</span> <span style="color: #ff0000">&nbsp;</span> <span style="color: #0000ff">/&gt;&lt;/</span> <span style="color: #800000">td</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #008080">24</span> <span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #0000ff">&lt;</span> <span style="color: #800000">td</span> <span style="color: #0000ff">&gt;&lt;</span> <span style="color: #800000">xsl:value-of&nbsp;</span> <span style="color: #ff0000">select</span> <span style="color: #0000ff">="description/text()"</span> <span style="color: #ff0000">&nbsp;</span> <span style="color: #0000ff">/&gt;&lt;/</span> <span style="color: #800000">td</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #008080">25</span> <span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #0000ff">&lt;</span> <span style="color: #800000">td</span> <span style="color: #0000ff">&gt;&lt;</span> <span style="color: #800000">xsl:value-of&nbsp;</span> <span style="color: #ff0000">select</span> <span style="color: #0000ff">="@pubDate"</span> <span style="color: #ff0000">&nbsp;</span> <span style="color: #0000ff">/&gt;&lt;/</span> <span style="color: #800000">td</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #008080">26</span> <span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #0000ff">&lt;/</span> <span style="color: #800000">tr</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #008080">27</span> <span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span> <span style="color: #0000ff">&lt;/</span> <span style="color: #800000">xsl:template</span> <span style="color: #0000ff">&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #008080">28</span> <span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /> </span><span style="color: #0000ff">&lt;/</span> <span style="color: #800000">xsl:stylesheet</span> <span style="color: #0000ff">&gt;</span> </span></div>
<p><font color="#ff0000" size="2"><strong>注意：上面的XML代码由于ＦＴＢ插入XML代码功能有问题，&lt;后和&gt;前都不能有空格,这也是XML Well-Format的要求.<br />
</strong></font><br />
然后在IE里浏览XML文件，提示：文本内容中发现无效字符;我检查过文件，文件没有非法字符，<font size="2">所以我觉得可能是XML编码问题，然后在顶部的指令里加入encoding="UTF-8",按理来说，UTF-8完</font><font size="2">全适合题涉及到字符集，但还是提示：文本内容中发现无效字符，而改成encoding="GB2312"就正</font><font size="2">常了,什么原因呢？<br />
<br />
我回来尝试了一下，一般有两种情况：<br />
<strong>情况1：</strong><br />
默认情况下，windows的notepad把文件保存为ANSI格式,在这种情况，设定不同encoding有不同的</font><font size="2">结果：<br />
&nbsp; encoding="windows-1252",不出错，但中文显示为乱码;<br />
&nbsp; encoding="GB2312" ,正常显示；<br />
&nbsp; encoding="UTF-8" ,出错，提示文本内容中发现无效字符 ;<br />
<strong>情况2</strong>：<br />
把xml文件在notepad另包存为UTF-8格式，<br />
&nbsp; encoding="windows-1252"，出错，提示不支持从当前编码到指定编码的切换;<br />
&nbsp; encoding="GB2312" ，出错，提示不支持从当前编码到指定编码的切换;<br />
&nbsp; encoding="UTF-8" ,正常；<br />
例外：不设置encoding的值，默认就是UTF-8,所以把这种情况归入UTF-8的情况.<br />
<br />
那么如何来理解上面的两种情况呢？<br />
&nbsp;W3C定义了三条XML解析器如何正确读取XML文件的编码的规则：<br />
&nbsp;1，如果文挡有BOM(字节顺序标记，一般来说，如果保存为unicode格式，则包含BOM，ANSI则无)</font><font size="2">，就定义了文件编码<br />
&nbsp;2，如果没有BOM，就查看XML声明的编码属性<br />
&nbsp;3，如果上述两个都没有，就假定XML文挡采用UTF-8编码</font></p>
<p><font size="2">现在，让我们尝试用上面的三条规则来解释上面出现的情况：<br />
<strong>情况1分析：<br />
</strong>由于XML默认被保存ANSI格式,如果设置encoding="UTF-8"，那么XML解析器就把文件以UTF-8格式</font> <font size="2">来解析，由于文件的实质格式是ANSI，而ANSI和UTF-8除了其中128个字符的编码相同外，其他的</font> <font size="2">都不相同而被解析器认为无效字符，所以出现"文本内容中发现无效字符"的错误了；设置为</font> <font size="2">encoding="windows-1252"，解析器以windows-1252来解析，ANSI其实就是windows-1252，所以编</font> <font size="2">码相同，解析器能顺利解析，但中文出现乱码又如何理解呢？windows-1252是单字节字符集，而</font> <font size="2">中文是需要双字节编码的，所以只能解析为乱码。设置encoding="GB2312"能够正常显示，那又如</font> <font size="2">何理解呢？因为GB2312是双字节的中文简体字符集？前面不是说文件的实质格式是单字节的ANSI</font> <font size="2">吗？这就是矛盾的地方。<br />
<br />
<strong>情况2分析：<br />
</strong>由于文件被保存为UTF-8(Unicode的其中一种编码方式),所以文件包含BOM，按照W3G的规则来解释</font> <font size="2">，XML解析器将以UTF-8解析XML而忽略encoding的设置。可实际上是不能忽略encoding的设置的，</font> <font size="2">否则无法解释情况2出现的现象。</font> </p>
<p><font size="2"><strong>遗留问题：</strong> <br />
本文并没能完全分析情况1，2的现象。不知道大家是如何理解这些情况的呢？</font></p>
<img src ="http://www.blogjava.net/tinysun/aggbug/257967.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tinysun/" target="_blank">何克勤</a> 2009-03-05 12:30 <a href="http://www.blogjava.net/tinysun/archive/2009/03/05/257967.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>