代码之家  ›  专栏  ›  技术社区  ›  Rakim Brigham

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

  •  3
  • Rakim Brigham  · 技术社区  · 9 年前

    这应该是直截了当的,但无论我在哪里看,似乎都只有关于复杂类型的信息。

    假设我定义了一个命名空间 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 回复  |  直到 9 年前
        1
  •  4
  •   kjhughes    9 年前

    否,命名空间前缀不能级联: 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>