Przetwarzanie XML na HTML przy użyciu XSL

0

Witam,

Mam pytanie dotyczące przetwarzania XML'a na HTML. Na początek szybki przykład. Mam taki oto XML:

<ludzie>
  <człowiek dane="poprawne">
    <imie>Paweł</imie>
    <nazwisko>Stroiński</nazwisko>
    <poczta>[email protected]</poczta>
    <web>http://www.pabloware.com/</web>
  </człowiek>
  <człowiek dane="fikcyjne">
    <imie>Jan</imie>
    <nazwisko>Kowalski</nazwisko>
    <poczta>[email protected]</poczta>
    <web>http://www.kowalski.net</web>
  </człowiek>
</ludzie>

oraz taki XSL:

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

  <xsl:template match="/">
    <xsl:apply-templates/>
  </xsl:template>

  <xsl:template match="ludzie">
    <html>
      <body>
        <table border="1">
          <tr>
            <td><b>Dane</b></td><td><b>Imię</b></td><td><b>Nazwisko</b></td>
            <td><b>Poczta</b></td><td><b>Web</b></td>
          </tr>
          <xsl:apply-templates/>
        </table>
      </body>
    </html>
  </xsl:template>
  
</xsl:stylesheet>

Po przetworzeniu uzyskam coś takiego:
user image

Do tej pory jest wszystko oczywiste. Męczy mnie jednak jeden problem. Taki efekt mogę otrzymać tworząc XSL dla ZNANEGO mi dokumentu XML. Co w przypadku, gdy nie wiem jaka jest struktura tego pliku. Co jeśli znam tylko nazwę korzenia i pierwszego węzła (w tym przypadku <code> oraz <człowiek>)?
Jeśli znam dokument XML, mogę wpisać w kolumny nazwy wyświetlanych danych (Imię, Nazwisko,Poczta,Web), ale nie potrafię ich określić dla nieznanego mi pliku. Chciałbym więc te "nazwy" wyciągnąć z XML'a i wyświetlić jako nagłówki kolumn, ale nie wiem jak :/

Będę wdzięczny za podpowiedź, lub link do kursu gdzie mogę o tym poczytać.

Pozdrawiam

-----------------EDIT-----------------

Może inaczej zadam pytanie. Chciałbym wiedzieć, jak uzyskać identyczny efekt, jak na zamieszczonym przeze mnie screenie używając tylko nazw węzłów "ludzie" oraz "człowiek".

1

Przeparsuj po stronie serwera i wygeneruj HTML.

0

@Demonical Monk niestety nic mi to nie mówi :/ Ja myślałem, że XML'a na HTML'a tylko poprzez XSLT da się przerobić.

1

Normalnie przez PHP/wtf przetworzyć i wypisać użytkownikowi HTML?

0

@Demonical Monk dobry człowieku nie pisz skrótami :D To są moje dziewicze wyprawy w kierunku XML i chodź jest on banalnie prosty, to dostęp do danych jest straszny. Od tygodnia siedzę przy xPath i kombinuję.

Krótko mówiąc chcę XML'a, którego mam pod zmienną string w PHP zapisaną, przerobić na HTML'a. Więc jeśli znasz lepszy pomysł na rozwiązanie tego niż użycie XML, to napisz mi proszę o czym muszę poczytać, ewentualnie wrzuć jakiś link, a ja od razu zabieram się za analizę :D

Biorąc pod uwagę "znaną" mi strukturę pliku XML, to użycie XSL jest banalne, ale jak chcę, żeby coś się automatycznie robiło, to jest masakra.

1

Użyj PHP, przerób to sobie na tablicę ( http://php.net/simplexml ) i wypisz jako zwykły HTML?

0

@Demonical Monk złoty z ciebie człowiek :) Dzięki wielkie. Czytałem o SimpleXML, ale wtedy gdy głowiłem się nad wyciągnięciem danych z mySQL i zrobienia z nich XML'a. Teraz całkiem mi już z głowy wyleciał i grzebałem się z tym XSL'em :/

Jeszcze raz dzięki.

==================
Po chili namysłu jest jednak fail :D Zrobię HTML'a przy użyciu SimpleXML, ale PDF'a już nie, a taki był zamysł :D Więc tak czy inaczej muszę się z XSL'em grzebać :D

1

Z racji, że dział ogólny a nie stricte PHP to dam moje rozwiązanie w Rubym:

require 'nokogiri'
require 'open-uri'

xml = Nokogiri::XML(open('http://example.com/path/to/your.xml'))

ludzie = []

xml.css('człowiek').each do |ludz|
  info = {}
  ludz.children.each do |node|
    info[node.name] = node.text
  end
  ludzie << info
end

Teraz w tablicy ludzie masz zawarte informacje o każdym ludziu.

0

@winerfresh czyli cuś takiego, jak w SimpleXML od @Demonical Monk :) Z tym, że ja chcę przygotować różne szablony, w zależności od "podstrony" na której się znajduje user. Plus do tego generowanie PDF i pliku Exel'a, więc muszę to na XSL zrobić :/

Trudno, posiedzę kolejny tydzień pewnie na coś wpadnę :D

1

Ale kto broni generować pliki Exel'a i PDF'y w PHP/Rubym? Do Ruby'ego masz Prawn do PDF'ów, do Exela też coś znajdziesz. Zawsze możesz użyć http://docraptor.com/

0

Dzięki za link, obadam.

1 użytkowników online, w tym zalogowanych: 0, gości: 1