微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

xsd – 在XML Schema中定义maxLength方面的语法是什么?

我正在尝试使用多个工具验证 XML模式,但我没有获得一致的消息,具体取决于我使用的工具.以下语法似乎是问题:

<xs:element name="Name" 
            minOccurs="1" 
            type ="xs:string" 
            maxLength = "125"/>

XML-Spy触发错误,而Notepad(windows)和XML copy Editor(Ubuntu)验证它.那语法是正确的,还是应该使用它:

<xs:element name="name">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:minOccurs="1"/>
      <xs:maxLength = "125"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

解决方法

你问“我的语法是否正确[在例1中]或者我应该写[例2]?”

都不是.

在第一个示例中,您在xs:element元素上使用了未声明的maxLength属性. (minOccurs属性可能允许也可能不允许,具体取决于上下文;正如Petru Gardea已经指出的那样,它在顶层元素声明上是不合法的.)不会在此引发错误的编辑器没有完成任务检查模式的XSD模式的一致性(更不用说XSD的完全约束).如果您想要对XSD架构文档进行可靠的验证,Xerces,Saxon,MSV或其他一些符合XSD的实现是您的朋友.

在你的第二个例子中,minOccurs已经不再是元素声明的属性(它可以在某些上下文中),并且在xs:restriction(no,wrong)中成为元素(no,wrong). maxLength facet正确表示为xs:restriction的元素子元素,但示例中的元素格式不正确;它似乎试图使用元素类型名称作为属性名称.如果删除错误的minOccurs元素并更正格式错误的maxLength元素,则剩余部分是Name的语法正确的顶级元素声明:

<xs:element name="name">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:maxLength value = "125"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。