Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [xml/xsl] szukanie taga z innego namespace
Forum PHP.pl > Forum > XML, AJAX > XML
faginozen
Witam, mam następujący problem.

Mam taki przykładowy plik XML:

  1. <root>
  2.   <tag1>text1</tag1>
  3.   <tag2>text2text2<xx:put id="1"/>text2text2</tag2>
  4. </root>

i próbuję uruchomić na nim taki arkusz xsl:

  1. <?xml version="1.0" encoding="iso-8859-2"?>
  2.  
  3. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xx="SampleXSL" version="1.0">
  4.   <xsl:output method="html"/>
  5.   <xsl:template match="//xx:put[@id]">
  6.      (ok)
  7.   </xsl:template>
  8. </xsl:stylesheet>

jednak wygląda na to, że reguła "//xx:put[@id]" nie zostaje zneleziona, bo "(ok)" nie zostaje wyświetlone na ekranie. Po usunięciu namespace 'xx' z obu plików wszystko przebiega dobrze, więc podejrzewam, że sama reguła jest dobra (choć oczywiście mogę się mylić). W czym więc jest problem?
splatch
  1. <?xml version="1.0"?>
  2. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  3.      <xsl:output method="text" encoding="iso-8859-1" indent="yes"/>
  4.  
  5.      <xsl:template match="/">
  6.  
  7.            <xsl:for-each select="//*">
  8.                  <xsl:if test="namespace-uri(.) = 'urn:bar'">
  9.                        Tag: <xsl:value-of select="concat(name(.),' ', local-name(.))" />
  10.                  </xsl:if>
  11.            </xsl:for-each>
  12.       </xsl:template>
  13.  
  14. </xsl:stylesheet>


plik xml
  1. <?xml version="1.0"?>
  2. <root xmlns="urn:foo" xmlns:bar="urn:bar">
  3.      <bar:x>a</bar:x>
  4.      <bar:y>b</bar:y>
  5.      <a>foo</a>
  6.      <b>bar</b>
  7. </root>
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.