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
設定參數啟用。
此模組需要 libxml2 和 libxslt 函式庫。
範例設定
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 " ">
語法 |
xslt_last_modified |
---|---|
預設值 |
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_param
和 xslt_string_param 指令。
語法 |
xslt_string_param |
---|---|
預設值 | — |
上下文 |
http , server , location |
此指令出現在 1.1.18 版。
定義 XSLT 樣式表的字串參數。值
中的 XPath 表達式不會被解釋。值
可以包含變數。
可以有多個 xslt_string_param
指令。這些指令會從先前的設定層級繼承,前提是目前的層級沒有定義 xslt_param 和 xslt_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 |
---|---|
預設值 |
xslt_types text/xml; |
上下文 |
http , server , location |
除了 “text/xml
” 之外,還會在具有指定 MIME 類型的回應中啟用轉換。特殊值 “*
” 符合任何 MIME 類型 (0.8.29)。如果轉換結果是 HTML 回應,其 MIME 類型會變更為 “text/html
”。