K
Kottt
Встала такая тестовая задачка.
1. Создать XSD схему с типами:
· Комплексный тип – Работник. С элементами: имя, пол, зарплата, название департамента;
· Комплексный тип – Отдел. Атрибуты: название отдела, средняя зарплата по отделу. Элемент: СписокРаботников;
· Комплексный тип – СписокИменРаботников. Элемент – имя работника.
2. Создать XML содержащий 5 работников. Причем 3 работника работают в одном и том же отделе, а остальные в других отделах.
3. Написать XSLT трансформацию, которая трансформирует XML файл со списком Работников в файл со списком Отделов.
Вот что я сделал:
****************************************
Файл firm.xml:
...
<!--shcode--><pre><code class='XML'><firm xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="firmScheme.xsd">
<employee>
<name>Sirik Sergei Alexandrovich</name>
<gender>male</gender>
<salary>600$</salary>
<depName>A02</depName>
</employee>
<employee>
<name>Ivanov Ivan Ivanovich</name>
<gender>male</gender>
<salary>500$</salary>
<depName>A02</depName>
</employee>
<employee>
<name>Petrov Ivan Denisovich</name>
<gender>male</gender>
<salary>620$</salary>
<depName>A02</depName>
</employee>
<employee>
<name>Kostukevich Sergi Alexandrovich</name>
<gender>male</gender>
<salary>450$</salary>
<depName>A07</depName>
</employee>
<employee>
<name>Lakizo Inna Anatolievna</name>
<gender>female</gender>
<salary>400$</salary>
<depName>OIC</depName>
</employee>
</firm>[/CODE]
*************************************************
Файл firmScheme.xsd:
...
<!--shcode--><pre><code class='XML'><xsd:element name="firm" type="firmType"/>
<xsd:element name="comment" type="xsd:string"/>
<xsd:complexType name="workerType">
<xsd:sequence>
<xsd:element name="name" type="xsd:string">
</xsd:element>
<xsd:element name="gender" type="xsd:string"/>
<xsd:element name="salary" type="xsd:string"/>
<xsd:element name="depName" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="departmentType">
<xsd:sequence>
<xsd:element name="wokersList" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="depName" type="xsd:string"/>
<xsd:attribute name="averageSalary" type="xsd:string"/>
</xsd:complexType>
<xsd:complexType name="nameListWorkersType">
<xsd:sequence>
<xsd:element name="workerName" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="firmType">
<xsd:sequence>
<xsd:element name="employee" type="workerType" maxOccurs="unbounded" minOccurs="0"/>
<xsd:element name="dep" type="departmentType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="nameList" type="nameListWorkersType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>[/CODE]
********************************************************
Ну а с XSLT трансформацией с данными условиями - засада. Я, конечно, мало знаком с XSLT, но пару дней плотно посвятил изучению. И максимум получается трансформация, отображающая список отделов, где встречаются все отделы (даже если атрибут @depName у них одинаковый), ну и соответственно в элементе workersList присутствует только 1 работник.
Помогите, пожалуйста, решить задачку
1. Создать XSD схему с типами:
· Комплексный тип – Работник. С элементами: имя, пол, зарплата, название департамента;
· Комплексный тип – Отдел. Атрибуты: название отдела, средняя зарплата по отделу. Элемент: СписокРаботников;
· Комплексный тип – СписокИменРаботников. Элемент – имя работника.
2. Создать XML содержащий 5 работников. Причем 3 работника работают в одном и том же отделе, а остальные в других отделах.
3. Написать XSLT трансформацию, которая трансформирует XML файл со списком Работников в файл со списком Отделов.
Вот что я сделал:
****************************************
Файл firm.xml:
...
<!--shcode--><pre><code class='XML'><firm xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="firmScheme.xsd">
<employee>
<name>Sirik Sergei Alexandrovich</name>
<gender>male</gender>
<salary>600$</salary>
<depName>A02</depName>
</employee>
<employee>
<name>Ivanov Ivan Ivanovich</name>
<gender>male</gender>
<salary>500$</salary>
<depName>A02</depName>
</employee>
<employee>
<name>Petrov Ivan Denisovich</name>
<gender>male</gender>
<salary>620$</salary>
<depName>A02</depName>
</employee>
<employee>
<name>Kostukevich Sergi Alexandrovich</name>
<gender>male</gender>
<salary>450$</salary>
<depName>A07</depName>
</employee>
<employee>
<name>Lakizo Inna Anatolievna</name>
<gender>female</gender>
<salary>400$</salary>
<depName>OIC</depName>
</employee>
</firm>[/CODE]
*************************************************
Файл firmScheme.xsd:
...
<!--shcode--><pre><code class='XML'><xsd:element name="firm" type="firmType"/>
<xsd:element name="comment" type="xsd:string"/>
<xsd:complexType name="workerType">
<xsd:sequence>
<xsd:element name="name" type="xsd:string">
</xsd:element>
<xsd:element name="gender" type="xsd:string"/>
<xsd:element name="salary" type="xsd:string"/>
<xsd:element name="depName" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="departmentType">
<xsd:sequence>
<xsd:element name="wokersList" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="depName" type="xsd:string"/>
<xsd:attribute name="averageSalary" type="xsd:string"/>
</xsd:complexType>
<xsd:complexType name="nameListWorkersType">
<xsd:sequence>
<xsd:element name="workerName" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="firmType">
<xsd:sequence>
<xsd:element name="employee" type="workerType" maxOccurs="unbounded" minOccurs="0"/>
<xsd:element name="dep" type="departmentType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="nameList" type="nameListWorkersType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>[/CODE]
********************************************************
Ну а с XSLT трансформацией с данными условиями - засада. Я, конечно, мало знаком с XSLT, но пару дней плотно посвятил изучению. И максимум получается трансформация, отображающая список отделов, где встречаются все отделы (даже если атрибут @depName у них одинаковый), ну и соответственно в элементе workersList присутствует только 1 работник.
Помогите, пожалуйста, решить задачку