php.de

Zurück   php.de > php.de Intern > Beitragsarchiv

Beitragsarchiv Nur gucken, nichts anfassen. Das Archiv der Beiträge vergangener Zeiten.

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 31.01.2008, 09:13  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard XML/XSL/XPath: zweispaltige Ausgabe

Hallo,

für eine zweispaltige Darstellung einer XML-Ebene (mit mehreren gleichnamigen Knoten), funktioniert folgender XSL-Code:

(der HTML-Code stammt aus YAML [1], und ist für die zweispaltige Darstellung zuständig)
Code:
<xsl:choose>
    <xsl:when test="count(content) = 1">
        <xsl:call-template name="block">
            <xsl:with-param name="current" select="."/>
        </xsl:call-template> 
    </xsl:when>
    <xsl:when test="count(content) &gt; 1">
        <xsl:for-each select="content">
            <xsl:if test="position() mod 2 = 1">
                <div class="subcolumns">
                    <div class="c50l">
                        <div class="subcl">
                            <xsl:call-template name="block">
                                <xsl:with-param name="current" select="."/>
                            </xsl:call-template>
                        </div>
                    </div>
                    <xsl:if test="following-sibling::*">
                        <div class="c50l">
                            <div class="subcr">
                                <xsl:call-template name="block">
                                    <xsl:with-param name="current" select="following-sibling::*"/>
                                </xsl:call-template>
                            </div>
                        </div>
                    </xsl:if>
                </div>
            </xsl:if>
        </xsl:for-each>
    </xsl:when>
</xsl:choose>
Code:
<xsl:template name="block">
    <xsl:if test="title">
        <h3>
            <xsl:if test="position() = 1 or position() = 2">
                <xsl:attribute name="class">first</xsl:attribute>
            </xsl:if> 
            <xsl:value-of select="$current/title"/>
        </h3>
    </xsl:if>
    <xsl:value-of select="php:function('nl2br',string($current/text))" disable-output-escaping="yes"/>
</xsl:template>
Verarbeitet wird also folgendes Konstrukt
Code:
<?xml version="1.0" encoding="utf-8"?>
<template xmlns:xi="http://www.w3.org/2001/XInclude">
    <title/>
    <xi:include href="menu.xml">
        <xi:fallback>
            <error>xinclude: menu.xml not found</error>
        </xi:fallback>
    </xi:include>
    <content>
        <title>Impressum</title>
        <text><![CDATA[
            Blindtext 1
        ]]></text>
    </content>
    <content>
        <title>Copyright</title>
        <text><![CDATA[
            Blindtext 2
        ]]></text>
    </content>
    <content>
        <title>Haftungshinweis</title>
        <text><![CDATA[
            Blindtext 3
        ]]></text>
    </content>
</template>
Das schwierige war die richtige XPath Syntax für following-sibling zu finden. Vielleicht brauchts der ein oder andere ja.

[1] http://www.yaml.de
Zergling-new ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 31.01.2008, 16:33  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.241
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Du bist so gut zu uns
nikosch ist offline  
Alt 31.01.2008, 17:52  
Erfahrener Benutzer
 
Registriert seit: 17.06.2008
Beiträge: 125
squig befindet sich auf einem aufstrebenden Ast
Standard

Ein squig sagt Danke.
squig ist offline  
Alt 31.01.2008, 23:07  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Du glaubst garnicht wieviel Googlebesucher solche Threads mit ihren Schlagwörtern bringen

Gleich noch welche hinzufügen: Modulo XSLT
Zergling-new ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Problem mit Ausgabe eines gifs für ein Captcha Canni HTML, Usability und Barrierefreiheit 5 15.07.2008 19:05
Class Ausgabe Problem wk-moray PHP-Fortgeschrittene 6 12.02.2008 10:06
imagejpeg ausgabe funkt nicht zoro PHP Tipps 2007 5 30.07.2007 22:31
Objekt Ausgabe in Array konvertieren duderino PHP Tipps 2006 8 11.11.2006 14:29
Problem mit Ausgabe bzw. Abfrage mit ORDER BY mayer Datenbanken 7 02.07.2006 21:45
Ausgabe der datei klappt nicht Mondschein PHP Tipps 2005-2 3 28.09.2005 00:01
[Erledigt] Ausgabe der Datenabfrage in einer Tabelle? Datenbanken 2 26.09.2005 21:28
Ausgabe der Auswahlliste PHP Tipps 2005-2 6 21.09.2005 13:43
3 Tabellen verbunden -- Ausgabe in einer Spalte Datenbanken 4 06.09.2005 10:43
PHP-Magazin - Ausgabe 5.2005 imported_Ben Off-Topic Diskussionen 1 08.08.2005 08:39
[Erledigt] Geteilte Ausgabe an den Browser... PHP-Fortgeschrittene 4 01.07.2005 13:07
[Erledigt] date() Ausgabe in Deutsch PHP-Fortgeschrittene 8 06.02.2005 19:32
Ausgabe nur dann, wenn htmlspecialchars() verwendet PHP Tipps 2004 1 27.10.2004 21:17
[Erledigt] Sortierung der Ausgabe PHP-Fortgeschrittene 3 08.10.2004 09:22
[Erledigt] Prozedurale Bibliothek für HTML Ausgabe PHP Tipps 2004 0 06.07.2004 11:59

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
xpath siblings, xslt cdata nl2br, xsl zweispaltige liste, xpath cdata php, xsl nl2br, xsl zweispaltig, xpath count if cdata, xsl for-each modulo n, xpath mod 2, php zweispaltige ausgabe, xpath text content, zweispaltig in xml, xslt nl2br, xslt auswahlliste, xml xsl auswahlliste, xsl for-each zweispaltiig, xpath php cdata, xsl if mod 2, php xpath xsl, xpath count ausgeben

Alle Zeitangaben in WEZ +1. Es ist jetzt 13:41 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.