- Autor: Krzysztof Molenda
- Wersja: 1.0 (2019.12.11)
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.
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.
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.
Dany masz przykład struktury pliku XML 2019-0001.xml
, który może zostać poprawnie zaimportowany do wersji OJS 3.
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
- wczyta plik
issue.xml
zawierający metainformacje związane z konkretnym zeszytem (n
artykułów) w formacie eksportu z OJS 2.x, - we wskazanym folderze utworzy
n
plików zawierających metadane wszystkich artykułów, w formacie importu XML akceptowalnym przez OJS 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 to2019-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ówdoi:
. -
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łówThe 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)
-
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.
- LINQ to XML Overview (C#) @Microsoft
- Basic Queries (LINQ to XML) (C#) @Microsoft
- Learning LINQ Made Easy (LINQ to XML): Tutorial 3 @C# Corner
UWAGA: nie rozwiązujemy zadania za pomocą transformacji XLST.
Aby rozwiązać podany problem, nie ma potrzeby odwoływania się do poniższych referencji. Podane zostały z kronikarskiego obowiązku.
- Fragment oficjalnej dokumentacji systemu OJS 3 omawiający import metadanych o artykułach i zeszytach za pomocą XML: https://docs.pkp.sfu.ca/importing-exporting/en/#articles-and-issues-xml-plugin. Dokumentacja ta, niestety zawiera drobne błędy (niezmienione opisy z wersji 2.x).
- Projekt PKP-OJS na github.
- native.xsd - Schema describing native XML import/export elements specific to OJS.