OpenSearch 格式說明
簡介
OpenSearch 是一種以 XML 方式定義搜索的方法,網站依據此規範實作可與其他程式介接等用途。
完整的規範可以在此網站查到,本文以表格的方式整理說明。
命名空間
OpenSearch 1.1 版命名空間為 http://a9.com/-/spec/opensearch/1.1/,目前為 Draft
MIME Type
MIME Type(Content Type 或稱為 Media Type) 為 application/opensearchdescription+xml
結構與定義
<OpenSearchDescription>
<OpenSearchDescription>
為 OpenSearch 的 XML 起始根節點,<OpenSearchDescription>
之中定義了以下 Element
Element | 必要 | 多筆 | 資料型態 | 說明 |
---|---|---|---|---|
<ShortName> | O | X | 純文字 | 簡短標題,不可超過 16 個字元 |
<Description> | O | X | 純文字 | 描述,不可超過 1024 個字元 |
<Url> | O | O | <Url> | 描述搜索介面或連結 |
<Contact> | X | X | 提供者的電子郵件 | |
<Tags> | X | X | 純文字 | 搜索內容的關鍵字或分類,使用空白隔開,不可超過 256 個字元 |
<LongName> | X | X | 純文字 | 標題,不可超過 48 個字元 |
<Image> | X | O | <Image> | 圖示,應該包含一個 16x16 的 image/x-icon 或 image/vnd.microsoft.icon,以及一個 64x64 的 image/jpeg 或 image/png |
<Query> | X | O | <Query> | 提供一些查詢的資訊,應該包含一個 role=”example” |
<Developer> | X | X | 純文字 | 文件建立者,不可超過 64 個字元 |
<Attribution> | X | X | 純文字 | 內容擁有者,不可超過 256 個字元 |
<SyndicationRight> | X | X | 純文字 | 定義搜索的權限,只能是以下四種,預設為 open
|
<AdultContent> | X | X | 純文字 | 是否包含成人內容,只有 false、FALSE、0、no 和 NO 的值視為 FALSE,其他視為 TRUE,預設為 false |
<Language> | X | O | 純文字 | 支援的語系,必須是 RFC5646 或者 * 表示不限制,應該包含一個,預設為 * |
<InputEncoding> | X | O | 純文字 | 搜索引擎支援的查詢文字之編碼,須符合 XML 1.0 Character Encodings 和 IANA Character Set Assignments 規範,應該包含一個,預設為 UTF-8 |
<OutputEncoding> | X | O | 純文字 | 搜索引擎支援的搜索結果之編碼,須符合 XML 1.0 Character Encodings 和 IANA Character Set Assignments 規範,應該包含一個,預設為 UTF-8 |
<Url>
<Url>
為描述搜索介面或連結,<Url>
之中定義了以下屬性
Attribute | 必要 | 說明 |
---|---|---|
template | O | URL 樣板,依據 OpenSearch URL template syntax 規則處理 |
type | O | MIME Type |
rel | X | 資源的關連,可以是以下值:
|
indexOffset | X | 第一筆搜索結果的索引值,預設為 1 |
pageOffset | X | 搜索結果的頁數索引值,預設為 1 |
Element內容為空
<Image>
<Image>
為搜索引擎的圖示,<Image>
之中定義了以下屬性
Attribute | 必要 | 說明 |
---|---|---|
height | X | 高度像素 |
width | X | 寬度像素 |
type | X | MIME Type |
Element內容為空
<Query>
<Query>
為查詢相關的資訊,<Query>
之中定義了以下屬性
Attribute | 必要 | 說明 |
---|---|---|
role | O | 表示此 Query 的意義,可以是以下值:
|
title | X | 標題,不可超過 256 個字元 |
totalResults | X | 查詢預計的結果筆數 |
searchTerms | X | 搜索的關鍵字,必須要 URL Encode |
count | X | 每頁筆數 |
startIndex | X | 第一筆搜索結果的索引值,預設為 1 |
startPage | X | 搜索結果的頁數索引值,預設為 1 |
language | X | 支援的語系,必須是 RFC5646 或者 * 表示不限制,應該包含一個,預設為 * |
inputEncoding | X | 搜索引擎支援的查詢文字之編碼,須符合 XML 1.0 Character Encodings 和 IANA Character Set Assignments 規範,應該包含一個,預設為 UTF-8 |
outputEncoding | X | 搜索引擎支援的搜索結果之編碼,須符合 XML 1.0 Character Encodings 和 IANA Character Set Assignments 規範,應該包含一個,預設為 UTF-8 |
Element內容為空。Query可引用其他命名空間,增加自訂的屬性。
搜索回覆
查詢結果輸出格式為 XML 時 (例如 RSS 或 Atom),可以使用 OpenSearch 命名空間,包含以下 Element
Element | 必要 | 多筆 | 資料型態 | 說明 |
---|---|---|---|---|
<totalResults> | X | X | Int | 查詢預計的結果筆數 |
<startIndex> | X | X | Int | 第一筆搜索結果的索引值,預設為 1 |
<itemPerPage> | X | X | Int | 每頁筆數 |
<Query> | X | O | <Query> | 提供一些查詢的資訊,應該包含一個 role=”example” |
OpenSearch URL template syntax
URL 樣板語法和 <Query>
有些相關,利用這個範例來解說
1 | <Url type="application/rss+xml" xmlns:b="http://example.com/extensions/" template="http://example.com?q={searchTerms}&p={startPage?}&d={b:datetime?}"/> |
規則簡易整理如下:
- 參數使用大括弧表示。
- 必填參數結尾不包含問號,如上例之 {searchTerms}。
- 選填參數結尾包含問號,如上例之 {startPage?}。
- 可用參數預設有 {searchTerms}、{count}、{startIndex}、{startPage}、{language}、{inputEncoding} 和 {outputEncoding},其意義與
<Query>
一致。 - 可使用其他命名空間,增加自訂屬性,如上例之 {b:datetime}。
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 小殘的程式光廊!
Comment