当我们在simpleType中指定name参数时,会得到一个错误:

"s4s-att-not-allowed: Attribute 'name' cannot appear in element 'simpleType'."

如:
 <xs:simpleType name="lengthValue">
   <xs:restriction base="xs:string">
     <xs:maxLength value="14"/>
   </xs:restriction>
 </xs:simpleType>

这个例子正确吗?
为什么我们会出现上述错误?

最佳答案

您的片段可能正常,也可能不正常,这取决于它的上下文。因为您得到了给定的错误,所以您的上下文似乎是一个本地的嵌套定义,其中不允许@name
xs:simpleType在全局使用时可能会被命名。这是可以的:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:simpleType name="lengthValue">
    <xs:restriction base="xs:string">
      <xs:maxLength value="14"/>
    </xs:restriction>
  </xs:simpleType>
</xs:schema>

xs:simpleType在全局使用时可能没有名称。这不好:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="e">
    <xs:simpleType name="lengthValue">
      <xs:restriction base="xs:string">
        <xs:maxLength value="14"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
</xs:schema>

要解决这个问题:
要么
删除name属性,或
使lengthValue的定义是全局的,并引用它
使用@type
下面是如何将@namexs:simpleType一起使用的示例:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:simpleType name="lengthValue">
    <xs:restriction base="xs:string">
      <xs:maxLength value="14"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="e" type="lengthValue"/>
</xs:schema>

10-08 14:45