sr1: XSLT - Anfrage

Hallo zusammen,

findet sich hier ein netter Mensch, der mir ein XSLT zusammen schreiben kann. Ich bin hier Neuling und soll das heute fertig haben. Habe auch schon gegoogelt nach XSLT-Generatoren und den Wikipedia-Eintrag dazu habe ich auch studiert. Ich kriegs einfach nicht zusammen.

Die XML-Antwort des Webservices lautet:

<GetUserLoginFromEmail xmlns="http://schemas.microsoft.com/sharepoint/soap/directory/"><User Login="Beispiellogin" Email="bern.beispiel@beispiel.de" DisplayName="Beispiel Bernd" SiteUser="1" /></GetUserLoginFromEmail>

Ich hätte gerne den Wert des Attributs "Login" als Text ausgegeben.

Vielen Dank.

  1. @@sr1:

    nuqneH

    findet sich hier ein netter Mensch, der mir ein XSLT zusammen schreiben kann. Ich bin hier Neuling und soll das heute fertig haben.

    Bei entsprechendem finanziellem Anreiz werden hier auch die Pösen nett.

    Allerdings werden auch die Netten böse, wenn hier jemand kommt und sagt „Macht mal für mich, und zwar kostenlos. Und sofort.“

    Also was zahlst du? Vergiss nicht den Dringlichkeitszuschlag.

    <User Login="Beispiellogin" Email="bern.beispiel@beispiel.de" DisplayName="Beispiel Bernd" SiteUser="1" />

    Für Beispieldomains verwende bitte die nach [BCP32] dafür vorgesehenen.

    Qapla'

    --
    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
    (Mark Twain)
  2. Ich hätte gerne den Wert des Attributs "Login" als Text ausgegeben.

    wozu brauchst du da ein xslt?
    ein einfacher auf das xml angewandter XPATH-Ausdruck reicht doch aus.
    //User/@Login

    1. Ich hätte gerne den Wert des Attributs "Login" als Text ausgegeben.
      wozu brauchst du da ein xslt?
      ein einfacher auf das xml angewandter XPATH-Ausdruck reicht doch aus.
      //User/@Login

      Hallo vlad,
      vielen Dank für die hilfreiche Antwort. Es klappt zwar noch nicht ganz, klingt aber sehr vielversprechend.
      Mein XPATH-Ausdruck lautet jetzt:

      //GetUserLoginFromEmail/User/@Login

      Allerdings bekomme ich noch kein Ergebnis. Ich forsche weiter.
      Vielen herzlichen Dank dafür.

      1. Hallo sr1,

        Mein XPATH-Ausdruck lautet jetzt:

        //GetUserLoginFromEmail/User/@Login

        Allerdings bekomme ich noch kein Ergebnis. Ich forsche weiter.

        Die Elemente befinden sich in einem Namensraum (siehe xmlns="…"). Hier ein XSLT-Ansatz für XSLT 1.0:

        <?xml version="1.0" encoding="UTF-8"?>  
        <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"  
          xmlns:sp="http://schemas.microsoft.com/sharepoint/soap/directory/">  
          
          <xsl:output method="text" encoding="UTF-8"/>  
          
          <xsl:template match="sp:GetUserLoginFromEmail">  
            <xsl:value-of select="sp:User/@Login"/><!-- Beispiellogin -->  
          </xsl:template>  
          
        </xsl:stylesheet>
        

        XSLT 2.0 ermöglicht die Nutzung von xpath-default-namespace beim xsl:output-Element. Dann braucht man die Präfixe nicht zu notieren.

        Grüße,
        Thomas

        1. Die Elemente befinden sich in einem Namensraum (siehe xmlns="…").

          stimmt, hab ich übersehen.

          dh. man muss dem xpath-Interpreter noch den Namensraum mit einem Prefix (zB: mns) bekannmachen und dann sollte es so gehen.

          //mns:User/@Login

          alternativ kann man auch dem Dokument eine zusätzliche Namespace Deklaration des Standardnamespace mit Präfix unterschieben.

          Imho ein Designfehler im XPATH.

          1. //mns:User/@Login

            Vielen Dank auch Dir. Auch Deine Lösung habe ich nun hinbekommen.
            Vielen herzlichen Dank.

        2. Hallo auch,

          vielen herzlichen Dank!
          So funtioniert es.