devent: Wie prüfe ich ob ein Attribut existiert ?

Hallo

wenn ich als xml datei z.b. sowas habe:

<titel>

<text style="bold">
Fetter Text
</text>

<text style="normal">
Normaler Text
</text>

</titel>

Kann ich ja mit @bold auf die attribute zugreifen.
Es funktioniert sowas <xsl:if test="@style = 'bold'">
oder <xsl:if test="@style != ''">
wie kann ich aber prüfen ob das style überhaupt gesetzt wurde ?
also bei z.b.

<titel>

<text style="bold">
Fetter Text
</text>

<text>
Normaler Text
</text>

</titel>

wurde beim zweiten text-tag das attribut style überhaupt nicht gesetzt, wie kann ich das überprüfen?

mit <xsl:if test="@style=''"> gehts irgendwie nicht, also
pls help ....
thx :)

  1. Hallo,

    Kann ich ja mit @bold auf die attribute zugreifen.
    Es funktioniert sowas <xsl:if test="@style = 'bold'">
    oder <xsl:if test="@style != ''">

    <xsl:if test="@style">

    Grüße
    Thomas

    1. hm und wieso funkt das net:

      xsl:choose
        <xsl:when test="@url">
        <xsl:value-of select="titel"/>
        </xsl:when>

      <xsl:when test="@url!=''">
        <a>
        <xsl:attribute name="href">
        <xsl:value-of select="@url"/>
        </xsl:attribute>
        <xsl:value-of select="titel"/>
        </a>
        </xsl:when>

      </xsl:choose>

      also ich will falls ein attribut url da ist ein link aufmachen
      und falls kein attribut url da ist kein link aufmachen
      z.b.
      <text url="http://......">
      Ein Text mit Link
      </text>
      <text>
      ein text ohne link
      </text>

      1. Hi,

        hm und wieso funkt das net:

        Es funktioniert, aber nicht so, wie Du Dir das vorstellst.

        xsl:choose
          <xsl:when test="@url">

        Hier sind alle Fälle berücksichtigt, bei denen das url-Attribut existiert.

        <xsl:value-of select="titel"/>
          </xsl:when>

        <xsl:when test="@url!=''">

        Also wird dieser Fall NIE berücksichtigt - bei xsl:choose wird immer nur der erste Zweig, dessen Bedingung zutrifft, ausgewertet.

        Du willst eher sowas

        xsl:choose
          <xsl:when test="@url and (@url!='')">
             link ausgeben
          </xsl:when>
          xsl:otherwise
             text ausgeben
          </xsl:otherwise>
        </xsl:choose>

        cu,
        Andreas

        --
        MudGuard? Siehe http://www.Mud-Guard.de/
        Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
      2. Hallo,

        hm und wieso funkt das net:

        xsl:choose
          <xsl:when test="@url">
          <xsl:value-of select="titel"/>
          </xsl:when>

        Weil in diesem Fall du immer nur überprüfst ob das Attribut url vorhanden ist, und das ist sie auch dann wenn sie vorhanden ist, also trifft dieser Regel zu und der "titel" wird geschrieben. Der zweite Regel kommt also nicht mehr zum Einsatz.

        xsl:choose
         <xsl:when test="not(@url) or (@url = '')">
          <!-- wenn @url NICHT vorhanden, oder vorhanden aber leer ist -->
          <xsl:value-of select="titel"/>
         </xsl:when>
         xsl:otherwise
         <!-- wenn @url vorhanden und nicht leer ist -->
         <a href="{@url}">
          <xsl:value-of select="titel"/>
         </a>
         </xsl:otherwise>
        </xsl:choose>

        Grüße
        Thomas

        1. aahh jaa

          danke :)