Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: xml i "szablony" ?
Forum PHP.pl > Forum > Po stronie przeglądarki
balu
chcę zrobić coś na zasadzie szablonów i uparłem się, że bedzie to w xml

mam kilka tutoriali i chciałem aby powiedzmy te 10 plików przechodziło przez jakiś szablon. Chodzi mi o to, że jak później będe chciał zmienić wygląd, to nie będe musiał grzebać w tych 10 plikach tylko w jednym tj. szablonie.

Zrobiłem więc tutek.xml:
Kod
<?xml version="1.0" encoding="utf-16"?>

<?xml-stylesheet type="text/xsl" href="style.xsl"?>



<tutorial tytul="Tytul tutoriala">



  <punkt>

    <id>1</id>

    <tresc>Stworz nowy obrazek o wymiarach 200x200.</tresc>

    <obrazek>link do obrazka</obrazek>

  </punkt>



  <info>

    <autor>Autor tutoriala</autor>

    <mail>mail autora</mail>

    <tlumacz>W przypadku gdy tutorial jest tlumacozny</tlumacz>

    <www>http://photoshop.pl</www>

  </info>



</tutorial>


plik style.xsl wygląda tak:
Kod
<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="tutorial">

    <html>

    <head>

    <title>Centrum Tutoriali - <xsl:value-of select="@tytul"/></title>

    </head>

    <body bgcolor="#ffffff">

      <table cellpadding="0" cellspacing="0" border="0" width="500" align="center">

        <tr>

          <td> <b> <xsl:value-of select="@tytul"/> </b> </td>

        </tr>

         <xsl:apply-templates/>

      </table>

    </body>

    </html>

  </xsl:template>



  <xsl:template match="punkt">

        <tr>

          <td> <xsl:variable name="id">

            <xsl:value-of select="id"/>

            </xsl:variable><br/><img src="img/{$id}.gif"></img>  </td>

        </tr>

        <tr>

             <td><xsl:attribute name="style">font-size:13px; font-face:verdana,tahoma</xsl:attribute> <xsl:value-of select="tresc"/></td>

         </tr>

         <tr>

           <td> <xsl:variable name="obrazek">

               <xsl:value-of select="obrazek"/>

                </xsl:variable><br/><img src="{$obrazek}"></img></td>

         </tr>

    </xsl:template>

    <xsl:template match="info">

         <tr>

           <td> <b>Autor: </b> <xsl:value-of select="autor"/> </td>

         </tr>

    <xsl:variable name="mail">

    <xsl:value-of select="mail"/>

    </xsl:variable>

          <tr>

            <td><b>Mail: </b> <a href="mailto:{$mail}"> <xsl:value-of select="$mail"/></a> </td>

          </tr>

          <tr>

            <td> <b>Przetłumaczył: </b><xsl:value-of select="tlumacz"/> </td>

          </tr>

    <xsl:variable name="www">

    <xsl:value-of select="www"/>

    </xsl:variable>

           <tr>

             <td> <b>WWW: </b> <a href="{$www}"> <xsl:value-of select="$www"/> </a> </td>

           </tr>

    </xsl:template>

</xsl:stylesheet>



Mam parę pytanek:
1) Jak wpisuje znaczniki z html np. <br> czy <b> w <tresc> </tresc> to niestety w wyniku, w przeglądarce jakby przeglądarka je pomijała bo ich nie ma. Dodatkowo każe mi je zamykać czyli <br></br>. Co zrobić aby je uzyskać a może w ogóle nie można?

2) Czy jest to w ogóle dobry pomysł aby tutoriale (jest ich dużo ok. 70) przerabiać na xml i czy w ogóle xml jest tutaj dobrym pomysłem? Może zastosować php?

3) Czy jest możliwy zapisa za pomocą plików xml do bazy danych np. mysql.

4) Jak ma ktoś pomysł jak w ogóle to załatwić to byłoby fajnie.

Chodzi mi o to aby oglądający tutoriale mogli też łatwo je dodawać i później w razie czego edytować.


Dodam, że przejrzałem dzisiaj masę kursów, porad itp. i nie znalazłem tego więc nie odsyłajcie mnie o żadnych materiałow, źródeł chyba, że są trafione smile.gif.

Dzięki
_________________________________________
od itsme : pozwoliłem zmienić na code zgodnie ze zdaniem Admina
dragossani
Ten post jest trochę nie na temat jeśli chodzi o to forum, ale postanowiłem go nie moderować, bo nie miałem pomysłu do którego działu go przenieść. rolleyes.gif biggrin.gif Forum XML na razie nie ma. A może powinno być? (pytanie nie jest retoryczne - odpowiedzi proszę na forum Opinie)

Jeszcze jedna uwaga: taki kod jak ten co opublikowałeś, obejmuj na forum znacznikiem CODE.

Odnośnie pytań:

ad.1. Nie nie mam za bardzo doświadczenia ze skryptami przekształceń XSLT, więc nie odpowiem Ci na pytanie dlaczego jakieś fragmenty kodu są ignorowane. Mogę się jednak domyślać, dlaczego musisz zamykać znacznik <br>. Zamykania znaczników wymaga specyfikacja XHTML - może akurat przeglądarka sobie o tym standardzie przypomniała. Na marginesie - znacznik jednoczęściowy zamyka się tak: <br />

ad.2. XML jest dobrym pomysłem, a php jest jeszcze lepszym. Najlepiej trzymaj tutoriale jako XML wewnątrz bazy danych SQL, a transformacje XML => XHTML dokonuj przy użyciu php. Pamiętaj, że XSLT obsługuje w tej chwili wyłącznie MSIE. Inne przeglądarki wyłożą się na Twoim kodzie.

ad.3. Nie do końca rozumiem pytanie. Możesz je sprecyzować?

ad.4. Patrz pkt.2.
balu
co do tego kodu to sorki faktycznie teraz jest czytelniej

co do forum xml to cholernie mi jest na ręke smile.gif
próbowałem szukać jakieś polskie i nie znalazłem więc przydałoby się


dragossani: "znacznik jednoczęściowy zamyka się tak: <br />"
wiem, wiem i tak nie działa

co do Twojej odpowiedzi ad2 to mów do mnie a ja do Ciebie biggrin.gif. ja może dobry z webdesignu jestem ale php to u mnie marnie. z xml jest tak, że dopiero dzisiaj zacząłęm się bawic i jakoś tam może wychodzi.

ad3. hmm jak to powiedzieć. chodzilo mi o to czy możliwe jest, pewnie nie, zapisywanie danych do pól w bazie dancyh albo czy możliwe jest odczytywanie ich w xmlu?

ad4. trochę niejasno to pytanie sformułowałem. miałem na myśli tutaj taką rzecz czy ktoś widizałby inne rozwiązanie takiej bazy tutoriali. po prostu jak do tego podejść. nie mam nawet pomysłu
Jabol
ad3.
Powiem ci tak. Przyda ci sie jakikolwiek język programowania, jak chociażby php, Python ,Perl lub nawet C/C++. Na pewno możesz zapomnić, że ci sie to uda bez znajomości jakiegoś serwer side'a. Masz wybór. Polecam php. A twój tutorial należy zamienić do stringa wtedy wystarczy włożyć do bazy danych jako string, a wyjmujać po prostu przepuścić to przez jakiś system obsługi XML'a, jak np. DOM lub SAX. Lub jeśli chcesz włożyć do bazy danych poszczególne pola to musisz przepuścić dokument przez jakąś obsługe XML'a przed włożeniem do bazy, wyjmując po prostu trzeba zbudować "świeży" dokument XML z danych z zawartości bazy.
kurtz
Witam :)

[quote]1) Jak wpisuje znaczniki z html np. <br> czy <b> w <tresc> </tresc> to niestety w wyniku, w przeglądarce jakby przeglądarka je pomijała bo ich nie ma. Dodatkowo każe mi je zamykać czyli <br></br>.  Co zrobić aby je uzyskać a może w ogóle nie można?[/quote]ie traktue te tagi jako koljne elmenty w strukturze drzewka. musisz albo wruzci co do PCDATA albo zakodowac odpowiednio < i >

[quote]2) Czy jest to w ogóle dobry pomysł aby tutoriale (jest ich dużo ok. 70) przerabiać na xml i czy w ogóle xml jest tutaj dobrym pomysłem? Może zastosować php?[/quote]skoro sie uparles to dobry ;)) a na serio to lepiej uzyc czegos co wyprodukuje htmla - na dzis dzien niestety malo ktora przegladakra wspiera xslt - mozilla i ie?

[quote]3) Czy jest możliwy zapisa za pomocą plików xml do bazy danych np. mysql.[/quote]jest mozliwy (jesli mowisz o imporcie danych) do bazy - spokojnie radzi sobie z tym mssql a do oracle mozesz dolozyc sobie narzedzie rowniez importujace xmla do bazy. jesli chodzilo o cos innego prosze powiedz wiecej :)

[quote]4) Jak ma ktoś pomysł jak w ogóle to załatwić to byłoby fajnie.[/quote]heh - jak chccesz. ograniczac ciebie moze tylko wyobraznia - jak dla mnie najwygodniej jest korzystac z szablonow by wysylac dane juz w postaci koncowej do przegladarki - ale nie musisz tak robic

pozdrawiam

Chodzi mi o to aby oglądający tutoriale mogli też łatwo je dodawać i później w razie czego edytować.


Dodam, że przejrzałem dzisiaj masę kursów, porad itp. i nie znalazłem tego więc nie odsyłajcie mnie o żadnych materiałow, źródeł chyba, że są trafione :).

Dzięki
_________________________________________
od itsme : pozwoliłem zmienić na code zgodnie ze zdaniem Admina[/quote]
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.