2

我有以下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 中时,我想将专利转让人的名称元素更改为转让人名称,并将专利受让人的名称元素更改为受让人名称,以便我加载的 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>

我怎样才能做到这一点?

4

2 回答 2

1

我建议看看 Information Studio。以下是 5 分钟演练的链接:

http://community.marklogic.com/learn/5-minute-infostudio-walkthrough

Information Studio 允许您选择输入收集器、应用任意数量的转换(您可以从界面中输入 XSLT 或 XQuery 代码)、选择任何目标数据库,甚至调整需要分配的 uri 等内容,所有这些都在内部进行那个界面。

于 2012-05-15T08:15:28.790 回答
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> 

您可以在信息工作室或记录加载器中使用此样式表。要从记录加载器调用,请在属性文件中使用这些行:

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

于 2012-05-28T14:17:23.263 回答