XML-Dialekt, der die verschiedenen Zope-Komponenten verbindet.
Von Zope wird initial die in site-definition angegebene Datei abgearbeitet, meist $INSTANCE/etc/site.zcml. Diese bindet dann über <includes>--Tags alle weiteren ZCML-Konfigurationsdateien ein:
<!-- Load the meta --> <include files="package-includes/*-meta.zcml" /> <five:loadProducts file="meta.zcml"/> <!-- Load the configuration --> <include files="package-includes/*-configure.zcml" /> <five:loadProducts /> <!-- Load the configuration overrides--> <includeOverrides files="package-includes/*-overrides.zcml" /> <five:loadProductsOverrides /> <securityPolicy component="Products.Five.security.FiveSecurityPolicy" />
- *-meta.zcml
- Diese Dateien gewährleisten, dass die ZCML-Anweisungen der eingebundenen Pakete bei der Abarbeitung der ZCML-Anweisungen vollständig zur Verfügung stehen.
- *-configure.zcml
- Hiermit werden ZCML-Dateien innerhalb der installierten Pakete abgearbeitet.
- *-overrides.zcml
- Damit können Konfigurationen von Paketen überschreiben werden.
- securitypolicy.zcml
- Hiermit wird die Security-Policy festgelegt
Bedingungen
Pakete als Bedingungen
Das Starten der Instanz bricht ab, wenn in einer zcml-Datei include package angegeben wird, dieses Paket jedoch nicht installiert ist. Um dies zu vermeiden, kann include an die Bedingung geknüpft werden, dass das Paket installiert ist, z.B.:
<include zcml:condition="installed zope.app.zcmlfiles" package="zope.app.zcmlfiles" /> <include zcml:condition="not-installed zope.app.zcmlfiles" package="zope.app" /> <include zcml:condition="installed some.package" package="some.package" /> <include zcml:condition="not-installed some.package" package=".otherpackage" />
Funktionen als Bedingungen
Es können auch bestimmte Funktionen als Bedingung genannt werden. Diese Bedingungen können mit have oder deren Abwesenheit mit not-have angegeben werden, z.B.:
<include package="Products.CMFCore" file="permissions.zcml" xmlns:zcml="http://namespaces.zope.org/zcml" zcml:condition="have plone-41" /> <configure zcml:condition="not-have plone-4"> <!-- only when the Plone 4 feature has not been provided --> </configure> <configure zcml:condition="not-have plone-5"> <!-- only when the Plone 5 feature has not been provided --> </configure>