是什么让Microsoft-Word生成的HTML文档代码如此之大?

ans*_*bhi 3 html ms-word

下面是一个简单的W3C验证代码,用于打印"Hello World":

<!DOCTYPE html>
<html>
<head>
<meta charset = "utf-8">
<title>Hello</title>
</head>
Hello World
</html> 
Run Code Online (Sandbox Code Playgroud)

但是当我用MS Word做同样的事情时,生成的代码是449行为什么所有这些额外的行都出现在代码中?

sgr*_*lon 13

Word的名称空间:

<html xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:w="urn:schemas-microsoft-com:office:word"
xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"
xmlns="http://www.w3.org/TR/REC-html40">
Run Code Online (Sandbox Code Playgroud)

Word保持元数据信息:

<!--[if gte mso 9]><xml>
 <o:DocumentProperties>
  <o:Author>xxxxxx</o:Author>
  <o:LastAuthor>xxxxx</o:LastAuthor>
  <o:Revision>2</o:Revision>
  <o:TotalTime>0</o:TotalTime>
  <o:Created>2015-05-25T11:40:00Z</o:Created>
  <o:LastSaved>2015-05-25T11:40:00Z</o:LastSaved>
  <o:Pages>1</o:Pages>
  <o:Words>1</o:Words>
  <o:Characters>11</o:Characters>
  <o:Company>Sopra Group</o:Company>
  <o:Lines>1</o:Lines>
  <o:Paragraphs>1</o:Paragraphs>
  <o:CharactersWithSpaces>11</o:CharactersWithSpaces>
  <o:Version>12.00</o:Version>
 </o:DocumentProperties>
</xml><![endif]-->
Run Code Online (Sandbox Code Playgroud)

Word添加css样式:

<style>
<!--
 /* Font Definitions */
 @font-face
    {font-family:"Cambria Math";
    panose-1:2 4 5 3 5 4 6 3 2 4;
    mso-font-charset:0;
    mso-generic-font-family:roman;
    mso-font-pitch:variable;
    mso-font-signature:-536870145 1107305727 0 0 415 0;}
@font-face
    {font-family:Calibri;
    panose-1:2 15 5 2 2 2 4 3 2 4;
    mso-font-charset:0;
    mso-generic-font-family:swiss;
    mso-font-pitch:variable;
    mso-font-signature:-536870145 1073786111 1 0 415 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
    {mso-style-unhide:no;
    mso-style-qformat:yes;
    mso-style-parent:"";
    margin-top:0cm;
    margin-right:0cm;
    margin-bottom:10.0pt;
    margin-left:0cm;
    line-height:115%;
    mso-pagination:widow-orphan;
    font-size:11.0pt;
    font-family:"Calibri","sans-serif";
    mso-ascii-font-family:Calibri;
    mso-ascii-theme-font:minor-latin;
    mso-fareast-font-family:Calibri;
    mso-fareast-theme-font:minor-latin;
    mso-hansi-font-family:Calibri;
    mso-hansi-theme-font:minor-latin;
    mso-bidi-font-family:"Times New Roman";
    mso-bidi-theme-font:minor-bidi;
    mso-fareast-language:EN-US;}
.MsoChpDefault
    {mso-style-type:export-only;
    mso-default-props:yes; ......
Run Code Online (Sandbox Code Playgroud)

Word使用css样式:

<p class=MsoNormal>Hello World</p>
Run Code Online (Sandbox Code Playgroud)

如果您将来需要修改此信息,则需要保留此信息.如果您正在进行简单导出,则可以删除所有元数据.


Sha*_*ter 7

如在解释该链接,该代码被加到用于MS Office的目的; 除此之外,它还可以让您更轻松地在Word中继续编辑文档.我收集的大部分膨胀都只是布局和文档信息.我将发布相关报价以供链接腐烂时使用.

[...]原来这些HTML文件是由Microsoft Word创建的!由于一系列不同的网页设计和设计师多年来,以及营销部门的健康编辑,我们客户当前网站的四分之一网页是使用Microsoft Word创建或修改的!

当我们滚动浏览HTML文件时,我们看到了大量的额外数据,而普通的Web浏览器无法解释这些数据.一点点研究为我们解释了它.Microsoft允许您将文档另存为HTML文件.他们还希望您能够打开使用Microsoft Office创建的HTML文件,并像普通文档一样继续编辑它.由于Microsoft Office具有HTML和CSS不具备的各种功能,因此Office允许Office在编辑之间保留HTML文件中的某些信息.

存储的一些数据是显而易见的:文档创建时和由谁编写,编辑时间,段落计数等.其他不太明显的数据,如VML,DHTML行为,列和页面间距,Word样式信息,嵌入对象数据,以及更多也存储在文件内.所有这些Office特定数据都存储在HTML文件中,并包含在特殊条件注释中,例如<!--[if gte mso 9].这隐藏了其他读取HTML的程序的内容.

正如Adriano Repetti指出的那样,有一些代码可以处理旧版本的Office.

<!--[if gte mso 9]> ...
<!--[if gte mso 10]> ...
Run Code Online (Sandbox Code Playgroud)

检查MS Office版本的兼容性以确定布局.应该提一下,在Word中编辑HTML不是我推荐的.永远.

尝试NetBeans,它是免费的,真棒:)
我听起来像汽车推销员......*抱怨*