Index: lib/python/Products/PageTemplates/tests/testExpressions.py
===================================================================
--- lib/python/Products/PageTemplates/tests/testExpressions.py	(revision 68394)
+++ lib/python/Products/PageTemplates/tests/testExpressions.py	(working copy)
@@ -78,6 +78,14 @@
         self.failUnless(isinstance(defer, DeferWrapper))
         self.failUnless(isinstance(lazy, LazyWrapper))
 
+    def test_empty_ZopePathExpr_BBB(self):
+        """Test if empty path expressions can be compiled, but are deprecated.
+
+        o BBB:  remove this test in Zope 2.12.
+        """
+        empty = self.e.compile('path:')  # should fail in 2.12
+        self.assertRaises(KeyError, self.ec.evaluate, '')
+
 def test_suite():
     return unittest.makeSuite(ExpressionTests)
 
Index: lib/python/Products/PageTemplates/Expressions.py
===================================================================
--- lib/python/Products/PageTemplates/Expressions.py	(revision 68394)
+++ lib/python/Products/PageTemplates/Expressions.py	(working copy)
@@ -99,6 +99,13 @@
 class ZopePathExpr(PathExpr):
 
     def __init__(self, name, expr, engine):
+        if expr.strip() == '':
+            if zope.deprecation.__show__():
+                import warnings
+                warnings.warn('Empty path expressions are deprecated, '
+                              'and will result in an error in Zope 2.12.',
+                              DeprecationWarning, 4)
+            expr = 'nonesuch'  # will raise a KeyError
         super(ZopePathExpr, self).__init__(name, expr, engine,
                                            boboAwareZopeTraverse)
 
