自定义编辑器¶
为特定模式插件标准定义了元数据编辑器配置(请参见 实现模式插件 )
编辑器配置定义了编辑器的导航菜单(即视图和选项卡列表)、字段列表和要使用的控件类型。控件可以是HTML类型(如文本、日期)或使用 AngularJS directive .
要构建这样的编辑器配置,用户需要知道标准的XSD,以便根据元素名称正确构建视图、选项卡和字段(请参见 source file schemas/config-editor.xsd ). 创建编辑器根元素并附加:
架构和
标准的名称空间
<editor xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="../../../../../../config-editor.xsd"
xmlns:gn="http://www.fao.org/geonetwork"
xmlns:gco="http://www.isotc211.org/2005/gco"
xmlns:gmd="http://www.isotc211.org/2005/gmd"
xmlns:gmx="http://www.isotc211.org/2005/gmx"
xmlns:srv="http://www.isotc211.org/2005/srv"
xmlns:gml="http://www.opengis.net/gml"
xmlns:xlink="http://www.w3.org/1999/xlink">
编辑器配置应该首先定义一些常规元素描述,然后定义一组至少包含一个元素描述的视图。
子元素:
定义字段类型¶
定义表单域类型配置。默认为简单文本输入。此列表包含不使用简单文本输入的异常列表。可能值的列表如下:
所有HTML5输入类型或
AngularJS指令名。必须以“data-”开头,并且可以以“-textarea”结尾才能创建textarea元素。如果指令不应用于输入或文本区域,而是应用于包含它的div,则它可以以'-div'结尾。
元素只能定义一种类型。
<editor>
<fields>
<for name="gmd:abstract" use="textarea"/>
<for name="gco:Real" use="number"/>
<for name="gco:Boolean" use="checkbox"/>
<for name="gco:Date" use="data-gn-date-picker"/>
定义更高级字段类型的另一个选项是使用和XSL模板捕获元素。例如,这种方法用于ISO19139中的关键字(参见 source file schemas/iso19139/src/main/plugin/iso19139/layout/layout-custom-fields-keywords.xsl )
标准中的分组元素¶
要在字段集中显示的元素列表(即装箱元素)。这些元素通常包含子元素并定义标准中的主要部分。例如,在ISO19139中,标识和分布是主要的部分,通常应该显示为一组信息。
<editor>
<fields>...</fields>
<fieldsWithFieldset>
<name>gmd:identificationInfo</name>
<name>gmd:distributionInfo</name>
定义多语言字段¶
在此配置标准的多语言字段列表。
默认情况下,如果标准为多语言支持,如ISO19139,所有字段将显示为多语言字段。在exclude部分定义异常(例如。gmd:的标识符例如ISO19139)。
然后,本节还允许定义如何使用扩展元素显示多语言字段。如果展开,则显示每种语言一个字段,无需单击语言切换器。

<editor>
<fields>...</fields>
<fieldsWithFieldset>...</fieldsWithFieldset>
<multilingualFields>
<expanded>
<name>gmd:title</name>
<name>gmd:abstract</name>
</expanded>
<exclude>
<name>gmd:identifier</name>
<name>gmd:metadataStandardName</name>
配置视图¶
必须至少定义一个视图,但可以根据需要定义更多视图模式。
默认情况下,ISO19139定义了3个视图(即默认视图、高级视图、xml视图)和一个禁用视图(即INSPIRE视图)。见 source file schemas/iso19139/src/main/plugin/iso19139/layout/config-editor.xml 对于配置。

另一个基本示例是Dublin Core视图(请参见 source file schemas/dublin-core/src/main/plugin/dublin-core/layout/config-editor.xml )
要创建新视图,请使用以下命令:
<views>
<view name="viewNameInLocalizationFile">
...
</view>
子元素:
view ,一个或多个(请参见 定义视图 )
定义视图¶
视图具有标签并定义元数据记录的特定呈现。视图由一个或多个选项卡组成。
<views>
<view name="custom-view">
....
</view>
使用displayIfRecord和displayIfServiceInfo属性,可以根据元数据记录内容或当前用户会话显示或不显示视图。
属性:
name (强制性)
存储在 {{schema}}/loc/{{lang}}/strings.xml
或者名称空间前缀为的元素名。
<strings>
<default>Simple</default>
<inspire>INSPIRE</inspire>
<custom-view>My view</custom-view>
残疾人 (可选)固定值: true
如果定义了属性,则从菜单中隐藏视图。允许轻松禁用视图。
类 (可选)
定义要在表单元素上设置的自定义CSS类。主要用于设置缩进类型:
gn label above input:将标签放在表单输入上方
gn缩进彩色:每个字段集上的彩色左边框
gn indent blue scale:每个字段集的蓝色左边框
请参见目录/视图/默认/较少/gn_编辑器_无违约添加自定义编辑器样式。
上下控制隐藏 (可选)固定值: true
定义是否应在该视图中显示上下控件。如果未定义,则显示控件。在视图中隐藏这些控件,以便在最终用户使用较少控件时更轻松。

显示属性 (可选)固定值: true
加载视图时默认显示属性。
显示工具提示 (可选)固定值: true
加载视图时默认显示所有元素的帮助文档。
显示工具提示模式 (可选)
在悬停元素上显示帮助文档(默认)或单击图标。
隐藏日历 (可选)固定值: true
定义日历控件是否应允许用户仅设置日期或日期时间。如果未设置属性,则可以设置日期和时间。这是在视图级别控制的,切换到另一个视图可能允许对日期进行更多的控制。
显示记录 (可选)
返回将根据元数据记录计算的布尔值的XPath表达式。如果为真,将显示视图。例如,如果元数据标准名称包含Medsea,则显示自定义视图:
<view name="custom-view"
displayIfRecord="contains(gmd:MD_Metadata/
gmd:metadataStandardName/gco:CharacterString,
'MedSea')"
显示ifserviceinfo (可选)
返回布尔值的XPath表达式,该值将根据服务信息树(Jeeves/root/gui元素)进行计算。如果为真,将显示视图。
例如,如果用户是管理员,则显示自定义视图:
<view name="custom-view"
displayIfServiceInfo="count(session[profile = 'Administrator']) = 1"
displayinfrecord和displayIfServiceInfo可以合并。使用AND运算符。两个条件都必须返回true才能显示视图。
子元素:
定义选项卡¶
视图至少包含一个选项卡。在这种情况下,它将是默认显示,并且不会显示顶部工具栏以从一个选项卡切换到另一个选项卡。

添加自定义视图一个默认选项卡和一个标题字段:
<views>
<view name="custom-view">
<tab id="custom-tab" default="true">
<section>
<field xpath="/gmd:MD_Metadata/gmd:identificationInfo/*/gmd:citation/*/gmd:title"/>
</section>
</tab>
</view>
属性:
id (强制性)
URL参数中用于激活该选项卡的tab键。该键还用于在中定义的选项卡标签 {{schema}}/loc/{{lang}}/strings.xml
.
违约 (可选)固定值: true
定义此选项卡是否是视图的默认选项卡。视图中只有一个选项卡应为默认选项卡。
切换 (可选)固定值: true
定义是否应在下拉菜单中显示选项卡而不是选项卡。这用于最终用户不常使用的高级部分。可以在该下拉式选项卡菜单中对多个选项卡进行分组。
formatter-order (可选)
在XSLT格式化程序(用于编辑器的注释)中定义此选项卡的排序索引。
mode (可选)固定值: flat
“扁平”模式是编辑要理解的一个重要概念。它控制着:
显示复杂元素(即有子元素的元素)和
显示不存在的元素(即标准中的元素不在当前文档中)。
当选项卡处于平面模式时,此选项卡将不显示不在当前元数据文档中的元素,并且仅当在具有字段集的元素列表中定义时,才会将复杂元素显示为组(请参见 标准中的分组元素 )
非“扁平”模式下的触点示例:

“扁平”模式下的触点示例:

此模式使布局更简单,但不提供所有控件来删除某些通常已装箱的元素。最终用户仍然可以移动到高级视图模式,以平面模式访问这些隐藏的元素。
为了能够:
根据标准构建适当的模板
修正任何类型的错误。
mode (强制性)
显示记录 (可选)
XPath表达式返回将根据元数据记录计算的布尔值。如果为真,将显示视图。
例如,如果元数据标准名称包含Medsea,则显示自定义视图:
<view name="custom-view" displayIfRecord="contains(gmd:MD_Metadata/ gmd:metadataStandardName/gco:CharacterString, 'MedSea')"/>
显示ifserviceinfo (可选)
返回布尔值的XPath表达式,该值将根据服务信息树(Jeeves/root/gui元素)进行计算。如果为真,将显示视图。
例如,如果用户是管理员,则显示自定义视图:
<view name="custom-view" displayIfServiceInfo="count(session[profile = 'Administrator']) = 1"
合并 displayIfRecord 和 displayIfServiceInfo 使用 AND 操作员。在这种情况下,必须返回两个条件 true 要显示的视图。
配置复杂元素显示¶
要应用“平面”模式异常的元素。默认情况下,“flat”模式不显示仅包含子元素且没有值的元素。
使用或和in属性显示不存在的元素。显示gmd:descriptiveKeywords元素即使元数据记录中不存在,或者如果要显示该字段以添加新的匹配项:
<field
xpath="/gmd:MD_Metadata/gmd:identificationInfo/*/gmd:descriptiveKeywords/*/gmd:keyword"
or="keyword"
in="/gmd:MD_Metadata/gmd:identificationInfo/*/gmd:descriptiveKeywords/*"/>
</tab>
<!-- Elements that should not use the "flat" mode -->
<flatModeExceptions>
<for name="gmd:descriptiveKeywords" />
</flatModeExceptions>
</view>
自定义同义词库¶
要配置转换类型或允许的关键字数量,或者如果小部件必须显示在字段集中,或者作为e同义词库的简单字段,请定义特定配置:
只有两个激发灵感的主题。
<thesaurusList>
<thesaurus key="external.theme.httpinspireeceuropaeutheme-theme"
maxtags="2"
fieldset="false"
transformations=""/>
</thesaurusList>
将节添加到选项卡¶
节是一组字段。如果提供了name属性,那么它将创建一个可折叠的HTML字段集。如果没有提供name属性,则只呈现内部元素。例如,如果需要一个没有根字段集的选项卡,只需创建没有名称的强制节,然后创建内部元素。
属性:
name (可选)
根据节的字段名重写默认名称的可选名称。名称必须在中定义
{{schema}}/loc/{{lang}}/strings.xml
.xpath语言 (可选)
要匹配的元素的xpath。如果为节设置了XPath,则它不应包含任何字段。
mode (可选)固定值: flat
“扁平”模式是编辑要理解的一个重要概念。它控制着:
显示复杂元素(即有子元素的元素)和
显示不存在的元素(即标准中的元素不在当前文档中)。
当选项卡处于平面模式时,此选项卡将不显示不在当前元数据文档中的元素,并且仅当在具有字段集的元素列表中定义时,才会将复杂元素显示为组(请参见 标准中的分组元素 )
非“扁平”模式下的触点示例:
非“平”模式下的触点¶
“扁平”模式下的触点示例:
“扁平”模式下的触点¶
此模式使布局更简单,但不提供所有控件来删除某些通常已装箱的元素。最终用户仍然可以移动到高级视图模式,以平面模式访问这些隐藏的元素。
为了能够:
根据标准构建适当的模板
修正任何类型的错误。
mode (强制性)
or (可选)
如果元素不存在,则匹配的本地名称。
or (可选)
要匹配的geonet子元素(即不存在的元素)的本地名称。
<field xpath="/gmd:MD_Metadata/gmd:language" or="language" in="/gmd:MD_Metadata"/>
or (可选)
in (可选)
的XPathgeonet:子元素要查找的或名称。通常指向XPath属性的最后一个元素的父级。
in (可选)
要在其中搜索geonet子级的元素。
显示记录 (可选)
XPath表达式返回将根据元数据记录计算的布尔值。如果为真,将显示视图。
例如,如果元数据标准名称包含Medsea,则显示自定义视图:
<view name="custom-view" displayIfRecord="contains(gmd:MD_Metadata/ gmd:metadataStandardName/gco:CharacterString, 'MedSea')">
添加字段¶
要显示简单元素,请使用 xpath
指向要显示的元素的属性:
<field xpath="/gmd:MD_Metadata/gmd:identificationInfo/*/gmd:citation/*/gmd:title"/>
要覆盖字段标签,请使用 name
属性并定义新标签 {{schema}}/loc/{{lang}}/strings.xml
:
<field name="myTitle"
xpath="/gmd:MD_Metadata/gmd:identificationInfo/*/gmd:citation/*/gmd:title"/>
要显示元数据文档中存在的复杂元素,请执行以下操作:
<field name="pointOfContact"
xpath="/gmd:MD_Metadata/gmd:identificationInfo/*/gmd:pointOfContact"/>
在这种情况下,还会显示所有子元素。
如果元数据文档中存在字段,则显示该字段;如果该字段不存在,则提供“添加”按钮(指定 in
和 or
属性):
<field name="pointOfContact"
xpath="/gmd:MD_Metadata/gmd:identificationInfo/*/gmd:pointOfContact"
or="pointOfContact"
in="/gmd:MD_Metadata/gmd:identificationInfo/*"
del="."/>
在选项卡级别激活“平面”模式,使窗体仅显示现有元素:
<view name="custom-view">
<tab id="custom-tab" default="true" mode="flat">
<section>
<field
xpath="/gmd:MD_Metadata/gmd:identificationInfo/*/gmd:citation/*/gmd:title"/>
<field name="pointOfContact"
xpath="/gmd:MD_Metadata/gmd:identificationInfo/*/gmd:pointOfContact"
or="pointOfContact"
in="/gmd:MD_Metadata/gmd:identificationInfo/*"
del="."/>
</section>
</tab>
</view>
属性:
xpath语言 (强制性)
要匹配的元素的xpath。
if (可选)
一个可选的xpath表达式,用于定义元素是否只应在某些情况下显示(例如,仅用于服务元数据记录)。如。
<field
xpath="/gmd:MD_Metadata/gmd:identificationInfo/srv:SV_ServiceIdentification/
gmd:resourceConstraints/gmd:MD_LegalConstraints/gmd:otherConstraints"
if="count(gmd:MD_Metadata/gmd:identificationInfo/srv:SV_ServiceIdentification) > 0"/>
name (可选)
替代默认名称的字段名。
isMissingLabel公司 (可选)
如果元数据记录中不存在元素,则显示的标签。它表示当前记录中缺少元素。它可以用于表示元素“未评估”的一致性部分。实验的
or (可选)
要匹配的geonet子元素(即不存在的元素)的本地名称。
<field xpath="/gmd:MD_Metadata/gmd:language" or="language" in="/gmd:MD_Metadata"/>
in (可选)
要在其中搜索geonet子级的元素。
del (可选)
单击“删除”按钮时要删除的元素的相对XPath。
如果模板字段匹配链接并允许编辑字段URL,则remove控件应删除父元素gmd:在线。
<field name="url" xpath="/gmd:MD_Metadata/gmd:distributionInfo/gmd:MD_Distribution/gmd:transferOptions /gmd:MD_DigitalTransferOptions/gmd:onLine/gmd:CI_OnlineResource/gmd:linkage" del="../.."> <template>
Del属性是否可以在模板模式下使用。仅编辑分母或距离时删除空间分辨率的示例。分母或距离是必需的,但由于del元素指向空间分辨率祖先,因此不显示任何必需的标志,并且remove控件将删除空间分辨率元素。
<field xpath="/gmd:MD_Metadata/gmd:identificationInfo/ */gmd:spatialResolution/*/gmd:distance" del="../.."/> <field xpath="/gmd:MD_Metadata/gmd:identificationInfo/ */gmd:spatialResolution/ */gmd:equivalentScale/*/gmd:denominator" del="../../../.."/>
仅模板模式 (可选)固定值: true
定义模板模式是否应是唯一使用的模式。在这种情况下,始终根据XML模板片段字段配置显示该字段。默认值为false。
不显示缺失 (可选)固定值: true
如果找到了该字段并且还找到了geonet子项,则不会显示要添加新项的geonet子项。
use (可选)
要使用的表单域类型(HTML5类型之一)或要使用的AngularJS指令。此列表定义为打开的枚举。对于指令,默认情况下该值将在简单文本输入中设置。如果指令需要处理cariage返回字符,则指令名必须包含“-textarea”,以便在textarea而不是文本输入中设置值。
use (可选)
字段类型。在这里注册要在客户端使用的任何角度指令。默认为简单文本字段。
子元素:
模板 ,可选元素(请参见 添加基于模板的字段 )
添加基于模板的字段¶
要编辑的XML片段的模板配置。
模板字段由与要编辑的元素对应的XML片段组成,其中要编辑的值使用{{fields}}符号标识。每个字段都需要定义为将从中创建一个输入字段的值。
此模式用于隐藏要编辑的XML元素的复杂性。如。
<field name="url"
templateModeOnly="true"
xpath="/gmd:MD_Metadata/gmd:distributionInfo/g.../gmd:linkage">
<template>
<values>
<key label="url"
xpath="gmd:URL"
tooltip="gmd:linkage"/>
</values>
<snippet>t
<gmd:linkage>
<gmd:URL>{{url}}</gmd:URL>
</gmd:linkage>
</snippet>
</template>
模板字段模式将只提供对部分snippet元素的编辑。在某些情况下,代码段可能包含的元素多于编辑的元素。在这种情况下,代码段必须标识潜在元素的列表,以便在使用此模式时不会丢失信息。使用gn:copy元素将模板与当前文档正确组合。
例如gmd:MD_标识符可能包含gmd:权限节点需要保存。
<snippet>
<gmd:identifier>
<gmd:MD_Identifier>
<gn:copy select="gmd:authority"/>
<gmd:code>
<gco:CharacterString>{{code}}</gco:CharacterString>
</gmd:code>
</gmd:MD_Identifier>
</gmd:identifier>
</snippet>
警告:基于模板的字段不支持ISO标准的多语言编辑(即仅编辑主语言-因此,将保留多语言元素)。
添加文档或帮助¶
在编辑器中插入HTML片段。
<field name="edmerpName"
xpath="/gmd:MD_Metadata/gmd:identificationInfo/*/
gmd:pointOfContact[*/gmd:role/*/@codeListValue='edmerp']"
del=".">
<text ref="edmerp-help"/>
片段在本地化文件中定义字符串.xml:
<edmerp-help>
<div class="row">
<div class="col-xs-offset-2 col-xs-8">
<p class="help-block">The European Directory for Marine Environment
Research Project (EDMERP) contains descriptions of many projects.
This catalogue is maintained ...</p>
</div>
</div>
</edmerp-help>
属性:
ref (强制性)
要插入到本地化文件中的元素的标记名。
if (可选)
要计算的XPath表达式。如果为true,则显示文本。
添加组¶
一组田野
属性:
name (强制性)
节标识符。翻译设置在客户端。
用户可以对其进行批处理编辑的字段。
属性:
name (强制性)
字段标识符。翻译设置在客户端。
xpath语言 (强制性)
要编辑的元素的XPath。
索引字段 (可选)
Lucene索引字段名(在dumpfields中定义)。该字段将用于预览当前记录值(TODO)。
use (可选)
字段类型。在这里注册要在客户端使用的任何角度指令。默认为简单文本字段。
可拆卸的 (可选)固定值: true
定义字段是否可以标记为已删除。
插入模式 (可选)
定义是否应插入或替换字段。不要为强制字段(如title)设置此属性。
代码表 (可选)
代码列表标识符。如。gmd:MD_TopicCategoryCode公司主题类别。
template
定义要用于要插入的值的XML模板。