ngx_http_xslt_module 模組

範例設定
指令
     xml_entities
     xslt_last_modified
     xslt_param
     xslt_string_param
     xslt_stylesheet
     xslt_types

ngx_http_xslt_module (0.7.8+) 是一個篩選器,它使用一個或多個 XSLT 樣式表轉換 XML 回應。

此模組預設不會建置,應使用 --with-http_xslt_module 設定參數啟用。

此模組需要 libxml2libxslt 函式庫。

範例設定

location / {
    xml_entities    /site/dtd/entities.dtd;
    xslt_stylesheet /site/xslt/one.xslt param=value;
    xslt_stylesheet /site/xslt/two.xslt;
}

指令

語法 xml_entities 路徑;
預設值
上下文 http, server, location

指定宣告字元實體的 DTD 檔案。此檔案會在設定階段編譯。由於技術原因,模組無法使用在處理的 XML 中宣告的外部子集,因此會忽略它,並改用特別定義的檔案。此檔案不應描述 XML 結構。只需宣告必要的字元實體就足夠了,例如

<!ENTITY nbsp "&#xa0;">

語法 xslt_last_modified on | off;
預設值
xslt_last_modified off;
上下文 http, server, location

此指令出現在 1.5.1 版。

允許在 XSLT 轉換期間保留原始回應中的 “Last-Modified” 標頭欄位,以便於回應快取。

預設情況下,標頭欄位會被移除,因為回應的內容會在轉換過程中修改,並且可能包含動態產生的元素或與原始回應無關地變更的部分。

語法 xslt_param 參數 ;
預設值
上下文 http, server, location

此指令出現在 1.1.18 版。

定義 XSLT 樣式表的參數。 會被視為 XPath 表達式。 可以包含變數。若要將字串值傳遞到樣式表,可以使用 xslt_string_param 指令。

可以有多個 xslt_param 指令。這些指令會從先前的設定層級繼承,前提是目前的層級沒有定義 xslt_paramxslt_string_param 指令。

語法 xslt_string_param 參數 ;
預設值
上下文 http, server, location

此指令出現在 1.1.18 版。

定義 XSLT 樣式表的字串參數。 中的 XPath 表達式不會被解釋。 可以包含變數。

可以有多個 xslt_string_param 指令。這些指令會從先前的設定層級繼承,前提是目前的層級沒有定義 xslt_paramxslt_string_param 指令。

語法 xslt_stylesheet 樣式表 [參數= ...];
預設值
上下文 location

定義 XSLT 樣式表及其選用參數。樣式表會在設定階段編譯。

參數可以個別指定,也可以使用 “:” 分隔符號在一行中分組。如果參數包含 “:” 字元,則應以 “%3A” 逸出。此外,libxslt 要求將包含非字母數字字元的參數以單引號或雙引號括起來,例如

param1='http%3A//www.example.com':param2=value2

參數描述可以包含變數,例如,整個參數行可以從單一變數取得

location / {
    xslt_stylesheet /site/xslt/one.xslt
                    $arg_xslt_params
                    param1='$value1':param2=value2
                    param3=value3;
}

可以指定多個樣式表。它們將按指定的順序依序套用。

語法 xslt_types mime-type ...;
預設值
xslt_types text/xml;
上下文 http, server, location

除了 “text/xml” 之外,還會在具有指定 MIME 類型的回應中啟用轉換。特殊值 “*” 符合任何 MIME 類型 (0.8.29)。如果轉換結果是 HTML 回應,其 MIME 類型會變更為 “text/html”。