2016-02-14 21 views
0

關於packages在XSLT 3.0中,隱式與未命名包是相同的東西嗎?假設沒有一個可以被其它軟件包使用,爲什麼它說:隱式與未命名包

出於兼容性考慮,所有的命名模板和模式宣告 在包被公佈於衆。

+0

來自規範的引用沒有提到隱式或未命名的包。也許你可以在這裏包含更多的背景?你的問題是什麼「兼容性原因」?或者,如果在具有'name'屬性的顯式'xsl:package'內命名沒有'visibility'屬性的模板也被公開了? –

+0

@MathiasMüller爲什麼命名模板和模式是公開的,如果由於軟件包沒有名稱而無法引用它們? –

+0

它可能與3.0之前的XSLT(因此「兼容性」)有關,例如,命名模板可以導入到其他樣式表中。由於任何樣式表現在都轉換爲隱式包,因此不聲明它們爲公共可能會破壞現有代碼。 (這只是一個猜測,我不知道能見度是否對進口產生影響)。 –

回答

1

隱式包是一個根源於xsl:stylesheet而非xsl:package元素;隱式包總是未命名的。但是,您也可以擁有一個以xsl:package元素爲根的包,但不包含@name屬性;這是未命名但不是隱含的。

公開組件意味着它們對調用API可見,例如,任何已命名的模板都可用作指定call-template和命名模板的入口點。如果他們是私人的,否則這是默認的,他們不能以這種方式被外部引用。

+0

謝謝邁克爾。你能改變一個隱式包中組件的聲明的可見性,還是必須將根元素改爲'xsl:package'? –

+0

我認爲你可以用一個隱式包做非常好的事情,而不是將它用作'xsl:use-package'的目標。 –