accès aux groupes de discussion, consultation et publication d'articles, recherche de "newsgroups"...
membres, identifiez-vous
é-mail Mot de passe
nouveau ? mot de passe oublié ?
Chargement... Chargement en cours...

Groupes français belges canadiens suisses internationaux Nétiquette
Échangez opinions et commentaires dans les forums de discussion.

Re: [XSLT] Dynamiczne szablony

 [  Nouvelle Discussion Nouvelle discussion  |  Répondre au groupe Répondre au groupe  |  pl.comp.xml ] 

Retour : Accueil du site pl comp xml  


  Sujet:   Re: [XSLT] Dynamiczne szablony  
 De: cohe...@o2.pl (Andrew Cohen)
 Groupes: pl.comp.xml
 Organisation: Onet.pl
 Date: 16. Sep 2008, 02:42:27
 References: 1 2 3 4 5 6 7 8 9 10 11
Mariusz S. pisze:
> mhy, przerobić zawsze można, ale myślałem, że można rozwiązać ten 
> problem po stronie szablonu.
   No tak. Tak byłoby najlepiej. Wtedy samo php sprowadzałoby się do
przetransformowania GET na XML i odpalenia czegoś w stylu:

xslt::transformacja('szablony/index.xsl', $xml);

> Tworzenie oddzielnych plików xsl dla każdej akcji w module moim zdaniem 
> mija się z sensem.
   A jednak cytujesz takie rzeczy, jak kontakt_dodaj.xsl i kontakt_lista.xsl,
ponieważ chcesz pewne rzeczy trzymać osobno. Proponuję coś takiego (mogą być
błędy, to tylko koncepcja):

kontakty_dodaj.xsl:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:import href="modul.xsl" />
<xsl:template mode="abc" match="*">
	<!-- tutaj rzeczy z dodaj -->
</xsl:template>
<xsl:template match="system">
	<xsl:call-template name="strona" /> <!-- ewentualnie z with-param, jeśli trzeba
-->
</xsl:template>
</xsl:stylesheet>

modul.xsl:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:import href="head.xsl" />
<xsl:import href="body.xsl" />
<xsl:template name="strona">
    <html lang="pl">
      <head>
        <xsl:apply-templates select="." mode="Head"/>
      </head>
      <body>
        <xsl:apply-templates select="." mode="Body"/>
      </body>
    </html>
</xsl:template>
</xsl:stylesheet>

fragment body.xsl:
<!-- zamiast choose -->
<xsl:apply-templates select="." mode="abc"/>

   Jednak patrząc z szerszej perspektywy, to Twoje rozwiązanie jest lepsze. Masz
na wejściu xml, w którym w zależności od pewnego elementu/atrybutu chcesz
wykonać pewne template'y. xsl:choose właśnie do tego służy i to jest poprawne
rozwiązanie. Być może chciałbyś zaimportować tylko taki akrusz, z którego
rzeczywiście skorzystasz, a nie wszystkie (kontakty_dodaj.xsl,
kontakty_lista.xsl). I to jest właśnie to coś, co ja bym rozwiązywał na poziomie
PHP. Wybór arkuszu. Ten wybór zależy od parametrów z GET, które i tak
przetwarzasz w PHP, więc wybór arkuszu niewiele tutaj miesza, a będzie
optymalizacją dla silnika XSLT, który nie będzie musiał przetwarzać tylu plików.
Ile to będzie kodu w PHP i co tracisz nie robiąc tego w XSLT?
   A jeśli z jakichś innych powodów bardzo zależy Ci na tym, żeby jednak pewne
rzeczy zrobić w XSLT, a nie PHP, to szomiz podał najlepsze i najmocniejsze
rozwiązanie:

"Transformacje, przed jej wykonaniem mozesz... stransformowac ;>"

   Będzie to wymagało podwójnej transformacji za każdym razem (przez to
wolniejsze), ale będziesz miał swobodę, jakiej chcesz. Oczywiście do momentu,
kiedy okaże się, że przydałoby się to 3 razy transformować:)

   Podsumowując wywód: XSLT to nie Lisp. Tutaj nie można wszystkiego.


DateSujet  Auteur
15.09.
* [XSLT] Dynamiczne sz
Mariusz S.
15.09.
`* Re: [XSLT] Dynamiczne sz
Andrew Cohen
15.09.
 `* Re: [XSLT] Dynamiczne sz
Mariusz S.
15.09.
  +- Re: [XSLT] Dynamiczne sz
szomiz
15.09.
  `* Re: [XSLT] Dynamiczne sz
Andrew Cohen
15.09.
   `* Re: [XSLT] Dynamiczne sz
Mariusz S.
15.09.
    +* Re: [XSLT] Dynamiczne sz
szomiz
15.09.
    |`* Re: [XSLT] Dynamiczne sz
Mariusz S.
15.09.
    | +* Re: [XSLT] Dynamiczne sz
Andrew Cohen
15.09.
    | |`* Re: [XSLT] Dynamiczne sz
Mariusz S.
15.09.
    | | `* Re: [XSLT] Dynamiczne sz
Andrew Cohen
16.09.
    | |  `* Re: [XSLT] Dynamiczne sz
Mariusz S.
16.09.
    | |   +*   Re: [XSLT] Dynamiczne sz
Andrew Cohen
16.09.
    | |   |`* Re: [XSLT] Dynamiczne sz
Mariusz S.
16.09.
    | |   | `- Re: [XSLT] Dynamiczne sz
Andrew Cohen
16.09.
    | |   `* Re: [XSLT] Dynamiczne sz
NotBear
17.09.
    | |    `- Re: [XSLT] Dynamiczne sz
Mariusz S.
15.09.
    | `* Re: [XSLT] Dynamiczne sz
szomiz
15.09.
    |  `* Re: [XSLT] Dynamiczne sz
Andrew Cohen
15.09.
    |   +* Re: [XSLT] Dynamiczne sz
szomiz
15.09.
    |   |`* Re: [XSLT] Dynamiczne sz
Andrew Cohen
15.09.
    |   | `* Re: [XSLT] Dynamiczne sz
szomiz
15.09.
    |   |  `* Re: [XSLT] Dynamiczne sz
Andrew Cohen
15.09.
    |   |   `* Re: [XSLT] Dynamiczne sz
szomiz
15.09.
    |   |    `- Re: [XSLT] Dynamiczne sz
Andrew Cohen
15.09.
    |   `- Re: [XSLT] Dynamiczne sz
Mariusz S.
15.09.
    `* Re: [XSLT] Dynamiczne sz
Andrew Cohen
15.09.
     `- Re: [XSLT] Dynamiczne sz
Mariusz S.
Groups Explorer contact votre avis comment ça marche? rechercher un groupe suggérer un groupe abuse accueil du site   Imprimer cette page   Envoyer cette page ŕ un(e) ami(e)
Free counter and web stats