【问题标题】:XML Schema validator error on attribute declaration属性声明上的 XML Schema 验证器错误
【发布时间】:2014-11-18 09:47:11
【问题描述】:

我收到验证错误:

错误 - 第 14、36 行:org.xml.sax.SAXParseException;行号:14;列号:36; s4s-elt-must-match.1:'simpleType'的内容必须匹配(注解?,(限制|列表|联合))。发现问题始于:属性。

如何解决?

我的 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”。我读了例子,我想没关系。

还是只枚举元素而不枚举属性?

【问题讨论】:

    标签: xsd xsd-validation


    【解决方案1】:

    问题是第一个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 作为语言类型。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-10
      • 2010-09-14
      • 2019-08-02
      相关资源
      最近更新 更多