如何在XML文档上创建MarkLogic TDE

时间:2017-08-19 16:16:09

标签: marklogic

我想学习如何创建Marklogic TDE。我有Marklogic 9.0-1.1并在下面的顶级歌曲数据库中插入了一个文档。

 xdmp:document-insert("/songs/Akon-featuring-Snoop-Dogg-I-Wanna-Love-
       You.xml", 
<top-song xmlns="http://marklogic.com/MLU/top-songs">
    <title href="http://en.wikipedia.org/wiki/I_Wanna_Love_You" 
             xmlns:ts="http://marklogic.com/MLU/top-songs">I Wanna Love You</title>
    <artist href="http://en.wikipedia.org/wiki/Akon" 
              xmlns:ts="http://marklogic.com/MLU/top-songs">Akon featuring 
                        Snoop Dogg</artist>
   <weeks last="2006-12-09">
       <week>2006-12-02</week>
       <week>2006-12-09</week>
   </weeks>

   <album>Jade to the Max</album>

   <formats>
       <format>CD single</format>
       <format>Cassette single</format>
       <format>7" vinyl</format>
    </formats>

    <genres>
        <genre>R&amp;B</genre>
    </genres>

   <label>Giant Records</label>

   <descr>
       <p>&ldquo;I Wanna Love You&rdquo; is the title of a top-ten R&amp;B 
        single by Jade. It was the groups debut single, it was featured on 
        the Class Act soundtrack.&rdquo;</p> 
    </descr>
</top-song>
)

现在我在热门歌曲数据库中创建了Marklogic模板视图。但我得到错误“TDE-INVALIDTEMPLATE :(错误:FOER0000)无效的TDE模板:TDE-INVALIDTEMPLATENODE:无效的提取模板节点:/ tde:template / tde:context [2]”。我错过了什么?

xquery version "1.0-ml"; 
import module namespace tde = "http://marklogic.com/xdmp/tde"
                              at "/MarkLogic/tde.xqy";

let $top-songs :=
  <template xmlns="http://marklogic.com/xdmp/tde">
    <context>/songs</context>
    <rows>
      <row>
        <schema-name>top-songs</schema-name>
        <view-name>songs</view-name>
        <columns>

          <column> 
            <name>title</name>
            <scalar>string</scalar>
            <val>title</val>
          </column>

          <column> 
            <name>artist</name>
            <scalar>string</scalar>
            <val>artist</val>
          </column>

          <column> 
            <name>weeks</name>
            <scalar>string</scalar>
            <val>weeks</val>
          </column>

          <column> 
            <name>week</name>
            <scalar>string</scalar>
            <val>week</val>
          </column>

          <column> 
            <name>album</name>
            <scalar>string</scalar>
            <val>album</val>
          </column>

          <column> 
            <name>format</name>
            <scalar>string</scalar>
            <val>format</val>
          </column>

          <column> 
            <name>genres</name>
            <scalar>string</scalar>
            <val>genres</val>
          </column>

          <column> 
            <name>label</name>
            <scalar>string</scalar>
            <val>label</val>
          </column>

          <column> 
            <name>descr</name>
            <scalar>string</scalar>
            <val>descr</val>
          </column>

        </columns>

      </row>
    </rows>

  </template> 
return tde:template-insert("/top-songs.xml",$top-songs)

1 个答案:

答案 0 :(得分:0)

  1. 模板中的context节点应该是ML必须在您插入的文档中查找的节点。 您的上下文文档具有<top-song>作为根节点,并且没有名称为<songs>的节点。 因此,您的上下文节点应该是:<context>/top-song</context>或您的上下文文档应该有<songs>作为节点(在其下面有列和行元素)。

  2. 请参阅您的架构名称是唯一的且不包含范围视图。