Reputation: 1147
I would like to learn how to create Marklogic TDE. I have Marklogic 9.0-1.1 and inserted a document in top-songs database below.
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&B</genre>
</genres>
<label>Giant Records</label>
<descr>
<p>“I Wanna Love You” is the title of a top-ten R&B
single by Jade. It was the groups debut single, it was featured on
the Class Act soundtrack.”</p>
</descr>
</top-song>
)
NOW I created Marklogic Template views in top-songs database. But I got errors "TDE-INVALIDTEMPLATE: (err:FOER0000) Invalid TDE template: TDE-INVALIDTEMPLATENODE: Invalid extraction template node: /tde:template/tde:context[2]". what am I missing ?
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)
Upvotes: 1
Views: 243
Reputation: 93
Your context
node in the template should be the node that ML has to lookup for in the document you inserted.
Your context document has <top-song>
as the root node and there is no node with the name <songs>
.
So, your context node should be: <context>/top-song</context>
or your context document should have <songs>
as a node (under which you have the column and row elements).
See that your schema-name is unique and does not contain Range Views.
Upvotes: 2