0

我需要使用 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吗?

我能够对属性进行子验证如何使用条件类型分配使类型取决于属性值

4

1 回答 1

0

使用断言而不是条件类型赋值可能更容易,我认为从您对规则的描述中判断并不容易;但无论哪种方式,这当然是可能的。

例如

<xs:assert test="if (@Name='MyData' and @DataType='varbinary')
                 then tokenize(@Keys, ',') = 'Name'
                 else empty(@Keys)"/>
于 2018-01-09T10:16:06.830 回答