Paul Brunner: +XPath+PHP: document() mit Sablotron

Hallo zusammen,

ich habe größere Probleme ein externes xml-Dokument in ein xsl-sheet einzubinden und bin mir nicht sicher ob es an falscher Synthax, der falschen Pfad-Auflösung oder an Sablotron (weiß leider nicht welche Version) liegt. Wer hat Erfahrung mit dieser Kombination?

<xsl:value-of select="document('file://test.xml')/document/header"/>

test.xml liegt im selben Verzeichnis wie das basis-xml, laut Sablotron-Dokumentation ist das auch Bezug für relative Pfadangaben, mit absoluten gehts auch nicht und die Angabe zum File://-Schema ist laut Doku notwendig. Trotzdem findet er die Datei nicht und ich bin mit meinem Latein am Ende.

Gruß
Paul

  1. hallo,

    <xsl:value-of select="document('file://test.xml')/document/header"/>

    test.xml liegt im selben Verzeichnis wie das basis-xml, laut Sablotron-Dokumentation ist das auch Bezug für relative Pfadangaben, mit absoluten gehts auch nicht und die Angabe zum File://-Schema ist laut Doku notwendig. Trotzdem findet er die Datei nicht und ich bin mit meinem Latein am Ende.

    1. ich kenne deine test.xml nicht. dokument() liefert immer den root-knoten der externen datei zurück, bist du dir sicher dass "/document/header" der richtige pfad ist; sprich kann etwas von diesem pfad zurückgelifert werden?
    2. versuche es trotzdem ohne file://   also einfach mit test.xml
    3. du könntest mit absoluter pfadangabe versuchen "file:///C|/test.xml"

    grüße
    thomas

    1. Hallo Thomas,

      1. ich kenne deine test.xml nicht. dokument() [...] sprich kann etwas von diesem pfad zurückgelifert werden?

      <xsl:value-of select="document('file://text.xml')/document/header/name"/>

      lautet der vollständige Aufruf zur Beispieldatei:

      *----
      <?xml version="1.0" encoding="ISO-8859-1"?>
      <document id="RPRSWM2002" date="20020606" publish="" expire="">
       <header>
        <name>Dokumentname</name>
       </header>
      [...]
      </document>
      *----

      1. versuche es trotzdem ohne file://   also einfach mit test.xml
      2. du könntest mit absoluter pfadangabe versuchen "file:///C|/test.xml"

      Die gesammlten Fehlermeldungen zu den verschiednen Varianten:

      'test.xml'
      Sablotron error: file not found 'test.xml'
      (zur Sicherheit steht test.xml im xml-, xsl-, und php-Verzeichnis
      und wird trotzdem nicht gefunden)

      'file://test.xml'
      Sablotron error: unkown 'arg:/test.xml'
      (arg:/ ist das Schema für den internen "named memory buffers"
      und wird standardmäßig genommen)

      'http://www.domain.de/pfad/test.xml'
      Sablotron error: unkown encoding ''
      (hä?)

      Ich glaube Sablotron mag mich nicht!

      Gruß
      Paul

      1. Uuups, Dreher bei den Fehlermeldungen,
        so ist richtig:

        'file://test.xml'

        Sablotron error: file not found 'test.xml'

        'test.xml'

        Sablotron error: unkown 'arg:/test.xml'