[英]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.