Plone / ZCML:zcml-additional应该位于何处?

时间:2014-11-17 14:16:14

标签: plone zcml

我正在尝试通过zcml设置引擎和会话,以便使用z3c.saconfig连接到数据库。我正在使用Plone 4.3.2。

我正在关注Plone 4上的一本名为Professional Plone Develop的书,并在buildout.cfg中的[instance]下面说它放置zcml-additional并设置引擎和会话。

以下是buildout.cfg的实例部分:

[instance]
<= instance_base
recipe = plone.recipe.zope2instance
http-address = 8080
zcml-additional = 
    <configure xmlns="http://namespaces.zope.org/zope"
               xmlns="http://namespaces.zope.org/db"
               >

        <include package="z3c.saconfig" file="meta.zcml" />
        <db:engine name="testA" url="mysql://uName:uPass@localhost/GPCL_Asset_Tracker"/>
        <db:session engine="testA" />
    </configure>

另外,我有一个名为gpcl.calibration的软件包,在setup.py文件中我添加了install_requires&#39; MySQL-Python&#39;和&#39; z3c.saconfig&#39;,它们有效并且不会在构建中出现问题。

不幸的是我收到了这个错误:

    ZopeSAXParseException: File "/home/pjdowney/Plone/GPCLAssetTrackerD/parts/instance/etc/package-includes/999-additional-overrides.zcml", line 2.0,  duplicate attribute

在其他地方定义的zcml-additional不在buildout.cfg中吗?在书中,我注意到它在[实例]下面的http地址和用户,它们似乎已被移到[buildout]下面了。

1 个答案:

答案 0 :(得分:3)

这是一个错字:您的xmlns元素上不能有两个名为configure的属性。按照后面的<db:engine,可能应该阅读

<configure xmlns="http://namespaces.zope.org/zope"
           xmlns:db="http://namespaces.zope.org/db"
           >