XQuery:何时使用 data() 函数?

bog*_*bog 5 xml xquery

我不明白什么时候应该使用该data()功能。示例: $path/@name$path/data(@name)?有时,当我不添加时data(),会出现错误,只能添加它来修复。

wst*_*wst 4

通常,data()当您想要提取存储在 XML 中并由架构定义的值的原子类型时,应使用它。例如,假设您有一个架构将此元素定义为xs:dateTime

<my-time>2016-01-28T10:30:45.954716-06:00</my-time>
Run Code Online (Sandbox Code Playgroud)

调用data()<my-time>返回一个xs:dateTime类型值。

然而,大多数时候,data()只会表现得像string()。我怀疑在您的代码中有时您期望一个字符串但返回一个属性或节点。有时,由于类型强制,这“有效”;其他时候,它会抛出异常。这当然取决于您的代码。

请密切注意代码中的节点类型和原子值,这样您会更清楚为什么会收到这些错误。如果你想要的是一个字符串,那么使用string()代替data()