我需要使用xsd对xml属性进行条件强制执行。
例如
<Database>
<Table Name="[Summary].[Aggregates]">
<Columns>
<Column Name="MyData" DataType="varbinary" Keys="Name,AddressLine1,AddressLine2,PostalCode,EmailAddress,Phone"></Column>
<Column Name="User"></Column>
</Columns>
</Table>
<Table Name="[Summary1].[Aggregates]">
<Columns>
<Column Name="MyData" DataType="varbinary" Keys="Name,AddressLine1,AddressLine2,PostalCode,EmailAddress,Phone"></Column>
<Column Name="User"></Column>
</Columns>
</Table>
<Database>
我需要创建xsd,它将强制执行验证,例如,如果Column元素具有Name =“MyData”和DataType =“varbinary”,那么它必须具有另一个名为Keys的属性,其中至少有一个值为Key =“Name” 否则没有该列的属性。
使用xsd可以吗?
我可以对属性How to make type depend on attribute value using Conditional Type Assignment
进行子验证答案 0 :(得分:0)
使用断言而不是条件类型分配可能更容易,我不认为从规则描述中判断很容易;但不管怎样,它当然是可能的。
例如
<xs:assert test="if (@Name='MyData' and @DataType='varbinary')
then tokenize(@Keys, ',') = 'Name'
else empty(@Keys)"/>