bearli: Attributnamen auslesen bei bestimmtem Wert

Hallo Leute,

ich schreibe gerade ein XML-Dokument, das alle Einstellungen eines Kurzfilms und die dazugehörigen Allen'schen Relationen beinhaltet und darstellen soll.
Ist aber egal :-)

Aussehen tut das ganze in etwa so (Ausschnitt):

  
	<shot id="e4" space="rx" equals="e4" />  
	<shot id="e5" space="r5" equals="e5" starts="e2 e3 e6" />  
	<shot id="e6" space="r4" equals="e6" overlaps="e7" />

Nun möchte ich beispielsweise abfragen, ob irgendein Attribut in einem bestimmten shot-Knoten, in dem wir uns gerade befinden, den Wert "e3" hat. Im Anschluss soll er mir den Attributnamen (hier: "starts") ausgeben.

Kann mir jemand helfen?

Ich danke euch!!

bearli

  1. Hallo bearli,

    Nun möchte ich beispielsweise abfragen, ob irgendein Attribut in einem bestimmten shot-Knoten, in dem wir uns gerade befinden, den Wert "e3" hat. Im Anschluss soll er mir den Attributnamen (hier: "starts") ausgeben.

    Im entsprechenden Kontext:

    <xsl:value-of select="shot[@*[contains(.,'e3')]]/@starts"/>

    Grüße,
    Thomas

    1. Hi,

      <xsl:value-of select="shot[@*[contains(.,'e3')]]/@starts"/>

      Danke schonmal ;)
      Aaaaber: gibt mir dieser Befehl nicht einen ganzen Knoten (shot) zurück, statt nur den Namen des Attributs? Mein Rückgabewert soll ja "starts" sein, wenn, wie im Beispiel, die Zeichenkette "e3" in einem starts-Attribut vorkommt. (Wenn "e3" im Attribut overlaps steht, möchte ich gerne als Rückgabewert "overlaps" bekommen.)
      Oder tut dies dein XPath Befehl?

      Grüße

      1. Hallo bearli,

        Oder tut dies dein XPath Befehl?

        Git den Wert von @starts zurück. Dann eher so:

        <xsl:template match="shot">  
          <xsl:value-of select="name(@*[contains(.,'e3')])"/>  
        </xsl:template>
        

        Grüße,
        Thomas

        1. Git den Wert von @starts zurück. Dann eher so:

          <xsl:template match="shot">

          <xsl:value-of select="name(@*[contains(.,'e3')])"/>
          </xsl:template>

            
            
          Herzlichen Dank Thomas, das bringt mich weiter ;-)  
          Supi!