XSLT - XML-Tags zusammenbauen, aber wie?

DirkHo

Erfahrenes Mitglied
Hallo,

ich habe eine XMI-Datei, die ich per XSLT in eine XML-Datei umbauen möchte.

Nun habe ich folgendes Problem: Ich habe ein Eltern-Element <model>

Zwischen <model> und </model> habe ich meine <xsl:apply-templates>. Eines davon verweist auf die Attribute, die mein Model hat.

Das Template, daß ich für die Attribute habe sieht folgendermaßen aus:

Code:
	<xsl:template match="RATTENSCHWANZ">
		<xsl:call-template name="get-type"> 
		<xsl:with-param name="fullname" select="RATTENSCHWANZ"/>

		<attribute name="{@name}" type="" length="" />
		</xsl:call-template>
	</xsl:template>

Nun würde ich gerne, was ich über den Template-Aufruf get-type geliefert bekomme in <attribute name="{@name}" TYPE="WERT VON GET-TYPE" length="" /> haben.

Geht das irgendwie? Bin am verzweifeln... Bitte einigermaßen ausführlich antworten, da ich (noch) nicht soo die riesen Ahnung von dem Thema habe.

Vielen Dank und Grüße,

Dirk
 
Hi.

Ungefähr so:
XML:
<xsl:element name="attribute">
  <xsl:attribute name="name">
    <xsl:call-template name="get-type"> 
		<xsl:with-param name="fullname" select="RATTENSCHWANZ"/>
    </xsl:call-template>
  </xsl:attribute>
</xsl:element>
Allerdings gibt es doch genügend Online-Referenzen wo man soetwas schnell nachschlagen kann. Da mußt du dann auch nicht auf 'ne Antwort warten (http://www.w3schools.com/xsl/).

Gruß
 
Zuletzt bearbeitet von einem Moderator:
Hi deepthroat,

(btw: geiler Name ;D)
ich glaube, da lag ein Mißverständnis vor... Und zwar möchte ich nicht in dem template "get-type" den gefundenen Wert ausgeben lassen, sondern ich möchte den Wert, der in "get-type" gefunden wurde, in dem template ausgeben, in dem call-template name="get-type" aufgerufen wird.

Ich will also wissen, ob es eine Art return-Wert für templates die über call-template aufgerufen wurden, gibt.

Danke und Grüße,

Dirk
 
Hi.

Also der Schnipsel den ich gepostet habe, würde bei Anwendung und unter der Annahme, dass get-type z.B. den Wert "xyz" (mittels xsl:value-of) liefert, die folgende Ausgabe zur Folge haben:
XML:
<attribute name="xyz"/>
Ich dachte eigentlich schon, dass es das ist was du wolltest? Was möchtest du denn stattdessen?

Gruß
 
Zuletzt bearbeitet von einem Moderator:
Hi,

ja, aber ich habe noch andere Attribute zu <attribute>, die ich eben in dem aufrufenden Template auslese und dann <attribute> hinzufüge - ich will also <attribute> nicht in dem call-template zusammenbauen, sondern eine Ebene darüber...

Ich habe es jetzt hinbekommen, da ich gemerkt habe, daß das call-template in dem Fall unnötig ist und ich auch direkt einfach nur den XPath aufrufen und mit substring zerlegen kann.

Danke auf jeden Fall mal für deine Hilfe!

Viele Grüße,

Dirk
 
Zurück