7 3 結構化文件表示

2021-08-25 21:16:27 字數 1502 閱讀 7764

7.3 結構化文件表示

我們將在這一節設計的資料結構從 html 格式獲得靈感,這是大家熟悉的,並成功建立文件的語言。就像 html,我們的表示有幾種型別的內容,並且可能以適當的方法巢狀某些部分。圖 7.3 顯示了帶注釋的示例文件,它可以給你乙個概念,格式包括哪些內容。

有兩種不同的部分。簡單的部分,如 textpart 和 imagepart,包含內容,但是不能包含巢狀的部分。在另一側,titledpart 包含乙個巢狀部分,新增標題,而 splitpart 包含乙個或多個巢狀的部件和定位的規格。你可能已經猜到了,我們將使用差別聯合,來表示不同部分。因為,兩個部分可以包含巢狀的部分,型別將是遞迴的。清單 7.9 顯示了型別宣告,給我們更多的具體詳細討論。

圖 7.3 我們的文件格式中可用的四種不同部件:titledpart 新增標題到另乙個部件,使用 splitpart,我們可以建立列和行。textpart 和 imagepart 指定實際內容。

listing 7.9 hierarchical document representation (f#)

type orientation =

| vertical

| horizontal

type documentpart =

| splitpart of orientation * list

| titledpart of textcontent * documentpart

| textpart of textcontent

| imagepart of string

我們非正式的規範,來自上一段 f# **的轉錄是非常簡單的。這絕對是乙個標準 f# 型別宣告的最具吸引力的方面。我們首先宣告乙個簡單的差別聯合,有兩個選項,表示拆分部分的定位,然後,再宣告 documentpart 型別,有四個可選的選項。

兩個選項以遞迴方式包含其他檔案的部分。splitpart 包含列表中的幾個其他部分,乙個定位確定區域應如何劃分;titledpart 包含乙個其他部分,乙個裝飾用的標題。使用上一節的 textcontent 型別,來儲存文字,這是乙個記錄,包含乙個字串,以及一起使用的字型。

documentpart 型別表示作為乙個整體的文件。因為,該型別是遞迴的,我們可以在乙個文件的部件中,巢狀任意數量的內容部分。這不同於以前的做法,在那兒,我們為乙個元素建立型別,然後,文件表示為元素的列表。在那種表示形式中,列表成為資料結構的"根",元素不進一步巢狀。使用新的資料型別,我們可以像這樣來寫 7.2 節的文件:

我們省略了位於影象下面的 textpart 的內容,但仍可以看到,表示是乘法的,因為,我們不需要自己計算矩形邊框。然而,我們沒有實現繪製這個資料型別。我們不打算寫,或者 — — 我們為什麼,什麼時候,已經為早先的表示得到了很好的繪製函式?我們所要做的就是,提供乙個轉換,從「建築設計「的形式到的「繪製設計「。

Proxima 乙個面向表示的結構化文件編輯器

tuesday,january 11,2005 proxima a presentation oriented editor for structured documents 一篇 有趣的 裡曾提到過,在未來,將有大量的應用軟體會基於泛型編輯框架進行定義,就像這個一樣。proxima 原型 prot...

結構化 半結構化和非結構化資料

在實際應用中,我們會遇到各式各樣的資料庫如nosql非關聯式資料庫 memcached,redis,mangodb rdbms關聯式資料庫 oracle,mysql等 還有一些其它的資料庫如hbase,在這些資料庫中,又會出現結構化資料,非結構化資料,半結構化資料,下面列出各種資料型別 結構化資料 ...

結構化 半結構化和非結構化資料

在實際應用中,我們會遇到各式各樣的資料庫如nosql非關聯式資料庫 memcached,redis。mangodb rdbms關聯式資料庫 oracle,mysql等 另一些其他的資料庫如hbase,在這些資料庫中。又會出現結構化資料。非結構化資料。半結構化資料,以下列出各種資料型別 結構化資料 可...