XML, XSL itp

W zasadzie XML nie jest ani językiem programowania, ani nawet rzeczywistym formatem danych, jest to jedynie składnia służąca do tworzenia formatów danych. Jednak XSL spełnia już wszystkie wymogi bycia językiem programowania. Na XSL składają się mechanizmy takie jak:

Prezentuje dwa dokumenty XSL wykorzystywane przez silnik tego serwisu - base.xsl, softdb.xsl. Pierwszy z nich odpowiedzialny jest za zamianę źródeł dokumentów w XHTML lub LaTeX (posiada dwa tryby, w trybie LaTeX musi być wykonywany przez parser XSL2.0 ze względu na użycie fn:replace). Drugi odpowiedzialny jest za generowanie XML'a używanego w źródłach strony z bazy oprogramowania/komend.

Przy debugowaniu kodów XMLowych niekiedy przydaje się skrypt do odnajdywania miejsca otwarcia niezamkniętego znacznika (niekiedy - np. gdy dopuszczane jest zagnieżdżanie danego znacznika - parsery wskazują jako miejsce błędu koniec pliku). Prezentuje jedno-linijkowiec ułatwiający takie wyszukiwanie (przykład dla znacznika <p>)

tr '\n' ' ' < body.xml | sed -e 's#</p>#\n#g' | grep '.*<p>.*<p>'

Bardzo przydatnym narzędziem do przetwarzania plików xml jest xmlstarlet umożliwiający np. łatwe wydobycie wartości jakiegoś tagu lub jego atrybutu. Dla przykładu jeżeli chcemy pobrać wartość atrybutu deadline z wszystkich znaczników TASK możemy posłużyć się następującym plikiem xsl (i wywołać go komendą xalan -xsl plik.xsl -in plik.xml):

<?xml version="1.0"?>

<xsl:stylesheet version="2.0"
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>
        <xsl:output method='text' encoding='utf-8' />

        <xsl:strip-space elements="*" />

        <xsl:template match="TASK">
                <xsl:value-of select="@deadline"/>
        </xsl:template>

        <xsl:template match="*|@*|processing-instruction()">
                <xsl:apply-templates select="*|@*|processing-instruction()" />
        </xsl:template>
</xsl:stylesheet>

Albo możemy po prostu użyć komendy xmlstarlet sel -t -v '//*/TASK/@deadline' plik.xml

Zobacz w Sieci: XML & XSL, XML - Managing Data Exchange



Copyright (c) 1999-2015, Robert Paciorek (http://www.opcode.eu.org/), BSD/MIT-type license


Redystrybucja wersji źródłowych i wynikowych, po lub bez dokonywania modyfikacji JEST DOZWOLONA, pod warunkiem zachowania niniejszej informacji o prawach autorskich. Autor NIE ponosi JAKIEJKOLWIEK odpowiedzialności za skutki użytkowania tego dokumentu/programu oraz za wykorzystanie zawartych tu informacji.

This text/program is free document/software. Redistribution and use in source and binary forms, with or without modification, ARE PERMITTED provided save this copyright notice. This document/program is distributed WITHOUT any warranty, use at YOUR own risk.

Valid XHTML 1.1 Dokument ten (URL: http://www.opcode.eu.org/programing/xml_xsl_itp) należy do serwisu OpCode. Autorem tej strony jest Robert Paciorek, wszelkie uwagi proszę kierować na adres e-mail serwisu: webmaster@opcode.eu.org.
Data ostatniej modyfikacji artykulu: '2015-10-10 11:32:32 (UTC)' (data ta może być zafałszowana niemerytorycznymi modyfikacjami artykułu).