我有以下xml: -
<?xml version="1.0" encoding="UTF-8"?>
<patent-assignment>
<patent-assignors>
<patent-assignor>
<name>TSAI, YU-WEN</name>
</patent-assignor>
</patent-assignors>
<patent-assignees>
<patent-assignee>
<name>FARADAY TECHNOLOGY CORP.</name>
</patent-assignee>
</patent-assignees>
</patent-assignment>
现在将这个xml文档加载到Marklogic中时我想将专利转让人的名称元素更改为assignor-name和patent-assignee的name元素到assignee-name中,以便我加载的xml应如下所示: -
<?xml version="1.0" encoding="UTF-8"?>
<patent-assignment>
<patent-assignors>
<patent-assignor>
<assignor-name>TSAI, YU-WEN</assignor-name>
</patent-assignor>
</patent-assignors>
<patent-assignees>
<patent-assignee>
<assignee-name>FARADAY TECHNOLOGY CORP.</assignee-name>
</patent-assignee>
</patent-assignees>
</patent-assignment>
我如何做这个Marklogic?
答案 0 :(得分:1)
我建议看看Information Studio。这是5分钟步行的链接:
http://community.marklogic.com/learn/5-minute-infostudio-walkthrough
Information Studio允许您选择输入收集器,应用任意数量的转换(您可以从界面中输入XSLT或XQuery代码),选择任何目标数据库,甚至调整需要分配的uri等内容,全部来自该界面。
HTH!
答案 1 :(得分:0)
XSLT非常适合这种情况。由于您只想更改一个元素,因此只需创建两个简单模板样式表。首先,身份变换:
<xsl:template match="node() | @*">
<xsl:apply-templates match="node() | @*">
</xsl:template>
这将简单地输出元素。
其次,name元素的模板:
<xsl:template match="name">
<xsl:choose>
<xsl:when test="local-name(parent::element())='patent-assignee'">
<patent-assignee>
<xsl:value-of select="."/>
</patent-assignee>
</xsl:when>
<xsl:when test="local-name(parent::element())='patent-assignor'">
<patent-assignor>
<xsl:value-of select="."/>
</patent-assignor>
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
您可以在信息工作室或使用记录加载器使用此样式表。要从recordloader调用,请在属性文件中使用以下行:
CONFIGURATION_CLASSNAME=com.marklogic.recordloader.xcc.DelimitedDataConfiguration
CONTENT_FACTORY_CLASSNAME = com.marklogic.recordloader.xcc.XccModuleContentFactory
CONTENT_MODULE_URI = /path/to/module.xqy
然后从module.xqy
调用你的xslt