0

我是 MarkLogic 的新手。

这是我的要求:

我有两个实体:员工,部门。一名员工属于一个部门。

对于 XML,架构将是:

SomeStaff.xml:

<Staff>
  <Name>Lee</Name>
  <Title>VP</Title>
  <DepartmentId>someUniqueURI</DepartmentId>
</Staff>

部门/someUniqueURI.xml:

<Department>
    <Name>IT</Name>
</Department>

所以,这是我的问题:

我想要相同的 XML 并让 MarkLogic 生成文件名,例如:我要保存:

<Department>
    <Name>IT</Name>
</Department>

MarkLogic 会为其生成一个唯一的 URI,并将该 uri 返回给客户端。

我该如何处理?

谢谢。

4

2 回答 2

3

sem:uuid-string函数可用于生成唯一的 GUID。这个函数是在 ML7 中引入的

于 2017-10-17T13:32:57.283 回答
0

只需写一点代码:

declare function add-dept ($dept as element(Department))
    as xs:string
{
    let $uri := "/departments/" || xs:string (xdmp:random())     (: or some GUID generator :)
    let $_ := xdmp:document-insert ($uri, $dept)
    return $uri
};

在要存储新部门文档的位置调用此函数:

...
let $dept-id := add-dept ($new-deptartment)
let $new-staff := create-staff ($name, $title, $dept-id)
return add-staff ($new-staff)

编写 create-staff 和 add-staff 函数留给读者作为练习。这将自动提交新部门和员工文件。

于 2013-11-15T21:54:38.673 回答