Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   [XML] for-each Schleife (https://www.delphipraxis.net/80130-%5Bxml%5D-each-schleife.html)

Luckie 3. Nov 2006 10:48


[XML] for-each Schleife
 
Ich habe folgende Schleife:
XML-Code:
          <xsl:for-each select="Kontakt">
          <xsl:sort select="concat(Name, Vorname)"/>
            <!-- für den Fall, dass es mehrere identische Namen gibt
                 wird noch die aktuelle Position in die Sprungmarke
                 eingefügt -->
            <a href="#{Vorname}_{Name}:{position()}">
              <xsl:value-of select="Name"/>*<xsl:value-of select="Vorname"/></a>**<xsl:value-of select="Firma"/>
           


          </xsl:for-each>
Wäre es möglich diese so umzubauen, dass nicht nach jedem Eintrag ein Zeilenumbruch erfolgt, sondern nur nach jedem fünften oder so?

Neuromancer 3. Nov 2006 10:58

Re: [XML] for-each Schleife
 
Hi Luckie,
Zitat:

Zitat von Luckie
Wäre es möglich diese so umzubauen, dass nicht nach jedem Eintrag ein Zeilenumbruch erfolgt, sondern nur nach jedem fünften oder so?

Jo, schau dir mal "xsl:if" in Kombination mit " test="position()=5" " an.

Gruß

sakura 3. Nov 2006 11:06

Re: [XML] for-each Schleife
 
Zitat:

Zitat von Neuromancer
Jo, schau dir mal "xsl:if" in Kombination mit " test="position()=5" " an.

Nicht ganz, da das nur das 5. Element erreicht, aber nicht jedes 5. ;)
XML-Code:
<xsl:if test="position() mod 5 = 0">
   <hr />
</xsl:if>
@Luckie: Die Überschrift sollte aber [XSL] und nicht [XML] enthalten ;)

...:cat:...

Neuromancer 3. Nov 2006 11:10

Re: [XML] for-each Schleife
 
Zitat:

Zitat von sakura
Nicht ganz, da das nur das 5. Element erreicht, aber nicht jedes 5. ;)
XML-Code:
<xsl:if test="position() mod 5 = 0">
   <hr />
</xsl:if>

Nicht ganz, denn er will ja einen Zeilenumbruch und keine Line... ;) also
statt <hr />.

Aber du hast natürlich vollkommen recht. Thank God it's friday... ;)
(Auf dem Nachhauseweg ist mir der Fehler auch eingefallen...)

Gruß

Luckie 3. Nov 2006 11:38

Re: [XML] for-each Schleife
 
Perfekt. Nur warum werden die Attribute für <td> nicht berücksichtigt:
XML-Code:
<table>
          <xsl:for-each select="Kontakt">
          <xsl:sort select="concat(Name, Vorname)"/>
            <!-- für den Fall, dass es mehrere identische Namen gibt
                 wird noch die aktuelle Position in die Sprungmarke
                 eingefügt -->
            <td>
            <xsl:attribute name="border-width">1px</xsl:attribute>
            <xsl:attribute name="border-style">solid</xsl:attribute>
       <a href="#{Vorname}_{Name}:{position()}">
              <xsl:value-of select="Name"/> <xsl:value-of select="Vorname"/></a> <xsl:value-of select="Firma"/></td>
          <xsl:if test="position() mod 5 = 0">
              <tr />
            </xsl:if>
          </xsl:for-each>
          </table>
Und noch was:
XML-Code:
      <xsl:apply-templates select="Kontakt">
        <xsl:sort select="concat(Name, Vorname)"/>
      </xsl:apply-templates>
Wie kann ich das gleiche hier erreichen? Kontakt sieht so aus:
XML-Code:
<xsl:template match="Kontakt">
  <dl>
    <dt>



      <a name="{Vorname}_{Name}:{position()}" id="{Vorname}_{Name}:{position()}">
        [b]<xsl:value-of select="Name"/>*<xsl:value-of select="Vorname"/>**<xsl:value-of select="Firma"/>[/b]
      </a>
    </p></dt>
    <dd>

<xsl:value-of select="Strasse"/>


      <xsl:value-of select="PLZ"/> <xsl:value-of select="Ort"/>


      <xsl:if test="Land!=''"><xsl:value-of select="Land"/>
</xsl:if>
      <xsl:if test="GebDat!=''">Geburtsdatum: <xsl:value-of select="GebDat"/>
</xsl:if>
      <xsl:if test="Telefon1!=''">Tel. <xsl:value-of select="Telefon1"/>
</xsl:if>
      <xsl:if test="Telefon2!=''">Tel. <xsl:value-of select="Telefon2"/>
</xsl:if>
      <xsl:if test="Fax!=''">Fax: <xsl:value-of select="Fax"/>
</xsl:if>
      <xsl:if test="EMail1!=''">
        [email="{EMail1}"]<xsl:value-of select="EMail1"/>[/email]


      </xsl:if>
      <xsl:if test="EMail2!=''">
        [email="{EMail2}"]<xsl:value-of select="EMail2"/>[/email]


      </xsl:if>
      <xsl:if test="URL!=''">
        [url="{URL}"]<xsl:value-of select="URL"/>[/url]


      </xsl:if>
    
    </p></dd>
  </dl>

 
  <xsl:if test="position()!=last()">
   


</p>
  </xsl:if>
</xsl:template>

marabu 3. Nov 2006 11:44

Re: [XML] for-each Schleife
 
Hallo Michael,

wenn du mit <xsl:element name="td"> arbeitest, dann wird es funktionieren.

Grüße vom marabu

Neuromancer 3. Nov 2006 11:46

Re: [XML] for-each Schleife
 
Zitat:

Zitat von Luckie
Perfekt. Nur warum werden die Attribute für <td> nicht berücksichtigt:

Ich glaube, du mischst hier "normales" HTML mit CSS.
Probier mal folgendes:
XML-Code:
<xsl:attribute name="style">border:1px solid black;</xsl:attribute>
ungetestet.

Gruß

Luckie 3. Nov 2006 11:51

Re: [XML] for-each Schleife
 
Geht. Nur bei der Tabelle ignoriert er das collapse:
XML-Code:
<table>
<xsl:attribute name="style">border:1px solid black collapse;</xsl:attribute>

Neuromancer 3. Nov 2006 11:51

Re: [XML] for-each Schleife
 
Zitat:

Zitat von marabu
wenn du mit <xsl:element name="td"> arbeitest, dann wird es funktionieren.

Hallo marabu,

hat denn <xsl:element> bei <xsl:output method="HTML" /> überhaupt eine Wirkung? Ich dachte bis jetzt immer, <xsl:element> sei ausschließlich für die Transformation nach XML vorbehalten...?

Gruß

Neuromancer 3. Nov 2006 11:54

Re: [XML] for-each Schleife
 
Zitat:

Zitat von Luckie
Geht. Nur bei der Tabelle ignoriert er das collapse:

Könnte browserspezifisch sein. Auf welchen Browsern getestet? Bitte denk dran, dass der IE von CSS 2.0-Konformität nicht besonders viel hält (bis Version 6, bei der 7 soll's ja besser sein).

Gruß


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:03 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz