Я следовал инструкциям, и мои файлы XML и XSL не работают - PullRequest
0 голосов
/ 25 апреля 2019

1. Перейдите к файлу hbemployees.xsl в вашем редакторе.Непосредственно после открытия элемента таблицы стилей создайте ключ отделов, сопоставив элемент сотрудника и используя элемент отдела для индекса ключа.Цель этого ключа - сгруппировать сотрудников по отделам.

Непосредственно после заголовка «Отчет сотрудника h1» вставьте элемент «для каждого», который использует мюнхенскую группировку, чтобы выбрать каждый уникальный отдел с помощью пути расположения: «// employee [generate-id () = generate-id(ключ («отделы», «отдел») [1])] », затем сортируйте результаты по отделам.

Каждый раз в цикле for-each пишите следующий HTML-код витоговый документ:

<table class="employeeList"> <caption>department</caption> <thead>
<tr>
<th>Name</th>
<th>Position</th>
<th>Salary</th>
<th>Phone</th>
<th>Gender</th>
<th>Marital Status</th>
<th>Work Status</th>
</tr>
</thead>
<tbody>
</tbody>
</table>

где отдел - значение элемента отдела.

В элементе tbody HTML-кода, который вы только что написали, примените шаблон, используя ключ отделов с текущим значением элемента отдела, чтобы отобразить информацию о каждом сотруднике в текущем отображаемом отделе.Сортируйте примененный шаблон по убыванию элемента зарплаты.

Сразу после корневого шаблона вставьте новый шаблон, соответствующий элементу employee.Цель этого шаблона - написать строку таблицы, содержащую информацию о выбранном сотруднике.Пусть шаблон напишет следующий HTML-код в итоговый документ:

<tr>
<td>name</td> 
<td>position</td> 
<td>salary</td> 
<td>phone</td>
<td>gender</td>
<td>marital status</td>
<td>working status</td>
</tr> 

, где имя, должность, зарплата, телефон, пол, семейное положение и рабочий статус являются значениями имени, должности, зарплаты,элементы phone, пол, martialStatus и workingStatus.Отформатируйте зарплату так, чтобы она отображалась в валюте.

Я не уверен, почему мои файлы не работают.

<?xml version="1.0" encoding="UTF-8" ?>
<!--
   New Perspectives on XML, 3rd Edition
   Tutorial 7
   Case Problem 1

   Harris and Barnes Style Sheet

   Filename:         hbemployees.xsl
   Supporting Files: hbemployees.xml
-->


<xsl:stylesheet version="1.0"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

   <xsl:key name="departments" match="employee" use="department" />

   <xsl:variable name="hbemployessDoc" select="document('hbemployess.xml')" />

   <xsl:output method="html"
      doctype-system="about:legacy-compat"
      encoding="UTF-8"
      indent="yes" />


   <xsl:template match="/">
      <html>
         <head>
            <title>Employee Report</title>
            <link href="hbstyles.css" rel="stylesheet" type="text/css" />
         </head>

         <body>
            <div id="wrap">
               <header>
                  <img src="hblogo.png" alt="Harris and Barnes" />
               </header>

               <h1>Employee Report</h1>
               <xsl:for-each
                       select="//employee[generate-id()=generate-id(key('departments', department)[1])]">
               <xsl:sort select="department" />

                  <table class="employeeList">
                     <caption><xsl:value-of select="department"/></caption>
                     <thead>
                     <tr>
                        <th>Name</th>
                        <th>Position</th>
                        <th>Salary</th>
                        <th>Phone</th>
                        <th>Gender</th>
                        <th>Marital Status</th>
                        <th>Work Status</th>
                     </tr>
                  </thead>
                     <tbody>
                        <xsl:apply-templates select="key('departments', department)">
                        <xsl:sort select="salary" order="descending" />
                        </xsl:apply-templates>
                     </tbody>
                  </table>

               </xsl:for-each>

             </div>
         </body>

      </html>
   </xsl:template>

   <xsl:template match="employee">
      <tr>

            <td>  <xsl:value-of select="name" /> </td>
         <td> <xsl:value-of select="position" /> </td>
         <td><xsl:value-of select="format-number(salary,'$#,##0')"/></td>
         <td> <xsl:value-of select="phone" /> </td>
         <td> <xsl:value-of select="gender" /></td>
         <td> <xsl:value-of select="maritalStatus" /></td>
         <td> <xsl:value-of select="workingStatus" /></td>
   </tr>
   </xsl:template>

</xsl:stylesheet>

РЕДАКТИРОВАТЬ: Ниже приведен примерXML, относящийся к этому уроку

<?xml version="1.0" encoding="UTF-8" ?>

<?xml-stylesheet type="text/xsl" href="hbemployees.xsl" ?>

<employees xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <employee empID="4">
      <name>Heffner, Marian</name>
      <position>Chief Operating Officer</position>
      <phone>x10962</phone>
      <email>mheffner50@example.com/harrisbarnes</email>
      <department>Management</department>
      <salary>262000</salary>
      <gender>female</gender>
      <maritalStatus>married</maritalStatus>
      <workStatus>Full Time</workStatus>
   </employee>
   <employee empID="192">
      <name>Murff, Nicolle</name>
      <position>Mgr Software Client Supp</position>
      <phone>x32524</phone>
      <email>nmurff63@example.com/harrisbarnes</email>
      <department>Sales</department>
      <salary>137000</salary>
      <gender>female</gender>
      <maritalStatus>married</maritalStatus>
      <workStatus>Full Time</workStatus>
   </employee>
   <employee empID="295">
      <name>Vecchio, Art</name>
      <position>Line Worker</position>
      <phone>x12125</phone>
      <email>avecchio55@example.com/harrisbarnes</email>
      <department>Management</department>
      <salary>83000</salary>
      <gender>male</gender>
      <maritalStatus>married</maritalStatus>
      <workStatus>Part Time</workStatus>
   </employee>
   <employee empID="294">
      <name>Lewis, Richard</name>
      <position>Met Read/Coll</position>
      <phone>x22131</phone>
      <email>rlewis19@example.com/harrisbarnes</email>
      <department>Production</department>
      <salary>74500</salary>
      <gender>male</gender>
      <maritalStatus>married</maritalStatus>
      <workStatus>Full Time</workStatus>
   </employee>
   <employee empID="193">
      <name>Fleming, Angela</name>
      <position>Inventory Ck</position>
      <phone>x31751</phone>
      <email>afleming30@example.com/harrisbarnes</email>
      <department>Sales</department>
      <salary>99000</salary>
      <gender>female</gender>
      <maritalStatus>married</maritalStatus>
      <workStatus>Full Time</workStatus>
   </employee>
</employees>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...