在新的命名空间中定义简单类型,例如xsd:string?

时间:2016-01-02 17:45:08

标签: xml xsd xsd-validation xml-validation

这应该是直截了当的,但我认为它似乎只有复杂类型的信息。

让我们说我已经定义了一个名称空间xmlns:address="http://...."。现在从我所读到的内容开始,我可以执行以下操作:<xsd:element name="street" type="address:sAdd"/>然后定义复杂类型<xsd:complexType name="sAdd">

但是,我无法找到像xsd:string这样的非复杂类型的情况。我的猜测就像<xsd:element name="street" type="address:xsd:string"/>

您能否确认我的答案或让我知道这样做的正确方法?

1 个答案:

答案 0 :(得分:2)

不,名称空间前缀不能级联:address:xsd:string格式不正确QName

xsd:string在所有命名空间中都是相同的。这是应该的。

如果您希望 字符串与xsd:string不同,请根据xsd:string为字符串定义类型,并根据您的字符串将其置于命名空间(或不是)设计偏好:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:mst="http://www.example.com/MyStringType"
           targetNamespace="http://www.example.com/MyStringType">

  <xs:element name="root" type="mst:MyStringType"/>

  <xs:simpleType name="MyStringType">
    <xs:restriction base="xs:string">
      <xs:maxLength value="256" />
    </xs:restriction>
  </xs:simpleType>
</xs:schema>