發佈中的適用性
概觀
XML 主題可以包含邏輯運算式以決定是否在元素層級包含內容。定義套用至某些內容之選項與選擇的標示,稱為文字間適用性。包括或排除內容的決定,可透過針對由適用性篩選器在發佈時選取的選擇評估此邏輯運算式的方式 (或透過已在發佈規則中指定的 rootApplicabilityExpression 參數) 確定。
適用性運算式代表產品選項與選擇的子集,用於為內容建立註釋。運算式將內容與一或多個特定產品關聯,之後可以用來進行篩選。簡單運算式可以使用邏輯運算子結合在一起。
在服務結構使用者介面中,您可以使用「結構」標籤工具列中的「篩選器」動作集,針對服務結構以及動態文件的文字間適用性設定篩選。發佈會將「選項篩選器」套用至發佈結構及其動態文件。如果已設定發佈規則參數 rootApplicabilityExpression,它將會覆寫使用「篩選器」動作集定義的篩選運算式。
只有 PDF 及使用 XSL 輸出類型時支援文字間適用性篩選。如果是束輸出,在發佈時不會套用篩選,因為篩選是由 Arbortext Content Delivery 使用者套用。
適用性運算式需要有剖析器,以解碼使用相交與分離運算子 (如 AND、OR 和 NOT) 指定的選項與選擇運算式。
關於 APEX
Windchill 會使用 ATO 語法來表示適用性運算式。發佈束時,根據發佈規則,會以可供 Arbortext Content Delivery 使用的 APEX 格式發佈適用性運算式。如需發佈規則的詳細資訊,請參閱「束中的適用性運算式」部份。
APEX 是基於 LISP 程式設計語言的語法。LogicalExpression 內容的值是套用至 Windchill 物件的 APEX 適用性運算式。此內容分別位於已發佈束中服務結構與服務產品階層的 DMPmap.xml 與 hierarchy.xml 檔案。
使用下表可更好地瞭解 APEX 運算式文法。
APEX 文法符號
|
APEX 運算式文法
|
expression
|
"(" expression-body ")" | constant
|
expression-body
|
polyadic-body | choice-body | function-body
|
polyadic-body
|
polyadic-op s expression expression-list
|
choice-body
|
"IS" s quote string-list
|
function-body
|
name string-list
|
expression-list
|
empty | s expression s expression-list
|
string-list
|
empty | s quote s string-list
|
S
|
" " | " " s
|
polyadic-op
|
"AND" | "OR" | "NOT"
|
constant
|
"TRUE" | "FALSE" | "UNKNOWN"
|
quote
|
' string '
|
範例
|
您必須在括號內定義已指派運算式,因為由 + 表示的 AND 運算子優先於由 / 表示的 OR 運算子。
|
範例 1︰
Windchill 物件已指派運算式,其中 Tire 選項是 155 或 145,Colour 選項為 Black 或 Red。ATO 格式為︰
("155"/"145") + (Black/Red)
對應的 APEX 格式為︰
(AND (IS 'Tire' '155' '145') (IS 'Colour' 'Black' 'Red')
範例 2:
Windchill 物件已指派運算式,其中 release 選項為 X-24 或 X-26。針對發行版本 X-24,maintenance 選項可以是 M022 或 M023。ATO 格式為︰
(“X-24” + (“M022”/”M023”) ) / ”X-26”
對應的 APEX 格式為︰
(OR (AND (IS 'release' 'X-24') (IS 'maintenance' 'M022' 'M023')) (IS 'release' 'X-26'))
範例 3︰
Windchill 物件已指派運算式與服務生失效,如下所示:
family 選項已指派 X96,前後關聯為 K95 或 K96 模型。服務生失效類型為設定範圍介於 12000 至 13000 之間的序號。上述運算式與服務生失效的 APEX 格式為:
(AND (IS 'family' 'X96') (IS 'model' 'K95' 'K96') (IS 'serialNo' '12000' '13000'))
設定樣式表
如果需要有效負載所傳送的根服務結構文件 Identfier.xml 中的文字間適用性運算式,則需要修改 pubstructXsl 樣式表,使其將適用性運算式從 Identfier.xml 複製到輸出 DITA 對應 (例如 topicref 與 topic 元素) 中的正確位置。
設定發佈規則
為 PDF 與 XSL 輸出建立發行規則時,您應考慮於 Arbortext Publishing Engine 伺服器上進行發行期間要套用的發行規則參數。您可以使用基本適用性發佈規則參數來套用至結構以及動態文件中的文字間內容。以下內容前面會加上 com.ptc.arbortext.pe/:
• applicabilitySyntax
指定有效負載中適用性運算式使用之適用性語法的名稱。指定使用 applic::registerSyntax() ACL 方法在 Arbortext Publishing Engine 伺服器上註冊的名稱。沒有預設值。
如果發佈配套以與 Arbortext Content Delivery 一起使用,且結構與其主題使用 ATO 及相同的來源語法,則 applicabilitySyntax 是發佈配套時唯一需要的參數。
• rootApplicabilityExpression
指定要在發佈期間套用至整個服務結構與內容的適用性運算式。運算式語法必須符合服務結構及其 XML 文字內容中的語法。
文字間動態文件的適用性已使用 disableInlineApplicFiltering 啟用或禁用。指定 true (預設值) 可禁用文字間適用性,而指定 false 可將其啟用。
如需關於發佈規則參數的詳細資訊,請參閱
服務 Worker 參數。
執行語法剖析器
假設標籤為唯一的選擇名稱,適用性語法可採用使用「選項集」中的標籤的基本形式。適用性運算式使用運算子以結合或拋棄選擇。使用註冊的語法評估運算式時需要剖析器。
若要執行新的語法剖析器,您需要使用下列位於 Arbortext Publishing Engine 伺服器上的 lib\classes\applicability.jar 格式的 Java 封裝:
• com.ptc.arbortext.applicability.expression
Java 封裝包含的介面支援使用選項與選擇資料進行內容篩選時所需的適用性運算式物件。「選項」元素有「名稱」、「說明」與一組「選擇」元素。「選項」與「選擇」元素有使用於使用者介面與適用性運算式的標籤屬性。標籤在每個選項集中必須具唯一性。
• com.ptc.arbortext.applicability.representation
Java 封裝包含的介面支援元素、屬性、內容與處理指示之適用性標示。
在有效負載中,選項與選擇是包括在 OptionsDefinition.xml 檔案中。
註冊適用性語法
需要先使用 ACL 函數在 Arbortext Publishing Engine 伺服器上註冊適用性語法,才可在發行期間使用。使用下列註冊函數:
applic::registerSyntax(NAME, TEST_XPATH, EXPR_XPATH, PARSER_CLASS)
• NAME 是適用性語法的名稱。
• TEST_XPATH 是 XPath 布林運算式,以檢查是否有元素的適用性運算式。
• EXPR_XPATH 是 XPath 運算式,以擷取特定元素的適用性。
• PARSER_CLASS 是適用性語法剖析器的類別名稱。
依預設,在伺服器上可使用 ATO 剖析器,註冊如下 (忽略換行):
applic::registerSyntax("ATO", "boolean(@*[namespace-uri() =
'http://arbortext.ptc.com/namespace/ATO'
and local-name() = 'applic'])",
"@*[namespace-uri() = 'http://arbortext.ptc.com/namespace/ATO'
and local-name() = 'applic']",
"com.ptc.arbortext.applicability.representation.ATOParser")
束中的適用性運算式
在發佈束期間不會執行適用性篩選。而是將適用性運算式轉換為可在 Arbortext Content Delivery 中套用的格式。
發佈結構適用性位於 LogicalExpression中繼資料屬性中。主題的適用性會複製到 {http://arbortext.ptc.com/namespace/ATO}applic 屬性中,然後進行轉換。
下列文字間適用性參數適用於發佈到束的結構:
• com.ptc.arbortext.pe.service/structureSourceApplicSyntax
指定使用於服務結構中適用性運算式之適用性語法的名稱。指定由 applic::registerSyntax 在 Arbortext Publishing Engine 伺服器上註冊的名稱。如未指定,則會使用 applicabilitySyntax 的值。如未指定 applicabilitySyntax,則預設值為 ATO。
• com.ptc.arbortext.pe.service/structureTargetApplicSyntax
指定在服務子系統完成處理後於,適用性運算式使用之適用性語法的名稱。指定由 applic::registerSyntax 在 Arbortext Publishing Engine 伺服器上註冊的名稱。如未指定,則會使用 applicabilitySyntax 的值。如未指定 applicabilitySyntax,則預設值為 ATO。
• disableStructureApplicabilityConverter
指定是否在結構中尋找與轉換適用性運算式。指定 false (束的預設值) 可將其啟用。指定 true 可將其禁用。依預設,對於 PDF 其為禁用狀態。
下列文字間適用性參數適用於在束中發佈的主題:
• com.ptc.arbortext.pe.service/topicCcfParam.sourceApplicabilitySyntax
指定束主題中適用性運算式使用之適用性語法的名稱。指定在 Arbortext Publishing Engine 伺服器上註冊的名稱。如未指定,則會使用 applicabilitySyntax 的值。如未指定 applicabilitySyntax,則預設值為 ATO。
• com.ptc.arbortext.pe.service/topicCcfParam.targetApplicabilitySyntax
指定在服務子系統完成處理後,主題中適用性運算式使用之適用性語法的名稱。指定在 Arbortext Publishing Engine 伺服器上註冊的名稱。如未指定,則會使用 applicabilitySyntax 的值。如未指定 applicabilitySyntax,則預設值為 APEX。
• com.ptc.arbortext.pe.service/topicCcfParam.disableApplicabilityConverter
指定是否在主題中尋找與轉換適用性運算式。指定 false (預設值) 可將其啟用。指定 true 可將其禁用。
設定檔適用性運算式
資訊元素可以有在編寫時已套用的設定檔。設定檔標示可以使用適用性語法轉換為適用性運算式。設定檔轉換由布林發佈參數 com.ptc.arbortext.pe.service/topicCcfParam.disableProfilingConverter 控制。
例如,可在 XML 文件中找到下列標示,其中 os 與 userlevel 可指定設定檔:
<chapter os="Windows Vista;Unix" userlevel="Novice">
指定 APEX 語法為適用性運算式的發佈請求會將設定檔資訊轉換為下列標示:
<book xmlns:prf=http://arbortext.ptc.com/namespace/
applicability/profiling prf:syntax="APEX"
prf:optionSet="axdocbook">
<chapter prf:applic="(AND (IS 'os' 'Windows Vista' 'Unix')
(IS 'userlevel' 'Novice'))">
</chapter>
</book>
頂層 prf 的命名空間 URI 指定設定檔組態。命名空間設定檔屬性由 com.ptc.arbortext.pe.service/topicCcfParam.profilingAttribute 發佈參數指定。
prf:syntax 屬性指定運算式的語法。prf:optionSet 屬性指定要使用之設定檔組態檔案的文件類型。
prf:applic 屬性位於包含設定檔標示的元素中,且已獲指派轉換的運算式。
當使用 com.ptc.arbortext.pe.service/topicCcfParam.removeProfilingMarkup 發佈參數發佈到配套時,可以將原始設定檔屬性從資訊元素中移除。
在發佈有效負載中,OptionsDefinition.xml 檔案包含設定檔組態選項集的清單。針對前一個範例,選項集看起來可能會如下所示:
<OptionSet container="axdocbook.pcf" token="_oset_axdocbook_pcf"
label="Operating System, User Level, Output Type, Security Level Options">
<Option label="os" token="_opt_axdocbook_os"><Name>Operating System</Name>
<Choice label="Windows XP" token="_ch_axdocbook_pcf_os_windows_xp">
<Name>Windows XP</Name></Choice>
<Choice label="Windows Vista" token="_ch_axdocbook_pcf_os_windows_vista">
<Name>Windows Vista</Name></Choice>
<Choice label="Windows 7" token="_ch_axdocbook__pcf_os_windows_7">
<Name>Windows 7</Name></Choice>
<Choice label="Unix" token="_ch_axdocbook_pcf_os_unix">
<Name>Unix</Name></Choice>
</Option>
<Option label="userlevel" token="_opt_axdocbook_pcf_userlevel">
<Name>User Level</Name>
<Choice label="Novice" token="_ch_axdocbook_pcf_userlevel_novice">
<Name>Novice</Name></Choice>
<Choice label="Typical" token="_ch_axdocbook_pcf_userlevel_typical">
<Name>Typical</Name></Choice>
<Choice label="Expert" token="_ch_axdocbook_pcf_userlevel_expert">
<Name>Expert</Name></Choice>
</Option>
</OptionSet>
如需有關設定檔發佈參數的詳細資訊,請參閱
服務 Worker 參數。