1

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

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

4

3 回答 3

1

考虑 和 的elderly情况children。标签应该定义它什么——在这种情况下,它们都是特定类型人的剂量说明。但是使用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 来定义常规数据结构,它通常应该可以工作。

于 2010-09-15T20:38:58.860 回答
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>

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

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

于 2010-09-15T20:43:33.640 回答
1

我认为这有点远。我遵循一个规则,它是否使语义脱离上下文?部分可能脱离上下文有意义,但您知道您正在丢失相关的语义信息。那么我们需要知道什么?它包含剂量信息。那么也许doseinfo会更好?

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

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

也就是说,这当然不是一种正式的方法——我实际上从未见过提出的正式方法。

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

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

于 2010-09-15T20:53:52.020 回答