如何将字符串参数解析为 XQuery 中的映射整数?
How to resolve a string parameter to mapped integers in XQuery?
我需要将整数值而不是字符串映射到 XQuery 函数中的参数。例如:
- 参数 1 的值为
value1
,我必须将其替换为整数 1
- 参数 2 的值为
value2
,我必须将其替换为整数 2
有不同的选项,具体取决于您可以使用的 XQuery 版本。
鉴于您通常需要将 valueN
解析为 N
,只需执行 substring-after($value, 'value')
。在下文中,我假设这不是那么容易,并用字母替换了 1
、2
、...,以防止出现此类 "easy" 解决方案。对于任何示例,您都可以 return 整数而不是字符串。
XQuery 1.0 兼容
if-then-else-链
可能非常明显。
let $value := 'value1'
return
if ($value eq 'value1')
then 'A'
else
if ($value eq 'value2')
then 'B'
else 'default'
在 XML 代码段中查找
定义一个 XML 结构,您随后可以查询该结构的值。如有必要,添加 /string()
以获取节点的字符串值而不是 <value/>
元素。
let $map :=
<values>
<value id="value1">A</value>
<value id="value2">B</value>
</values>
let $value := 'value1'
return
$map/value[@id=$value]
按顺序查找
可以将类似的解决方案应用于序列而不是外部 <values/>
元素,当然:
let $map := (
<value id="value1">A</value>,
<value id="value2">B</value>
)
let $value := 'value1'
return
$map[@id=$value]
仅限 XQuery 3.0
使用 switch 语句
Switch 语句对于一堆固定值来说是一种非常优雅的方式。提取为函数可能会增加可读性。
let $value := 'value1'
return
switch ($value)
case 'value1' return 'A'
case 'value2' return 'B'
default return 'default'
使用地图
如果支持,XQuery 映射是一个非常强大的功能,也可用于查找值。
let $map := map {
'value1': 'A',
'value2': 'B'
}
let $value := 'value1'
return
$map($value)
我需要将整数值而不是字符串映射到 XQuery 函数中的参数。例如:
- 参数 1 的值为
value1
,我必须将其替换为整数1
- 参数 2 的值为
value2
,我必须将其替换为整数2
有不同的选项,具体取决于您可以使用的 XQuery 版本。
鉴于您通常需要将 valueN
解析为 N
,只需执行 substring-after($value, 'value')
。在下文中,我假设这不是那么容易,并用字母替换了 1
、2
、...,以防止出现此类 "easy" 解决方案。对于任何示例,您都可以 return 整数而不是字符串。
XQuery 1.0 兼容
if-then-else-链
可能非常明显。
let $value := 'value1'
return
if ($value eq 'value1')
then 'A'
else
if ($value eq 'value2')
then 'B'
else 'default'
在 XML 代码段中查找
定义一个 XML 结构,您随后可以查询该结构的值。如有必要,添加 /string()
以获取节点的字符串值而不是 <value/>
元素。
let $map :=
<values>
<value id="value1">A</value>
<value id="value2">B</value>
</values>
let $value := 'value1'
return
$map/value[@id=$value]
按顺序查找
可以将类似的解决方案应用于序列而不是外部 <values/>
元素,当然:
let $map := (
<value id="value1">A</value>,
<value id="value2">B</value>
)
let $value := 'value1'
return
$map[@id=$value]
仅限 XQuery 3.0
使用 switch 语句
Switch 语句对于一堆固定值来说是一种非常优雅的方式。提取为函数可能会增加可读性。
let $value := 'value1'
return
switch ($value)
case 'value1' return 'A'
case 'value2' return 'B'
default return 'default'
使用地图
如果支持,XQuery 映射是一个非常强大的功能,也可用于查找值。
let $map := map {
'value1': 'A',
'value2': 'B'
}
let $value := 'value1'
return
$map($value)