У меня есть XML, как это, я хочу убедиться, что каждый параметр parameterDef конкретного preDefinedRecipe должен быть подмножеством parameterDef его corecponding recipeStructureDef.
например) Все параметры «BREAD» из предопределенных рецептов должны принадлежать recipeStructureDef «BREAD»
<recipeConfig>
<recipeStructures> <!-- recipe template/ recipeStructureTypes-->
<recipeStructureDef mnemonic="BREAD" title="Recipe.Bread"/>
<parametersTab>
<parameterTabDef title="Recipe.Bread.Main">
<parameterGroup title="group1">
<parameterDef mnemonic="SUGAR_QTY"/>
<parameterDef mnemonic="SALT_QTY"/ >
</parameterGroup>
</parameterTabDef>
</parametersTab>
<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>
У меня есть следующий код, который содержит все parmams для параметров в recipeStructures, но я хочу , проверяйте это каждый preDefinedRecipe type = "" против recipeStructureDef mnemonic = ""
Я предполагаю, что нужно добавить переменную в XPATH, но не уверен, как действовать дальше.
<xs:key name="paramKey">
<xs:selector xpath="./recipeStructures/recipeStructureDef/parametersTab/parameterTabDef/parameterGroup/parameterDef" />
<xs:field xpath="@mnemonic" />
</xs:key>
<xs:keyref name="paramKeyRef" refer="paramKey">
<xs:selector xpath="./preDefinedRecipes/preDefinedRecipe/parameterDef"/>
<xs:field xpath="@ref"/>
</xs:keyref>
</xs:element>
Любое руководство будет полезно