0

我想在 Geonetwork 3.8.1中将导出自定义为 csv函数。

我知道要编辑的文件是 tpl-csv.xsl,就我而言,它位于此处

geonetwork/WEB-INF/data/config/schema_plugins/iso19115-3.2018/layout/tpl-csv.xsl

我想要的输出如下:

"title","cloud coverage","category","date-creation" "S2A_MSIL1C_20151127T103352_N0204_R108_T32TLS_20151127T103440","36.6172","dataset","2015-11-27T10:34:40"

我做了一些测试,但我只能

"schema","uuid","id","cit:title","gco:Real","category","date-creation" "iso19115-3.2018","89d82f0a-051e-11ea-80ac-02000a08f492","1155","S2A_MSIL1C_20151127T103352_N0204_R108_T32TLS_20151127T103440","36.6172","dataset","2015-11-27T10:34:40",

如何以更正确的方式编辑tpl-csv.xsl

4

1 回答 1

0

我找到了自定义 EXPORT(CSV) 函数输出的解决方案。

这是要考虑的两个文件:

geonetwork/WEB-INF/data/config/schema_plugins/iso19115-3.2018/layout/tpl-csv.xsl
geonetwork/xslt/services/csv/csv-search.xsl

在第一个中,正如@josegar74 向我建议的那样,您必须在抽象元素和类别元素之间添加类似的行: myfieldvalue 在我的情况下,我插入了:

<title><xsl:copy-of select="mdb:identificationInfo/*/mri:citation/*/cit:title"/></title>
<cloud_coverage_percentage><xsl:copy-of select="mdb:contentInfo/mrc:MD_ImageDescription/mrc:cloudCoverPercentage/gco:Real"/></cloud_coverage_percentage>

特别是关于云覆盖百分比,请记住在标题中添加命名空间,因为它缺少:

xmlns:mrc="http://standards.iso.org/iso/19115/-3/mrc/2.0"

然后我评论了我不感兴趣的所有其他行,但是:

<xsl:copy-of select="gn:info"/>

关于第二个文件 csv-search.xsl,我发现为避免自动打印 3 列:“schema”、“uuid”、“id”, 您必须注释以下行:

<xsl:text>"schema"</xsl:text>
<xsl:value-of select="$sep"/>
<xsl:text>"uuid"</xsl:text>
<xsl:value-of select="$sep"/>
<xsl:text>"id"</xsl:text><xsl:value-of select="$sep"/>

<xsl:value-of select="concat('&quot;', $metadata/geonet:info/schema, '&quot;', $sep,
                  '&quot;', $metadata/geonet:info/uuid, '&quot;', $sep,
                  '&quot;', $metadata/geonet:info/id, '&quot;', $sep)"/>

通过这种方式,我有可能获得所需的输出:

"uuid","title","cloud_coverage_percentage","category","date-creation" "c94da70e-066e-11ea-aa22-02000a08f492","S2A_MSIL1C_20180320T101021_N0206_R022_T33TUM_20180320T122057","36. 20T12:20:57", "7caf22dc-066f-11ea-a038-02000a08f492","S2A_MSIL1C_20180320T101021_N0206_R022_T33TVN_20180320T122057","100.0","2018-72","2018-72"

如果您不想看到最后一个值之后的最后一个逗号(在我的例子中是日期创建),您可以在文件末尾添加一小段代码:

comment the line
`<xsl:value-of select="$sep"/>` (l.185)

add the following lines of codes:

<xsl:if test="position() != last()">
    <xsl:value-of select="$sep"/>
</xsl:if>

我将尝试为此打开一个拉取请求。

我希望这些附加信息对其他人有用。

于 2019-11-22T12:40:02.110 回答