HTML 是一个描述文本结构的语言。每个 HTML 文件都描述一个单独的页面,可以包含到其它页面的引用(超链接)。语言基于标记,技术上称为标签,是包括在尖括号中的关键字。两个标签,一个开始,一个结束,限定了可以包含内容(文本或者子元素)的元素,没有包含内容的元素使用空标签描述。标签中的关键字被称为元素名。
~~~
< div > content < /div >
~~~
在前面的示例中,纯文本内容 content 被包含在名为 div 的元素之中。 div 元素用来定义页面中的一个块,是使用最为频繁的结构。注意,结束标签精确的对应开始标签,除了使用一个斜线 / 在标签开口的尖括号之后。
~~~
< br / >
~~~
在这个情况下,标签为空,因为它不包括其它的内容(也不能真的包含),有一点区别是在标签闭口的尖括号之前直接使用了斜线 。 br 标签在文本中添加一个换行。注意,不同段落的新的行必须使用 p 元素定义。
一个元素可以以属性的形式拥有额外的信息。属性定义在开始标签中和空标签中,形式为空格分隔的键值对。每个对都由一个属性名和等号和一个值组成,值通过双引号包围。
~~~
< a href=”/page.html” > link text < /a >
~~~
前面的例子标记链接的文本内容为一个到page.html 文件的超链接,位置在当前站点的根目录下。
HTML标准允许更灵活的语法,
* 不关心元素名和属性的大小写
* 忽略一些属性值
* 对属性值使用单引号包围(或者在没有冲突的情况下根本不实用引号)
* 避免 辨别空元素语法和开始标签语法(空标签必须使用斜线结束)。空标签格式不是HTML标准的一部分,它来自 XHTML/XML 。浏览器对于这方面非常宽松,不会抱怨这种用法,有许多常用的验证工具应用,用来检查文档编写的正确性,都不会认为这是一个错误。
* 某些元素可以被隐式的关闭(比如表格单元格)。
在本章中,你已经选择一个更加面向XML的语法,因为它生成一个清晰的代码,易于阅读和维护,并且容易的和操作XML内容的工具结合使用。
# 基本的HTML文档结构
* * * * *
每个生成为HTML的文档必须有一组必须的元素,如下面例子中的:
~~~
< !DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01//EN” “http://www.w3.org/TR/html4/strict.dtd” >
< html >
< head >
< title > Page Title < /title >
< /head >
< body >
Content Goes Here
< /body >
< /html >
~~~
前两行是文档类型定义(DTD),是一个特定的头,表示当前文档应用哪个标准。在本例中,HTML版本4.01的严格形式被使用。被 W3C([www.w3c.org](http://www.w3c.org))定义的最后一个HTML版本的其它形式是过度形式和框架形式。严格形式有较少的定义元素,没有了一些前面版本定义中过时的元素和参数;框架功能也被跳过。这将留下一个完全专注文档语义的语法,而不是它的可视化表现。样式和格式规则完全委托给可以嵌入或内部引用的文档样式表。本章,HTML严格形式,但还有一些小的例外:空标签的使用惯例和布尔属性是定义在XHTML中的。
文档类型定义包含一个可选的Web 地址,它包括一个资源,一个DTD文件,完整的描述当前文档的语法。
DTD之后,第一个遇到的元素是 html ;在页面中它是唯一的,表示根借点,将包含页面中每个其它元素。在HTML元素里面,声明了两个元素 head 和 body 。第一个,包含的信息用于整个页面;可能是 meta 信息,比如文档应用字符编码,通常是 UTF-8 ,或者是外部文件的包含,定义了样式(CSS)和行为(JavaScript)。在这个例子中,它包括了最少的强制性的元素 title 。这是页面的一个标签分类,通常显示在浏览器的标题栏(不显示在渲染的页面,因为它术语文档的 head 部分);它只能包含纯文本(不带任何标签的文本)。其它的元素 body 是也买年实际上的内容。页面的 body 可以包括文本和元素的混合。
HTML 语法依赖于一些固定的结构(例如,一个cell元素必须包含在一个 row 元素中),但是你可能发现浏览器非常宽容错误的结构和坏的编写标记。但是无论如何,验证代码都是好的习惯(手动或使用一些验证工具),来避免浏览器给出错误的表现。浏览器已经以不同的方式实现遵循标准的代码。
当你浏览不同站点的许多页面的 HTML代码,会发现一个广泛使用的缩进风格。它们可能是多个空格被作为一个缩进,除非有一个不同的样式规则。空格字符包括按下空格键,或者一个Tab键,以及换行字符。
几乎每个元素都支持使用两个基本属性:id 和 class 。第一个的值,必须是一个整个页面中非重复的值。用来通过名字查找特定的元素。后见的一个,可以有一个或者多个属性字符串值,通过空格隔开;同样的 class 值可以用于多个元素,从语义上聚合它们。它们广泛的用于脚本和样式中指定某些元素。
在附录A中,你可以找到一个完整的关于 “语义化HTML”的定义。元素和属性覆盖的是所有HTML 4的规格,但是只有那些有语法意义的被加工;只用于声明或者格式化的结构已经被完全移除。
- 本书目录
- 第一章:Haxe介绍
- 互联网开发的一个问题
- Haxe是什么,为什么产生
- Haxe编译工具
- Haxe语言
- Haxe如何工作
- 那么Neko是什么
- Haxe和Neko的必须条件
- 本章摘要
- 第二章:安装、使用Haxe和Neko
- 安装Haxe
- 使用Haxe安装程序
- 在Windows上手动安装Haxe
- Linux上手动安装Haxe
- 安装Neko
- Windows上手动安装Neko
- 在Linux上安装Neko
- Hello world! 一式三份
- 编译你的第一个Haxe应用
- 你的程序如何编译
- HXML编译文件
- 编译到Neko
- 编译为JavaScript
- 程序结构
- 编译工具开关
- 本章摘要
- 第三章:基础知识学习
- Haxe层级结构
- 标准数据类型
- 变量
- 类型推断
- 常数变量
- 简单的值类型
- 浮点类型
- 整型
- 选择数值类型
- 布尔类型
- 字符串类型
- 抽象类型
- Void 和 Null
- 动态类型
- unknown类型
- 使用untyped绕过静态类型
- 注释代码
- 转换数据类型
- Haxe数组
- Array
- List
- Map
- Haxe中使用日期时间
- 创建一个时间对象
- Date组件
- DateTools类
- 操作数据
- 操作符
- Math类
- 使用String函数
- 本章摘要
- 第四章:信息流控制
- 数据存放之外
- 条件语句
- if语句
- switch语句
- 从条件语句返回值
- 循环
- while循环
- for循环
- 循环集合
- Break和Continue
- 函数
- 类的函数
- 局部函数
- Lambda类
- 本章摘要
- 第五章:深入面向对象编程
- 类和对象
- 实例字段
- 静态字段
- 理解继承
- Super
- 函数重载
- 构造器重载
- toString()
- 抽象类和抽象方法
- 静态字段,实例变量和继承
- 继承规则
- 使用接口
- 高级类和对象特性
- 类的实现
- 类型参数
- 匿名对象
- 实现动态
- Typedef
- 扩展
- 枚举
- 构造器参数
- 本章摘要
- 第六章:组织你的代码
- 编写可重用代码
- 使用包
- 声明一个包
- 隐式导入
- 显式导入
- 枚举和包
- 类型查找顺序
- 导入一个完整的包
- 导入库
- Haxe标准库
- Haxelib库
- 其他项目中的库
- 外部库
- 使用资源
- 文档化代码
- 离线文档
- 在线文档
- 单元测试
- haxe.unit包
- 编写测试
- 本章摘要
- 第七章:错误调试
- trace函数
- trace输出
- haxe的trace和ActionScript的trace
- 异常
- 异常处理
- CallStack和ExceptionStack
- 异常管理类
- 创建完全的异常处理类
- 异常类代码
- 本章摘要
- 第八章:跨平台工具
- XML
- XML剖析
- Haxe XML API
- 正则表达式
- EReg类
- 模式
- 定时器
- 延迟动作
- 队列动作
- MD5
- 本章摘要
- 第九章:使用Haxe构建网站
- Web开发介绍
- Web 服务器
- 使用Web服务器发布内容
- HTML速成课程
- Haxe和HTML的区别
- NekoTools Web Server
- Apache安装mod_neko
- Windows安装Apache和mod_neko
- Linux安装Apache和Mod_Neko
- 第一个Haxe网站
- 使用Neko作为网页Controller
- neko.Web类
- Neko作为前端控制器
- 本章摘要
- 第十章:使用模板进行分离式设计
- 什么是模板
- Template类
- Template语法
- 使用资产
- 何时在模板中使用代码
- 服务器端模板的Templo
- 安装Templo
- 使用Templo
- haxe.Template和mtwin.Templo表达式上的区别
- Attr表达式
- Raw表达式
- 逻辑表达式
- 循环表达式
- set, fill, 和 use表达式
- Templo中使用宏
- 手动编译模版
- 第十一章:执行服务端技巧
- 第十二章:使用Flash构建交互内容
- 第十三章:使用IDE
- 第十四章:通过JavaScript制作更多交互内容
- 第十五章:通过Haxe远程通信连接所学
- 第十六章:Haxe高级话题
- 第十七章:Neko开发桌面应用
- 第十八章:用SWHX开发桌面Flash
- 第十九章:多媒体和Neko
- 第二十章:使用C/C++扩展Haxe
- 附加部分