Announcement

Collapse
No announcement yet.

SELECT erweitern (bestimmte Tags ausschliessen)

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

  • SELECT erweitern (bestimmte Tags ausschliessen)

    Hallo Leute

    Wir haben bei uns Daten-Schnittstellen auf Basis XSL/XSLT im Einsatz (mit Saxon Enterprise) und ich durfte nach dem Weggang des Entwicklers die Geschichte übernehmen, bin jedoch totaler Newbie in diesem Bereich :-(

    Nun muss ich die Schnittstelle modifizieren. Und zwar in den Quelldateien können mehrere Nodes <installation> vorkommen, nun ist es so, dass es innerhalb dieser <installation> auch ein <associationType> geben kann. Momentan werden im folgenden Select alle ausgelesen:

    Code:
                <xsl:for-each select="$temp_sequence_meter_mounting/gasi:installation">
                    <xsl:call-template name="output_data_device">
                        <xsl:with-param name="business_process" select="$business_process"/>
                    </xsl:call-template>
                </xsl:for-each>
    Ja, man sieht das er vorher noch etwas rausfiltert, die Schnittstelle besteht leider aus dutzenden XSL-Files die sich gegenseitig includen. Aber hier werden die ganzen Installationen für den Output aufbereitet, deshalb wollte ich hier ansetzen, mit dieser Modifikation:

    Code:
                <xsl:for-each select="$temp_sequence_meter_mounting/gasi:installation and not(associationType)">
                    <xsl:call-template name="output_data_device">
                        <xsl:with-param name="business_process" select="$business_process"/>
                    </xsl:call-template>
                </xsl:for-each>
    Die Datei wird nachwievor konvertiert, aber die zu ignorierenden Installationen kommen immer noch darin vor. Ich bin wegen der Syntax unsicher, habe ich das so richtig?

    Gruss, Yann

  • #2
    Bei solchen Fragen solltest du immer einen Ausschnitt des XML-Dokumentes posten. So die "gasi: installation"-Elemente als Kindelemente "associationType"-Elemente haben können und du genau die mit solchen Kindelemente nicht verarbeiten willst, dann per
    Code:
    <xsl:for-each select="$temp_sequence_meter_mounting/gasi:installation[not(associationType)]">
    bzw. beim selben Namensraum
    Code:
    <xsl:for-each select="$temp_sequence_meter_mounting/gasi:installation[not(gasi:associationType)]">
    Beachte aber, dass innerhalb des for-each dann per call-template unter Umständen ganz andere Daten verarbeitet werden.

    Comment

    Working...
    X