Добавление XML-структуры в резюме

Применяем HR-XML, таблицы стилей, объекты форматирования и пространства имен

В данной статье рассказывается, как использовать технологию XML для хранения данных резюме. Также рассматривается использование элементов из проектов HR-XML и Open Applications Group Integration Specification (OAGIS), создание файлов данных и таблиц стилей для генерирования примера резюме в формате PDF при помощи Apache Formatting Objects Processor (FOP). Особое внимание уделяется обработке нескольких пространств имен: даются рекомендации по добавлению оформления к базовому PDF-файлу посредством таблицы стилей.

Колин Бэкингем, независимый исследователь, Независимый разработчик

Колин Бэкингем (Colin Beckingham) – независимый разработчик, писатель и исследователь из восточного Онтарио, Канада. Он имеет дипломы Королевского университета в Кингстоне и университета Виндзора, а также опыт работы в различных сферах, в том числе банковской, преподавательской, государственной, туристической, розничной торговли, скачек и садоводства. Колин является автором множества приложений баз данных, газетных, журнальных статей и публикаций в Интернете. Его исследовательские интересы включают разработку приложений с открытым кодом, а также управление голосом в программах под Linux®. Связаться с Колином можно по адресу colbec@start.ca.



18.04.2012

Вы можете быстро и просто составить резюме в WYSIWYG-редакторе и несколькими щелчками мыши преобразовать его в PDF-файл для отправки потенциальному работодателю. Зачем тогда прилагать дополнительные усилия для хранения данных в XML-файле? Усложнение процесса дополнительными действиями может привести к появлению новых ошибок, поэтому необходима веская причина для выполнения этих действий.

Часто используемые сокращения

  • PDF: Portable Document Format (переносимый формат документов)
  • URL: Uniform Resource Locator (унифицированный указатель ресурсов)
  • W3C: World Wide Web Consortium (консорциум WWW)
  • XML: Extensible Markup Language (расширяемый язык разметки)

Такая причина заключается в отделении данных от представления и в преимуществах структурирования, предоставляемых технологией XML. Когда данные становятся более сложными, а требования к выходному формату более разнообразными, XML обеспечивает точность, переносимость и адаптируемость. Энтузиасты пытаются хранить информацию в базе данных какого-либо типа. Будет ли сложная структура данных излишеством для обычного резюме, зависит от требований к данным и от частоты их изменения.

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

Процесс

В описываемом процессе используется Apache FOP (см. раздел Ресурсы) для генерирования PDF-файла из XML-данных и таблицы стилей XSL (Extensible Stylesheet Language). Таблица стилей управляет представлением данных и соответствует стандартному формату, описанному в документе W3C (см. раздел Ресурсы).

Можно хранить данные резюме в обычном XML-формате, используя собственную уникальную схему. Но предпочтительнее стандартный формат HR-XML. Если предъявляются специфичные требования, отсутствующие в стандарте, просто возьмите из стандарта все, что нужно, и расширьте его путем создания персонального пространства имен для дополнительного материала.

HR-XML и OAGIS

HR-XML и OAGIS (см. раздел Ресурсы) – это два проекта с открытыми исходными кодами, объединение которых предоставляет структуру, которой многие крупные организации придают большое значение в контексте трудовых ресурсов и бизнеса.

Спецификация HR-XML – это результат кропотливой работы специалистов в области трудовых ресурсов. Эти специалисты рассматривают проблему с точки зрения работодателя, поэтому схема предполагает сбор намного более полной информации, чем требуется на этапе интервью. Управление персоналом – это сложное дело. HR-XML предлагает схемы, охватывающие все аспекты – от определения требований к кадровому обеспечению, подбора кадров, проверки квалификации, оценки компетентности и найма до текущего учета рабочего времени и оплаты труда, управления социальным пакетом, плановых показателей и начисления налогов.

Если спецификация HR-XML предназначена для работы с трудовыми ресурсами, OAGIS занимается межотраслевыми стандартами обмена данными. Она определяет идеи и концепции, являющиеся общими для всех отраслей в целом, и отдает специфичные отраслевые элементы на попечение группам специалистов, имеющих опыт работы в конкретной отрасли.

В HR-XML не создаются заново идеи, уже реализованные более широким набором элементов OAGIS – она просто добавляет новый материал в свое собственное пространство имен. Результатом является схема, описывающая, что следует хранить в контексте трудовых ресурсов (элементы) и как хранить (атрибуты, иерархия). Так почему же не воспользоваться этим результатом? Для более подробного изучения схемы, используемой HR-XML, загрузите ее на свой компьютер или просмотрите в интерактивном режиме на Web-сайте (потребуется регистрация). В случае загрузки версии 3.1 приведем путь к документации, относящейся к элементу Candidate:

.../HR-XML-3_1/org_hr-xml/3_1/Documentation/Guidelines/ch21.html#id564065

Хорошей отправной точкой для начала работы является:

http://ns.hr-xml.org/schemas/org_hr-xml/3_1/Documentation/ComponentDoc/Candidate-noun.php

Файл данных

В листинге 1 приведен пример простого файла данных (фрагмент более полного файла), использующий элемент Candidate и некоторых из его потомков.

Листинг 1. Пример файла данных
<?xml version="1.0" encoding="UTF-8"?>
<hr:Candidate 
  xmlns:hr="http://www.hr-xml.org/3" 
  xmlns:ccts="urn:un:unece:uncefact:documentation:1.1" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xmlns:oa="http://www.openapplications.org/oagis/9">
  <hr:DocumentID>000000001</hr:DocumentID>
  <hr:CandidatePerson>
    <hr:PersonName>
      <hr:FormattedName>Blimpo Togwer</hr:FormattedName>
      <oa:GivenName>Blimpo</oa:GivenName>
      <hr:FamilyName>Togwer</hr:FamilyName>
    </hr:PersonName>
    <hr:Communication>
      <hr:ChannelCode>Mail</hr:ChannelCode>
      <hr:Address>
        <oa:AddressLine sequence="1">5555 Yellow Brick Road</oa:AddressLine>
        <oa:AddressLine sequence="2">RR #1</oa:AddressLine>
        <oa:CityName>Lesser Village</oa:CityName>
        <oa:CountrySubDivisionCode>KKK</oa:CountrySubDivisionCode>
        <hr:CountryCode>XX</hr:CountryCode>
        <oa:PostalCode>AAA BBB</oa:PostalCode>
      </hr:Address>
    </hr:Communication>
  </hr:CandidatePerson>
</hr:Candidate>

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

  • За XML-объявлением следует корневой элемент Candidate.
  • Значение Candidate определено в пространстве имен hr, на что указывает соответствующий префикс.
  • Пространство имен hr ассоциировано с меткой http://www.hr-xml.org/3.
  • Каждый из элементов предваряется меткой пространства имен, устраняющей любую неоднозначность, касающуюся того, что именно представляет элемент.
  • Некоторые из элементов определены в пространстве имен hr (HR-XML), а некоторые – в пространстве имен oa (OAGIS). Эти пространства имен выбираются и сочетаются по необходимости.
  • Код страны CountryCode имеет двухсимвольный формат, например US или FR.
  • CountrySubDivisionCode представляет штат, провинцию, департамент или другую крупную административную единицу внутри страны.
  • Важна иерархия. Например, для получения названия города используется следующий путь: Candidate > CandidatePerson > Communication > Address.

На интерактивном ресурсе по схемам от HR-XML можно найти имена дополнительных элементов (например, CandidateProfile), позволяющие добавлять вспомогательную информацию, такую как CandidateObjective, EducationHistory, PublicationHistory, Certifications и т.д.

Пространства имен

Пространство имен (namespace) – это структура, устраняющая возможную неоднозначность при присвоении имен XML-элементам. Ссылки на более подробную вводную информацию о пространствах имен приведены в разделе Ресурсы. Применение пространств имен навязывает хороший стиль написания кода, однако их необходимо использовать аккуратно, чтобы гарантировать извлечение корректных данных, иначе могут возникать труднообнаружимые ошибки. Например, при обращении к разделу education без указания пространства имен существует высокая вероятность того, что из-за невозможности найти данные процессор не выведет ничего, причем без всяких предупреждений.

Редактирование

Поскольку и файл данных, и таблица стилей являются чистыми XML-файлами, для изменения XML-файлов можно использовать ваш любимый XML- или текстовый редактор. Например, загрузите Eclipse (см. раздел Ресурсы), откройте новый проект, скопируйте код из листинга 1, вставьте его в новый документ и отредактируйте его; тем самым вы продвинетесь на пути к структурированному файлу данных резюме.

Таблица стилей

Учебные руководства по созданию и использованию таблиц стилей (stylesheet) можно выбрать на странице W3C XSL (см. раздел Ресурсы).

В листинге 2 приведен пример базовой таблицы стилей в контексте работы с резюме.

Листинг 2. Пример таблицы стилей
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
  xmlns:fo="http://www.w3.org/1999/XSL/Format" 
  xmlns:oa="http://www.openapplications.org/oagis/9"
  xmlns:hr="http://www.hr-xml.org/3">
<xsl:output method="xml" indent="yes"/>
  <xsl:template match="/">
    <fo:root>
      <fo:layout-master-set>
        <fo:simple-page-master master-name="page1">
          <fo:region-body margin="1in" />
        </fo:simple-page-master>
      </fo:layout-master-set>
      <fo:page-sequence master-reference="page1">
        <fo:flow flow-name="xsl-region-body">
          <fo:block text-align="right" font-size="12pt" font-family="serif">
            DocumentID: <xsl:value-of select="hr:Candidate/hr:DocumentID" />
          </fo:block>
          <fo:block>
            <fo:leader leader-pattern="dots" leader-length="100%" />
          </fo:block>
          <fo:block font-size="12pt" font-family="serif">
            Curriculum Vitae - Résumé
          </fo:block>
          <fo:block font-size="20pt" font-family="Arial" font-weight="bold">
            <xsl:value-of 
              select="hr:Candidate/hr:CandidatePerson/hr:PersonName/hr:FormattedName" />
          </fo:block>
          <fo:block font-size="12pt" font-family="serif">
            Contact
          </fo:block>
          <xsl:for-each 
        select="hr:Candidate/hr:CandidatePerson/hr:Communication[hr:ChannelCode='Mail']">
            <fo:block font-size="10pt" font-family="Arial" font-weight="normal">
              <xsl:value-of select="hr:Address//oa:AddressLine[@sequence=1]" />, 
                <xsl:value-of select="hr:Address/oa:AddressLine[@sequence=2]" />
            </fo:block>
            <fo:block font-size="10pt" font-family="Arial" font-weight="normal">
              <xsl:value-of select="hr:Address/oa:CityName" />, 
                <xsl:value-of select="hr:Address/oa:CountrySubDivisionCode" />
            </fo:block>
            <fo:block font-size="10pt" font-family="Arial" font-weight="normal">
              <xsl:value-of select="hr:Address/oa:PostalCode" />, 
                <xsl:value-of select="hr:Address/hr:CountryCode" />
            </fo:block>
          </xsl:for-each>
        </fo:flow>
      </fo:page-sequence>
    </fo:root>
  </xsl:template>
</xsl:stylesheet>

Инструкции в листинге 2 управляют отображением данных из листинга 1 на странице:

  • Документу нужны четыре разных пространств имен. Все ссылки на данные явно указывают пространство имен в каждом узле, что помогает избежать путаницы, которая может возникнуть при применении пространства имен по умолчанию, для которого префикс не используется.
  • Значением template match является слэш (/), указывающий на то, что поиск начинается с корневого элемента документа данных.
  • В таблице стилей указывается элемент layout master set, определяющий страницы по всему документу, а затем элемент page sequence для индивидуальных страниц.
  • Для каждой страницы есть несколько элементов block, указывающих процессору, где разместить элемент и как отобразить его, включая шрифт и размер шрифта.
  • В таблице стилей используются выражения for-each для итерирования по группам элементов. Например, может быть несколько каналов связи: почта, электронная почта, телефон и т.д. Используя квадратные скобки ([]), можно указать фильтр – в данном случае таблица стилей пропускает только элементы Mail (почта).

Вывод с использованием Apache FOP

Apache FOP генерирует PDF-документ на основании файла данных и таблицы стилей. Возможности FOP не ограничиваются выводом в PDF – можно генерировать документы в формате RTF (Rich Text Format), PCL (Printer Command Language), PS (PostScript), AFP (Advanced Function Presentation), TIFF (Tagged Image File Format), PNG (Portable Network Graphics), а также обычные текстовые файлы.

Процесс получения и установки FOP сводится к простой загрузке и разархивированию двоичной версии (см. раздел Ресурсы). После этого FOP готов к использованию.

Ниже приведен пример инструкции командной строки для fop. В этом случае данные, стиль и конфигурационные файлы расположены в одном каталоге. Используйте этот каталог в качестве рабочего и вызовите fop из его местоположения:

/path/to/fop/fop -c fop.xconf -xml exx.xml -xsl exx.xsl -pdf exx.pdf

Данная инструкция указывает исполняемому файлу fop выполнить следующие действия:

  • Найти информацию о конфигурации в файле fop.xconf.
  • Найти данные в файле exx.xml.
  • Использовать таблицу стилей exx.xsl для генерирования файла exx.pdf.

Конфигурационный файл – это важная часть процесса. Его пример приведен в листинге 3.

Листинг 3. Конфигурационный файл FOP
<?xml version="1.0"?>
<fop version="1.0">
  <base>.</base>
  <source-resolution>72</source-resolution>
  <target-resolution>72</target-resolution>
  <default-page-settings height="11in" width="8.26in"/>
  <renderers>
    <renderer mime="application/pdf">
      <filterList>
        <value>flate</value>
      </filterList>
      <fonts>
        <auto-detect />
      </fonts>
    </renderer>
  </renderers>
</fop>

В данной конфигурации элемент filterlist управляет сжатием объектов в PDF-файле, а элемент fonts указывает процессору использовать шрифт, уже известный операционной системе.

На рисунке 1, являющемся снимком экрана программы чтения PDF-файлов, показан результат преобразования.

Рисунок 1. Результат в формате PDF
Рисунок 1. Результат в формате PDF

Оформление PDF

Таблица стилей может содержать простые элементы оформления:

  • В примере отображаются строки из точек. Их генерирует следующий код:
    <fo:block>
      <fo:leader leader-pattern="dots" leader-length="100%" />
    </fo:block>
  • Для вывода пустых строк можно использовать методику, описанную в совете Николаса Чейза (см. раздел Ресурсы), или следующий код:
    <fo:block>&#160;</fo:block>

Информация о дополнительных возможностях, включая границы, поля, отступ, цвет, изображения и таблицы, приведена в документации по FOP (см. раздел Ресурсы).

Заключение

Генерирование резюме или профессиональной биографии из XML-файла требует лишь небольших дополнительных действий, но обеспечивает четкое структурирование, гарантируя корректное заполнение документа.

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

Ресурсы

Научиться

  • Оригинал статьи: Add XML structure to the resume (EN).
  • Принципы XML-дизайна: используйте пространства имен XML с осторожностью (Уче Огбуджи (Uche Ogbuji), developerWorks, апрель 2004 года): информация о некоторых трудностях работы с пространствами имен и о том, как минимизировать проблемы при их использовании в XML-проектах (EN).
  • Совет: управление пробелами в таблицах стилей XSLT (Николас Чейз (Nicholas Chase), developerWorks, ноябрь 2002 года): информация о пробельных символах и удалении пробелов в преобразованиях, а также о создании документов желаемого вида (EN).
  • Улучшите свой стиль XSLT-кодирования пятью способами (Бенуа Маршал (Benoit Marchal), developerWorks, январь 2001 года). Информация о пяти методиках, полезных в преобразованиях: использование CSS с таблицами стилей XSL (включая HTML-объекты), включение JavaScript на стороне клиента, работа с несколькими входными документами, использование XSLT для автоматического генерирования таблиц стилей (EN).
  • Спецификация Open Applications Group Integration Specification (Майкл Роуэлл (Michael Rowell), developerWorks, июнь 2003 года): информация о стандарте OAGIS (EN).
  • Apache FOP: дополнительная информация о программе форматирования, основанной на использовании XSL-объектов (XSL-FO).
  • Apache FOP Compliance Page: информация о возможностях форматирования FOP-документов.
  • HR-XML: средство реализации HR-XML.
  • Open Applications Group: Web-сайт организации, разрабатывающей основанные на процессах бизнес-стандарты для электронной коммерции, облачных вычислений, сервис-ориентированной архитектуры, web-сервисов и корпоративной интеграции.
  • OASIS: информация об организации, занимающейся продвижением стандартов структурированной информации.
  • XSL: информация о языке XSL, использующемся для определения преобразований и представления XML-документов.
  • Другие статьи данного автора (Колин Бэкингем (Colin Beckingham), developerWorks, с марта 2009 года по настоящее время): статьи об XML, распознавании речи, XHTML, PHP, SMIL и других технологиях.
  • My developerWorks: персонифицируйте свое общение с developerWorks.
  • Сертификация IBM XML: информация о получении сертификата IBM-Certified Developer по XML и смежным технологиям.

Получить продукты и технологии

  • Eclipse: среда разработки XML с открытыми исходными кодами.

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=XML, Open source
ArticleID=810659
ArticleTitle=Добавление XML-структуры в резюме
publish-date=04182012