注释(xs:documentation/xs:appinfo)是与XML模式注释类似的实例文档



xs:annotation元素可以在XML模式中用于提供结构化元信息(xs:documentation用于人,xs:appinfo用于机器(。是否有类似的东西可以将此类信息添加到实例文档中,或者我们是否仅限于将内容填充到非结构化XML注释中?

背景/理由

用例是将结构化信息添加到代表FHIR验证器测试用例的实例文档中。人类读者需要了解给定测试/文档的意图,测试框架需要知道在验证该文档可能导致的许多错误/警告中应该查找哪个特定的错误或警告(因为许多错误会导致大量后续错误,这些错误通常早在导致验证器恐慌的实际错误之前很久就得到了输出(。

最终会有数千个测试用例,每个用例都有几个测试步骤/文档,因此将相关信息编码为文件/目录名是不可行的。另一方面,我希望将测试文档及其元信息放在一起,而不是将信息分散到多个文件中。

在每个文档中添加一个配套文件将使文件数量增加一倍,并允许成对的两个文件分开。使用文件名作为从某个元文件/数据库检索元信息的键也是如此。每个目录有一个元文件对人类来说有一些好处,但这也可以通过动态收集文件中的元信息(或作为构建步骤(来轻松获得。

如果测试文档包含必要的元数据,那么整体管理起来就更容易了。例如,我可以将一个文件移动到子目录should_fail_but_passes,直到某个问题得到解决,而无需更改文件和/或编辑元文件/数据库。

您可以使用processing-instructions。处理指令有两个组成部分,一个是目标内容,另一个是可选内容:

https://en.wikipedia.org/wiki/Processing_Instruction

XML处理指令包含在<??>中,包含一个目标和一些内容(可选(,这些内容是节点值,不能包含序列?>

<?PITarget PIContent?>

PI的优点是它不在内容标记和XSD验证之外,大多数默认呈现都会忽略它

它提供了一种使用PI CCD_;键";用于查找和分类,然后内容可以拥有您决定的任何内容。

因此,如果您的XML中有一条处理指令:

<?expectedError MissingRequiredElementException?>

您可以使用CCD_ 10名称"来访问它;expectedError":

//processing-instruction("expectedError")

最新更新