Skip to content

mrkubad/cs201-lab-Migracja-danych-via-XML-LinqToXML

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Migracja danych via XML

  • Autor: Krzysztof Molenda
  • Wersja: 1.0 (2019.12.11)

Wprowadzenie

Open Journal System (w skrócie OJS) to system wspomagający prowadzenie czasopisma naukowego, realizując workflow: od zgłoszenia manuskryptu przez autorów, poprzez recenzje, opracowanie techniczne, aż po opublikowanie artykułu.

Oprogramowanie udostępniane jest za darmo i rozwijane na licencji GNU v.2.

Wielu wydawców korzysta z tego systemu. Do połowy 2018 r. obowiązywały wersje 2.x (zresztą nadal wspierane). Pod koniec 2018 r. pojawiła się - zupełnie zmieniona wersja OJS 3. Zmiany były fundamentalne, w wielu aspektach system został napisany ponownie, zmieniono nie tylko interfejs użytkownika, ale również architekturę bazy danych.

Problem

Administratorzy opiekujący się systemem OJS 2.x napotkali poważne problemy przy migracji do OJS 3. Po wielu eksperymentach okazało się, że "najczystszym" sposobem jest zainstalowanie "świeżej" wersji OJS 3 i "ręczne" przenoszenie metadanych z wersji poprzedniej - na przykład za pomocą mechanizmów importu i eksportu via pliki XML.

Przedstawiony poniżej problem jest uproszczeniem i tylko fragmentem tego skomplikowanego procesu migracji.

Zadanie

Dany masz plik issue.xml zawierający wyeksportowane z OJS 2.x metadane jednego z zeszytów czasopisma Agricultural Engineering - konkretnie vol. 21, issue 2.

struktura pliku issue.xml

Dany masz przykład struktury pliku XML 2019-0001.xml, który może zostać poprawnie zaimportowany do wersji OJS 3.

przykład struktury artykułu

Przykład pochodzi z innego zeszytu vol. 23, issue 1 i uwzględnia nową strukturę metadanych przedstawioną w formacie XML. Przykład opisuje metadane pojedynczego artykułu.

Twoim zadaniem jest napisanie w C# aplikacji, która

  1. wczyta plik issue.xml zawierający metainformacje związane z konkretnym zeszytem (n artykułów) w formacie eksportu z OJS 2.x,
  2. we wskazanym folderze utworzy n plików zawierających metadane wszystkich artykułów, w formacie importu XML akceptowalnym przez OJS 3,
  3. przy realizacji zadania wzorujesz się na przykładowych plikach XML.

Uwagi:

  • W plikach wynikowych nie ma metainformacji związanych z językiem polskim (elementy z atrybutem locale="pl_PL").

  • Nazwy plików wynikowych to końcowy fragment numeru doi, odczytany z elementu <remote src= ...> dla danego artykułu. Na przykład dla <remote src="https://doi.org/10.1515/agriceng-2019-0001"/> nazwa pliku to 2019-0001.xml.

  • Pewne informacje w nowym formacie są "sztywne" (np. odwołania do schematów xmlns). Należy po prostu je tam wprowadzić.

  • W nowym formacie nowy element <id type="internal" advice="ignore">20190001</id> bezpośrednio w <article> (nie <article_galley>): jego wartość jest sklejeniem dwóch ostatnich kodów doi:.

  • Część elementów i atrybutów w nowym formacie, to te same, które są w starym, ale ze zmienioną nazwą i w innej lokalizacji drzewa XML.

  • W nowej wersji formatu XML tytuł artykułu rozbity jest na:

    • właściwy tytuł <title> oraz

    • <prefix> będący pierwszym wyrazem tytułu, który jest przedimkiem (w języku angielskim: The, A lub An) Przykład: tytuł jednego z artykułów The Influence of Drying Temperature and Moisture of Corn Seeds Planted on Their Damage powinien zostać rozbity na:

      <title locale="en_US">Influence of Drying Temperature and Moisture of Corn Seeds Planted on Their Damage</title>
      <prefix locale="en_US">The</prefix>

    W systemach przetwarzania informacji bibliograficznych, ze względów na poprawność sortowania, stosuje się obecnie takie rozbijanie tytułów. (The and other common words)

Cel ćwiczenia

Celem ćwiczenia jest - w oparciu o praktyczny problem - zapoznanie się z technikami przetwarzania dokumentów XML za pomocą bibliotek .NET, ze szczególnym uwzględnieniem LINQ to XML.

UWAGA: nie rozwiązujemy zadania za pomocą transformacji XLST.


Referencje

Aby rozwiązać podany problem, nie ma potrzeby odwoływania się do poniższych referencji. Podane zostały z kronikarskiego obowiązku.

About

Transformacja pliku XML za pomocą LINQ to XML

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages

  • C# 100.0%