5

我有许多不同的核心,每个都有自己的模式,但它们都共享相同的字段类型。我想删除重复的字段类型声明,并在我的 schema.xml 文件中执行以下操作:

<?xml version="1.0" encoding="UTF-8" ?>
<schema name="foo" version="1.5">
  <fields>
      <field name="_version_" ...
      <field name="id" ...
      ...
  </fields>
  <uniqueKey>id</uniqueKey>
  <include "/path/to/field_types.xml">
</schema>

但是,我在文档中没有看到任何机制来实现这一点。我找到了一篇提到这个的帖子:

    <xi:include href="/path/to/field_types.xml" />

但这给了我一个启动错误:The prefix "xi" for element "xi:include" is not bound.

有人知道如何执行这种类型的原始包含吗?

4

2 回答 2

7

从过去的 Solr 问题 - SOLR-3087来看,它看起来<xi:include>是正确的语法,您只需要内联包含 xi 命名空间引用。

<?xml version="1.0" encoding="UTF-8" ?>
<schema name="foo" version="1.5">
  <fields>
      <field name="_version_" ...
      <field name="id" ...
      ...
  </fields>
  <uniqueKey>id</uniqueKey>
  <xi:include href="/path/to/field_types.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
</schema>
于 2013-06-06T18:32:38.240 回答
2

这个问题的另一个干净的解决方案是将资源添加为外部实体:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE schema
[
    <!ENTITY schemafieldtypes SYSTEM "schemafieldtypes.xml">
]>

然后,在 xml 中,您可以在任何地方添加:

&schemafieldtypes;
于 2015-10-28T17:52:43.583 回答