Xml 如何在XSD中的XPATH中使用变量

Xml 如何在XSD中的XPATH中使用变量,xml,xsd,xsd-validation,Xml,Xsd,Xsd Validation,我有这样一个XML,我想确保特定预定义配方的每个parameterDef ref都应该是其CoreConding配方的parameterDef的子集 例如,预定义配方中“面包”的所有参数应属于配方定义“面包” <recipeConfig> <recipeStructures> <!-- recipe template/ recipeStructureTypes--> <recipeStructureDef mnemonic=

我有这样一个XML,我想确保特定预定义配方的每个parameterDef ref都应该是其CoreConding配方的parameterDef的子集

例如,预定义配方中“面包”的所有参数应属于配方定义“面包”

  <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>

.....
.....
我有以下代码,其中所有参数都属于RecipesStructures中的参数,但我想根据RecipesStructureDef助记符=“”验证每个预定义的Recipe type=“”

我假设方法是在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>


任何指导都会很有帮助

在xs:key/xs:keyref中定义的XPath子集不允许使用变量


XSD 1.1中允许的断言等的(更大的)XPath子集也是如此。我不完全理解您的要求,但在我看来,即使没有变量,XSD 1.1断言也能完成这项工作。

要求是糖量、盐量、油量应始终在特定的条件下。在这种情况下,“preDefinedRecipe”中的OIL_QTY->BREAD不是对应的参数,所以它应该会弹出错误。我认为您对key和keyref的定义是错误的。我不明白你为什么认为变量会有用。