我有许多不同的核心,每个核心都有自己的架构,但它们都共享相同的字段类型。我想删除字段类型声明的重复,并在我的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.
任何人都知道如何执行这种原始包含?
答案 0 :(得分: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>
答案 1 :(得分:2)
此问题的另一个干净解决方案是将资源添加为外部实体:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE schema
[
<!ENTITY schemafieldtypes SYSTEM "schemafieldtypes.xml">
]>
然后,在xml中,您可以随处添加:
&schemafieldtypes;