隐式与未命名包
问题描述:
答
隐式包是一个根源于xsl:stylesheet
而非xsl:package
元素;隐式包总是未命名的。但是,您也可以拥有一个以xsl:package
元素为根的包,但不包含@name
属性;这是未命名但不是隐含的。
公开组件意味着它们对调用API可见,例如,任何已命名的模板都可用作指定call-template
和命名模板的入口点。如果他们是私人的,否则这是默认的,他们不能以这种方式被外部引用。
+0
谢谢迈克尔。你能改变一个隐式包中组件的声明的可见性,还是必须将根元素改为'xsl:package'? –
+0
我认为你可以用一个隐式包做非常好的事情,而不是将它用作'xsl:use-package'的目标。 –
来自规范的引用没有提到隐式或未命名的包。也许你可以在这里包含更多的背景?你的问题是什么“兼容性原因”?或者,如果在具有'name'属性的显式'xsl:package'内命名没有'visibility'属性的模板也被公开了? –
@MathiasMüller为什么命名模板和模式是公开的,如果由于软件包没有名称而无法引用它们? –
它可能与3.0之前的XSLT(因此“兼容性”)有关,例如,命名模板可以导入到其他样式表中。由于任何样式表现在都转换为隐式包,因此不声明它们为公共可能会破坏现有代码。 (这只是一个猜测,我不知道能见度是否对进口产生影响)。 –