属性声明上的XML Schema验证器错误

时间:2014-11-18 09:47:11

标签: xsd xsd-validation

我在验证时遇到错误:

错误 - 第14行,第36行:org.xml.sax.SAXParseException; lineNumber:14; columnNumber:36; s4s-elt-must-match.1:'simpleType'的内容必须匹配(注释?,(限制|列表|联合))。从:attribute。

开始发现问题

如何解决?

我的XML片段

<CHANEL_NAME lang="RUS/MD">N4</CHANEL_NAME>

和XSD:

<xs:element name="CHANEL_NAME">
    <xs:simpleType>
         <xs:restriction base="xs:string">
            <xs:length value="40"/>
        </xs:restriction>
        <xs:attribute name="lang">
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:enumeration value="MD"/>
                    <xs:enumeration value="RUS"/>
                    <xs:enumeration value="RUS/MD"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:simpleType>
</xs:element>

所以我在属性'lang'中只需要确定的值,如'MD','RUS'或'RUS / MD'。我看了例子,我猜它没关系。

或者只是元素的枚举而不是属性?

1 个答案:

答案 0 :(得分:0)

问题是第一个simpleType。简单类型不能具有属性。

您可能需要一个内容简单的复杂类型。类似的东西:

<xs:element name="CHANEL_NAME">
  <xs:complexType>
    <xs:simpleContent>
      <xs:restriction base="xs:string">
       <xs:length value="40"/>
       <xs:attribute name="lang">
         <xs:simpleType>
           <xs:restriction base="xs:string">
             <xs:enumeration value="MD"/>
             <xs:enumeration value="RUS"/>
             <xs:enumeration value="RUS/MD"/>
           </xs:restriction>
         </xs:simpleType>
       </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
</xs:element>

(未经测试。)

还要考虑命名您的匿名类型。

PS。另请考虑使用/限制xs:language作为语言类型。

Всегонаилучшего。