如何正确定义XML模式中的元素,表示在数据库表中实现为自动递增整数的主键?
例如,考虑表:
Person (
person_id int identity primary key,
person_name nvarchar(64) null
)
一方面,XML模式应该强制执行关键的person_id元素(我想minOccurs = 1,nillable = false)。另一方面,新文档(尚未保留)应该在没有person_id元素的情况下进行验证。
答案 0 :(得分:0)
您是否必须为入站和出站使用相同的模式(这些模式可能是单独的模式)吗?
假设对第一个的回答是肯定的,我敢打赌让person_id成为可选的 - 因为那就是它。
我们有一个规则,我们在XML元素的定义中使用nillable =“true”,这些元素应始终存在于符合模式的实例中。使用xsi:nil允许处理应用程序区分无意中对模式无效的XML实例,以及那些已经正确构造和提交但缺少信息的XML实例。
你可以在这里使用nillable,但这似乎反直觉,因为实际上不需要信息(在加载点)。我个人更喜欢看两个模式 - 一个用于“请求”,一个用于“响应”。
此外,架构验证的业务目的是什么?是否有理由将架构加载到数据库中?