在導覽期間變更排序
排序在 IS、PS 與 PH「類型」內容 XML 檔案的元素 NodeOrderingMapping 下定義。您可以設定多個排序組態,其中一個可在執行時期使用。
排序機制會執行下列兩項操作︰
• 根據在類型定義中定義的 XPATH 規則排序節點的所選子項 (順序會在 TAL 期間定義,而非在執行時期定義)。
• 如果子節點有多個值,它會根據在執行時期傳遞的參數選取其中一個值。
這會在語言回退機制中使用,它只會針對子節點根據回退設定傳回一個 TITLE。
排序會針對所有語言中的所有值全域建構。它以所有標題都有全域排序演算法這樣一個假設為基礎。只有在執行時期才會為每個節點選取正確標題。
排序的定義可讓您自由定義。在定義中,您可以決定下列事項︰
• 將由排序傳回的節點 (在目錄範例中,它是 NODE 元素)
• 將用於排序的一或多個節點 (在目錄範例中,它是 linenumber 與 TITLE/Desc 元素)
• 將在有多個值時用於選取正確節點的字串值 (在目錄範例中,它是標題的語言)
以下是在「類型」中編碼定義的方式範例︰
在此範例中︰
• 排序名稱是 folderdoc。
• 傳回的節點以下列順序排序︰
◦ 如果存在行號,則根據行號顯示節點
◦ 接下來顯示資料夾,然後顯示文件
◦ 資料夾與文件會以字母順序顯示
• 如果存在,針對每個節點選取正確值的字串值是 <DESC> 元素上的 xml:lang 屬性值,如果不存在則是一些預設,或屬於 <NODE> 元素的 AuthoredDocLang 屬性值 (第八到第二十三行)。
您可在「類型」內容中定義任意數量的排序。只要您能夠在 XSL 中表達對應規則,您也可以將每個類型對應至您想要之任意層級的任意內容類型。
但是,對於 IS 與 PS,Java SDK 使用三種預先定義的排序方式︰
• doc - 用於僅萃取文件子項
• folder - 用於僅萃取資料夾子項
• folderdoc - 用於萃取文件與資料夾子項