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

Define simple type such as xsd:string in a new namespace?

这应该是直截了当的,但我看到的所有地方似乎都只有关于复杂类型的信息。

假设我定义了一个命名空间xmlns:address="http://...."。现在,根据我的阅读,我可以执行以下操作:<xsd:element name="street" type="address:sAdd"/> 然后定义复杂类型 <xsd:complexType name="sAdd">.

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

能否请您验证我的回答或让我知道这样做的正确方法?

不,命名空间前缀不能级联:address:xsd:string 不是 well-formed 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>