Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [xml[xslt] jak wiedziec jaki jest numer elementu?
Forum PHP.pl > Forum > XML, AJAX > XML
Kisiol_Ent
mam jakis plik XML np:

Kod
<plik>
<elem>dupa</elem>
<elem>paroofka</elem>
<elem>kakao</elem>
</plik>


i teraz robie translacje aby mi wypisywalo dane z kolejnych elementow <elem>
ale chce przy okazji wypisac numer tego elemetnu np:

1. dupa
2. paroofka
3. kakao

jak to zrobic?

a i przy okazji bo robie ksiege gosci i chcialbym tez wyswietlic elementy od tylu :/ w PHP jakos se poradizlem ledwo ale w xsl nieumiem:/
SHARKI
w xls sa 2 rodzaje "czytania/drukwoania" z xmla :
-szablon
-pętla


załuzmy ze chcesz to zrobic szablonem
  1.  
  2. XSL
  3.  
  4. - <xsl:template match="dokumet/plik">
  5. - <tr>
  6. - <th>
  7.  <xsl:value-of select="number(position())" />
  8.  </th>
  9. - <th>
  10.  <xsl:value-of select="elem" />
  11.  </th>
  12.  
  13.  </tr>
  14.  </xsl:template>
  15.  
  16.  
  17.  
  18.  
  19.  
  20. - <xsl:template match="/">
  21. - <html>
  22. - <head>
  23.  <title>tytul</title>
  24.  </head>
  25. - <body>
  26. - <table>
  27. - <tbody>
  28.  
  29. - <tr>
  30. - <xsl:apply-templates select="dokumet/plik"/>
  31.  </tr>
  32.  
  33.  </tbody>
  34.  </table>
  35.  </body>
  36.  </html>
  37.  </xsl:template>
Kisiol_Ent
Dzieki dziala wysmienicie :*
A ja wypisywac elementy od ostatniego do pierwszego?
SHARKI
zapewne sortując winksmiley.jpg w poniedziałek Ci napisze, jak coś to masz moje gg:3517052
Kisiol_Ent
Zapisze:>
Ale i tak jade dzis na hawaje wiec wroce dopiero za tydzien ja wydam moje 5000 dolarow.

Aha i jeszcze jedno. Bo jak zrobilem ta ksiege gosci, wypelnia sie formularz i potem php
dodaje do pliku XML wpisy. I pewne wpisy sie niepojawiły. dodałem nowe, bylo ok.
I na nastepny dzien jak wstałem to one sie pojawiłu, ale nie na koncuu, tylko w sordku
pliku XML czyli wtedy kiedy zostaly dodane. Jak to mozliwe? Niemoze tu byc mowy
ze strona sie cacheowala czy jak skoro nowe wpisy byly widoczne. Czy to jakos po stronie
serwera ktory hostinguje to?
SHARKI
  1.  
  2. XSL
  3.  
  4. - <xsl:template match="dokumet/plik">
  5. - <tr>
  6. - <th>
  7. <xsl:value-of select="number(position())" />
  8. </th>
  9. - <th>
  10. <xsl:value-of select="elem" />
  11. </th>
  12.  
  13. </tr>
  14. </xsl:template>
  15.  
  16.  
  17.  
  18.  
  19.  
  20. - <xsl:template match="/">
  21. - <html>
  22. - <head>
  23. <title>tytul</title>
  24. </head>
  25. - <body>
  26. - <table>
  27. - <tbody>
  28.  
  29. - <tr>
  30. - <xsl:apply-templates select="dokumet/plik">
  31. <!--
  32.  
  33.  
  34.  
  35. <xsl:sort select="liczba_numer" data-type="number" order="descending"/>
  36.  
  37.  
  38. tyle ze przy zapisywaniu do pliku powinieneś dodawać ten numer bo w w xls-u to numerowanie jest automatyczne i widac je tylko na stronie i zawsze jest "rosnące" 1 2 3 4 5 6 ....
  39. musisz mieć pole z data dodania ? albo cyfrą która będzie dopisywana do pliku xml'a :(
  40.  
  41. jak już masz ta wartość to można sortować według liczby :data-type="number" albo wedlug literek data-type="text"
  42.  
  43. zeby bylo rosnaca : order="ascending" malejąco order="descending"
  44.  
  45. a na początku trzeb apodac wedlug jakiego pola bedzie sortowac czyli select="jakies_pole"
  46.  
  47.  
  48.  
  49. --!>
  50.  
  51.  
  52. </xsl:apply-templates>
  53. </tr>
  54.  
  55. </tbody>
  56. </table>
  57. </body>
  58. </html>
  59. </xsl:template>



a co do 2 problemu to nie umiem ci pomóc , nie znam się, ale jesli dobrze zrozumiałem to wpisy pojawiaja sie we wlasciwej kolejności ale popewnym czasie dopiero
milej zabawy
Kisiol_Ent
A kumam, to dodam jakis atrybut np: <Person which="1"> ...
SHARKI
ale gdzie ty chesz atrubut bo nie kminie
Kisiol_Ent
Kod
<QuestBook count="2">

  <Person which="1">
    <Nick>Ziomal</Nick>
    <Mail>dupa@gejowo.pl</Mail>
    <Content>Elo Elo!</Content>
  </Person>

<Pesron which="2">
...
</Person>

</QuestBook?


I dzieki temu chyba bede mogl odczytywac po tym WHICH atrybucie, tak mysle..
Kaca mam:/
SHARKI
rozumiem to ze to jest fragment xml'a

tylko hmm , jak rozumiem to będziesz chciał wyświetlać wszystkie

no dobra

nie wiem jak chcesz to wyswietlac

czy
1.

nick mail
content

2.

nick ( po pkliknieciu na nick jest podlinkowany mailem)

content

3.

nick mail content


questionmark.gif

przydala by sie jeszcze data winksmiley.jpg

załuzmy ze bedziesz chcial 1. opcje


  1. XSL
  2.  
  3. <xsl:template match="plik/QuestBook">
  4. <tr>
  5. <th>
  6. <xsl:value-of select="Nick" />
  7. </th>
  8. <th>
  9. <xsl:value-of select="Mail"/>
  10. </th>
  11. </tr>
  12. <tr>
  13. <xsl:value-of select="Content"/>
  14. </tr>
  15. </xsl:template>
  16.  
  17.  
  18. <!-- szablon /\ -->
  19.  
  20.  
  21.  
  22. <xsl:template match="/">
  23. <html>
  24. <head>
  25. <title>tytul</title>
  26. </head>
  27. <body>
  28. <table>
  29. <tbody>
  30. <tr>
  31. <xsl:apply-templates select="plik/QuestBook[@count='2']">
  32.  
  33. <xsl:sort select="which" data-type="number" order="descending"/>
  34.  
  35. <!--
  36. zeby bylo rosnaca : order="ascending" malejąco order="descending"
  37. -->
  38.  
  39. </xsl:apply-templates>
  40. </tr>
  41.  
  42. </tbody>
  43. </table>
  44. </body>
  45. </html>
  46. </xsl:template>


a plik xml'a

zeby to działało powinien byc taki


  1. <QuestBook count="2">
  2.  
  3.  <Person>
  4.    <which>1</which>
  5.    <Nick>Ziomal</Nick>
  6.    <Mail>dupa@gejowo.pl</Mail>
  7.    <Content>Elo Elo!</Content>
  8.  </Person>
  9.  
  10. <Pesron>
  11. ...
  12. </Person>
  13.  
  14. </QuestBook>


nie umiem z argumentem which...

napisz czy dziala
Kisiol_Ent
Udalo mi sie:P

Kod
<QuestBook>
  <Person which="1">
    <Nick>Kisiol_Ent.</Nick>
    <Mail>brak</Mail>
    <Content>
     lorem ipum siukum dikum
    </Content>
    <IP>99.99.99.99</IP>
    <Time>2007-July-1, 12:57 am</Time>
  </Person>

  <Person which="2">
..
</QuestBook>


a w pliku xsl mam tak:

Kod
  <xsl:template match="QuestBook">
  
    <xsl:for-each select="Person">
      <div>
        <h4>#<xsl:value-of select="count(../Person)-position()+1"/>          <!-- questionmark.gif? -->
          <xsl:value-of select="Nick"/>   email: <xsl:value-of select="Mail"/>
        </h4>
        <p>
        <xsl:value-of select="Content" />
        </p>                
      </div>
  
    <xsl:sort select="@which" data-type="number" order="descending"/>          
    </xsl:for-each>
    
    
  
  </xsl:template>


Tylko niewiem czy te sort jest w dobrym miejscu wstawione.
i w tym tagu H4 to cos teraz wstawilem i dziala, niby zlicza wszystkie tagi person i odejmuje pozycje wiec
numerki sa odwrotnie wyswietlane o0 tak mi sie wydaje ze dobrz ezrobilem.
Teraz mysle jak zrobic lepiej te sortowanie bo ten tag which mi niepotrzebny..
Jabol
position()
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.