Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.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
Xml 如何在XSD中定义具有可选和必需元素的组?_Xml_Xsd - Fatal编程技术网

Xml 如何在XSD中定义具有可选和必需元素的组?

Xml 如何在XSD中定义具有可选和必需元素的组?,xml,xsd,Xml,Xsd,这是XML: <employee> <name>John Doe</name> <!-- exactly one mandatory element --> <age>35</age> <!-- exactly one mandatory element --> <manager/> <!-- optional element, can be absent --> </e

这是XML:

<employee>
  <name>John Doe</name> <!-- exactly one mandatory element -->
  <age>35</age> <!-- exactly one mandatory element -->
  <manager/> <!-- optional element, can be absent -->
</employee>

无名氏


这就是我验证的方式:

关键可能是您使用的验证器,和/或您得到的确切错误

如果我使用这个XSD(与您的XSD非常相似,除了一些小的清理和使用全局元素来匹配您的实例XML):


这样的XML是完全有效的(注意,我已经注释掉了manager元素):


无名氏
35
manager
元素添加回,XML仍然有效(根据minOccurs=0)


回到我的开场白。。。你必须说出你正在使用的验证器。。。上述内容适用于.NET和Java(stock Xerces)——它们应该如此。

manager元素不应该存在,如果您不想将其发送给其他用户。我的意思是在XML中。还要检查您是否需要xsd中元素的类型。我一点也不了解:(您能再解释一下吗?您的manager元素的类型是什么?您拥有的顶级xml有manager元素(第三个)。如果您不打算发送管理器数据,请不要在其中使用此元素。此外,XSD中应该提到管理器的类型,我看到XSD文件中没有提到任何类型。因此,它应该类似于@Zeus,不是真的…您不需要为元素定义类型(在这种情况下,默认值开始生效,它是anyType。我想你错了,这就是我得到的:
元素'employee'的内容不完整。{manager}中应该有一个。
(当
manager
不存在时)。我使用的是Java Xerces。你能给我一个指向规范这一部分的链接吗?(我也使用的是2.11)部分,滚动到模式组件约束:所有组有限。错误消息意味着不能在元素粒子上使用minOccurs;规范明确规定:
组的{particles}中所有粒子的{max occurs}必须为0或1。
minOccurs定义为0或1.Hm..我也发现了这一点(这证实了您所说和显示的内容)…那么为什么我的模式不起作用呢?…(我有一个比上面更复杂的示例,但在语法和语义上类似)我发布了一个链接,指向用于验证的Java代码(请参阅更新的问题)
<xs:complexType name="employee">
  <xs:all>
    <xs:element name="name" type="xs:string"/>
    <xs:element name="age" type="xs:string"/>
    <xs:element name="manager" minOccurs="0"/>
  </xs:all>
</xsl:complexType>
<?xml version="1.0" encoding="utf-8"?>
<!--XML Schema generated by QTAssistant/XML Schema Refactoring (XSR) Module (http://www.paschidev.com)-->
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="employee">
        <xsd:complexType>
            <xsd:all>
                <xsd:element name="name" type="xsd:string"/>
                <xsd:element name="age" type="xsd:string"/>
                <xsd:element name="manager" minOccurs="0"/>
            </xsd:all>
        </xsd:complexType>
    </xsd:element>
</xsd:schema>
<employee>
  <name>John Doe</name> <!-- exactly one mandatory element -->
  <age>35</age> <!-- exactly one mandatory element -->

    <!--
  <manager/> 
    -->
    <!-- optional element, can be absent -->
</employee>