我是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返回给客户端。
我该如何处理?
感谢。
答案 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)
编写创建人员和添加人员功能留给读者练习。这将以原子方式提交新的部门和员工文档。