Re: [xsl] How can I placed end tags?

Subject: Re: [xsl] How can I placed end tags?
From: "Joris Gillis" <roac@xxxxxxxxxx>
Date: Fri, 12 Aug 2005 09:01:52 +0200
Hi,
Tempore 08:28:59, die 08/12/2005 AD, hinc in xsl-list@xxxxxxxxxxxxxxxxxxxxxx scripsit aaron apigo <aaronjose_apigo2001@xxxxxxxxx>:

<text:p>
<text:user-field-get
text:name="ce:author">au</text:user-field-get>
<text:span>
<text:user-field-get
text:name="ce:given-name">fnm</text:user-field-get>
</text:span>
<text:span>Jun</text:span>
<text:span>
<text:user-field-get
text:name="ce:surname">snm</text:user-field-get>
</text:span>
<text:span>Wang
</text:span>
<text:span>
<text:user-field-get
text:name="ce:e-address">ead</text:user-field-get>
</text:span>
<text:span>jwang@xxxxxxxx</text:span>
<text:span>
<text:user-field-get
text:name="/ce:e-address">/ead</text:user-field-get>
</text:span>
<text:user-field-get
text:name="/ce:author">/au</text:user-field-get>
</text:p>

to

<ce:author>
<ce:given-name>Jun</ce:given-name>
<ce:surname>Wang</ce:surname>
<ce:e-address>jwang@xxxxxxxx</ce:e-address>
</ce:author>


You shouldn't go creating tags. In XSLT, you create elements.


Consider this XSLT:

!first replace the dummy namespace uris with the real ones, otherwise it will not work.

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
xmlns:text="abc"
xmlns:ce="test"
 version='1.0'>
<xsl:strip-space elements="*"/>

<xsl:output method="xml" indent="yes"/>

<xsl:template match="text:p">
  <xsl:apply-templates select="text:user-field-get"/>
</xsl:template>

<xsl:template match="text:user-field-get">
	<xsl:element name="{@text:name}">
		<xsl:apply-templates select="parent::text:span/following-sibling::*[1][self::text:span/text()]"/>
		<xsl:apply-templates select="../text:span/text:user-field-get"/>
	</xsl:element>
</xsl:template>

<xsl:template match="text:user-field-get[starts-with(.,'/')]"/>

</xsl:stylesheet>

regards,
--
Joris Gillis (http://users.telenet.be/root-jg/me.html)
B+N N1N;N.N8N5N9N1 N:N1N9 ON? N;N,N4N9 ON,N=ON1 N2N3N1N/N=N?ON= N1OO ON,N=O	B;

Current Thread