如何通过 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:keyxs:keyRef

recipeConfig 的元素声明中,声明带有选择 .//recipeStructureDef 和字段 @mnemonicxs:key;以及相应的 xs:keyRef 以及选择 .//predefinedRecipe 和字段 @type.