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
- 附加部分