<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
属性元素。
我正在研究的 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
属性元素。