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:
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:
Ergebnis vom Code welches funzt:
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:
GEHT ABER NICHT :-( :-( :-(
Weiss jemand wie ich das in einem Stylesheet loswerde oder vielleicht in einem zweiten??
Danke
Tamer
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>
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>
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>
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]"/>
Weiss jemand wie ich das in einem Stylesheet loswerde oder vielleicht in einem zweiten??
Danke
Tamer