Xml xsd:anySimpleType对xsd:anyType有什么限制,它们在哪里枚举?

Xml xsd:anySimpleType对xsd:anyType有什么限制,它们在哪里枚举?,xml,xsd,Xml,Xsd,允许类型为anyType的元素具有任何属性和任何值空间内容,包括子元素。对于anySimpleType规定的限制在哪里?我对只允许指定(由给定的XSD文档)属性的限制特别感兴趣 假设libxml2的模式验证符合规范,下面显示了anySimpleType的至少一个限制: foo.xsd: <?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

允许类型为
anyType
的元素具有任何属性和任何值空间内容,包括子元素。对于
anySimpleType
规定的限制在哪里?我对只允许指定(由给定的XSD文档)属性的限制特别感兴趣

假设
libxml2
的模式验证符合规范,下面显示了
anySimpleType
的至少一个限制:

foo.xsd

<?xml version="1.0" encoding="utf-8"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Foo">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Bar" type="xs:anyType" />
        <xs:element name="Baz" type="xs:anySimpleType" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>
验证:

$ xmllint --noout foo.xml --schema foo.xsd 
foo.xml:5: element Baz: Schemas validity error : Element 'Baz', attribute 'abc': The attribute 'abc' is not allowed.
foo.xml fails to validate

anySimpleType
是一种抽象的基本简单类型。这是完全不受限制的

如果要指定只允许属性列表,则这是“复杂类型”的工作,例如
simpleType
。(这些名字很好,是吗?=/)

[编辑您的示例]:

啊,好吧,我知道你现在在问什么了

在XSD中,“简单”类型不能有属性,而不是通过限制。(一些解析器允许一些默认属性,例如NS中的{'type'、'nil'、'schemaLocation'、'noNamespaceSchemaLocation'};这些属性对于扩展此基本类型很有用。)它们是原子的、文字的,等等—任何可以是XML中属性的/value/的东西


anySimpleType
正是这个名字所暗示的——一个完全不受限制的简单类型。它不能接受属性“abc”,因为简单类型不能有属性-它们是属性值。如果您希望元素接受属性列表,正如我上面所说的,这是“复杂”类型的工作,而不是“简单”类型的工作

规范中介绍了这一点:

一个可以是复杂的,也可以是简单的()。只有复杂类型才能具有属性

xsd:anyType
xsd:anySimpleType
(以及所有复杂类型)之间的关系可以在W3C的xsd建议中的图表中清楚地看到:


谢谢你的回复;我刚刚用一个验证失败的例子更新了这个问题。
$ xmllint --noout foo.xml --schema foo.xsd 
foo.xml:5: element Baz: Schemas validity error : Element 'Baz', attribute 'abc': The attribute 'abc' is not allowed.
foo.xml fails to validate