XML IntelliJ 无法识别模式唯一约束
XML Schema unique constraint not recognised in IntelliJ
在尝试了很多方法以通过唯一约束在 IntelliJ 中获取错误后,我开始怀疑 IntelliJ 是否能够识别它。
我尝试的最后一个模式来自这个 post Unique constraint in XML Schema
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.brabantia.com/XMLSchema/ESBConfig"
xmlns:tns="http://www.brabantia.com/XMLSchema/ESBConfig"
elementFormDefault="qualified">
<element name="authors">
<complexType>
<sequence>
<element name="author" maxOccurs="unbounded" type="string"/>
</sequence>
</complexType>
<unique name="uniqueAuthor">
<selector xpath="author"/>
<field xpath="."/>
</unique>
</element>
</schema>
我用它来生成 IntelliJ 的 XML。
<?xml version="1.0" encoding="UTF-8"?>
<esb:authors xmlns:esb="http://www.brabantia.com/XMLSchema/ESBConfig">
<!--1 or more repetitions:-->
<esb:author>string</esb:author>
<esb:author>string</esb:author>
<esb:author>string</esb:author>
</esb:authors>
应该会显示错误,但实际上并没有。
在 Generate Instance Document From Schema
向导中我检查了 Enable restriction check
和 Enable unique check
。
所有其他检查都有效,例如枚举和模式。
有人能告诉我这是模式中的东西还是 IntellJ 根本不支持的东西吗?
添加xmlns:esb="http://www.brabantia.com/XMLSchema/ESBConfig"
并更改为<selector xpath="esb:author"/> in your schema
:
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.brabantia.com/XMLSchema/ESBConfig"
xmlns:esb="http://www.brabantia.com/XMLSchema/ESBConfig"
elementFormDefault="qualified">
<element name="authors">
<complexType>
<sequence>
<element name="author" maxOccurs="unbounded" type="string"/>
</sequence>
</complexType>
<unique name="uniqueAuthor">
<selector xpath="esb:author"/>
<field xpath="."/>
</unique>
</element>
</schema>
结果:
在尝试了很多方法以通过唯一约束在 IntelliJ 中获取错误后,我开始怀疑 IntelliJ 是否能够识别它。
我尝试的最后一个模式来自这个 post Unique constraint in XML Schema
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.brabantia.com/XMLSchema/ESBConfig"
xmlns:tns="http://www.brabantia.com/XMLSchema/ESBConfig"
elementFormDefault="qualified">
<element name="authors">
<complexType>
<sequence>
<element name="author" maxOccurs="unbounded" type="string"/>
</sequence>
</complexType>
<unique name="uniqueAuthor">
<selector xpath="author"/>
<field xpath="."/>
</unique>
</element>
</schema>
我用它来生成 IntelliJ 的 XML。
<?xml version="1.0" encoding="UTF-8"?>
<esb:authors xmlns:esb="http://www.brabantia.com/XMLSchema/ESBConfig">
<!--1 or more repetitions:-->
<esb:author>string</esb:author>
<esb:author>string</esb:author>
<esb:author>string</esb:author>
</esb:authors>
应该会显示错误,但实际上并没有。
在 Generate Instance Document From Schema
向导中我检查了 Enable restriction check
和 Enable unique check
。
所有其他检查都有效,例如枚举和模式。
有人能告诉我这是模式中的东西还是 IntellJ 根本不支持的东西吗?
添加xmlns:esb="http://www.brabantia.com/XMLSchema/ESBConfig"
并更改为<selector xpath="esb:author"/> in your schema
:
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.brabantia.com/XMLSchema/ESBConfig"
xmlns:esb="http://www.brabantia.com/XMLSchema/ESBConfig"
elementFormDefault="qualified">
<element name="authors">
<complexType>
<sequence>
<element name="author" maxOccurs="unbounded" type="string"/>
</sequence>
</complexType>
<unique name="uniqueAuthor">
<selector xpath="esb:author"/>
<field xpath="."/>
</unique>
</element>
</schema>
结果: