Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: xslt xml php- dalczego php źle interpretuje xsl?
Forum PHP.pl > Forum > PHP
deirathe
Style XSL:
  1. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  2. <xsl:output method="text"/>
  3.  
  4. <xsl:template match="/">
  5. <xsl:apply-templates select="child::names"/>
  6. </xsl:template>
  7.  
  8. <xsl:template match="child::names">
  9. <xsl:apply-templates select="child::name[4]/attribute::title"/>
  10. </xsl:template>
  11.  
  12. <xsl:template match="child::name[4]/attribute::title">
  13. <xsl:text>The XML 1.0 WG's </xsl:text>
  14. <xsl:value-of select="self::node(  )"/>
  15. <xsl:text> was </xsl:text>
  16. <xsl:value-of select="parent::name/child::given"/>
  17. <xsl:text> </xsl:text>
  18. <xsl:value-of select="parent::name/child::family"/>
  19. <xsl:text>.</xsl:text>
  20. </xsl:template>
  21.  
  22. </xsl:stylesheet>      

Dokument XML:
  1. <names>
  2. <name>
  3.  <family>Angerstein</family>
  4.  <given>Paula</given>
  5. </name>
  6. <name title="chair">
  7.  <family>Bosak</family>
  8.  <given>Jon</given>
  9. </name>
  10. <name title="editor">
  11.  <family>Bray</family>
  12.  <given>Tim</given>
  13. </name>
  14. <name title="technical lead">
  15.  <family>Clark</family>
  16.  <given>James</given>
  17. </name>
  18. <name>
  19.  <family>Connolly</family>
  20.  <given>Dan</given>
  21. </name>
  22. <name>
  23.  <family>DeRose</family>
  24.  <given>Steve</given>
  25. </name>
  26. <name>
  27.  <family>Hollander</family>
  28.  <given>Dave</given>
  29. </name>
  30. <name>
  31.  <family>Kimber</family>
  32.  <given>Eliot</given>
  33. </name>
  34. <name>
  35.  <family>Magliery</family>
  36.  <given>Tom</given>
  37. </name>
  38. <name>
  39.  <family>Maler</family>
  40.  <given>Eve</given>
  41. </name>
  42. <name>
  43.  <family>Maloney</family>
  44.  <given>Murray</given>
  45. </name>
  46. <name>
  47.  <family>Murata</family>
  48.  <given>Makoto</given>
  49. </name>
  50. <name>
  51.  <family>Nava</family>
  52.  <given>Joel</given>
  53. </name>
  54. <name>
  55.  <family>O'Connell</family>
  56.  <given>Conleth</given>
  57. </name>
  58. <name title="editor">
  59.  <family>Paoli</family>
  60.  <given>Jean</given>
  61. </name>
  62. <name>
  63.  <family>Sharpe</family>
  64.  <given>Peter</given>
  65. </name>
  66. <name title="editor">
  67.  <family>Sperberg-McQueen</family>
  68.  <given>C. M.</given>
  69. </name>
  70. <name>
  71.  <family>Tigue</family>
  72.  <given>John</given>
  73. </name>
  74. </names>


Kod PHP
  1. <?php
  2.  
  3.  
  4. $xml = new DOMDocument();
  5. $xml->load("doc.xml");
  6.  
  7. $xslt = new XSLTProcessor();
  8. $xsl = new DOMDocument();
  9. $xsl->load("style.xsl");
  10. $xslt->importStylesheet( $xsl );
  11.  
  12. echo $xslt->transformToXML( $xml );
  13. ?>


No i wynik powinien wyglądać następująco:
The XML 1.0 WG's technical lead was James Clark.
A tak nie jest :/
A w przeglądarce działa to normalnie, może mi to ktoś wyjaśnić, może coś źle robię?
szagi3891
Twój kod na początku nie chciał mi się uruchomić. Do xml-a dodałem na początku linię : <?xml version="1.0"?> i mi ładnie połączyło xslt z xml-em tworząc dokument wynikowy. Spróbuj z tym nagłówkiem, wtedy powinno zadziałać. Testowałem na php wersji 5.2.9
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.