Различие / сходство между xsd: any и xsd: anyType - PullRequest
23 голосов
/ 22 марта 2011

Я читаю о XML, XML-схеме, DTD и не совсем понимаю разницу между xsd: any и xsd: anyType .

Может кто-нибудь объяснить это мне или указать на хорошую статью?(пожалуйста, не связывайтесь со спецификациями XML-схемы - я прочитал это и запутался)

TIA

Ответы [ 2 ]

30 голосов
/ 22 марта 2011

Этот пост объясняет это хорошо.Я цитирую:

xsd: anyType - это тип, подобный xsd: integer (хотя xsd: anyType является особенным в том смысле, что он может действовать как простой или сложный тип и, по существу, не накладывает никаких ограничений надерево, которое оно проверяет - воспринимайте его свободно как аналог языка Schema для java.lang.Object).

Пример использования:

<xsd:element name="e" type="xsd:anyType"/>

Это будет означать, что элементы с именем <e> могут иметь любой контент, любые атрибуты и т. Д.

xs: любой - это подстановочный знак, используемый в качестве термина в модели содержимого.Например:

<xsd:complexType name="T">
  <xsd:sequence>
    <xsd:element ref="A"/>
    <xsd:any />
    <xsd:element ref="C"/>
  </xsd:sequence>
</xsd:complexType>

Элементы типа T должны иметь содержимое <A/><???/><C/>, где <???> может быть любым именованным элементом.Теперь, если вы внимательно посмотрите, есть приближение к определению xsd: anyType, приведенному для справки в Рекомендации, и он использует подстановочный знак xsd: any в качестве средства сказать, что он допускает любые элементы.

Также взгляните на XML-схему .

28 голосов
/ 09 апреля 2013

Сообщение в списке рассылки, связанное с ответом на койке, не было мне понятно, пока я не создал следующий пример:

Со схемой anyType:

<xsd:complexType name="Outer">
    <xsd:element name="e" type="xsd:anyType" />
</xsd:complexType>

, которая допускает этот формат:

<Outer>
    <e> // must be called "e"
        // but anything can go inside
    </e>
</Outer>

И с любой схемой:

<xsd:complexType name="Outer">
    <xsd:any />
</xsd:complexType>

, которая допускает этот формат:

<Outer>
    //anything can go inside
</Outer>

Таким образом, anyType является типом, а any является элементом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...