+ Antworten
Ergebnis 1 bis 12 von 12

Thema: XSLT und Leerzeichen

  1. #1
    TP-Member medieninf macht alles soweit korrekt
    Registriert seit
    Mar 2006
    Beiträge
    90

    XSLT und Leerzeichen

    Hallo,

    nach einer XSLT Transformation kommt bei mir folgendes raus:

    Tag1



    Tag2


    Tag3

    D.h. es sind zuviele Leerzeichen dazwischen. Ich habe es mit <xsl:strip-space elements="*"/> versucht. Nun sind natürlich alle weg, aber auch die Umbrüche d.h. ich habe Tag1Tag2Tag3. Ein Zeilenumbruch sollte jedoch erhalten bleiben, d.h.

    Tag1
    Tag2
    Tag3

    Hat jeman ne Idee?

  2. #2
    TP-Junior xml-looser macht alles soweit korrekt
    Registriert seit
    Jun 2009
    Beiträge
    7
    da kein Code rate ich mal

    <xsl:text> <xsl:value-of selext=""/></xsl:text>

    Hagemann Helmut

  3. #3
    TP-Member medieninf macht alles soweit korrekt
    Registriert seit
    Mar 2006
    Beiträge
    90

    ...

    Hallo,

    Ziel bei mir ist folgendes: Ich habe ein XML Dokument, aus dem sollen einige Tags entfernt werden, der Rest soll wie er ist drin stehen bleiben.

    Ich filtere "unerwünschte" Tags einfach raus, indem ich ein Template erstelle, das den Tag matcht und darin steht einfach gar nichts. Ala match="tagname></xsl:template>

    Damit der Rest drin bleibt habe ich ein Template was alle anderen Knoten matcht und mittels xsl:copy wieder einbringt... Wo im alten Dokument die alten Knoten bzw. Tags standen die ich nun entfernt habe, sind einfach eine Menge von Leerzeilen dazwischen

  4. #4
    TP-Moderator Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Avatar von Adromir
    Registriert seit
    Jun 2004
    Ort
    Hannover
    Beiträge
    4.805
    Also ich habe eine Glaskugel zerdeppert, 2 Liter Kaffee getrunken um aus dem Satz zu lesen. Bevor ich jetzt irgendein Tier opfere um aus den Eingeweiden zu lesen, wäre vielleicht doch irgendwas an Quelltext sinnvoll.
    Je größer der Deppenfaktor, desto gigantischer das Bescheidwissergefühl
    -Dieter Nuhr

  5. #5
    TP-Member medieninf macht alles soweit korrekt
    Registriert seit
    Mar 2006
    Beiträge
    90
    Hallo,

    entfernen tue ich die entsprechenden Tags so:

    <!--****************************************************************
    ** "<Tagname>" entfernen
    *************************************************************-->
    <xsl:template match="Tagname">

    </xsl:template>

    Wobei Tagname hier für den entsprechenden Tag steht. Damit die anderen Tags, für die kein solches Template angegeben ist erhalten bleiben, nutze ich:

    <xsl:template match="node() | @*">
    <xsl:copy>
    <xsl:apply-templates select="node() | @*"/>
    </xsl:copy>
    </xsl:template>

    Wenn vorher also z.B. das XML Dokument so aussah:

    <tag1>bla</tag1>
    <tag2>bla</tag2>
    <tag3>bla</tag3>
    <tag4>bla</tag4>

    und ich tag2 und 3 entferne, dann sieht es so aus:

    <tag1>bla</tag1>


    <tag4>bla</tag4>

    die Leerzeilen sollen aber raus, damit nur

    <tag1>bla</tag1>
    <tag4>bla</tag4>


    stehenbleibt

  6. #6
    TP-Junior xml-looser macht alles soweit korrekt
    Registriert seit
    Jun 2009
    Beiträge
    7
    habe getest mit xml file
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <root>
    	<tag1 id="1">A
    </tag1>
    	<tag2 id="2">B
    </tag2>
    	<tag3 id="3">C
    </tag3>
    	<tag4 id="4">D
    </tag4>
    </root>

    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    	<xsl:output indent="yes" method="xml" encoding="utf-8"/>
    	<xsl:template match="/">
    		<root>
    			<xsl:apply-templates select="//tag1|//tag4"/>
    		</root>
    	</xsl:template>
    	<xsl:template match="tag1|tag4">
    		<xsl:element name="{local-name(.)}">
    			<xsl:attribute name="id">
    				<xsl:value-of select="./@id"/>
    			</xsl:attribute>
    		</xsl:element>
    	</xsl:template>
    </xsl:stylesheet>
    das problem liegt an einen newline in der xml eingabe datei
    mal an schauen wie die Datei erzeugt wird newline entfernen
    dann gehts es mit deiner xslt

    Helmut Hagemann

  7. #7
    TP-Member medieninf macht alles soweit korrekt
    Registriert seit
    Mar 2006
    Beiträge
    90
    Hallo,

    Danke für deine Antwort. Auf die Quell XML Datei habe ich aber keinen Einfluss. Die soll so von den Benutzern kommen. Deshalb wäre es schon günstig generell die unnötigen Leerzeilen zu entfernen. Noch Ideen?

  8. #8
    TP-Junior xml-looser macht alles soweit korrekt
    Registriert seit
    Jun 2009
    Beiträge
    7
    mit deine test daten ist es mir nicht möglich deine probleme
    bester zu erkennen damit ist der weg mit copy gestorben
    zeige dochmal die orignal xml und was herraus kommen soll
    Helmut Hagemann

  9. #9
    TP-Member medieninf macht alles soweit korrekt
    Registriert seit
    Mar 2006
    Beiträge
    90
    Hallo,

    ich bin dir sehr dankbar. Aber die Datei sieht nicht anders aus als die Testdaten. Der Fehler kommt ja schon bei diesen Testdaten, d.h. es müsste erstmal da klappen.

    Problemstellung:

    Entferne Tags mit bestimmten Namen, erhalte restliche Tags die in XML Datei stehen. Das geht ja auch. Nur leider sind halt diese Leerzeilen zuviel. Wenn du ein Beispiel hast, was die o.g. Problemstellung ohne Leerzeilen zuviel löst, würde mich das auch schon weiter bringen :-)

  10. #10
    TP-Junior xml-looser macht alles soweit korrekt
    Registriert seit
    Jun 2009
    Beiträge
    7

    Smile

    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    	<xsl:output indent="yes" method="xml" encoding="utf-8"/>
    	<xsl:template match="/">
    		<root>
    			<xsl:apply-templates select="//tag1|//tag4"/>
    		</root>
    	</xsl:template>
    	<xsl:template match="tag1|tag4">
    		<xsl:element name="{local-name(.)}">
    		<xsl:value-of select="normalize-space(translate(.,'&#xA;',''))"/>
    <!-- falls attribute 
    			<xsl:attribute name="id">
    				<xsl:value-of select="./@id"/>
    			</xsl:attribute>-->
    		</xsl:element>
    	</xsl:template>
    </xsl:stylesheet>

  11. #11
    TP-Member medieninf macht alles soweit korrekt
    Registriert seit
    Mar 2006
    Beiträge
    90
    Hi,

    scheint ja vielversprechend. Werde ich demnächst mal testen. Was macht deine Lösung aber mit anderen Tags, z.B. tag7,tag10 die ja alle wie sie sind übernommen werden sollen? Das wird doch ne Menge schreibarbeit, oder?

  12. #12
    TP-Junior xml-looser macht alles soweit korrekt
    Registriert seit
    Jun 2009
    Beiträge
    7
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:output indent="yes" method="xml" encoding="utf-8"/>
        
        <xsl:template match="/">
            <root>
                <xsl:apply-templates select="child::root/*"/>
            </root>
        </xsl:template>
        
        <xsl:template match="node()">
           
            
        </xsl:template>
        <xsl:template match="tag1|tag4">
            <xsl:element name="{local-name(.)}">
                <xsl:value-of select="normalize-space(translate(.,'&#xA;',''))"/>
                <!-- falls attribute 
                    <xsl:attribute name="id">
                    <xsl:value-of select="./@id"/>
                    </xsl:attribute>-->
            </xsl:element>
        </xsl:template>
       
    </xsl:stylesheet>
    nur angeben welcher knoten ausgeben soll

    Helmut Hagemann

+ Antworten

Ähnliche Themen

  1. xml+xslt und formulare
    Von Darkened im Forum HTML & CSS
    Antworten: 2
    Letzter Beitrag: 08.01.2007, 19:34
  2. verwirrt ;) - XML, XSL, XSLT, XSL-Fo zu PDF
    Von SteffenR im Forum Traum-Dynamik
    Antworten: 4
    Letzter Beitrag: 12.07.2005, 23:17
  3. XSLT aktivierung in php unter windows 2000
    Von Dust im Forum Webdesign allgemein
    Antworten: 0
    Letzter Beitrag: 09.05.2005, 18:32
  4. xslt- ausgabe in mehrere dateien
    Von solochen im Forum Traum-Dynamik
    Antworten: 0
    Letzter Beitrag: 01.12.2003, 00:52
  5. xslt
    Von solochen im Forum HTML & CSS
    Antworten: 5
    Letzter Beitrag: 03.08.2003, 01:24

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51