0

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

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

最好的问候卡洛斯乔丹

4

1 回答 1

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 教科书中查找正确的语法。

于 2012-07-06T15:13:39.600 回答