MarkLogic:如何生成唯一的document / xml文件名

时间:2013-11-15 04:13:16

标签: marklogic

我是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返回给客户端。

我该如何处理?

感谢。

2 个答案:

答案 0 :(得分:3)

sem:uuid-string函数可用于生成唯一的GUID。该功能在ML7中引入

答案 1 :(得分: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)

编写创建人员和添加人员功能留给读者练习。这将以原子方式提交新的部门和员工文档。