mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Fr 29.03.2024 10:23 Benutzername: Passwort: Auto-Login

Thema: xpath - doppelte einträge ausschließen, hinzufügen vom 25.07.2005


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> xpath - doppelte einträge ausschließen, hinzufügen
Seite: 1, 2  Weiter
Autor Nachricht
c0la
Threadersteller

Dabei seit: 23.07.2005
Ort: thüringen
Alter: 40
Geschlecht: Männlich
Verfasst Mo 25.07.2005 12:20
Titel

xpath - doppelte einträge ausschließen, hinzufügen

Antworten mit Zitat Zum Seitenanfang

Hallo miteinander,
ich stehe gerade vor einem ziehmlichen Problem. Zuerst einmal schildere ich euch die XML-Struktur in etwa:

Code:

<article>
<template>hallo</template>
<info>infotext</info>
</article>
<article>
<template>hallo</template>
<info>textirgenwas</info>
</article>
<article>
<template>huhu</template>
<info>gutentag</info>
</article>


Ich möchte also zB für jedes <template> die dazugehörige <info> ausgeben - das ist natürlich nicht das Problem. Eher das, dass ich mit

Code:

<xsl:for-each select="//article">
<xsl:value-of select="template">
<xsl:value-of select="info">


natürlich bei doppelten <template>'s auch 2 ausgebe, was aber nicht erwünscht ist. Wunsch ist bei doppelten Einträgen nur einmal das <template> zu haben und die unterschiedlichen <info>'s dazu.

Ich habe gehört man müsse in diesem Loop bei der <template>-Abfrage die doppelten ausschließen und die dazugehörigen <info>'s hinzufügen - Frage, WIE?

Hoffe auf rege Hilfe Lächel
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Account gelöscht


Ort: -
Alter: -
Verfasst Mo 25.07.2005 12:33
Titel

Antworten mit Zitat Zum Seitenanfang

Vielleicht mitner if-Abfrage (hab ich jetz net getestet):

<xsl:if test="count(descendant::template) &gt; 1">
[...]
</xsl:if>


Zuletzt bearbeitet von am Mo 25.07.2005 12:33, insgesamt 1-mal bearbeitet
 
Anzeige
Anzeige
c0la
Threadersteller

Dabei seit: 23.07.2005
Ort: thüringen
Alter: 40
Geschlecht: Männlich
Verfasst Mo 25.07.2005 13:26
Titel

Antworten mit Zitat Zum Seitenanfang

hallo,
leider funktioniert das nicht - ich kann auch nicht sagen warum denn ich stehe noch selbst ganz am anfang.
Code:

<table border="1">
<xsl:for-each select="//article">
<tr>
   <th><xsl:if test = "count(descendant::template) &gt; 1">
<xsl:value-of select="template" /><br/>
<xsl:value-of select="info" />
</xsl:if></th>
   </tr>
</xsl:for-each>
</table>


damit wird leider garnichts ausgegeben.

zur veranschaulichung, nochmal wie das endergebnis (xml-struktur vom ersten post) aussehen soll:

Code:

hallo
infotext
textirgenwas

huhu
gutentag



vielen dank aber schonmal Lächel
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Account gelöscht


Ort: -
Alter: -
Verfasst Mo 25.07.2005 13:51
Titel

Antworten mit Zitat Zum Seitenanfang

Wie sieht das denn aus wenn mehr als ein <template> vorhanden ist? Stehn die so unternander weg?

<template>
<info>

<template>
<info>

oder wad?
 
c0la
Threadersteller

Dabei seit: 23.07.2005
Ort: thüringen
Alter: 40
Geschlecht: Männlich
Verfasst Mo 25.07.2005 13:55
Titel

Antworten mit Zitat Zum Seitenanfang

ganz genau, mit

<xsl:for-each select="//article">
<xsl:value-of select="template">
<xsl:value-of select="info">
</xsl:for-each>

kommt das:

hallo
infotext

hallo
textirgenwas

huhu
gutentag


mit der geposteten if-anweisung, leider garnichts.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Account gelöscht


Ort: -
Alter: -
Verfasst Mo 25.07.2005 13:56
Titel

Antworten mit Zitat Zum Seitenanfang

Mach das:

Code:
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:output method="xml"
                      indent="yes"
                omit-xml-declaration="yes"
              encoding="ISO-8859-1"/>
  <xsl:template match="/">
    <table border="1">
      <xsl:for-each select="descendant::article">
        <tr>
          <th>
              <xsl:value-of select="./template"/><br/>
              <xsl:for-each select="descendant::info">
                <xsl:value-of select="."/><br/>
              </xsl:for-each>
          </th>
        </tr>
      </xsl:for-each>
    </table>
  </xsl:template>
</xsl:stylesheet>


Zuletzt bearbeitet von am Mo 25.07.2005 13:56, insgesamt 1-mal bearbeitet
 
c0la
Threadersteller

Dabei seit: 23.07.2005
Ort: thüringen
Alter: 40
Geschlecht: Männlich
Verfasst Mo 25.07.2005 14:20
Titel

Antworten mit Zitat Zum Seitenanfang

ich bin sehr dankbar dass ich hier hilfe finde, aber das funzt leider auch nicht.

ist genau die gleiche ausgabe
hallo
infotext

hallo
textirgenwas

huhu
gutentag

verzweiflung macht sich breit Menno!
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Account gelöscht


Ort: -
Alter: -
Verfasst Mo 25.07.2005 14:28
Titel

Antworten mit Zitat Zum Seitenanfang

Das ist die XML und mit der funktionierts. Umbauen musst dus schon selbst, du hast ja nicht die ganze Datei gepostet daher kann ich nur raten wie die strukturiert ist.

Code:
<container>
  <article>
    <template>hallo1</template>
    <info>infotext1</info>
  </article>
  <article>
    <template>hallo1</template>
    <info>textirgenwas2</info>
    <template>hallo2</template>
    <info>textirgenwas2</info>
  </article>
  <article>
    <template>huhu1</template>
    <info>gutentag2</info>
  </article>
</container>





Zuletzt bearbeitet von am Mo 25.07.2005 14:33, insgesamt 1-mal bearbeitet
 
 
Ähnliche Themen PHP: Doppelte Einträge aus in einem Array ausgeben
Wordpress: kategorie auf startseite ausschließen
Die Letzten 5 Einträge in SQL
PDF Formulare (Einträge speichern)
Wordpress: Einträge auslesen
pornografische einträge im gästebuch
Neues Thema eröffnen   Neue Antwort erstellen Seite: 1, 2  Weiter
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.