我在 Propel 中有通常的“schema.xml”,并注意到有一些重复的 XML 标记块。我有一个表,它有 10 个子表 - 每个孩子都需要一些代码来指定这种关系(在 a 内<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 模式处理器处理实体。请在验证之前替换实体.. [(root)/vendor/propel/generator/lib/task/AbstractPropelDataModelTask.php 的第 477 行]
由于以下原因,目标“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。