考虑 和 的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 来定义常规数据结构,它通常应该可以工作。