我在Propel中有通常的“schema.xml”,并注意到有一些重复的XML标记块。我有一个表,反过来有10个子表 - 每个孩子需要一些代码来指定这种关系(在<table>
内):
<column name="id" type="integer" required="true" primaryKey="true" />
<foreign-key foreignTable="process_step">
<reference local="id" foreign="id" />
</foreign-key>
<behavior name="delegate">
<parameter name="to" value="process_step" />
</behavior>
因此我将上面的代码放在一个单独的文件“process-step-pk.xml”中,然后将以下内容添加到schema.xml的开头:
<!DOCTYPE stylesheet [
<!ENTITY process_step_pk SYSTEM "process-step-pk.xml">
]>
最后,在我希望插入XML片段的地方,我使用实体引用:
<table name="process_step_load">
&process_step_pk;
<column name="url" type="varchar" size="1024" />
<column name="method" type="varchar" size="6" required="true" default="get" />
</table>
这是我在尝试构建课程时得到的结果:
[PHP错误] DOMDocument :: schemaValidate():内部错误:xmlSchemaVDocWalk,当前正在验证的节点树中至少有一个实体引用。尚不支持使用此XML Schema处理器处理实体。请在验证前替换实体.. [第477行(root)/vendor/propel/generator/lib/task/AbstractPropelDataModelTask.php]
执行目标“sql-template”失败的原因如下:(root)/vendor/propel/generator/build-propel.xml:209:10:XML模式文件((root)/db/schema.xml )不验证。请参阅上面的警告,原因验证失败(如果您没有看到,请确保将error_reporting设置为显示E_WARNING。)
[phingcall](root)/vendor/propel/generator/build-propel.xml:209:10:XML模式文件((root)/db/schema.xml)不验证。请参阅上面的警告,原因验证失败(如果您没有看到,请确保将error_reporting设置为显示E_WARNING。)
执行目标“sql”失败的原因如下:(root)/vendor/propel/generator/build-propel.xml:194:26:目标构建文件的执行失败。中止。 [phing](root)/vendor/propel/generator/build-propel.xml:194:26:目标构建文件的执行失败。中止。
关键短语不支持使用此XML Schema处理器处理实体,因此它知道我正在尝试做什么!有没有人建议如何以另一种方式实现这一目标?
我在OS X 10.6.8上的控制台上使用PHP 5.3.25。
答案 0 :(得分:0)
@Twigmac在评论中建议这个问题与libxml有关,如果需要实体支持,Propel需要使用其他机制读取模式。当我得到片刻时,我会用Propel项目提出一张增强票。