1

我有这个现有的 XSD,它试图将一个值限制为一个 URL,但它不起作用。id 为空白,文档仍然有效。当我输入任何文本时,它也会验证。

<xsd:schema xmlns:atom="http://www.w3.org/2005/Atom" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3.org/2005/Atom" elementFormDefault="qualified" attributeFormDefault="unqualified">
...

<xsd:complexType name="feedType">
<xsd:choice minOccurs="3" maxOccurs="unbounded">
    <xsd:element name="id" type="atom:idType" minOccurs="1" maxOccurs="1"/>
...

<xsd:complexType name="idType">
    <xsd:annotation>
        <xsd:documentation>
            The Atom id construct is defined in section 4.2.6 of the format spec.
        </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
        <xsd:extension base="xsd:anyURI">
            <xsd:attributeGroup ref="atom:commonAttributes"/>
        </xsd:extension>
    </xsd:simpleContent>
</xsd:complexType>

…………

<feed xmlns="http://www.w3.org/2005/Atom" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.w3.org/2005/Atom ../XMLschemas/atom/2005/v/0.2/atom.xsd">
    <id>https://mydomain.com</id>
4

1 回答 1

1

anyURI还允许相对 URI,并且 afaik 空字符串是有效的相对 URI。您可以添加一个pattern方面来要求“://”以更接近您想要的内容。

正如规范所说,

...在实践中,[anyURI] 定义仅对最低限度符合要求的处理器施加了非常适度的义务。

于 2012-05-18T11:47:40.180 回答