1

我在 xsd 模式中定义了 nillable 十进制元素,如下所示:

<xs:element name="myDecimalValue" nillable="true" type="xs:decimal" /> 

这是一个杰出的领域,我想检查它的表达式形状是否为零。我可以像这样使用 xpath() 函数:

xpath("string(//*[local-name()='myDecimalValue']/@*[local-name()='nil'])") == "true"

但对于简单的空值检查来说,它看起来有点复杂。所以我想知道我是否遗漏了什么并且有更好的方法来做到这一点?

4

2 回答 2

0

您可以尝试使用决定形状而不是 xpath

你的决定形状会像这样询问 myDecimalValue 是否为空

 msgName.myDecimalValue != null here

比你可以继续你的逻辑

如果您使用杰出的字段,则使用它对其他开发人员更具可读性

编辑:

你能试试
varString = System.Convert.ToString(msgName.myDecimalValue);

然后询问 varString 是否为空

我试过了,它编译得很好

希望它有帮助:)

于 2012-04-21T11:28:25.157 回答
0

我怀疑这无法实现。

具体来说,来自http://support.microsoft.com/kb/942250

消息上下文中不允许具有空值的属性。因此,如果将空值写入消息上下文,则该值将被删除。

(这在与Promoted 和Distinguished 属性相关的文档部分中,所以我假设它适用于两者)。

因此,看起来您的 xpath 解决方案可能是所需的解决方案,因为该可分辨属性无论如何都不会出现在消息上下文中。

于 2012-06-18T19:15:50.663 回答