在新命名空间中定义简单类型,例如 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>
这应该是直截了当的,但我看到的所有地方似乎都只有关于复杂类型的信息。
假设我定义了一个命名空间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>