Abfrage
Hamdi Gezer
- xsl
Hallo,
ich möchte in meinem XSL-Datei eine abfrage einbauen. Ich möchte abfragen ob in meinem XML-Datei ein Kindelement vorhanden ist.
Z. B. im unten angegebenen XML-Dokument wird beim Element "Daten" das Kindelement "Telefon" kein oder mehrmals eingegeben. Ich möchte in meinem XSL-Dokument überprüfen, ob dieser Kindelement vorhanden ist und je nach dem ausgeben.
<?xml version="1.0" encoding="iso-8859-1"?>?>
<Person>
<Daten>
<Name>Name</Name>
<Vorname>Vorname</Vorname>
<Anschrift>Anschrift</Anschrift>
<Telefon>0123456789</Telefon>
</Daten>
<Daten>
<Name>Name</Name>
<Vorname>Vorname</Vorname>
<Anschrift>Anschrift</Anschrift>
<Telefon>0123456789</Telefon>
<Telefon>0123456789</Telefon>
</Daten>
<Daten>
<Name>Name</Name>
<Vorname>Vorname</Vorname>
<Anschrift>Anschrift</Anschrift>
</Daten>
</Start>
Ich wäre Ihnen für eine Lösung sehr dankbar.
Gruß
Hamdi
Hallo,
ich möchte in meinem XSL-Datei eine abfrage einbauen. Ich möchte abfragen ob in meinem XML-Datei ein Kindelement vorhanden ist.
Z. B. im unten angegebenen XML-Dokument wird beim Element "Daten" das Kindelement "Telefon" kein oder mehrmals eingegeben. Ich möchte in meinem XSL-Dokument überprüfen, ob dieser Kindelement vorhanden ist und je nach dem ausgeben.
<?xml version="1.0" encoding="iso-8859-1"?>?>
<Person>
<Daten>
<Name>Name</Name>
<Vorname>Vorname</Vorname>
<Anschrift>Anschrift</Anschrift>
<Telefon>0123456789</Telefon>
</Daten>
Der entsprechende Teil des XSLs wäre auch hilfreich gewesen.
Es gibt da viele Möglichkeiten:
<xsl:template match="Daten">
...
<xsl:for-each select="Telefon">
...
</xsl:for-each>
...
</xsl:template>
oder:
<xsl:for-each select="Daten">
...
<xsl:for-each select="Telefon">
...
</xsl:for-each>
...
</xsl:for-each>
das "..." beduetet, irgendein andres Kode (HTML, oder XSL)
Ein expliziete Abfrage ist in diesem Fall nicht nötig, wenn "Telefon" vorhanden ist, wird es bzw. werden sie Ausgegeben, sonst passiert eben nichts.
Explizite Anfragen wären z.B. solche:
<xsl:if test="Daten/Telefon">
</xsl:if>
<xsl:template match="Daten[Telefon]">
<!-- Template für Daten-Elemente, die ein Telefon-Kindelement haben -->
</xsl:template>
<xsl:for-each select="Daten[Telefon]">
<!-- Template (ja, auch for-each ist ein Template) für Daten-Elemente, die ein Telefon-Kindelement haben -->
</xsl:for-each>
Mehr kann man dir leider nicht sagen, ohne genau zu wissen was du letzlich als Ausgabe haben möchtest.
Grüße
Thomas