题
我需要为公司重新定义XML文档和模式。例如,所讨论的文档分为多个部分,每个部分都包含有关药物的信息;
<dosage>overview of dose info
<elderly>doses for elderly patients</elderly>
<children>doses for children</children>
</dosage>
<administration>info about administering the med...</administration>
我坚信应更改元素名称以反映元素是什么 <section>
带有描述内容的属性: <section displayName='dosage'>
. 。并非我所有的同事都同意。
我的思想是否正确,任何人都可以为他们在实践中发现有用的元素命名法提供指导原则吗?
解决方案
考虑 elderly
和 children
. 。标签应该定义什么 是 - 在这种情况下,它们都是特定于某种类型的人的剂量指令。但是使用 children
和 elderly
不会传达此信息 - 那里没有关系。相反是 <instructions target="elderly">...</instructions>
, ,维持这种关系。两者都是 instructions
对于不同的 targets
.
为了 dosage
和 administration
部分,两者都可以认为是药物的特性。您在这里所做的事情取决于整个文档的结构以及如何解析。在我看来,这 dosage
与 administration
. 。如果您将其定义为OOL中的对象,那么您将拥有:
class Medication
{
Dictionary<string, string> dosageInstructions; //or <PersonType, string>, preferably
string administrationInfo;
}
这两者都是不同的属性,它们之间没有真正的平行性(嗯,除了它们都是药物的特性)。我认为抽象比现在更多的抽象是有用的,但是这是根据整个文档的结构以及将如何使用它来争论的。
例如,如果要打印出键值对的列表,(例如,一个关键是 administration
对于一堆不同的属性,该值就是信息),这就是要走的路。但 dosage
与 administration
, ,所以我认为该特定的抽象不会有用。如果每种药物都有一组固定的可能属性(剂量,管理信息等)的固定属性,那么我认为使用不同标签的所有标签是合乎逻辑的。
就一般指导原则而言,我通常认为“我将如何将本文档定义为对象”,然后考虑该对象的XML序列化。这对我有用,因为我习惯于使用对象,但是您的里程可能会有所不同。当然,在某些情况下,这不是最好的方法 - 例如,如果您真正代表了一个 文档, ,就像HTML一样,那不是要走的路。但是,如果您使用XML定义常规数据结构,则通常应该起作用。
其他提示
我发现通常,将XML定义为您提供的示例要清楚一些。
<dosage>
<elderly>doses for elderly patients</elderly>
<children>doses for children</children>
</dosage>
<administration>info about administering the med...</administration>
作为您提议的命名法的极端示例,您可能会以此为目的:
<field name="dosage">
<field name="elderly">doses for elderly patients</field>
<field name="children">doses for children</field>
</field>
当然,最终,这一切都取决于特定的应用程序,但是通常我会尽量将从现实世界中的敌人和属性提取到XML,但要尽可能多地将其抽象。
因此,在此示例中,“部分”元素是一个过度的。
我认为这有点远。我遵循一个规则,它是否从上下文中具有语义意义?部分可能是从上下文中有意义的,但是您知道您正在失去相关的语义信息。那么,我们需要了解什么呢?它包含doosage信息。也许 dosageinfo 会更好?
遵循相同的老年人和儿童的方法,我们会认为这些要素代表老年人和儿童。嗯...不是真的。如果他们的名字反映了他们的工作,他们将更像:
<dosageinfo>
<dosage recipient="elderly">Blah</dosage>
<dosage recipient="children"></dosage>
</dosageinfo>
也就是说,这当然不是一种形式的方法 - 我从未真正看到过提出的正式方法。
尽管我在这里,并且在以各种方式处理临床数据方面拥有丰富的经验,但我也建议您尝试将一些自由文本纳入正式的XML数据中,即使您必须使用自然语言解析来收集一些它。任何形式化的数据,甚至是AI清洗的数据,只要其正确表示,都可以使查询信息在将来更加容易。这可能与您的情况无关,但我觉得值得考虑。
自由文本中的数据仅作为信息有用。关系中的数据是数据和信息。