替代變數

替代變數可用來將值從請求URL傳輸至複合影像目錄中儲存的範本。 變數也可用來將相同的值傳達給複雜請求中的不同位置。

$ * *= *varvalue*

var

變數名稱。

value

變數要設定的值(字串)。

變數定義和參考可能發生在請求的查詢部分、catalog::Modifiercatalog::PostModifier中。

變數定義如上,與其他IS命令類似;前導「$」將命令標識為變數定義。 必須先定義變數,才能參考。

變數名稱​var​不區分大小寫,並且可能包含ASCII字母、數字、「 — 」、「_」和「。」的任意組合。

注意

value 必須採用單通URL編碼,才能安全HTTP傳輸。如果透過HTTP重新傳輸​*value,則需要雙重編碼。 在​value*​被替換成嵌套的外部請求或SVG <image>元素的href屬性時,即是如此。

變數參考包含由前置和尾端「$」($var$)分隔的變數名稱。 任何IS命令的值部分中都可能出現引用(即,在命令名後的「=」與後續的「&」或請求的結尾之間)。 無法將自定義變數應用於layer=effect=命令。 同一命令值中允許多個變數。 伺服器會將每次出現的 $ *var*$替換為​value

變數引用不能巢狀。 value​內 $ *var*$的任何出現次數均未取代。

例如,請求片段:

$var2=apple&$var1=my$var2$tree&text=$var1$

解析為:

text=my$var2$tree

注意

「$」不是保留字元;若非如此,則可能發生在要求中。 例如,src=my$image$file.tif是有效命令(假設存在名為my$image$file.tif的目錄條目或影像檔案),而wid=$number$則否,因為wid需要數字參數。

巢狀請求中的變數處理

$ * *$ 變數參考可能會發生在巢狀影像提供或影像呈現請求的大括弧內的任何位置,包括「?」左側將路徑與查詢分開。 在進一步剖析和處理巢狀請求之前,伺服器會以值(來自URL或來自主影像目錄的catalog::Modifier)取代這些參考。

此外,URL或catalog::Modifier中的所有 $ *var*=定義都會轉送至所有巢狀的「影像伺服」和「影像呈現」請求。 這可確保所有變數定義都可供所有範本使用,無論巢狀層級為何。

無論巢狀層級為何,只能將單通HTTP編碼套用至要在巢狀影像呈現或影像伺服請求或其相關聯catalog::Modifier字串中任何位置取代的變數值。

內嵌外掛程式請求中的變數處理

$ * *$ 內嵌外掛程式請求的大括弧內任何位置出現的變數參考,都會取代為相符的變數定義值。這可讓內嵌的外來請求放置在影像目錄的範本中。

要替換為外部請求的變數值通常必須經過雙重編碼,因為在伺服器嘗試傳輸最終的外部URL之前,不會應用重新編碼。

SVG檔案中的變數處理

$ * *$ varreferences可能發生在SVG檔案中的屬性值和字 <text> 串中。「影像伺服」會以在指定SVG檔案的請求巢狀層級已知的相符 $ *var*=定義來取代這些定義。

注意

任何要替換為href屬性值的變數值都必須經過雙重URL編碼;所有其他的都必須單獨編碼。

預先定義的路徑變數

在請求路徑中指定的​object​會指派給預先定義的變數*$object*。 「 $ *object*$」可放置在請求中、請求引用的模板中或允許此類對象的嵌套/嵌入請求中的任意位置,包括src=mask=的值,以及嵌套/嵌入請求的路徑。

例如,下列請求會重複使用路徑中指定的影像,作為巢狀請求中層的來源:

/is/image/a/b?…&layer=3&src=is{…&src=$object$}&…

這等同於

/is/image/a/b?…&layer=3&src=is{…&src=a/b}&…

可以顯式指定 $ *object*=並指定所需值來覆蓋*$object*的定義。

預先定義的路徑變數通常與template=搭配使用。

預設

無. 只有已定義的變數才會被伺服器取代(預先定義的路徑變數$object除外,它們一律會被取代)。 如果*var*無法與現有變數定義相符,則 $ *var*$的任何出現次數都會保持常值。

範例

請參閱範本中的「範例A」。

另請參閱

範本, 範本=

本頁內容