元素 'all' 无效、放错位置或出现太频繁
Element 'all' Is Invalid, Misplaced, Or Occurs Too Often
我正在尝试允许以下 XML 模式:
<Locales>
<Locale Language="FR">
<Name>La Jetée</Name>
</Locale>
<Locale Language="EN">
<Name>The Jetty</Name>
</Locale>
</Locales>
这是我目前拥有的 XSD,但它给出了有关属性的错误。当我删除它验证的属性时
<xs:element name="Locales" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="Locale" maxOccurs="unbounded" minOccurs="1">
<xs:complexType>
<xs:attribute name="Language" use="optional"/>
<xs:all>
<xs:element name="Name" type="xs:string" minOccurs="0"/>
</xs:all>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
我得到的错误是
Element 'all' Is Invalid, Misplaced, Or Occurs Too Often.
首先,您应该能够使用 http://www.freeformatter.com/xsd-generator.html 等工具来推断所需的 xsd 结构。
对于上述情况,类似以下的方法应该有效:
<xs:element name="Locales">
<xs:complexType>
<xs:sequence>
<xs:element name="Locale" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="Name"/>
</xs:sequence>
<xs:attribute type="xs:string" name="Language" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
你的XSD很好,除了你必须移动xs:all
beforexs:attribute
;它可能不会在 xs:attribute
之后出现,因此出现错误。
这是应用了上述更改的 XSD 片段:
<xs:element name="Locales">
<xs:complexType>
<xs:sequence>
<xs:element name="Locale" maxOccurs="unbounded" minOccurs="1">
<xs:complexType>
<xs:all>
<xs:element name="Name" type="xs:string" minOccurs="0"/>
</xs:all>
<xs:attribute name="Language" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
它将成功验证您的 XML。请注意,它还会删除 minOccurs="0"
,因为出现约束可能不会出现在顶级元素上。
我正在尝试允许以下 XML 模式:
<Locales>
<Locale Language="FR">
<Name>La Jetée</Name>
</Locale>
<Locale Language="EN">
<Name>The Jetty</Name>
</Locale>
</Locales>
这是我目前拥有的 XSD,但它给出了有关属性的错误。当我删除它验证的属性时
<xs:element name="Locales" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="Locale" maxOccurs="unbounded" minOccurs="1">
<xs:complexType>
<xs:attribute name="Language" use="optional"/>
<xs:all>
<xs:element name="Name" type="xs:string" minOccurs="0"/>
</xs:all>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
我得到的错误是
Element 'all' Is Invalid, Misplaced, Or Occurs Too Often.
首先,您应该能够使用 http://www.freeformatter.com/xsd-generator.html 等工具来推断所需的 xsd 结构。
对于上述情况,类似以下的方法应该有效:
<xs:element name="Locales">
<xs:complexType>
<xs:sequence>
<xs:element name="Locale" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="Name"/>
</xs:sequence>
<xs:attribute type="xs:string" name="Language" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
你的XSD很好,除了你必须移动xs:all
beforexs:attribute
;它可能不会在 xs:attribute
之后出现,因此出现错误。
这是应用了上述更改的 XSD 片段:
<xs:element name="Locales">
<xs:complexType>
<xs:sequence>
<xs:element name="Locale" maxOccurs="unbounded" minOccurs="1">
<xs:complexType>
<xs:all>
<xs:element name="Name" type="xs:string" minOccurs="0"/>
</xs:all>
<xs:attribute name="Language" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
它将成功验证您的 XML。请注意,它还会删除 minOccurs="0"
,因为出现约束可能不会出现在顶级元素上。