Bedingte ZCML-Anweisungen (zcml:condition)
Mittels zcml:condition kann die Ausführung von zcml-Anweisung in Zope gesteuert werden.
Problem
Eine zcml-Anweisung wird in Zope immer beim Systemstart ausgewertet. Wenn man z.B. ein global utility registriert, welches Recourcen eines anderen Packages verwendet, wird dies scheitern wenn das entsprechende Package nicht installiert ist.
Lösung
Mit Hilfe einer zcml:condition läßt sich prüfen ob ein Package installiert ist oder nicht. Abhängig davon kann die zcml-Anweisung dann ausgeführt werden.
<include
zcml:condition="installed zope.app.zcmlfiles"
package="zope.app.zcmlfiles"
/>
<include
zcml:condition="not-installed zope.app.zcmlfiles"
package="zope.app"
/>
Die Bedingung kann sowohl installed als auch not-installed sein. Damit die zcml:condition zur Verfügung steht, muss der folgenden Namespace im Kopf der zcml eingebunden sein.
xmlns:zcml="http://namespaces.zope.org/zcml"
Diese Infos stammen aus dem Zope3 Wiki:

