繁体   English   中英

XQuery中的字符串操作

[英]String operations in XQuery

我的xml文件有一行:

<asin ISBN="0001714600 9780001714601" code="aB1234Av">

我要提取ISBN [0],即

0001714600 9780001714601

或ISBN [1],即

0001714600 9780001714601

我尝试了子字符串和标记化,但是它不符合我的期望。 这是我的代码:

<strong>{for $asin in doc('amazon.xml')/asin/@ISBN
    return (tokenize($asin/data(.),'\s'))}</strong>

(OR)

<strong>{for $asin in doc('amazon.xml')/asin/@ISBN
    return (substring($asin/data(.),1))}</strong>

我应该如何从中获得价值?

使用tokenize()可以。

如果您将它们拆开,那么会更容易看到发生了什么:

let $input := <asin ISBN="0001714600 9780001714601" code="aB1234Av"/>
let $isbn-string := $input/@ISBN/string()
let $isbn-items := tokenize($isbn-string, '\s')
    return
        for $isbn-item in $isbn-items
            return <strong>{$isbn-item}</strong>

首先,获取@ISBN属性的字符串值,然后对其进行标记化,然后遍历标记化的项目,并将它们逐个输出。

PS:在XPath中,位置谓词以1开头,因此ISBN [0]将不返回任何内容。

tokenize(@ISBN, '\\s')[1]tokenize(@ISBN, '\\s')[2]应该可以很好地工作,或者您也可以先执行substring-before(@ISBN, ' ')substring-after(@ISBN, ' ')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM