标签: marklogic

Marklogic的单元测试

我们正在寻找一个测试我们的MarkLogic XQuery代码的框架.

我们可以看到MarkLogic/XQunit是一个很好的框架,但它没有代码覆盖功能.

MarkLogic XQuery编写单元测试用例的最佳框架是什么?

unit-testing marklogic

8
推荐指数
1
解决办法
731
查看次数

为什么我不能在MarkLogic请求中捕获某些异常?

我有一些代码在元素范围索引上运行"无效值"设置.在这种情况下,我已经在我的数据库中dateTimeonDate元素上配置了元素范围索引(这将适用于XML元素和JSON属性).我已设置该索引以拒绝无效值.此设置意味着如果我尝试设置onDate元素的值并且它不能转换为dateTime或者为null(nullJSON或xsi:nil="true"XML中的文字),则我的更新将失败.(相反的行为是完全忽略无效值.)

我在MarkLogic 8.0-4中的服务器端JavaScript中尝试了以下代码:

'use strict';
declareUpdate();
var errors = [];
var inputs = {
 '/37107-valid.json': (new Date()).toISOString(),
 '/37107-invalid.json': 'asdf',  // Should throw an error
 '/37107-null.json': null  
};

for(var uri in inputs) {
 try {
   xdmp.documentInsert(
     uri,
     { 'onDate': inputs[uri] },
     xdmp.defaultPermissions(),
     ['37107'] // Collections
   );
 } catch(err) {
   errors.push(err);
 }
}
errors.length;
Run Code Online (Sandbox Code Playgroud)

我本来期望我的请求成功并最终结束1 === errors.length,因为只有第二个插入会失败,因为'asdf'它不能作为a转换dateTime而且它不是null.但是,我得到一个XDMP-RANGEINDEX错误,我的交易失败.为什么我的try/ catch …

javascript marklogic nosql

8
推荐指数
1
解决办法
255
查看次数

如何使用xQuery取消对转义的XML进行编码

我有一个xQuery类型的变量xs:string,带有编码的HTML片段的值(twitter推文的内容).它看起来像这样:

头条新闻 - 今日• AP来源:< b>奥巴马</b> 选择正义职位撤回:新闻 - 世界其他地方 - < a href =" http://shar.es/mqMAG">http://shar.es/mqMAG</a> ;

当我尝试在HTML块中编写它时,我需要转义字符串,以便浏览器解释HTML片段.相反,字符串按原样写出来,浏览器将其渲染为文本(所以你看到<a href ="blah ....).这就是我写出这个字符串的方式:

{$条目/原子:内容/文本()}

如何将未转义的字符取消编码,以便写入<而不是< ?

我试图做这样的替换,但它总是取代< 与< !

fn:replace($ s,"<","<")

xml xquery marklogic

7
推荐指数
1
解决办法
6174
查看次数

删除MarkLogic函数中的"fn:"?

有没有一种方法可以让MarkLogic不必为每个fn:具有该前缀的函数添加前缀?我在网上看到很多代码告诉我我不需要它.

你知道,事情会变得相当冗长吗? fn:not(fn:contains(...)), 代替not(contains(...))

思考?

谢谢!

xquery marklogic

7
推荐指数
1
解决办法
249
查看次数

使用MarkLogic的REST API设置文档权限

我正在尝试使用其余的api 在MarkLogic 6数据库中指定文档的权限.

这是我发送的权限元数据(permissions.xml):

<rapi:metadata xmlns:rapi="http://marklogic.com/rest-api"
     xmlns:prop="http://marklogic.com/xdmp/property">
    <rapi:permissions>
        <rapi:permission>
            <rapi:role-name>arole</rapi:role-name>
            <rapi:capability>update</rapi:capability>
        </rapi:permission>
        <rapi:permission>
            <rapi:role-name>brole</rapi:role-name>
            <rapi:capability>read</rapi:capability>
        </rapi:permission>
    </rapi:permissions>
</rapi:metadata>
Run Code Online (Sandbox Code Playgroud)

使用此命令:

curl --anyauth --user user:pass -X PUT -T permissions.xml \
    -H "Content-type: application/xml" \
    "http://localhost:8003/v1/documents?uri=/test/test.xml&category=permissions"
Run Code Online (Sandbox Code Playgroud)

当我看到之后的权限后,我看到:

arole (update)
brole (read)
rest-reader (read)
rest-writer (update)
Run Code Online (Sandbox Code Playgroud)

我希望它只拥有arole和brole的权限.

文档说:"如果没有明确设置权限,那么使用MarkLogic REST API创建的文档对其余读者角色具有读取权限,对rest-writer角色具有更新权限." (是的,我知道,这个例子不会创建一个新文档.但如果我添加一个新文档并通过其余的api使用多部分内容+元数据消息同时设置权限,它也会做同样的事情).

通过xdmp:document-insert使用相同用户和数据库的直接xquery调用(例如,具有权限)设置权限可以按预期工作.

如何保持其余的api添加这些额外的权限?

编辑:

MarkLogic有一张票,没有我知道的目标日期或版本.

如果其他人碰到这个,他们确实给了我一个解决方法:创建新角色(或更改现有角色),并给予他们休息阅读器和/或休息写入者'执行'权限,而不是让他们继承其余阅读器/ rest-writer角色,或者让用户直接分配其余读者/ rest-writer角色.

permissions rest marklogic

7
推荐指数
1
解决办法
619
查看次数

MarkLogic 8和服务器端JavaScript - 调试支持

有没有计划为服务器端JavaScript提供运行时调试支持?大多数XQuery API已经移植到JavaScript,但是"dbg"模块,它为您提供了查询执行的入口点,但却没有.由于MarkLogic 8嵌入了Google JavaScript引擎,它是否提供调试挂钩,这将允许第三方开发人员编写交互式调试器?

javascript debugging marklogic

7
推荐指数
1
解决办法
150
查看次数

MarkLogic的xQuery中的正则表达式

我正在尝试使用fn:matches正则表达式的XQuery ,但XQuery的MarkLogic实现似乎不允许十六进制字符表示.以下给出了" 无效的正则表达式 "错误.

(: Find text containing non-ISO-Latin characters :)
let $regex := '[^\x00-\xFF]'
let $results := fn:collection('mydocs')//myns:myelem[fn:matches(., $regex)]
let $count := fn:count($results)

return
    <figures count="{$count}">
        { $results }
    </figures>
Run Code Online (Sandbox Code Playgroud)

但是,这个没有给出错误.

let $regex := '[^a-zA-Z0-9]'
let $results := fn:collection('mydocs')//myns:myelem[fn:matches(., $regex)]
let $count := fn:count($results)

return
    <figures count="{$count}">
        { $results }
    </figures>
Run Code Online (Sandbox Code Playgroud)

在MarkLogic的XQuery实现中,有没有办法使用十六进制字符表示,或者给出相同结果的替代方法?

regex xquery marklogic

7
推荐指数
1
解决办法
1417
查看次数

使用.NET XCC库时如何设置xcc.txn.compatible属性的值?

我使用的是8.0版的Marklogic XCC连接器,我的数据库是Marklogic server 6.0.我在提交查询时遇到此异常RequestServerException,并且还更改了transactionMode.

我搜索这个出来,发现有与marklogic服务器的早期版本XCC 8.0的兼容性问题.

我得到的解决方法是将xcc.txn.compatible属性设置为true.现在我在任何marklogic dll中都找不到这个属性或命名空间(例如Marklogic.Xcc).

有什么建议我怎么能在哪里设置这个属性?提前致谢.

.net c# marklogic

7
推荐指数
1
解决办法
161
查看次数

Node.js/Express视频流(HTTP 206部分内容)

我在数据库(MarkLogic)中有一个二进制文件(mp4视频文件).我正在使用数据库的Node.js API以块的形式传输文档.设置如下所示:

html文件

<video controls="controls" width="600">
  <source src="/video/myvideo.mp4" type="video/mp4">
</video>
Run Code Online (Sandbox Code Playgroud)

然后在Express中我设置了一个处理/ video /:param路由的路由(在数据库中,视频有唯一的标识符,即字符串'/video/myvideo.mp4')

的node.js

// I'm only showing the relevant things in here

const serveVideo = (req, res) => {
  var stream = db.documents.read('/gopro/malta.mp4').stream('chunked');

  var chunks = [];
  var chunkBytes = 0;
  var start = 0;
  stream.on('data', (chunk) => {
    var headers;
    var range = req.headers.range;
    var total = 214335483; //total length of vid in bytes

    if (range) {
      var chunkSize = chunk.length;
      // (start === 0) ? start = …
Run Code Online (Sandbox Code Playgroud)

javascript video marklogic node.js express

7
推荐指数
1
解决办法
3754
查看次数

Marklogic 7:语义搜索

我一直在尝试探索Marklogic 7的RDF三重存储功能和语义搜索功能,然后使用SPARQL进行查询.我能够执行一些基本操作,例如:

xquery version "1.0-ml";
import module namespace sem = "http://marklogic.com/semantics"at"/MarkLogic/semantics.xqy";
sem:rdf-insert(sem:triple(sem:iri("http://example.org/ns/people#m"),
sem:iri("http://example.com/ns/person#firstName"), "Sam"),(),(),"my collection")
Run Code Online (Sandbox Code Playgroud)

创建一个三元组,然后使用以下SPARQL查询它:

PREFIX ab: <http://example.org/ns/people#>
PREFIX ac: <http://example.com/ns/person#>
SELECT ?Name
WHERE
{ ab:m ac:firstName ?Name . }
Run Code Online (Sandbox Code Playgroud)

它会检索Sam作为结果. 编辑:在我的用例中,我有一个带有10亿条记录的分隔文件(结构化数据),我使用MLCP将其记录到ML中,MLCP存储在ML中,例如:

<root>
<ID>1000-000-000--000</ID>
<ACCOUNT_NUM>9999</ACCOUNT_NUM>
<NAME>Vronik</NAME>
<ADD1>D7-701</ADD1>
<ADD2>B-Valentine</ADD2>
<ADD3>Street 4</ADD3>
<ADD4>Fifth Avenue</ADD4>
<CITY>New York</CITY>
<STATE>NY</STATE>
<HOMPHONE>0002600000</HOMPHONE>
<BASEPHONE>12345</BASEPHONE>
<CELLPHONE>54321</CELLPHONE>
<EMAIL_ADDR>abc@gmail.com</EMAIL_ADDR>
<CURRENT_BALANCE>10000</CURRENT_BALANCE>
<OWNERSHIP>JOINT</OWNERSHIP>
</root>
Run Code Online (Sandbox Code Playgroud)

现在,我想在上面的数据集中使用RDF/Semantic功能.但是,我无法理解是否需要将上述doc转换为RDF,如下所示(显示为<NAME>),假设这是正确的方法:

  <sem:triple>
    <sem:subject>unique/uri/Person
    </sem:subject>
    <sem:predicate>unique/uri/Name
    </sem:predicate>
    <sem:object datatype="http://www.w3.org/2001/XMLSchema#string"
    xml:lang="en">Vronik
    </sem:object>
  </sem:triple> …
Run Code Online (Sandbox Code Playgroud)

rdf semantic-web marklogic triplestore

6
推荐指数
1
解决办法
883
查看次数