Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xsd 使子标记依赖于XML模式中父级的属性_Xsd - Fatal编程技术网

Xsd 使子标记依赖于XML模式中父级的属性

Xsd 使子标记依赖于XML模式中父级的属性,xsd,Xsd,我创建了一个XML文件,如下所示 <monitor> <widget name="Widgets/TestWidget1"> <state code="VIC" /> <state code="TAS" /> </widget> <widget name="Widgets/TestWidget2"> <client code="someclie

我创建了一个XML文件,如下所示

  <monitor>
    <widget name="Widgets/TestWidget1">
        <state code="VIC" />
        <state code="TAS" />
    </widget>
    <widget name="Widgets/TestWidget2">
        <client code="someclient" />
    </widget>
  </monitor>

标记的name属性告诉解析器要加载哪个小部件(它们是asp.net用户控件)


我正在尝试为上面的内容创建一个模式文件,问题是
中支持的子标签依赖于name属性。因此TestWidget1支持
标记,TestWidget2支持
您有几个选项。最简单、最直接的方法就是重新思考一下你的问题。如果元素E1和元素E2的合法内容不同,那么最简单的设计就是将它们称为不同的东西,因为在XSD和dtd中,元素的合法内容取决于元素类型名称。魔鬼代言人会问你“如果你想让不同种类的小部件遵守不同的规则,为什么你要告诉验证器它们是同一种类的小部件?告诉验证器真相,给他们不同的名字。所以不要打电话等等,打电话给他们,然后告诉他们。”

在XSD 1.1中,您还可以使用条件类型分配或断言来定义属性和子级的合法组合上的约束,但并非每个模式感知编辑器都具备分析条件类型分配规则和属性以及理解提示内容所需的技能