2012-05-15 2 views
2

У меня есть следующий XML: -Изменить элемент xml при загрузке в Marklogic?

<?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> 

Как это сделать Marklogic?

ответ

1

Предлагаю ознакомиться с Information Studio. Вот ссылка на 5 минут проходных:

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

Информационная студия позволяет выбрать входной коллектор, применять любое количество преобразований (вы можете ввести XSLT или XQuery код из интерфейса), выберите любую целевую базу данных и даже настройте такие вещи, как uri, которые должны быть назначены, все из этого интерфейса.

HTH!

+0

Что делать, если я хочу изменить имена элементов через звукозаписывающий загрузчик? –

+0

Вы можете добавить триггер или использовать Структуру обработки содержимого (CPF) - http://docs.marklogic.com/5.0doc/docapp.xqy#display.xqy?fname=http://pubs/5.0doc/xml/ dev_guide/triggers.xml –

+0

@ puneet-pant Вы можете использовать триггеры или CPF на стороне базы данных, что предотвращает настройку загрузчика записей. Но, насколько мне известно, должно быть возможно подключить класс загрузчика к загрузчику записей, который может выполнять предварительную обработку. Посмотрите на документацию для этого загрузчика. Я думаю, хотя эта информационная студия стоит хотя бы посмотреть. Он может сделать довольно много, и он поставляется с MarkLogic 5 по умолчанию. – grtjn

0

XSLT идеально подходит для этого. Поскольку вы хотите изменить только один элемент, вам нужно создать только таблицу стилей, состоящую из двух простых шаблонов. Во-первых, тождественное преобразование:

<xsl:template match="node() | @*"> 
<xsl:apply-templates match="node() | @*"> 
</xsl:template> 

Это просто выходные элементы точно так, как они приходят в

Во-вторых, шаблон для имени элемента:.

<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 

Затем вызовите ваш XSLT из module.xqy

 Смежные вопросы

  • Нет связанных вопросов^_^