Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> XML i problem z szablonem XSLT
adamec
post 18.04.2012, 09:57:09
Post #1





Grupa: Zarejestrowani
Postów: 30
Pomógł: 3
Dołączył: 18.04.2012
Skąd: Rybnik

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


Witam! Problem polega na tym, iż szablon XSLT, ktory stworzyłem do prezentowania danych z XML w postaci tabelek , zupełnie nie działa , próbowałem już wielu rozwiązań i skończyły mi się pomysły . Może ktoś pomoże . Z całego XML interesuje mnie tylko prezentacja TOWARu w tabelce KOD | NAZWA | JM | . Sam plik XML jest generowany przez program CDN OPTIMA i ma taką postać:
  1. <?xml version="1.0" encoding="windows-1250"?>
  2. <!-- edited with XMLSpy v2012 rel. 2 sp1 (x64) (http://www.altova.com) by adamec (a) -->
  3. <?xml-stylesheet type="text/xsl" href="cennik.xsl"?>
  4. <ROOT xmlns="http://www.cdn.com.pl/optima/cennik">
  5. <TOWARY>
  6. <WERSJA>1.00</WERSJA>
  7. <BAZA_ZRD_NAZWA>test</BAZA_ZRD_NAZWA>
  8. <TOWAR>
  9. <KOD>00001</KOD>
  10. <TYP>1</TYP>
  11. <PRODUKT>0</PRODUKT>
  12. <NUMER_KAT/>
  13. <SWW/>
  14. <EAN>5907666900017</EAN>
  15. <NAZWA>WENTYLATOR 100/WYŁ.MECH.</NAZWA>
  16. <GRUPA>WENTYLACJA</GRUPA>
  17. <URL/>
  18. <KATEGORIA_SPRZEDAZY>
  19. <OPIS_KATEGORII/>
  20. </KATEGORIA_SPRZEDAZY>
  21. <KATEGORIA_ZAKUPOW>
  22. <OPIS_KATEGORII/>
  23. </KATEGORIA_ZAKUPOW>
  24. <NIEAKTYWNY>0</NIEAKTYWNY>
  25. <OPIS/>
  26. <EDYCJA_NAZWY>0</EDYCJA_NAZWY>
  27. <KOPIUJ_OPIS>0</KOPIUJ_OPIS>
  28. <EDYCJA_OPISU>0</EDYCJA_OPISU>
  29. <JM>SZT</JM>
  30. <JMZ>SZT</JMZ>
  31. <JM_PRZELICZNIK_L>1.00</JM_PRZELICZNIK_L>
  32. <JM_PRZELICZNIK_M>1</JM_PRZELICZNIK_M>
  33. <JM_CALKOWITE>0</JM_CALKOWITE>
  34. <KAUCJA>0</KAUCJA>
  35. <NUMER_CENY>2</NUMER_CENY>
  36. <UDOSTEPNIAJ_W_CENNIKU>0</UDOSTEPNIAJ_W_CENNIKU>
  37. <TYP_MINIMUM>0</TYP_MINIMUM>
  38. <MIN_CENA_MARZA> 0.000</MIN_CENA_MARZA>
  39. <WALUTA>
  40. <SYMBOL>PLN</SYMBOL>
  41. <KURS_NUMER>2</KURS_NUMER>
  42. <KURS_L>1.00</KURS_L>
  43. <KURS_M>1</KURS_M>
  44. </WALUTA>
  45. <KOSZT_USLUGI>
  46. <WALUTA>0.00</WALUTA>
  47. <WARTOSC>0.00</WARTOSC>
  48. <TYP>1</TYP>
  49. </KOSZT_USLUGI>
  50. <DOSTAWCA>
  51. <KOD_U_DOSTAWCY/>
  52. </DOSTAWCA>
  53. <ILOSC_MIN> 0.0000</ILOSC_MIN>
  54. <ILOSC_MIN_JM>SZT</ILOSC_MIN_JM>
  55. <ILOSC_MAX> 0.0000</ILOSC_MAX>
  56. <ILOSC_MAX_JM>SZT</ILOSC_MAX_JM>
  57. <ILOSC_ZAM> 0.0000</ILOSC_ZAM>
  58. <ILOSC_ZAM_JM>SZT</ILOSC_ZAM_JM>
  59. <STAWKA_VAT>
  60. <STAWKA>22.00</STAWKA>
  61. <FLAGA>2</FLAGA>
  62. <ZRODLOWA>0.00</ZRODLOWA>
  63. </STAWKA_VAT>
  64. <STAWKA_VAT_ZAKUPU>
  65. <STAWKA>22.00</STAWKA>
  66. <FLAGA>2</FLAGA>
  67. <ZRODLOWA>0.00</ZRODLOWA>
  68. </STAWKA_VAT_ZAKUPU>
  69. <CENY/>
  70. </TOWAR>
  71. <TOWAR>
  72. <KOD>00002</KOD>
  73. <TYP>1</TYP>
  74. <PRODUKT>0</PRODUKT>
  75. <NUMER_KAT/>
  76. <SWW/>
  77. <EAN>5907666900024</EAN>
  78. <NAZWA>WENTYLATOR 100/PEŁNA AUT.</NAZWA>
  79. <GRUPA>WENTYLACJA</GRUPA>
  80. <URL/>
  81. <KATEGORIA_SPRZEDAZY>
  82. <OPIS_KATEGORII/>
  83. </KATEGORIA_SPRZEDAZY>
  84. <KATEGORIA_ZAKUPOW>
  85. <OPIS_KATEGORII/>
  86. </KATEGORIA_ZAKUPOW>
  87. <NIEAKTYWNY>0</NIEAKTYWNY>
  88. <OPIS/>
  89. <EDYCJA_NAZWY>0</EDYCJA_NAZWY>
  90. <KOPIUJ_OPIS>0</KOPIUJ_OPIS>
  91. <EDYCJA_OPISU>0</EDYCJA_OPISU>
  92. <JM>SZT</JM>
  93. <JMZ>SZT</JMZ>
  94. <JM_PRZELICZNIK_L>1.00</JM_PRZELICZNIK_L>
  95. <JM_PRZELICZNIK_M>1</JM_PRZELICZNIK_M>
  96. <JM_CALKOWITE>0</JM_CALKOWITE>
  97. <KAUCJA>0</KAUCJA>
  98. <NUMER_CENY>2</NUMER_CENY>
  99. <UDOSTEPNIAJ_W_CENNIKU>0</UDOSTEPNIAJ_W_CENNIKU>
  100. <TYP_MINIMUM>0</TYP_MINIMUM>
  101. <MIN_CENA_MARZA> 0.000</MIN_CENA_MARZA>
  102. <WALUTA>
  103. <SYMBOL>PLN</SYMBOL>
  104. <KURS_NUMER>2</KURS_NUMER>
  105. <KURS_L>1.00</KURS_L>
  106. <KURS_M>1</KURS_M>
  107. </WALUTA>
  108. <KOSZT_USLUGI>
  109. <WALUTA>0.00</WALUTA>
  110. <WARTOSC>0.00</WARTOSC>
  111. <TYP>1</TYP>
  112. </KOSZT_USLUGI>
  113. <DOSTAWCA>
  114. <KOD_U_DOSTAWCY/>
  115. </DOSTAWCA>
  116. <ILOSC_MIN> 0.0000</ILOSC_MIN>
  117. <ILOSC_MIN_JM>SZT</ILOSC_MIN_JM>
  118. <ILOSC_MAX> 0.0000</ILOSC_MAX>
  119. <ILOSC_MAX_JM>SZT</ILOSC_MAX_JM>
  120. <ILOSC_ZAM> 0.0000</ILOSC_ZAM>
  121. <ILOSC_ZAM_JM>SZT</ILOSC_ZAM_JM>
  122. <STAWKA_VAT>
  123. <STAWKA>22.00</STAWKA>
  124. <FLAGA>2</FLAGA>
  125. <ZRODLOWA>0.00</ZRODLOWA>
  126. </STAWKA_VAT>
  127. <STAWKA_VAT_ZAKUPU>
  128. <STAWKA>22.00</STAWKA>
  129. <FLAGA>2</FLAGA>
  130. <ZRODLOWA>0.00</ZRODLOWA>
  131. </STAWKA_VAT_ZAKUPU>
  132. <CENY/>
  133. </TOWAR>
  134. <TOWAR>
  135. <KOD>00003</KOD>
  136. <TYP>1</TYP>
  137. <PRODUKT>0</PRODUKT>
  138. <NUMER_KAT/>
  139. <SWW/>
  140. <EAN>5907666900031</EAN>
  141. <NAZWA>WENTYLATOR 125 WYŁ.MECHA.</NAZWA>
  142. <GRUPA>WENTYLACJA</GRUPA>
  143. <URL/>
  144. <KATEGORIA_SPRZEDAZY>
  145. <OPIS_KATEGORII/>
  146. </KATEGORIA_SPRZEDAZY>
  147. <KATEGORIA_ZAKUPOW>
  148. <OPIS_KATEGORII/>
  149. </KATEGORIA_ZAKUPOW>
  150. <NIEAKTYWNY>0</NIEAKTYWNY>
  151. <OPIS/>
  152. <EDYCJA_NAZWY>0</EDYCJA_NAZWY>
  153. <KOPIUJ_OPIS>0</KOPIUJ_OPIS>
  154. <EDYCJA_OPISU>0</EDYCJA_OPISU>
  155. <JM>SZT</JM>
  156. <JMZ>SZT</JMZ>
  157. <JM_PRZELICZNIK_L>1.00</JM_PRZELICZNIK_L>
  158. <JM_PRZELICZNIK_M>1</JM_PRZELICZNIK_M>
  159. <JM_CALKOWITE>0</JM_CALKOWITE>
  160. <KAUCJA>0</KAUCJA>
  161. <NUMER_CENY>2</NUMER_CENY>
  162. <UDOSTEPNIAJ_W_CENNIKU>0</UDOSTEPNIAJ_W_CENNIKU>
  163. <TYP_MINIMUM>0</TYP_MINIMUM>
  164. <MIN_CENA_MARZA> 0.000</MIN_CENA_MARZA>
  165. <WALUTA>
  166. <SYMBOL>PLN</SYMBOL>
  167. <KURS_NUMER>2</KURS_NUMER>
  168. <KURS_L>1.00</KURS_L>
  169. <KURS_M>1</KURS_M>
  170. </WALUTA>
  171. <KOSZT_USLUGI>
  172. <WALUTA>0.00</WALUTA>
  173. <WARTOSC>0.00</WARTOSC>
  174. <TYP>1</TYP>
  175. </KOSZT_USLUGI>
  176. <DOSTAWCA>
  177. <KOD_U_DOSTAWCY/>
  178. </DOSTAWCA>
  179. <ILOSC_MIN> 0.0000</ILOSC_MIN>
  180. <ILOSC_MIN_JM>SZT</ILOSC_MIN_JM>
  181. <ILOSC_MAX> 0.0000</ILOSC_MAX>
  182. <ILOSC_MAX_JM>SZT</ILOSC_MAX_JM>
  183. <ILOSC_ZAM> 0.0000</ILOSC_ZAM>
  184. <ILOSC_ZAM_JM>SZT</ILOSC_ZAM_JM>
  185. <STAWKA_VAT>
  186. <STAWKA>22.00</STAWKA>
  187. <FLAGA>2</FLAGA>
  188. <ZRODLOWA>0.00</ZRODLOWA>
  189. </STAWKA_VAT>
  190. <STAWKA_VAT_ZAKUPU>
  191. <STAWKA>22.00</STAWKA>
  192. <FLAGA>2</FLAGA>
  193. <ZRODLOWA>0.00</ZRODLOWA>
  194. </STAWKA_VAT_ZAKUPU>
  195. <CENY/>
  196. </TOWAR>
  197. </TOWARY>
  198. <RECEPTURY/>
  199. <SCHEMATY_OPAKOWAN/>
  200. <MAGAZYNY/>
  201. <KATEGORIE/>
  202. </ROOT>
  203.  
  204.  


a XSLT jest stworzony przeze mnie i niestety nie czyni tego o co mi chodziło:

  1. <?xml version='1.0'?>
  2. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  3. <xsl:output method="html" encoding="UTF-8"/>
  4. <xsl:template match="/">
  5. <xsl:apply-templates/>
  6. </xsl:template>
  7.  
  8. <xsl:template match="ROOT">
  9. <html>
  10. <body>
  11. <table border="1">
  12. <tr>
  13. <td><b>Symbol</b></td><td><b>Nazwa</b></td><td><b>J.M</b></td>
  14.  
  15. </tr>
  16. <xsl:apply-templates/>
  17. </table>
  18. </body>
  19. </html>
  20. </xsl:template>
  21. <xsl:template match="TOWAR">
  22. <tr>
  23. <td><xsl:value-of select="KOD"/></td>
  24. <td><xsl:value-of select="NAZWA"/></td>
  25. <td><xsl:value-of select="JM"/></td>
  26. </tr>
  27. </xsl:template>
  28.  
  29. </xsl:stylesheet>
  30.  


Prosze o jakieś pomysły lub rozwiązanie problemu


--------------------
Jeżeli uda mi się pomóc Tobie to jestem usatysfakcjonowany . Wtedy Ty kliknij na POMÓGŁ
Go to the top of the page
+Quote Post
mortus
post 18.04.2012, 15:13:14
Post #2





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Problemem są przestrzenie nazw. Chodzi o to, że plik XSL definiuje własną przestrzeń nazw z prefiksem xsl (xmlns:xsl), a dokument XML definiuje inną przestrzeń nazw dla elementu <ROOT> (xmlns="<ROOT xmlns="http://www.cdn.com.pl/optima/cennik">"). Powstaje konflikt przestrzeni nazw. Jako, że dokument XML ma taką a nie inną specyfikację zmian musisz dokonać w pliku XSL. Zmiany te polegać będą na dodaniu prefiksu do przestrzeni nazw zdefiniowanej dla elementu <ROOT>:
  1. <?xml version="1.0"?>
  2. <xsl:stylesheet version="1.0"
  3. xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  4. xmlns:a="http://www.cdn.com.pl/optima/cennik"
  5. exclude-result-prefixes="a"
  6. >
  7. <xsl:output method="html" encoding="UTF-8"/>
  8. <xsl:template match="/">
  9. <xsl:apply-templates/>
  10. </xsl:template>
  11.  
  12. <xsl:template match="a:ROOT">
  13. <html>
  14. <body>
  15. <table border="1">
  16. <tr>
  17. <td><b>Symbol</b></td><td><b>Nazwa</b></td><td><b>J.M</b></td>
  18. </tr>
  19. <xsl:apply-templates/>
  20. </table>
  21. </body>
  22. </html>
  23. </xsl:template>
  24.  
  25. <xsl:template match="a:TOWAR">
  26. <tr>
  27. <td><xsl:value-of select="a:KOD"/></td>
  28. <td><xsl:value-of select="a:NAZWA"/></td>
  29. <td><xsl:value-of select="a:JM"/></td>
  30. </tr>
  31. </xsl:template>
  32.  
  33. </xsl:stylesheet>

Poza tym plik XSL jest do poprawy, ale z tym już powinieneś sobie poradzić (zobaczysz o co chodzi, gdy podejrzysz xml z powyższym szablonem).

Ten post edytował mortus 18.04.2012, 15:14:24
Go to the top of the page
+Quote Post
adamec
post 18.04.2012, 16:09:02
Post #3





Grupa: Zarejestrowani
Postów: 30
Pomógł: 3
Dołączył: 18.04.2012
Skąd: Rybnik

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


dzięki bardzo problem rozwiazłeś ja poprawiłem bład w XSL - jeszcze raz dzięki
Temat zamkniety!!

  1.  
  2. <xsl:stylesheet version="1.0"
  3. xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  4. xmlns:a="http://www.cdn.com.pl/optima/cennik"
  5. exclude-result-prefixes="a"
  6. >
  7. <xsl:output method="html" encoding="UTF-8"/>
  8. <xsl:template match="/">
  9. <xsl:apply-templates/>
  10. </xsl:template>
  11.  
  12. <xsl:template match="a:TOWARY">
  13. <html>
  14. <body>
  15. <table border="1">
  16. <tr>
  17. <td><b>Symbol</b></td><td><b>Nazwa</b></td><td><b>J.M</b></td>
  18. </tr>
  19. <xsl:apply-templates select="a:TOWAR"/>
  20. </table>
  21. </body>
  22. </html>
  23. </xsl:template>
  24.  
  25. <xsl:template match="a:TOWAR">
  26. <tr>
  27. <td><xsl:value-of select="a:KOD"/></td>
  28. <td><xsl:value-of select="a:NAZWA"/></td>
  29. <td><xsl:value-of select="a:JM"/></td>
  30. </tr>
  31. </xsl:template>
  32.  
  33. </xsl:stylesheet>


Ten post edytował adamec 18.04.2012, 16:16:12


--------------------
Jeżeli uda mi się pomóc Tobie to jestem usatysfakcjonowany . Wtedy Ty kliknij na POMÓGŁ
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 Wersja Lo-Fi Aktualny czas: 19.04.2024 - 09:16