基于xml内容的XSD限制

时间:2012-07-06 14:46:23

标签: xml xsd

我是XSD / XMl的新手,正在尝试为我使用的项目中使用的xml文件创建模板。该架构将由visual studio中的几位同事使用,我的主要目标是进行错误检查和自动完成功能。

然而,我希望在XSD上拥有我的xml模板的一个功能,但我不知道这是否可行。我认为不是,但我只想确定。

基本上,xml看起来像这样:

<root>
    <parameters>
        <parameter name="@param1"/>
        <parameter name="@param2"/>
        <parameter name="@param3"/>
    </parameters>

    <test>
        <parameter_value parameter_name="@param1" value="whatever"/>
        <parameter_value parameter_name="@param2" value="whatever"/>
    </text>

</root>

这个想法首先是用户&#34;定义&#34;参数,然后他在特定的测试中分配它们的值。我的问题是天气与否我可以在&#34; parameter_name&#34;上定义限制。属性,以便只能输入此特定xml中的声明参数。这可能吗?

祝你好运 Carlos Jourdan

1 个答案:

答案 0 :(得分:0)

是的,您可以在XSD 1.0中执行此操作。通常是这样的:

<xs:element name="root">
  <...>
  <xs:key name="paramName">
    <xs:selection xpath="parameters/parameter"/>
    <xs:field xpath="@name"/>
  </xs:key>
  <xs:keyref refer="paramName">
    <xs:selection xpath="text/parameter_value"/>
    <xs:field xpath="@parameter_name"/>
  </xs:keyref>
</xs:element>

这是来自内存,因此请准备好在您喜欢的XSD教科书中查找正确的语法。