Skip to content

Commit cc61ccf

Browse files
committed
1_xml_xsd
1 parent 0202312 commit cc61ccf

File tree

3 files changed

+106
-1
lines changed

3 files changed

+106
-1
lines changed

README.md

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,4 +44,15 @@ shell:>help
4444
AVAILABLE COMMANDS ...
4545
4646
shell:>help help - info about help
47-
```
47+
```
48+
49+
## Создаем `usersWithMeals.xml` данные пользователей с едой и схему `usersWithMeals.xsd`
50+
> commit: 1_xml_xsd
51+
52+
- Если с XML не имели дело, ознакомтесь с основами:
53+
- [Что такое XML](https://habr.com/ru/articles/524288/)
54+
- Дополнительно:
55+
- [Attribute vs Element](http://stackoverflow.com/questions/33746/xml-attribute-vs-xml-element#33757)
56+
- [Лекции по XML](http://genberm.narod.ru/xml/lections.html)
57+
58+
Схему можно сгенерировать в IDEA (в контекстном меню в xml файле -> _Generate XSD Schema from XML File..._) и поправить вручную

in/usersWithMeals.xml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<UsersWithMeals xmlns="http://javaops.ru"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://javaops.ru usersWithMeals.xsd">
5+
<Users>
6+
<User enabled="true" email="user@yandex.ru" caloriesPerDay="2005" name="User"
7+
password="password" registered="2023-01-01T13:00:00" roles="user">
8+
<Meals>
9+
<Meal calories="500" dateTime="2023-01-30T10:00:00">Завтрак</Meal>
10+
<Meal calories="1000" dateTime="2023-01-30T13:00:00">Обед</Meal>
11+
<Meal calories="500" dateTime="2023-01-30T20:00:00">Ужин</Meal>
12+
<Meal calories="100" dateTime="2023-01-31T00:00:00">Еда на граничное значение</Meal>
13+
<Meal calories="500" dateTime="2023-01-31T10:00:00">Завтрак</Meal>
14+
<Meal calories="1000" dateTime="2023-01-31T13:00:00">Обед</Meal>
15+
<Meal calories="510" dateTime="2023-01-31T20:00:00">Ужин</Meal>
16+
</Meals>
17+
</User>
18+
<User enabled="true" email="admin@gmail.com" caloriesPerDay="1900" name="Admin"
19+
password="admin" registered="2023-01-01T13:00:00" roles="admin user">
20+
<Meals>
21+
<Meal calories="510" dateTime="2023-01-30T14:00:00">Админ ланч</Meal>
22+
<Meal calories="730" dateTime="2023-01-30T21:00:00">Админ ужин</Meal>
23+
</Meals>
24+
</User>
25+
<User enabled="false" email="guest@gmail.com" caloriesPerDay="2000" name="Guest"
26+
password="guest" registered="2023-01-01T13:00:00">
27+
</User>
28+
</Users>
29+
</UsersWithMeals>

in/usersWithMeals.xsd

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<xs:schema xmlns="http://javaops.ru"
3+
xmlns:xs="http://www.w3.org/2001/XMLSchema"
4+
targetNamespace="http://javaops.ru" elementFormDefault="qualified">
5+
6+
<xs:element name="UsersWithMeals">
7+
<xs:complexType>
8+
<xs:all>
9+
<xs:element name="Users">
10+
<xs:complexType>
11+
<xs:sequence minOccurs="0" maxOccurs="unbounded">
12+
<xs:element ref="User"/>
13+
</xs:sequence>
14+
</xs:complexType>
15+
</xs:element>
16+
</xs:all>
17+
</xs:complexType>
18+
</xs:element>
19+
20+
<xs:element name="User">
21+
<xs:complexType>
22+
<xs:sequence>
23+
<xs:element ref="Meals" minOccurs="0"/>
24+
</xs:sequence>
25+
<xs:attribute type="xs:string" name="name" use="required"/>
26+
<xs:attribute type="xs:string" name="email" use="required"/>
27+
<xs:attribute type="xs:string" name="password" use="required"/>
28+
<xs:attribute type="xs:int" name="caloriesPerDay" use="required"/>
29+
<xs:attribute type="xs:dateTime" name="registered" use="required"/>
30+
<xs:attribute type="xs:boolean" name="enabled" use="required"/>
31+
<xs:attribute type="roles" name="roles"/>
32+
</xs:complexType>
33+
</xs:element>
34+
35+
<xs:simpleType name="roles">
36+
<xs:list itemType="roleTypes"/>
37+
</xs:simpleType>
38+
39+
<xs:simpleType name="roleTypes">
40+
<xs:restriction base="xs:string">
41+
<xs:enumeration value="admin"/>
42+
<xs:enumeration value="user"/>
43+
</xs:restriction>
44+
</xs:simpleType>
45+
46+
<xs:element name="Meals">
47+
<xs:complexType>
48+
<xs:sequence minOccurs="0" maxOccurs="unbounded">
49+
<xs:element ref="Meal"/>
50+
</xs:sequence>
51+
</xs:complexType>
52+
</xs:element>
53+
54+
<xs:element name="Meal">
55+
<xs:complexType>
56+
<xs:simpleContent>
57+
<xs:extension base="xs:string">
58+
<xs:attribute type="xs:int" name="calories" use="required"/>
59+
<xs:attribute type="xs:dateTime" name="dateTime" use="required"/>
60+
<xs:attribute type="xs:boolean" name="excess"/>
61+
</xs:extension>
62+
</xs:simpleContent>
63+
</xs:complexType>
64+
</xs:element>
65+
</xs:schema>

0 commit comments

Comments
 (0)