将元素限制为URL

时间:2012-05-16 22:22:35

标签: xml xsd atom-feed

我有这个现有的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>

1 个答案:

答案 0 :(得分:1)

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

正如spec所说,

  

......在实践中,[anyURI]定义只是非常适度   最低限度符合处理者的义务。