一個定義良好的HTML標題結構除了能讓訪客更輕鬆地瀏覽網頁之外,也能夠幫助搜尋引擎更精確地理解HTML文件的內容,提高網站的搜尋排名。那要如何使用Rust程式語言來產生HTML文件的標題大綱(Outline)呢?



HTML Outliner

「HTML Outliner」是筆者開發的套件,用以產生HTML文件的大綱。

Crates.io

https://crates.io/crates/html-outliner

Cargo.toml

html-outliner = "*"

使用方法

html_outliner這個crate提供了OutlineOutlineStructure兩種結構體。OutlineStructure結構體是解析HTML文件之後的結果,僅把標題和章節型內容「Sectioning Content」從中區分出來,並未對標題等級進行處理。Outline結構體則是將OutlineStructure結構體轉為字串的階層結構後的結果,會去處理標題等級(例如h1後緊接h2的話,h2會放在h1的下層)。

如果您想要使用這個crate提供的方式將HTML文件轉成字串大綱,可以直接使用Outline結構體的parse_html關聯函數來轉。程式如下:

extern crate html_outliner;

use html_outliner::Outline;

const MAX_DEPTH: usize = 50;

let outline = Outline::parse_html(r"
<h1>Header Top</h1>
<h1>Header 1</h1>
<h2>Header 2</h2>
<h3>Header 3</h3>
<h4>Header 4</h4>
<h5>Header 5</h5>
<h6>Header 6</h6>
", MAX_DEPTH);

println!("{}", outline);

parse_html關聯函數的第二個參數是要存取的HTML元素的最高層數,如果太多層的話就會發生堆疊溢出(Stack Overflow),所以要進行合理的限制。

以上程式會輸出:

1. Header Top
2. Header 1
    1. Header 2
        1. Header 3
            1. Header 4
                1. Header 5
                    1. Header 6