我有以下XSD:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns="http://www.vibrogym.com/schema"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.vibrogym.com/schema"
elementFormDefault="qualified" >
<xs:import schemaLocation="http://www.w3.org/2001/xml.xsd"
namespace="http://www.w3.org/XML/1998/namespace"/>
<xs:complexType name="localizedNameType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute ref="xml:lang" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:element name="exercise">
<xs:complexType>
<xs:sequence>
<xs:element name="name"
type="localizedNameType"
minOccurs="1"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
以下XML:
<?xml version="1.0" encoding="UTF-8"?>
<exercise xmlns="http://www.vibrogym.com/schema">
<name xml:lang="en">test</name>
</exercise>
PHPStorm提供以下验证错误:Element name doesn't have the required attribute lang
。
PHPStorm在给我验证错误时是否正确?如果是这样,我做错了什么?
更新
显然use="required"
类型的localizedNameType
属性会触发验证错误;为什么这是错的?
答案 0 :(得分:2)
不,PHPStorm不正确;该文档对您提供的架构有效。正如kjhughes推测的那样,问题可能与其处理xml
命名空间时的错误有关。如果添加他建议的命名空间声明会导致PHPStorm接受该文档,那么您有两个错误需要报告:无法正确验证此示例,并且无法在具有{{名称空间声明的版本上报告命名空间良好格式错误1}}命名空间。 (前缀xml
是保留的,因此不允许声明前缀为xml
的命名空间。)