当前位置:编程学习 > 网站相关 >>

webkit在win32下的编译规则(八)

HTMLElementFactory.cpp和HTMLNames.cpp是由如下规则生成的:

ifdef HTML_FLAGS

HTMLElementFactory.cpp HTMLNames.cpp : dom/make_names.pl html/HTMLTagNames.in html/HTMLAttributeNames.in
    perl -I $(WebCore)/bindings/scripts $< --tags $(WebCore)/html/HTMLTagNames.in --attrs $(WebCore)/html/HTMLAttributeNames.in --factory --wrapperFactory --extraDefines "$(HTML_FLAGS)"

else

HTMLElementFactory.cpp HTMLNames.cpp : dom/make_names.pl html/HTMLTagNames.in html/HTMLAttributeNames.in
    perl -I $(WebCore)/bindings/scripts $< --tags $(WebCore)/html/HTMLTagNames.in --attrs $(WebCore)/html/HTMLAttributeNames.in --factory --wrapperFactory

endif

可以看出HTMLElementFactory.cpp和HTMLNames.cpp是由make_names.pl处理HTMLTagNames.in和HTMLAttributeNames.in生成的。HTMLTagNames.in(D: oolscygwinhomexufanWebKitSourceWebCorehtmlHTMLTagNames.in)定义了所有的html tag name,里面还有html tag对应webkit处理类的名字,例如a inte易做图ceName=HTMLAnchorElement表明a标签是由HTMLAnchorElement这个类处理的。HTMLAttributeNames.in(D: oolscygwinhomexufanWebKitSourceWebCorehtmlHTMLAttributeNames.in )定义了所有的html Attribute name, 例如href,style,onclick等.

HTMLEntityTable.cpp是由如下规则生成:

HTMLEntityTable.cpp : html/parser/HTMLEntityNames.in $(WebCore)/html/parser/create-html-entity-table
    python $(WebCore)/html/parser/create-html-entity-table -o HTMLEntityTable.cpp $(WebCore)/html/parser/HTMLEntityNames.in

可以看出HTMLEntityTable.cpp是用create-html-entity-table(D: oolscygwinhomexufanWebKitSourceWebCorehtmlparsercreate-html-entity-table)这个python脚本处理HTMLEntityNames.in(D: oolscygwinhomexufanWebKitSourceWebCorehtmlparserHTMLEntityNames.in )生成的。html entity是什么东西呢?html entity的中文翻译一般为HTML 字符实体,指的是那些HTML 中拥有特殊的含义的字符,这些字符的显示就是用html entity表示的。字符实体有三部分:一个和号 (&),一个实体名称,或者 # 和一个实体编号,以及一个分号 (;),例如<(小于号)在html就要写< 或<。在HTMLEntityNames.in里面,小于号的表示为:"LT;","U+0003C" (3c的十进制值为60)。对于小于号和&等符号,最后的分号是可以去掉的,即<和&也是可以的,因为HTMLEntityNames.in对这种符号定义了两个,一个有分号,一个没分号。HTMLEntityNames.in里面还有一些不常用的html entry,例如·(显示为·)。关于html entry更详细的介绍可以参考http://en.易做图.org/wiki/List_of_XML_and_HTML_character_entity_references和http://www.w3.org/TR/html4/sgml/entities.html。html entry可以做一些很有趣的事情,例如http://www.beijing-time.org/wannianli.htm(用ie打开)里面的世界地图,或者你建立一个网页,输入如下内容<FONT style="FONT-SIZE: 120pt; COLOR: green; FONT-FAMILY: Webdings">û</FONT>,在浏览器打开就可以看见一个世界地图。

 

WMLElementFactory.cpp和WMLNames.cpp是由如下规则生成:

ifeq ($(findstring ENABLE_WML,$(FEATURE_DEFINES)), ENABLE_WML)

WMLElementFactory.cpp WMLNames.cpp : dom/make_names.pl wml/WMLTagNames.in wml/WMLAttributeNames.in
    perl -I $(WebCore)/bindings/scripts $< --tags $(WebCore)/wml/WMLTagNames.in --attrs $(WebCore)/wml/WMLAttributeNames.in --factory --wrapperFactory

else

WMLElementFactory.cpp :
    echo > $@

WMLNames.cpp :
    echo > $@

endif

从上面可以看出,WMLElementFactory.cpp和WMLNames.cpp只有在编译选项中包含ENABLE_WML才会有内容,否则就是一个空文件。ENABLE_WML在win32平台上默认是关闭的,因为pc上不会去访问WML网页。如果大家需要编译手机上的webkit浏览器,记得要将这个编译选项打开,否则编译出来的浏览器是无法浏览wap网站上面的网页。WMLTagNames.in (D: oolscygwinhomexufanWebKitSourceWebCorewmlWMLTagNames.in )和WMLAttributeNames.in(D: oolscygwinhomexufanWebKitSourceWebCorewmlWMLAttributeNames.in )的规则与HTMLTagNames.in和HTMLAttributeNames.in基本一样,只是标签和属性少了很多。

SVGElementFactory.cpp和SVGNames.cpp由如下规则生成:

ifdef SVG_FLAGS

SVGElementFactory.cpp SVGNames.cpp : dom/make_names.pl svg/svgtags.in svg/svgattrs.in
    perl -I $(WebCore)/bindings/scripts $< --tags $(WebCore)/svg/svgtags.in --attrs $(WebCore)/svg/svgattrs.in --extraDefines "$(SVG_FLAGS)" --factory --wrapperFactory
else

SVGElementFactory.cpp SVGNames.cpp : dom/make_names.pl svg/svgtags.in svg/svgattrs.in
    perl -I $(WebCore)/bindings/scripts $< --tags $(WebCore)/svg/svgtags.in --attrs $(WebCore)/svg/svgattrs.in --factory --wrapperFactory

endif

SVGElementFactory.cpp和SVGNames.cpp只有定义了SVG_FLAGS 才会生成,与WMLElementFactory.cpp和WMLNames.cpp等的处理差不多,都是调用make_names.pl(D: oolscygwinhomexufanWebKitSourceWebCoredommake_names.pl)生成的。

UserAgentStyleSheets.h由如下规则生成:

USER_AGENT_STYLE_SHEETS = $(WebCore)/css/html.css $(WebCore)/css/quirks.css $(WebCore)/css/view-source.css $(WebCore)/css/themeWin.css $(WebCore)/css/themeWinQuirks.css

……………

UserAgentStyleSheets.h : css/make-css-file-arrays.pl $(USER_AGENT_STYLE_SHEETS)
    perl $< $@ UserAgentStyleSheetsData.cpp $(USER_AGENT_STYLE_SHEETS)

从上面可以看到,UserAgentStyleSheets.h由make-css-file-arrays.pl(D: oolscygwinhomexufanWebKitSourceWebCorecssmake-css-file-arrays.pl )处理html.css,quirks.css,view-source.css等文件而产生。html.css(D: oolscygwinhomexufanWebKitSourceWebCorecsshtml.css)等文件里面定义了webkit的一些tag的默认css属性,例如下面的body,p和h1:

body {
    display: block;
    margin: 8px
}

p {
    display: block;
   -webkit-margin-before: 1__qem;
    -webkit-margin-after: 1__qem;
    -webkit-margin-start: 0;
    -webkit-margin-end: 0;
}

…………

h1 {
    display: block;
   font-size: 2em;
    -webkit-margin-before: 0.67__qem;
    -webkit-margin-after: 0.67em;
    -webkit-margin-start: 0;
    -webkit-margin-end: 0;
    font-weight: bold
}

我想大家看了上面的css,应该对浏览器的一些默认显示有所了解了吧。关于body margin的在各个浏览器上的默认值可以参考:http://shuaigg-babysky.javaeye.com/blog/865245。

XLinkNames.cpp由如下规则生成:

XLinkNames.cpp : dom/make_names.pl svg/xlinkattrs.in
    perl -I $(WebCore)/bindings/scripts $< --attrs $(WebCore)/svg/xlinkattrs.in

xlinkattrs.in里面定义了xlink里面的支持的属性。XLink 是 XML 链接语言(XML Linking Language)的缩写,用于在 XML 文档中创建超级链接的语言,其更加详细的介绍可以参考http://www.w3.org/TR/xlink/和asp">http://www.w3school.com.cn/xlink/index.asp。webkit里面的xlink主要用于svg。

XMLNSNames.cpp由如下规则生成:

XMLNSNames.cpp : dom/make_names.pl xml/xmlnsattrs.in
    perl -I $(WebCore)/bindings/scripts $< --attrs $(WebCore)/xml/xmlnsattrs.in

xmlnsattrs.in里面定义了xml namsapce这个属性的名字:xmlns。

XMLNames.cpp由如下规则生成:

XMLNames.cpp : dom/make_names.pl xml/xmlattrs.in
    perl -I $(WebCore)/bindings/scripts $< --attrs $(WebCore)/xml/xmlattrs.in

xmlattrs.in里面定义了xml一些属性的名字:base,lang,space。


MathMLElementFactory.cpp和MathMLNames.cpp由如下规则生成:

MathMLElementFactory.cpp MathMLNames.cpp : dom/make_names.pl mathm

补充:综合编程 , 其他综合 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,