Xml XQuery中的字符串操作
我的xml文件有一行:Xml XQuery中的字符串操作,xml,string,xquery,Xml,String,Xquery,我的xml文件有一行: <asin ISBN="0001714600 9780001714601" code="aB1234Av"> 我想提取ISBN[0],即 00017146009780001714601 或ISBN[1]即 00017146009780001714601 我尝试了子字符串和标记化,但它不符合我的愿望。这是我的密码: <strong>{for $asin in doc('amazon.xml')/asin/@ISBN return (to
<asin ISBN="0001714600 9780001714601" code="aB1234Av">
我想提取ISBN[0],即
00017146009780001714601
或ISBN[1]即
00017146009780001714601
我尝试了子字符串和标记化,但它不符合我的愿望。这是我的密码:
<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>
{doc('amazon.xml')/asin/@ISBN中的$asin
返回(标记化($asin/data(.),'\s'))}
(或)
{doc('amazon.xml')/asin/@ISBN中的$asin
返回(子字符串($asin/data(.),1))}
如何从中获取该值?使用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>
let$input:=
设$isbn字符串:=$input/@isbn/string()
让$isbn项:=标记化($isbn字符串,'\s'))
返回
对于isbn美元项目中的isbn美元项目
返回{$isbn项目}
首先获取@ISBN属性的字符串值,然后对其进行标记化,然后迭代标记化的项,逐个输出它们
PS:在XPath中,位置谓词以1开头,因此ISBN[0]将不返回任何内容。使用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>
let$input:=
设$isbn字符串:=$input/@isbn/string()
让$isbn项:=标记化($isbn字符串,'\s'))
返回
对于isbn美元项目中的isbn美元项目
返回{$isbn项目}
首先获取@ISBN属性的字符串值,然后对其进行标记化,然后迭代标记化的项,逐个输出它们
PS:在XPath中,位置谓词以1开头,因此ISBN[0]将不返回任何内容。
tokenize(@ISBN,'\s')[1]
和tokenize(@ISBN,'\s')[2]
应该可以很好地工作,或者您也可以在(@ISBN,,)之前做子字符串(@ISBN,'\s'))
标记化(@ISBN,'\s')[1]
和标记化(@ISBN,'\s')[2]
应该可以很好地工作,或者您也可以在(@ISBN,')之前执行子字符串(
),在(@ISBN,')之后执行子字符串(
)您想有条件地输出一个或另一个值,还是想全部输出?总是最多有两个值吗?是有条件地输出一个值还是另一个值?还是全部输出?总是最多有两个值吗?嗯,只有当知道只有两个值以这种方式表示时,才能(轻松地)使用substring(),这就是为什么我选择tokenize()。当然。当我们只有一个输入数据的示例,并且没有一般规则时,总是很难知道什么代码最合适;这就是为什么我给出了两个选项。嗯,只有当知道只有两个值以这种方式表示时,才能(轻松地)使用substring(),这就是为什么我选择tokenize()。当然。当我们只有一个输入数据的示例,并且没有一般规则时,总是很难知道什么代码最合适;这就是为什么我给出了两个选择。