Announcement

Collapse
No announcement yet.

Filtern von Datensätzen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Filtern von Datensätzen

    Ich habe im Bereich XSLT ein Problem und weiss mir einfach nicht mehr zu helfen:

    Ich habe eine XML-Datei mit vielen Datensätzen vorliegen. Diese XML-Datei möchte ich formatiert im Browser anzeigen lassen. Der beste Weg hierfür ist, meiner Meinung nach eine XSL-Schablone, da ich nicht alle Inhalte der XML-Datei anzeigen, sondern diese filtern möchte.

    In der XSL-Datei filtere ich zunächst den Bereich aus, in dem ich weitere Aktionen durchführen möchte:

    <blockquote><pre><b>&lt;xsl:for-each select="//Line"&gt;</b></pre></blockquote>

    (sucht in der gesamten XML-Datei <font color=green>'Line'</font>-Elemente)

    Dann möchte ich, dass mir die Vorlage aus allen <font color=green>'line'</font>-Elementen, wiederrum welche herausfiltert... :

    <blockquote><pre><b>&lt;xsl:if test="@Type[. = 'pos.ofr.grp']&gt;</b></pre></blockquote>

    ... und zwar diejenigen, die im Attribut <font color=green>'Type'</font> den Inhalt <font color=green><i>'pos.ofr.grp'</i></font> aufweisen.

    Aus diesen wiederrum will ich wieder bestimmte herausfiltern:

    <blockquote><pre><b>&lt;xsl:if test="Field/@Name[. = 'GroupPos_SelfDesc']&gt;</b></pre></blockquote>

    (Die <font color=green>'Line'</font>-Elemnte beinhalten <font color=green>'Field'</font>-Unterelemente und ich möchte nur die <font color=green>'Fields'</font> deren Attribut <font color=green>'Name'</font> den Wert <font color=green><i>'GroupPos_Selfdesc'</i></font> aufweisen.)

    Mein Problem nun ist: Es funktioniert nicht! Der XSLT-Prozesor liest die erste If-Anweisung ein und wenn diese als <font color=green><i>'true'</i></font> validiert wird <b><u><font color=red>ÜBERLIEST</font></u></b> er die nächste.

    Kann ich tatsächlich keine If-Anweisungen miteinander verschachteln?

    Ich habe es schon mit <font color=green><i>&lt;xsl:choose&gt;</i></font> probiert aber da sieht die Sache genauso aus: wenn die erste <font color=green><i>&lt;xsl:when...&gt;</i></font>-Anweisung als wahr validiert wird, wird die nächste übersprungen.

    Welche Möglichkeiten habe ich mehrere Abfragebedingungen miteinander zu nutzen?
    Gibt es Lösungen mehrere If-Anweisungen zu kombinieren?
    Kann man dieses problem auch anders lösen?

    Ich wäre für jede nur erdenkliche Hilfe sehr dankbar

    Mfg

  • #2
    Ein typischer Fall für das häufig in xsl anzuwendende push-Verfahren. (Darin liegt eine Stärke von XSL)<br>
    Versuchs mit folgendem<br><br>
    <xsl:apply-templates select="//Line"><br>
    ...<br>
    <br>
    <xsl:template match="Line[@Type= 'pos.ofr.grp']Field[@Name= 'GroupPos_SelfDesc']>"><br>
    ...<br>
    </xsl:template><br>

    viel Glück
    Bernwar

    Comment

    Working...
    X