XSD在xs:sequence中的min-max出现的变量值?

时间:2014-02-12 16:11:44

标签: xml xsd xsd-validation

我正在尝试创建以下类型的XSD

<xs:element name="Command">
    <xs:complexType>
        <xs:attribute name="NumberofArgument" type="xs:integer" use="required"/>
        <xs:sequence>
                <xs:element name="Argument" minOccurs=variable>
                    <xs:complexType>
                        <xs:attribute name="argumentName" type="xs:string"/>
                        <xs:attribute name="argumentType" type="argumentType"/>
                    </xs:complexType>
                </xs:element>
        </xs:sequence>          
    </xs:complexType>   
</xs:element>

因此,无论我创建什么XML,我将首先定义属性“NumberOfArguments”,然后我将用于验证给定命令的实际参数数量。

<Command CommandName="String" number="1">
    <Argument argumentName="String" argumentType="defined"/>
</Command>

所以我的问题是,是否有可能实现这一点,如果不是其他方式这样做。

1 个答案:

答案 0 :(得分:1)

Saxon架构处理器有一个实验扩展,允许您声明可在XSD 1.1断言中引用的参数。但是标准语言中没有任何内容可以允许它。

可能适合您的方法是将minOccurs定义为XML实体引用

minOccurs="&min;"

然后在外部文件中定义实体的扩展,您可以在验证剧集之前设置该文件。