XML元素名称

时间:2010-09-15 20:23:44

标签: xml nomenclature

我需要为公司重新定义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'>。并非所有同事都同意。

我的想法是否正确,任何人都可以提供他们在实践中发现有用的元素命名法的指导原则吗?

3 个答案:

答案 0 :(得分:1)

考虑elderlychildren的情况。标签应该定义是什么 - 在这种情况下,它们都是特定于某类人的剂量指令。但是使用childrenelderly并不会传达这些信息 - 那里没有任何关系。如果它是<instructions target="elderly">...</instructions>,则保持这种关系。对于不同的instructions,两者都是targets

对于dosageadministration部分,这两个部分都可以被视为药物的属性。你在这里做什么取决于整个文档的结构以及如何解析它。在我看来,dosageadministration非常不同。如果您将其定义为OOL中的对象,则可以:

class Medication
{
    Dictionary<string, string> dosageInstructions; //or <PersonType, string>, preferably
    string administrationInfo;
}

这两者都是不同的属性,它们之间没有真正的平行(除此之外,它们都是药物的属性)。我不认为抽象它比现在更有用,但它可以根据整个文档的结构以及它将如何被使用来论证。

例如,如果要打印出一组键值对(例如,一个键为administration且该值为信息),则表示一堆不同的属性,那就是要走的路。但是dosage具有与administration不同的结构,所以我不认为那个特定的抽象会有用。如果每种药物都有一组固定的可能属性(剂量,给药信息等),所有这些都将被区别对待,那么在我看来,对所有药物使用不同的标签是合乎逻辑的。

就一般指导原则而言,我通常认为“我将如何将此文档定义为对象”,然后考虑该对象的XML序列化将是什么。这对我有用,因为我更习惯于使用物体,但你的里程可能会有所不同。当然,有些情况并不是最好的方法 - 例如,如果您真正代表文档,就像HTML一样,那么这就不是最佳选择。但是,如果您使用XML来定义常规数据结构,它通常应该可以工作。

答案 1 :(得分:1)

我发现通常情况下,如您所提供的示例中所定义的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>

当然,最终这一切都取决于具体的应用程序,但一般来说,我会尝试将现实世界中的enities和属性尽可能多地抽象到XML,但不是更多。

所以在这个例子中,“section”元素是一种过度抽象。

答案 2 :(得分:1)

我认为这有点远。我遵循一个规则,它是否具有脱离语境的语义意义?章节可能脱离了上下文,但你知道你正在丢失相关的语义信息。那么我们需要知道什么呢?它包含doosage信息。那么 doseinfo 会更好吗?

对老人和儿童采用相同的方法,我们会假设这些元素代表老人和儿童。嗯...不是真的。如果他们的名字反映了他们的所作所为,那就更像是:

<dosageinfo>
<dosage recipient="elderly">Blah</dosage>
<dosage recipient="children"></dosage>
</dosageinfo>

那就是说,这肯定不是一种正式的方法 - 我从未真正看到过提出的正式方法。

虽然我在这里,并且具有以各种方式处理临床数据的丰富经验,但我还建议您尝试将一些自由文本转换为正式的XML数据,即使您必须使用自然语言解析收集一些。任何形式化的数据,即使是经过人工智能收集的数据,只要其正确表示,就可以在将来更容易地查询信息。它可能与您的场景无关,但我觉得值得考虑。

自由文本中的数据仅用作信息。关系中的数据是数据和信息。