如何约束XML元素';s的有效性基于其属性之一#x27;XSD中的s值?
如果我有以下XML:如何约束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”标记只接受
<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>