有效点

BBEdit 7出局了. BBEdit releases are official holidays at 万博manbetx贴吧 headquarters.

多里史密斯通过抱怨标志着这一场合因为BBEdit 7现在包含对ASP和VBScript的语言支持,但没有内置的CSS验证器,Bare Bones忽略了Web开发人员的需求。

只有在Dori Smith的脑海中,对两种额外的网络编程语言的新支持才能成为Bare Bones的证据听网络开发者尽管ASP是一种Windows技术,但我向你保证许多BBEdit用户使用它开发网站。

史密斯跟着那个帖子跟另一个人抱怨BBEdit的HTML语法检查器,即使同一页面通过了W3C的在线HTML验证器,也会报告其博客首页的错误:

So, my conclusion stands: if I can’t use BBEdit to check HTML standards compliancy (because it gives erroneous results) and I can’t use it to check CSS standards compliancy (because it doesn’t support this), then, it’s not a useful tool for standards validation这是我做了很多事情。

实际上,她的结论根本不符合BBEdit没有报告错误的结果她博客的标记包含错误,BBEdit正确报告它们她可能会做很多HTML验证,但她做得不好(考虑到她,这有点令人尴尬声称坐在转向委员会网络标准项目。)

这是一个相当常见的混乱来源BBEdit的语法检查程序和W3C的验证程序经常产生不同的结果这不是说他们不同意但是 - 只是它们的工作方式非常不同,因此找到(并错过)不同类别的标记错误。

碰巧最常见的差异是BBEdit报告W3C验证器没有报告错误的情况要采取的正确措施是修复BBEdit报告的错误The incorrect action is to blame BBEdit; it is almost certain that BBEdit is right, and your markup is wrong.

关于验证

Just what does it mean when your web pages pass through an HTML validator without error? Only that they’ve passed through a validator这是一件好事,但绝对可以表示您的标记没有错误它可能是,但我知道每个HTML检查器都会错过某些类错误。

这就是为什么我使用BBEdit和W3C的验证器来检查我的标记It’s also why, when your page passes through BBEdit’s syntax checker without error, BBEdit displays a dialog that says “No errors were found,” instead of “This document has no errors.” There might well be errors, but which BBEdit’s syntax checker couldn’t find.

大多数人都希望这些工具能够毫无错误地标记和捕获任何和所有错误虽然它们都是非常好的工具,但它们都不是完美的当他们不同意时会出现混淆,并且网页会在没有投诉的情况下通过其中一个网页,但另一个工具会标记错误。

例如,看看这两个HTML文档:

reference_count.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
           "http://www.w3.org/TR/html4/loose.dtd">
   <html lang="en">
   <head>
      <title>Reference Count</title>
   </head>
   
   <body>
      <p>First body.</p>
   </body>
   
   <body>
      <p>Second body.</p>
   </body>
   
   </html>

资源;W3C结果

attribute_values.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
           "http://www.w3.org/TR/html4/loose.dtd">
   <html lang="en">
   <head>
      <title>Attribute Values</title>
   </head>
   <body>
   
   <table>
       <tr>
           <td width="foobar">A Table</td>
       </tr>
   </table>
   
   </body>
   </html>

资源;W3C结果

每个文件都包含一个相对明显的错误,不会被其中一个检查程序标记第一个文件有两个<身体>标签,但BBEdit的语法检查器没有抓住它第二个文件的伪造值为<TD>标签的宽度属性,但W3C的验证器没有捕获它。

第一个示例是引用计数的演示,BBEdit的语法检查程序不执行基本上,它归结为某些标记结构只允许出现的次数有限。<身体>例如,标签只允许出现一次BBEdit知道哪里一个<身体>可以出现,但它不会跟踪您使用了多少。

第二个示例是属性值解析的演示,W3C的验证器不执行该演示你可以把差不多什么在属性值中,W3C验证器不会捕获它表格单元格宽度设置为“foobar”显然是一个荒谬的例子,但它说明了这一点在实践中,无效的属性值通常包含细微的错误,这些错误在肉眼看来是正常的但BBEdit抓住了他们。

这是一个真实的例子原始HTML 4.0规范不允许表格单元格的基于百分比的宽度(这个省略在HTML 4.01中已得到纠正。)如果您尝试在HTML 4.0文档中使用类似下面的内容,BBEdit会正确报告错误:

<td width =“50%”>

这个特殊的问题引起了巨大的惊愕,其次是启蒙,通常是这样的:

用户:BBEdit有一个错误它告诉我,我不能在HTML 4.0文档中的表格单元格中使用百分比宽度。

裸露的骨头:那是因为你不被允许“width”的属性值必须是数字。

用户:但百分比适用于所有浏览器。

裸露的骨头:这并不意味着它是有效的浏览器支持各种糟糕的标记。

用户:But my page passes through the W3C validator! If the W3C validator says it’s OK, BBEdit must be wrong.

裸露的骨头:W3C验证程序不解析属性值尝试将宽度更改为“fred flintstone”它仍将通过W3C验证器。

用户:好的,坚持......哦哇你是对的But I need percentage widths for my layout! What should I do?

裸露的骨头:抱怨4.0规范的作者。

修复工具

现在我们有了背景,我们可以很容易地看到为什么BBEdit在backupbrain.com上捕获错误,但是W3C验证器没有All three errors are similar例如,对于此锚标记:

<a href="http://purl.org/net/syndication/subscribe/?rss=http://www.backupbrain.com/index.xml" title="Subscribe via SSS">

BBEdit报告以下错误:

File "index.html"; Line 173: Value of attribute "href" for element "<a>" is invalid; URL path needs encoding ("/net/syndication/subscribe/?rss=http:%2F%2Fwww.backupbrain.com%2Findex.xml").

正如你所看到的,它不只是报告错误,斜杠后问号在URL编码的需要——它的正确编码的URL生成错误消息(如果您使用BBEdit的Anchor对话框输入URL,BBEdit将为您编码。)

W3C验证器不会捕获错误,因为这是属性值解析的另一个示例。

在宏伟的计划中,她的并不是一个严重的错误这当然很常见,并且大多数用户代理都足够聪明,可以正确处理URI的搜索部分中未转义的斜杠但这并不意味着不应该转义斜杠:“/”是URI中的保留字符,用作目录分隔符在上面的href属性中,“?”后面的斜杠不会被用作目录分隔符,因此应该进行转义。

正如Jim Correia(Bare Bones工程师主要负责语法检查)写了一会儿在BBEdit网站创作邮件列表上:

? starts your search part, and / is no longer being used as a hierarchy delimiter afterwards, so you should encode itA well behaved CGI will url decode the search part before doing work and all shall be well...

(If you don’t encode the / after the ? search part delimiter, a particular implementation is left to guessIt may guess that ? was part of a resource name, and that you forgot to encode itIn this case, you won’t get the behavior that you desireIt may guess that the / after the ? was the thing you forgot to encode, and treat the ? as the delimiter between the path and the search part, in which case you will get the behavior you desireBut why leave it to chance when encoding the / in the search part will remove the ambiguity?)

权威参考是RFC 2396,由一位先生共同撰写蒂姆伯纳斯 - 李。

BBEdit的语法检查器和W3C HTML验证器都是很棒的工具(And yes, a “syntax checker” is not the same thing as a “validator”, although that’s not to say that one or the other couldn’t be improved in the future to handle all of the above examples.) Rather than competing, they complement each other rather nicely, which is why I use both.

然而,如果我必须选择一个我BBEdit语法检查器For one thing, it’s much more convenient to use — it’s faster to invoke, and it displays its results in a well-designed error browser that lets you jump right to the errors in your document此外,它捕获了我可能犯的更多错误,尤其是属性值中的愚蠢错别字我根本不可能包括两个<身体>文档中的标记。

但没有理由选择两者兼用当一个人报告另一个没有的错误时,正确的操作几乎总是要解决它这两种工具的缺点是它们都错过了某些类型的错误,而不是它们报告了虚假错误。

Pixel Pushing

史密斯还抱怨BBEdit的语法检查器发出警告她的猫的主页该页面有25个隐式关闭<LI>标签,并且,毫不奇怪,BBEdit发出25个关于隐式关闭的警告<LI>标签I don’t understand why she’s complaining about this — especially since this warning can be turned off in BBEdit’s preferences — but then again, I don’t understand why she’s written two consecutive reviews of Script Debugger for Macworld in which she blames Late Night Software for bugs in Microsoft Word and Excel (2。1,2001年1月;2002年2月3日)。

以前: SmartyPants 1.0
下一个: 你闻到了什么吗?