<name> 标签可以有一个@nullValue 并且里面仍然有文本吗?

Can a <name> tag have a @nullValue and still have text inside?

我正在研究的 CCDA 生成器的当前实现,在 <name> tag(在 header 部分,其中没有 <text> 可用)上打印一条消息未找到:

<name>No information</name>

我知道表达未找到信息的正确方法是通过@nullFlavor 属性:

<name nullFlavor="NI" />

但是现在应用程序上有一个组件可以读取标签上的值并将其显示在 CCDA 文档的 human-readable 视图中。如果我只使用@nullflavor,显示该名称的字段将是空的,而不是 "No information".

为了避免更改此类组件,我正在考虑添加@nullFlavor 属性 仍然在那里显示消息:

<name nullFlavor="NI">No information</name>

我知道这在语法上是正确的,因为我已经用 reference validator 测试过它并通过了。我的问题是:从语义的角度来看,它有效吗?

是的,有效。有问题的特定规范 - v3 抽象数据类型,简单地说:

invariant(ST x) where x.nonNull {
   x.headCharacter.notEmpty;
};

所以如果没有nullFlavor,那么一定有一些内容。但不适用相反的规则;如果有 nullFlavor

就可以有内容

虽然没有限制,但我的观点是,这不是一个好的策略。我知道您对此组件有限制,但是,当您构建 CDA 时,请务必记住它是要与所有人共享的东西,我绝不会期望在 nullFlavor 属性元素。