Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [xml][xslt] Problem z nazwami w xml, Prefiksy nazw
my_key
post
Post #1





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 5.03.2006

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


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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Pozdrawiam.
Go to the top of the page
+Quote Post
TommyGun
post
Post #2





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

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


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.
Go to the top of the page
+Quote Post
my_key
post
Post #3





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 5.03.2006

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


Wielkie dzięki za naprowadzenie, poszukałem jak radziłeś i problem rozwiązany.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 18.09.2025 - 02:26