如何约束XML元素';s的有效性基于其属性之一#x27;XSD中的s值?

如何约束XML元素';s的有效性基于其属性之一#x27;XSD中的s值?,xml,properties,xsd,Xml,Properties,Xsd,如果我有以下XML: <properties> <parameter key="number">1</parameter> <parameter key="letter">A</parameter> </properties> 1. A. …我希望“properties”的支持XSD强制所有“key”属性为“number”的“parameter”标记只接受文本内容中的数字,所有“letter”标记只接受

如果我有以下XML:

<properties>
    <parameter key="number">1</parameter>
    <parameter key="letter">A</parameter>
</properties>

1.
A.
…我希望“properties”的支持XSD强制所有“key”属性为“number”的“parameter”标记只接受文本内容中的数字,所有“letter”标记只接受字母,是否可以使用XSD表示该约束场景?如果没有,是否可以在任何其他模式语言下这样做

请注意,我当然完全知道我可以做到:

<properties>
    <number>1</number>
    <letter>A</letter>
</properties>

1.
A.
…但这项工作的目的是压缩比上述更复杂的场景

简言之,我正在寻找一种方法来构建一个“非详细”的基于XML的属性文件,该文件能够处理潜在的复杂值约束,甚至包括可能的约束
与上述示例中的“attr”或“key”处于同一级别的属性的数量。

对于您的问题,这将是一个非常直观的XSD 1.1。它是基于


无效的XML,例如:

<properties>
    <parameter key="number">A</parameter>
    <parameter key="letter">1</parameter>
</properties>

A.
1.
将产生以下输出(我使用自己的工具,它使用Xerces for XSD 1.1)

加载[]时出错,第2行位置42 cvc数据类型有效。1.2.1: “A”不是“integer”的有效值

加载[],第2行时出错 位置42 cvc复杂类型。2.2:元素“参数”必须没有 元素[children],并且该值必须有效

加载时出错 [],第3行位置42 cvc模式有效:值“1”无效 关于类型“aletter”的模式“[A-Z]”

出错时 加载[],第3行位置42 cvc复杂类型。2.2:元件 “parameter”不能有元素[子元素],且值必须为 有效

<properties>
    <parameter key="number">A</parameter>
    <parameter key="letter">1</parameter>
</properties>