Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [XSLT] Dynamiczna ilośc atrybutów..
MDziubek
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 3.08.2005

Ostrzeżenie: (0%)
-----


A więc robie arkusz XSLT, który przekształca XML-a wygenorwanego przez ADO Recordset metodą save.
I pojawia mi się problem, mianowicie zakladamy że mam pola o nazwach p1, p2, p3.
W strukturze dokumentu mam opisane pola więc wiem ile ich powinno wystapić, każdy rekord jest zapisany tak:

  1. <z:row p1='frfrf' p2='frfrf' p3='frfrf'/>


wiec w arkuszu robie po nich pętle:
  1. <xsl:template match="/xml/rs:data/z:row" mode="det">
  2.            <tr>
  3.                  <xsl:for-each select="@*">
  4.                            <td><xsl:value-of select='.'/></td>
  5.                  </xsl:for-each>
  6.            </tr>
  7.      </xsl:template>


Która z każdego węzła robi wiersz w tabeli.
Problem polega na tym że gdy jakieś pole jest puste to brak atrybutu, wiec może być np. tak

  1. <z:row p1='frfrf' p2='frfrf' p3='frfrf'/>
  2. <z:row p1='frfrf' p3='frfrf'/>


Wiec powyższa pętla zadziala ale przy generowaniu tabeli zostanie pominięta 2 kolumna...

Potrafie zrobic petle po nazwach kolumn:

  1. <xsl:for-each select="/xml/s:Schema/s:ElementType[@name='row']/s:AttributeType">
  2.    <xsl:value-of select='@name'/>
  3. </xsl:for-each>


Jednak nie wiem jak dalej, a więc na necie znalazłem przykład który robi powyższą pętle i później wyciaga dane z wiersza:

  1. <xsl:value-of select="context(-2)/@*[nodeName()=context(-1)/@name]" />


ale to wymaga zadeklarowania w przestrzeni nazw:

  1. xmlns:xsl="http://www.w3.org/TR/WD-xsl"

A to z kolei uniemozliwi mi użycie funkcji document(), na co nie moge sobie pozwolić, więc nie wiem jak to obejść...
Może ktoś ma pomysł?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 06:54