TGViewer
Айтишник обыкновенный 🐰 Айтишник обыкновенный 🐰 @default_itshnik · 1.91K subscribers
Post #193 479
Проснулся сегодня и почувствовал неистовое желание рассказать подробнее про XSD 😂

Так что, рассказываю.
Вот небольшой пример описания схемы:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="user">
<xs:complexType>
<xs:complexContent>
<xs:extension base="personType">
<xs:sequence>
<xs:element name="inn">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="\d{12}|\d{10}"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="contactList" type="contactListType" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>

<xs:complexType name="personType">
<xs:sequence>
<xs:element name="firstname" type="xs:string" />
<xs:element name="secondname" type="xs:string" />
<xs:element name="patronymic" type="xs:string" minOccurs="0" />
<xs:element name="gender" minOccurs="0">
<xs:simpleType final="restriction" >
<xs:restriction base="xs:string">
<xs:enumeration value="MALE" />
<xs:enumeration value="FEMALE" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="age" type="xs:integer" />
</xs:sequence>
</xs:complexType>

<xs:complexType name="contactListType">
<xs:sequence>
<xs:element maxOccurs="unbounded" name="contact">
<xs:complexType>
<xs:all>
<xs:element name="type">
<xs:simpleType final="restriction" >
<xs:restriction base="xs:string">
<xs:enumeration value="EMAIL" />
<xs:enumeration value="PHONE" />
<xs:enumeration value="TELEGRAM" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="value" type="xs:string" />
</xs:all>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>


Вот пример XML, который будет сформирован на основе примера схемы выше:
<user xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<firstname>Иван</firstname>
<secondname>Иванов</secondname>
<patronymic>Иванович</patronymic>
<age>30</age>
<inn>1234567890</inn>
<contactList>
<contact>
<value>8(909)999-99-99</value>
<type>PHONE</type>
</contact>
<contact>
<type>TELEGRAM</type>
<value>default_itshnik</value>
</contact>
</contactList>
</user>


В схеме я постарался по-максимуму задействовать функционал XSD для наглядности его возможностей(конечно же, не всех, только основных и часто используемых). Не смотря на то, что принято считать, что XML медленно, но верно умирает(соответственно и XSD тоже), в моем сердце они занимают отдельное место. Сейчас я расскажу, почему)

Но сначала давайте разберем схему, уверен, далеко не все владеют синтаксисом даже на моем(не столь высоком) уровне. Схема состоит из трех основных объектов: элемента user и двух типо personType и contactListType. user здесь корневой и основной элемент XSD, который расширяется типом personType. Сам user содержит в себе только 2 элемента inn и contactList, а расширение типом personType добавляет базовые поля личности: ФИО, пол, возраст.

#быстростатья часть 1
  • 🔥 9
  • 👍 4
  • ❤ 2
More from @default_itshnik
  1. Mar 1, 2026Быть старпером не модно, а законно С первым днем весны! С сегодняшнего дня начинает работа…
  2. Feb 27, 2026Меня переиграл и уничтожил ребёнок Началось утро ни разу ни с кофе. И даже ни с чая. Да че…
  3. Feb 22, 2026Отправила нюдсы через пылесос! Хакеры научились следить за россиянами через умные пылесосы…
  4. Feb 19, 2026Соболезную офисным бедолагам! Сегодня на улице происходит кайфец)) Пока шел в поликлинику,…
  5. Feb 15, 2026Посмотрел на голую жопу Тимоти Шаламе (реально) 🫥 Не переживай, спойлеров не будет 😊 Што…
  6. Feb 14, 2026Я люблю тебя! Наверное, все мои коллеги по каналам уже выложили тематические валентинки. А…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →