首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将OAI源文件导入文件处理程序

将OAI源文件导入文件处理程序
EN

Stack Overflow用户
提问于 2015-01-15 11:22:59
回答 1查看 80关注 0票数 0

我有一个问题,导入一个OAI源代码到文件制造商。映射是可以的,但是结果是空的。

这是消息来源:

代码语言:javascript
复制
<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dc="http://dublincore.org/documents/dcmi-namespace/" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
<responseDate>2015-01-15T12:05:11Z</responseDate>
<request verb="ListRecords" metadataPrefix="oai_dc">
http://api.memorix-maior.nl/collectiebeheer/oai-pmh/key/SORRY_THIS_KEY_I_CANNOT_SHOW/tenant/nfm
</request>
<ListRecords>
<record>
<header>
<identifier>
e:1d59bf74-a57c-11e1-af90-bf6f69fae6b6:000a80bf-e7d6-7670-b2bd-c269b2e58878
</identifier>

等。

这就是我做的xslt:

代码语言:javascript
复制
<?xml version='1.0' encoding='UTF-8'?>
<xsl:stylesheet version="1.0" 
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult">
        <ERRORCODE>0</ERRORCODE>
            <METADATA>
<FIELD NAME="identifier" TYPE="TEXT"/>
            </METADATA>
            <RESULTSET>
            <xsl:for-each select="OAI-PMH/ListRecords/record">
                <ROW>
                    <COL>
                        <DATA><xsl:value-of select="header/identifier"/></DATA>
                    </COL>
                </ROW>
                </xsl:for-each>
            </RESULTSET>
        </FMPXMLRESULT>
    </xsl:template>
</xsl:stylesheet>

为了说明这一点,我只指出了OAI源中的第一个字段。

我希望你能帮我解决这个问题。

向你问好,布德维恩·里德尔

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-15 11:45:21

您的尝试失败的原因是源XML节点位于命名空间中。必须在样式表中声明此命名空间,为其分配前缀,并在寻址节点时使用该前缀:

代码语言:javascript
复制
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:oai="http://www.openarchives.org/OAI/2.0/">
<xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/>

<xsl:template match="/">
    <FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult">
        <METADATA>
            <FIELD NAME="identifier" TYPE="TEXT"/>
        </METADATA>
        <RESULTSET>
            <xsl:for-each select="oai:OAI-PMH/oai:ListRecords/oai:record">
                <ROW>
                    <COL>
                        <DATA><xsl:value-of select="oai:header/oai:identifier"/></DATA>
                    </COL>
                </ROW>
            </xsl:for-each>
        </RESULTSET>
    </FMPXMLRESULT>
</xsl:template>

</xsl:stylesheet>

Note

如果输入示例具有代表性,则可能需要使用:

代码语言:javascript
复制
<xsl:value-of select="normalize-space(oai:header/oai:identifier)"/>

从结果中修剪多余的空格。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27962304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档