Объяснение схемы XML (XSD): полное руководство по определению юридической структуры XML-документов
Объяснение схемы XML (XSD): полное руководство по определению юридической структуры XML-документов

XML-схема описывает структуру XML-документа. Язык схемы XML также называется определением схемы XML (XSD).

Язык кода:xml
копировать
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element name="note">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="to" type="xs:string"/>
      <xs:element name="from" type="xs:string"/>
      <xs:element name="heading" type="xs:string"/>
      <xs:element name="body" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

</xs:schema>

Целью XML-схемы является определение легальных строительных блоков XML-документа.

  • может появитьсясуществоватьдокументвэлементисвойство
  • Номер субэлемента (и порядок)
  • Тип данных элементарности
  • Стандартное и фиксированное значение элементарности.

Зачем изучать XML-схему

В мире XML ежедневно используются сотни стандартизированных форматов XML. Многие из этих стандартов XML определяются схемой XML. XML-схема — это (более мощная) замена DTD на основе XML.

XML-схема поддерживает типы данных

Одним из самых больших преимуществ XML-схемы является поддержка типов данных.

  • Легче описать законность содержания документа.
  • Легче проверить правильность данных
  • Легче определить ограничения данных (ограничения на данные)
  • Легче определить схемы данных (форматы данных).
  • Легче конвертировать данные между различными типами данных.

Схема XML использует синтаксис XML

Еще одна важная особенность XML-схем заключается в том, что они написаны на XML.

  • Нет необходимости изучать новый язык
  • Можетиспользовать XML DOM Режим манипуляции
  • Можетиспользовать XSLT режим преобразования

XML-схемы расширяемы, поскольку они написаны на XML. Используя определения расширяемой схемы, вы можете:

  • Повторное использование шаблонов в других шаблонах
  • Получайте свои собственные типы данных из стандартных типов.
  • Ссылка на несколько схем в одном документе

XML-схема обеспечивает безопасность передачи данных

При отправке данных от отправителя получателю вы должны убедиться, что оба имеют одинаковое «ожидание» содержимого. Используя XML-схему, отправитель может описать данные так, чтобы их мог понять получатель.

Например, дату «11.03.2004» можно интерпретировать как 3 ноября в некоторых странах и 11 марта в других странах. Однако при таком типе данных XML элемент:

Язык кода:xml
копировать
<date type="date">2004-03-11</date>

Взаимопонимание содержимого обеспечивается, поскольку тип данных XML «дата» требует формата «ГГГГ-ММ-ДД».

Просто иметь правильный формат недостаточно

Правильно сформированный XML-документ — это документ, который соответствует правилам синтаксиса XML, например:

  • Должно начинаться с декларации XML
  • Должен быть уникальный корневой элемент
  • Открывающий тег должен иметь соответствующий закрывающий тег.
  • элемент чувствителен к регистру
  • Все элементы должны быть закрыты
  • Все элементы должны быть правильно вложены
  • Все значения атрибутов должны быть заключены в кавычки
  • Необходимо использовать специальные символы, использовать сущности

Даже если документы правильно отформатированы, они все равно могут содержать ошибки, которые могут иметь серьезные последствия. Рассмотрим следующий сценарий: вместо 5 лазерных принтеров вы заказываете лазерные принтеры за 5 долларов. Используя XML-схему, большинство этих ошибок можно обнаружить с помощью программного обеспечения проверки.

Как использовать XSD

Документы XML могут ссылаться на DTD или схему XML.

Простой XML-документ

учитыватьэтот Простой XML-документ,названный"note.xml":

Язык кода:xml
копировать
<?xml version="1.0"?>
<note>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

В следующем примере показан файл с именем «note.dtd». DTD файл, который определяет вышеуказанное XML Документ("note.xml")изэлемент:

Язык кода:xml
копировать
<!ELEMENT note (to, from, heading, body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>

XML Schema

В следующем примере показан файл с именем «note.xsd». XML Schema файл, который определяет вышеуказанное XML Документ("note.xml") изэлемент:

Язык кода:xml
копировать
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element name="note">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="to" type="xs:string"/>
      <xs:element name="from" type="xs:string"/>
      <xs:element name="heading" type="xs:string"/>
      <xs:element name="body" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

</xs:schema>

note элемент — сложный тип, поскольку он содержит другой элемент. Другой элемент (к, from, heading, body) да простые типы, потому что они не содержат других элементов.

Ссылка на DTD

Этот XML-документ ссылается на DTD:

Язык кода:xml
копировать
<?xml version="1.0"?>
<!DOCTYPE note SYSTEM "note.dtd">
<note>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

Ссылка на XML-схему

XSD - <schema> элемент

<schema> элементдакаждый XML Schema изкореньэлемент。

<schema> элемент

<schema> элементдакаждый XML Schema изкореньэлемент:

инструктировать экземпляр XML-документа существует. Любое объявление, объявленное в этой схеме, должно быть квалифицировано в пространстве имен.

Справочные схемы в документах XML

Этот XML-документ ссылается на XML-схему:

Язык кода:xml
копировать
<?xml version="1.0"?>
<note xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="note.xsd">
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

Указано объявление пространства имен по умолчанию. Это объявление сообщает валидатору схемы

Если у вас есть пространство имен экземпляра схемы XML:

ты можешь использовать schemaLocation свойство. Это свойство имеет два значения, разделенных пробелами. Первое значение — это используемое пространство имен. Второе значение должно использоваться для пространства имен XML Расположение узора:

Простые элементы XSD

XML-схема определения элемента в XML-файле.

Простой элемент XML, содержащий только текстовый элемент. Оно не может содержать никакой другой элементилисвойства.

Что такое простой элемент

Простой элемент XML, содержащий только текстовый элемент. Оно не может содержать никакой другой элементилисвойства.

Однако ограничение «только текст» вводит в заблуждение. Текст может относиться к одному из множества различных типов. Это может быть один из типов, включенных в определение схемы XML (логическое значение, строка, дата и т. д.), или это может быть пользовательский тип, который вы определяете самостоятельно.

Вы также можете добавить фасеты к типу данных, чтобы ограничить его содержимое, или потребовать, чтобы данные соответствовали определенному шаблону.

Определение грамматики просто элемент

Язык кода:xml
копировать
<xs:element name="xxx" type="yyy"/>
в xxx Имя даэлемента,гг Тип данных даэлемента.

XML-схемы имеют множество встроенных типов данных. К наиболее распространенным типам относятся:

xs:string
xs:decimal
xs:integer
xs:boolean
xs:date

Пример

Вот некоторые XML элемент

Язык кода:xml
копировать
<lastname>Refsnes</lastname>
<age>36</age>
<dateborn>1970-03-27</dateborn>
Следующее простое определение да соответствует:

<xs:element name="lastname" type="xs:string"/>
<xs:element name="age" type="xs:integer"/>
<xs:element name="dateborn" type="xs:date"/>

Простое значение элемента по умолчанию и фиксированное значение

Простой элемент может иметь указанное значение по умолчанию и фиксированное значение.

Значение по умолчанию автоматически присваивается элементу, если не указано другое значение.

существуют В следующем примере значением по умолчанию является «красный»:

<xs:element name="color" type="xs:string" default="red"/>

Элементу также автоматически присваиваются фиксированные значения, и вы не можете указать другие значения.

существуют В следующем примере фиксированное значение — «красное»:

<xs:element name="color" type="xs:string" fixed="red"/>

XSD-атрибуты

Все свойства объявлены как простые типы.

Простой элемент не может иметь свойство. если элемент, имеющий свойство, считается сложным типом. Но само дасвойство всегда декларируется как простой тип.

Как определить свойства

Синтаксис определения атрибутов:

Язык кода:xml
копировать
<xs:attribute name="xxx" type="yyy"/>

в xxx дасвойствоизимя,yyy Указывает тип данных атрибута.

XML-схемы имеют множество встроенных типов данных. К наиболее распространенным типам относятся:

Язык кода:xml
копировать
xs:string
xs:decimal
xs:integer
xs:boolean
xs:date
xs:time

Пример, Ниже приведены свойства XML элемент

Язык кода:xml
копировать
<lastname lang="EN">Smith</lastname>

Ниже приведено соответствующее определение атрибута.

Язык кода:xml
копировать
<xs:attribute name="lang" type="xs:string"/>

Значения по умолчанию и фиксированные значения для свойств

Свойства могут иметь заданные значения по умолчанию или фиксированные значения.

Значения по умолчанию автоматически присваиваются свойствам, если не указаны другие значения.

существуют В следующем примере значением по умолчанию является «EN»:

Язык кода:xml
копировать
<xs:attribute name="lang" type="xs:string" default="EN"/>

Свойствам также автоматически присваиваются фиксированные значения, и вы не можете указать другие значения.

существуют. В следующем примере фиксированным значением является «EN»:

Язык кода:xml
копировать
<xs:attribute name="lang" type="xs:string" fixed="EN"/>

Необязательные и обязательные атрибуты

Свойства по умолчанию являются необязательными. Чтобы указать, что свойство является обязательным, используйте атрибут «use»:

Язык кода:xml
копировать
<xs:attribute name="lang" type="xs:string" use="required"/>

Ограничения на контент

Когда XML-элементилисвойство имеет определенный тип данных, это накладывает ограничения на содержимое верногоэлементилисвойства.

если XML Тип элемента «xs:date» и включите что-то вроде "Hello World" строка, элемент не будет проверен.

использовать XML режим, вы также можете добавить XML Элементисвоство Добавить пользовательские ограничения. Эти ограничения называются грани. Подробнее об этом вы можете узнать в следующей главе. facets информация.

Ограничения/ограничения XSD

Ограничения используются для определения XML Приемлемые значения элементилисвойства. верно XML Предел элемента называется facets。

Ограничения на значения

Следующий пример определяет файл с именем "age" элемент и налагаемые ограничения. возраст Значение не может быть меньше 0 или больше, чем 120:

Язык кода:xml
копировать
<xs:element name="age">
  <xs:simpleType>
    <xs:restriction base="xs:integer">
      <xs:minInclusive value="0"/>
      <xs:maxInclusive value="120"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

XML Содержимое элемента ограничено набором допустимых значений, мы будем использовать ограничение перечисления.

Следующий пример определяет файл с именем "car" элемент и налагаемые ограничения. Единственное приемлемое значение — да:Audi、Golf、BMW

Язык кода:xml
копировать
<xs:element name="car">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:enumeration value="Audi"/>
      <xs:enumeration value="Golf"/>
      <xs:enumeration value="BMW"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

Приведенный выше пример также можно записать следующим образом:

Язык кода:xml
копировать
<xs:element name="car" type="carType"/>

<xs:simpleType name="carType">
  <xs:restriction base="xs:string">
    <xs:enumeration value="Audi"/>
    <xs:enumeration value="Golf"/>
    <xs:enumeration value="BMW"/>
  </xs:restriction>
</xs:simpleType>

ПРИМЕЧАНИЕ. В этом случае введите "carType" Можно заменить другим элементомиспользовать, потому что это не да "car" часть элемента.

Ограничения на диапазон значений

к Содержимое элемента XML ограничено определенной серией цифр или букв, мы будем использовать ограничение шаблона.

Следующий пример определяет файл с именем "letter" элемент и налагаемые ограничения. Единственное допустимое значение — строчная буква да. a приезжать z Любой из:

Язык кода:xml
копировать
<xs:element name="letter">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:pattern value="[a-z]"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

Следующий пример определяет файл с именем "initials" элемент и налагаемые ограничения. Единственные допустимые значения — строчные или прописные буквы. a приезжать z Три из них:

Язык кода:xml
копировать
<xs:element name="initials">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:pattern value="[A-Z][A-Z][A-Z]"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

Следующий пример также определяет функцию под названием "initials" элемент и налагаемые ограничения. Единственные допустимые значения — строчные или прописные буквы. a приезжать z Три из них:

Язык кода:xml
копировать
<xs:element name="initials">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:pattern value="[a-zA-Z][a-zA-Z][a-zA-Z]"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

Следующий пример определяет файл с именем "choice" элемент и налагаемые ограничения. Единственным приемлемым значением является одна из следующих букв: x, y. или z:

Язык кода:xml
копировать
<xs:element name="choice">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:pattern value="[xyz]"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

Следующий пример определяет файл с именем "prodid" элемент и налагаемые ограничения. Единственное допустимое значение — последовательное пятизначное число, каждое число должно существовать. 0 приезжать 9 В пределах:

Язык кода:xml
копировать
<xs:element name="prodid">
  <xs:simpleType>
    <xs:restriction base="xs:integer">
      <xs:pattern value="[0-9][0-9][0-9][0-9][0-9]"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

Следующий пример определяет файл с именем "letter" элемент и налагаемые ограничения. Допустимые значения да строчные буквы a приезжать z Ноль или несколько экземпляров:

Язык кода:xml
копировать
<xs:element name="letter">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:pattern value="([a-z])*"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

Следующий пример также определяет функцию под названием "letter" элемент и налагаемые ограничения. Допустимые значения — да или и несколько букв «верно», каждая из которых состоит из строчной буквы, за которой следует прописная буква. Например, «СТо П» пройдет проверку этого режима, но "Stop"、"STOP" или "stop" Не будет:

Язык кода:xml
копировать
<xs:element name="letter">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:pattern value="([a-z][A-Z])+"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

Следующий пример определяет файл с именем "gender" элемент и налагаемые ограничения. Единственное приемлемое значение — да male или female:

Язык кода:xml
копировать
<xs:element name="gender">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:pattern value="male|female"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

Следующий пример определяет файл с именем "password" элемент и налагаемые ограничения. существования должны храниться последовательно восемь символов, эти символы должны быть строчными или прописными буквами. a приезжать z один из или номер 0 приезжать 9:

Язык кода:xml
копировать
<xs:element name="password">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:pattern value="[a-zA-Z0-9]{8}"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

Чтобы указать, как обрабатывать пробельные символы, мы будем использовать ограничение whiteSpace.

Следующий пример определяет файл с именем "address" элемент и налагаемые ограничения. белый Космос Ограничения установлены на «сохранить», что означает XML Процессор не удаляет пробельные символы:

Язык кода:xml
копировать
<xs:element name="address">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:whiteSpace value="preserve"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

этот Пример также определяет класс под названием "address" элемент и налагаемые ограничения. белый Космос Ограничения установлены на «заменить», что означает XML Процессор заменит все пробельные символы (новую строку, табуляцию, пробелы и возврат каретки) на пробелы:

Язык кода:xml
копировать
<xs:element name="address">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:whiteSpace value="replace"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

этот Пример также определяет класс под названием "address" элемент и налагаемые ограничения. белый Космос Ограничения установлены на «обвал», что означает XML Процессор удалит все пробельные символы (новая строка, табуляция, пробелы и возврат каретки заменяются пробелами, начальные и конечные пробелы удаляются, а несколько пробелов сокращаются до одного):

Язык кода:xml
копировать
<xs:element name="address">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:whiteSpace value="collapse"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

ограничение длины

Чтобы ограничить длину значения в элементе, мы будем использовать ограничение length, maxLength и minLength.

Следующий пример определяет файл с именем "password" элемент и налагаемые ограничения. Значение должно состоять ровно из восьми символов:

Язык кода:xml
копировать
<xs:element name="password">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:length value="8"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

этот Пример определяет другой именованный "password" изэлемент,и ввели ограничения. Значение должно быть не менее пяти символов.,До восьми символов:

Язык кода:xml
копировать
<xs:element name="password">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:minLength value="5"/>
      <xs:maxLength value="8"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

Ограничения типов данных

Описание ограничения

перечисление определяет список допустимых значений

FractionDigits указывает максимальное разрешенное количество десятичных знаков. Должно быть больше или равно нулю

длина определяет точное количество разрешенных символов и количество элементов списка. Должно быть больше или равно нулю

maxExclusive указывает верхнюю границу значения (значение должно быть меньше этого значения)

maxInclusive указывает верхний предел значения (значение должно быть меньше или равно этому значению)

maxLength определяет максимальное разрешенное количество символов и количество элементов списка. Должно быть больше или равно нулю

minExclusive указывает нижнюю границу значения (значение должно быть больше этого значения)

minInclusive указывает нижний предел значения (значение должно быть больше или равно этому значению)

minLength определяет минимальное разрешенное количество символов и количество элементов списка. Должно быть больше или равно нулю

шаблон определяет точную последовательность символов, которая является приемлемой

totalDigits указывает точное количество разрешенных цифр. должно быть больше нуля

whiteSpace определяет, как обрабатывать символы пробелов (переводы строк、символ табуляции、Пробел→Ввод)

наконец

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

Поиск общедоступной учетной записи WeChat:Let us Coding,сосредоточиться Вы можете получить последнюю статью после

Я нашел это полезным после прочтения, если,Лайки приветствуются、собирать、сосредоточиться на

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose