Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [xml][xslt] Problem z nazwami w xml
Forum PHP.pl > Forum > XML, AJAX > XML
my_key
Witam.

Potrzebuję opisać dokument XML za pomocą XSLT jednak napotykam na problem przy xpath z nazewnictwem tagów w XML.

Przykład xml:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <aws:weather xmlns:aws="http://www.aws.com/aws">
  3. <aws:api version="2.0" />
  4. <aws:locations>
  5.  
  6. <aws:location cityname="Kielce" statename="" countryname="Poland" zipcode="" citycode="72922" citytype="1" />
  7. <aws:location cityname="Kalach" statename="" countryname="Russia" zipcode="" citycode="74150" citytype="1" />
  8. <aws:location cityname="Kalas" statename="" countryname="India" zipcode="" citycode="64854" citytype="1" />
  9.  
  10. </aws:locations>
  11. </aws:weather>


Mój xslt:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  3. <xsl:output method="html"/>
  4.                        
  5. <xsl:template match="/">
  6. <ul id="weatherList">
  7. <xsl:apply-templates select="weather/locations/location" />
  8. </ul>
  9. </xsl:template>
  10.                        
  11. <xsl:template match="weather/locations/location">
  12. <li class="even">
  13. <xsl:value-of select="./@cityname" /> <span class="small">(<xsl:value-of select="./@countryname" />)</span>
  14. </li>
  15. </xsl:template>
  16. </xsl:stylesheet>


Wszystko działa poprawnie, jeżeli w nazwach tagów w xml usunie się prefiks "aws:" jednak tego zrobić nie mogę...
Próbuję pobrać plik do zmiennej i w PHP usunąć "aws:" za pomocą str_replace() ale wtedy otrzymuję błąd przy załadowaniu XML'a

  1. <?php
  2. Warning: DOMDocument::loadXML() [function.DOMDocument-loadXML]: Start tag expected, '<' not found in Entity, line: 1 in .... on line 823
  3. ?>


Jeżeli macie jakieś pomysły jak napisać popranego xslt z zachowaniem prefiksu "aws" to czekam na propozycje smile.gif

Pozdrawiam.
TommyGun
W skrócie: Dodaj "przestrzeń nazw" - ang: namespace - (czyli to, co nazywasz prefiksem) również w szablonie xslt.
Więcej: http://www.google.pl/search?q=xslt+namespaces.
my_key
Wielkie dzięki za naprowadzenie, poszukałem jak radziłeś i problem rozwiązany.
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.