我想创建一个 XML 模式集合来验证以下 XML 列中的一些 XML:
DECLARE @xml as xml
SET @xml='
<R C="firstName" O="" N="Fred" />
<R C="lastName" O="" N="Bloggs" />
<R C="emailAddress" O="" N="[email protected]" />
<R C="phone" O="" N="" />
<R C="mobile" O="" N="" />
<R C="fax" O="" N="" />
<R C="OrganisationId" O="" N="286" />
'
SELECT AuditDetail.Col.value('(@C)[1]','nvarchar(80)') DatabaseColumnName,
AuditDetail.Col.value('(@O)[1]','nvarchar(MAX)') OldValue,
AuditDetail.Col.value('(@N)[1]','nvarchar(MAX)') NewValue
FROM @xml.nodes('/R') AS [AuditDetail](Col)
验证应该是 D 是 nvarchar(80) O 是 nvarchar(MAX) N 是 nvarchar(MAX)
有人可以告诉我架构集合脚本的样子吗?
该方案可能如下所示。
它定义了一个
R
带有 attributes的元素C
,O
并且N
whereC
限制为 80 个字符。根据该模式的有效 XML 文档将仅包含一个元素
R
作为根节点。您在这里拥有的是一个 XML 片段,SQL Server 可以很好地处理这些片段。实际上,XML 数据类型的默认行为是允许 XML 片段。
创建架构:
测试:
如果您想将 XML 更改为仅验证 XML 文档,您需要
document
在变量声明中指定。