如何通过 XSD 验证一个属性值是否始终是 XML 中另一个属性的值
How to validate if one attribute value is always a value of another attribute in XML by XSD
我有一个这样的 xm 结构,我想用 XSD
验证 XMl
<recipeConfig>
<recipeStructures> <!-- recipe template/ recipeStructureTypes-->
<recipeStructureDef mnemonic="BREAD" title="Recipe.Bread"/>
<recipeStructureDef mnemonic="CAKE" title="Recipe.Bread"/>
<recipeStructureDef mnemonic="PANCAKE" title="Recipe.Bread"/>
</recipeStructures>
<preDefinedRecipes>
<preDefinedRecipe type="BREAD" name="sweet bread" ordinal="1" writerLevel="Service">
<parameterDef ref="SUGAR_QTY" value="3" />
<parameterDef ref="SALT_QTY" value="3" />
<parameterDef ref="OIL_QTY" value="1" />
</preDefinedRecipe>
</preDefinedRecipes>
</recipeConfig>
我想检查 <preDefinedRecipe type="BREAD">
是否始终是来自
recipeStructureDef mnemonic= ""
换句话说'preDefinedRecipe'下的类型应该总是'recipeStructureDef '
中的属性助记符的值
所以我必须做一些检查。
我被困在这里,我不知道如何 proceed.Below 是我的代码形式的一部分 XSD
<xs:complexType name="preDefinedRecipeType">
<xs:sequence>
<xs:element type="preDefinedRecipeParameterDefType" name="parameterDef" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
<xs:attribute type="xs:string" name="type" use="required"/>
<xs:attribute type="xs:string" name="name" use="required"/>
<xs:attribute type="xs:byte" name="ordinal" use="required"/>
<xs:attribute type="xs:string" name="writerLevel" use="required"/>
</xs:complexType>
在此先感谢您的帮助
查找 xs:key
和 xs:keyRef
。
在 recipeConfig
的元素声明中,声明带有选择 .//recipeStructureDef
和字段 @mnemonic
的 xs:key
;以及相应的 xs:keyRef
以及选择 .//predefinedRecipe
和字段 @type
.
我有一个这样的 xm 结构,我想用 XSD
验证 XMl<recipeConfig>
<recipeStructures> <!-- recipe template/ recipeStructureTypes-->
<recipeStructureDef mnemonic="BREAD" title="Recipe.Bread"/>
<recipeStructureDef mnemonic="CAKE" title="Recipe.Bread"/>
<recipeStructureDef mnemonic="PANCAKE" title="Recipe.Bread"/>
</recipeStructures>
<preDefinedRecipes>
<preDefinedRecipe type="BREAD" name="sweet bread" ordinal="1" writerLevel="Service">
<parameterDef ref="SUGAR_QTY" value="3" />
<parameterDef ref="SALT_QTY" value="3" />
<parameterDef ref="OIL_QTY" value="1" />
</preDefinedRecipe>
</preDefinedRecipes>
</recipeConfig>
我想检查 <preDefinedRecipe type="BREAD">
是否始终是来自
recipeStructureDef mnemonic= ""
换句话说'preDefinedRecipe'下的类型应该总是'recipeStructureDef '
中的属性助记符的值所以我必须做一些检查。 我被困在这里,我不知道如何 proceed.Below 是我的代码形式的一部分 XSD
<xs:complexType name="preDefinedRecipeType">
<xs:sequence>
<xs:element type="preDefinedRecipeParameterDefType" name="parameterDef" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
<xs:attribute type="xs:string" name="type" use="required"/>
<xs:attribute type="xs:string" name="name" use="required"/>
<xs:attribute type="xs:byte" name="ordinal" use="required"/>
<xs:attribute type="xs:string" name="writerLevel" use="required"/>
</xs:complexType>
在此先感谢您的帮助
查找 xs:key
和 xs:keyRef
。
在 recipeConfig
的元素声明中,声明带有选择 .//recipeStructureDef
和字段 @mnemonic
的 xs:key
;以及相应的 xs:keyRef
以及选择 .//predefinedRecipe
和字段 @type
.