Announcement

Collapse
No announcement yet.

Kann doch ned so schwer sein zwei Tags zu löschen :-(

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Kann doch ned so schwer sein zwei Tags zu löschen :-(

    Hallo ich habe eine Frage.

    Ich habe es nun endlich geschafft, zwei Tags zu vereinen. Aber ich schaffe es nicht, diese Tags dann wegzulöschen.

    Hier der Code:

    Code:
    	<xsl:template match="/">
    		<a>
    			<xsl:for-each select="a/b/c">
    				<xsl:copy-of select="."/>
    				<xsl:if test="bestimmerTag=''">
    					<xsl:call-template name="vset:union">
    						<xsl:with-param name="nodes1" select="preceding-sibling ::c[1]/*"/>
    						<xsl:with-param name="nodes2" select="./*"/>
    					</xsl:call-template>
    				</xsl:if>
    			</xsl:for-each>
    		</a>
    	</xsl:template>
    Erklärung: Der Code macht folgendes: Für jedes Tag c mache folgendes. Kopiere alles. Aaaaaaber falls d leer ist, dann mache folgendes: vereine tag c (wobei hier ja das kind leer war) mit dem vorherigen c. also direkt das obere c.

    Was nun hier fehlt ist: lösche danach das obere c und dann das c wo das kind leer war.

    Hier die Struktur der xml Datei:
    Code:
    <a>
    <b>
    <c>
    <d>hier steht was<d>
    <e>hier auch</e>
    </c>
    
    
    <c>
    <d>juhujuhu<d>  
    <e>mal schauen</e>
    </c>
    
    
    <c>
    <d><d>    <<--------- das ist leer, also muss der mit dem oberen vereint werden
    <e></e>
    <f>das muss auch mit rein</f>
    </c>
    
    </b>
    </a>
    Ergebnis vom Code welches funzt:

    Code:
    <a>
    <b>
    <c>
    <d>hier steht was<d>
    <e>hier auch</e>
    </c>
    
    
    <c>
    <d>juhujuhu<d>  
    <e>mal schauen</e>
    </c>
    
    
    <c>
    <d><d>    <<<<<<<<--------- das ist leer
    <e></e>
    <f>das muss auch mit rein</f>
    </c>
    
    
    <c>
    <d>juhujuhu<d>  
    <e>mal schauen</e>
    <f>das muss auch mit rein</f>
    </c>
    
    </b>
    </a>
    Die Vereinigung funktioniert. Habe ich aus dem Cookbook. Aber die zwei anderen c's brauche ich nicht mehr. Also weg damit.
    Kann auch in einem zweiten Stylesheet passieren. Aber ich kriege es nicht hin :-(((

    Dachte mir am einfachsten ist doch folgendes:

    Code:
    	<xsl:template match="/">
    		<a>
    			<xsl:for-each select="a/b/c">
    				<xsl:copy-of select="."/>
    				<xsl:if test="bestimmerTag=''">
    					<xsl:call-template name="vset:union">
    						<xsl:with-param name="nodes1" select="preceding-sibling ::c[1]/*"/>
    						<xsl:with-param name="nodes2" select="./*"/>
    					</xsl:call-template>
    <xsl:call-template name=lösche"/>
    				</xsl:if>
    			</xsl:for-each>
    		</a>
    	</xsl:template>
    
    <xsl:template name="lösche" match="//c[d=''] | //c[d='']/preceding-sibling::c[1]"/>
    GEHT ABER NICHT :-( :-( :-(

    Weiss jemand wie ich das in einem Stylesheet loswerde oder vielleicht in einem zweiten??

    Danke
    Tamer
Working...
X