2016-07-30 22 views
0

ich meine Eingabe wie folgt aus:Entfernen Raum in gemischten Inhaltselement ohne normalisieren-Raum mit

<p><span class="someclass"/>Tekst <i>italic</i> etc..</p>
<p>Tekst <i>italic</i> etc..</p>

Wenn ich Raum normalisieren (:

<p><span class="someclass"/> Tekst <i>italic</i> etc..</p>
<p> Tekst <i>italic</i> etc..</p>

ich die Ausgabe sein möchte .) In einem Mixed Content Model werde ich auch den Platz vor und nach dem <i> -Element entfernen.

<p><span class="someclass"/>Tekst<i>italic</>etc..</p>
<p>Tekst<i>italic</i>etc..</p>

Gibt es eine nette Möglichkeit, um dies zu umgehen?

+0

Können Sie in Worten erklären, welche Leerzeichen Sie entfernen möchten? Nur der führende Platz des ersten Textknotens unter einem 'p'? In diesem Fall ' 'könnte tun. –

Antwort

0

Wenn alles, was Sie tun möchten, ist Leerraum in der ersten text() Kind-Knoten eines p Element entfernen Sie dann mit Hilfe von XSLT 3.0 können Sie

verwenden
<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:math="http://www.w3.org/2005/xpath-functions/math" 
    exclude-result-prefixes="xs math" 
    version="3.0"> 

    <xsl:mode on-no-match="shallow-copy"/> 

    <xsl:template match="p/text()[1]"> 
     <xsl:value-of select="replace(., '^\s+', '')"/> 
    </xsl:template> 

</xsl:stylesheet> 

und mit XSLT 2.0 Sie buchstabieren müssen <xsl:mode on-no-match="shallow-copy"/> als die Identitätstransformationsvorlage

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:math="http://www.w3.org/2005/xpath-functions/math" 
    exclude-result-prefixes="xs math" 
    version="2.0"> 

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

    <xsl:template match="p/text()[1]"> 
     <xsl:value-of select="replace(., '^\s+', '')"/> 
    </xsl:template> 

</xsl:stylesheet> 
+0

Hallo Martin, nochmals vielen Dank für deine Antwort. Ich arbeitete irgendwie mit p/text() [1] und ersetzte, aber das Problem war die Identy-Transformationsvorlage ... als hätte ich sie nicht :) So Ausgabe blieb das gleiche :) – Heinrich1971