在我的XSD中,我正在尝试使用alternative
标记。出于某些原因,我在IDE(PHPStorm)中出现了这个错误:
无效内容以元素'xs:alternative'...
开头
XSD
<xs:complexType name="tableType">
<xs:sequence>
<xs:element type="columnType" name="column" maxOccurs="unbounded" minOccurs="0"/>
<xs:element type="keyType" name="key" maxOccurs="unbounded" minOccurs="0">
<xs:alternative test="@type='index'" type="keyIndexType"/>
<xs:alternative test="@type='unique'" type="KeyUniqueType"/>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="name" use="required"/>
</xs:complexType>
我看到了I should not add something more to use the 1.1 xsd version,但我是否需要支持alternative
代码的内容?
答案 0 :(得分:1)
感谢@kjhughes,我找到了解决方案。 我不得不从XSD 1.0处理器切换到XSD 1.1处理器。
在PHPstorm中:“设置”面板&gt;语言与框架&gt;默认XML Shemas
注意:在申请&#39;之后更改,您必须重新启动PHPStorm 。
答案 1 :(得分:0)
您的XSD处理器必须支持 XSD 1.1 才能使用xs:alternative
(Conditional Type Assignment)。 XSD 1.0 处理器不允许xs:alternative
作为xs:element
的子级,并会提供错误消息,例如您收到的消息。因此,您可以得出结论,您的XSD处理器仅支持 XSD 1.0 。
有关CTA的工作示例,请参阅How to make type depend on attribute value using Conditional Type Assignment(但当然,这也需要 XSD 1.1 )。