Mathias: Tags sollen erhalten bleiben bzw andere übersprungen werden?

Hallo,

folgendes Beispiel:
<xml>
 <text><p>text </p><img>xyz </img><p style="color:#555">weiterer text </p></text>
 ...
<xml>

1. Frage

Hole ich mir nun den Inhalt von <text> mittels <xsl:value-of select="text" /> bekomme ich folgendes zurück:
text xyz weiterertext

Wie kann ich es anstellen, dass ich auch die Tags mitbekomme, also als Resultat folgendes erhalte:
<p>text </p><img>xyz </img><p style="color:#555">weiterer text </p>

2. Frage

Gibts es auch eine Möglichkeit gewisse Elemente auszuschneiden, die man nicht benötigt? In meinem Beispiel ist für mich das Bild uninteressant, so dass ich (nach Frage 1) nur folgendes Ergebnis möchte:
<p>text </p><p style="color:#555">weiterer text </p>
Das <img>-Tag ist auch nicht immer an der gleichen Stelle und kann auch beliebig oft im Text vorkommen.

Mathias.

  1. Tach Mathias,

    Wie kann ich es anstellen, dass ich auch die Tags mitbekomme, also als Resultat folgendes erhalte:
    <p>text </p><img>xyz </img><p style="color:#555">weiterer text </p>

    <xsl:copy-of select="text"/>

    Gibts es auch eine Möglichkeit gewisse Elemente auszuschneiden, die man nicht benötigt? In meinem Beispiel ist für mich das Bild uninteressant, so dass ich (nach Frage 1) nur folgendes Ergebnis möchte:
    <p>text </p><p style="color:#555">weiterer text </p>
    Das <img>-Tag ist auch nicht immer an der gleichen Stelle und kann auch beliebig oft im Text vorkommen.

    <xsl:copy-of select="text/*[name(.)!='img']"/>

    Man liest sich,
    svg4you

    1. Vielen Dank,

      Mathias.

      1. Hi,

        das image-tag überlesen mit <xsl:copy-of select="OutlineAddText/*[name(.)!='image']" /> funktioniert bei mir nur, wenn das image-tag kenie Attribute mehr enthält, was aber leider der Fall ist.
        Gibt es trotzdem eine Möglichkeit Tags - auch wenn sie Attribute haben - zu überspringen?

        Grüße,
        Mathias

        1. Tach Mathias,

          Gibt es trotzdem eine Möglichkeit Tags - auch wenn sie Attribute haben - zu überspringen?

          Kann ich zumindest bezogen auf das vorherige Testbeispiel nicht nachvollziehen. Das neue Beispiel hat offenbar wieder einen anderen Kontext.

          Man liest sich,
          svg4you

          1. Hallo svg4you,

            ja, dumm gelaufen: bin nun auf einige Fälle gestoße, bei denen die ganzen Texte noch weiter verschachtelt sind:

            altes Beispiel:

            <text><p>text </p><img width="10px">xyz </img><p style="color:#555">weiterer text </p></text>
            </alt>

            Neues Beispiel

            <text><p>text </p><DIV><img width="10px">xyz </img></DIV><p style="color:#555">weiterer text </p></text>
            </alt>

            Und da zieht die Logik leider nicht mehr. Deppremierenderweise kann dies (rein theoretisch) unendlich tief verschachtelt sein.

            Da die Verschachtlung auch mit beliebigen Tags p, div, table, .... sein kann, werde ich es wohl knicken können...

            vielen Dank.
            Mathias

            1. Hallo,

              <xsl:template match="alt">
                xsl:copy
                  xsl:apply-templates/
                </xsl:copy>
              </xsl:template>

              <xsl:template match="img">
              </xsl:template>

              Sollte das sein, was du willst.