| 
 
Subject: Re: [xsl] Selective output of half a tag? From: Peter Davis <pdavis152@xxxxxxxxx> Date: Tue, 11 Jun 2002 04:20:46 -0700  | 
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On Tuesday 11 June 2002 03:50, Graham Ashton wrote:
> <xsl:if test="self::foo">
>       <mytag>
>     </xsl:if>
>     <xsl:apply-templates/>
>     <xsl:if test="count(following-sibling::foo)=0">
>       </mytag>
>     </xsl:if>
Yes, that doesn't work because it is not well-formed.
Basically, there are three ways you can do this (depending a little on what 
you're trying to do):
If all you need to do is dynamically change the name of the tag, then 
<xsl:element> can help you out:
<xsl:element name="{$the-tag-name}">
  <!-- assuming "the-tag-name" is a variable -->
  <xsl:apply-templates/>
</xsl:element>
If you need to selectively output or not output the entire tag, then you need 
something like this:
<xsl:choose>
  <xsl:when test="something">
    <mytag>
      <xsl:apply-templates/>
    </mytag>
  </xsl:when>
  <xsl:otherwise>
    <xsl:apply-templates/>
  </xsl:otherwise>
</xsl:choose>
As you might notice, the above basically has two possible outputs, and each 
choice has its own copy of <xsl:apply-templates/>.  You've already done the 
hard part of putting the common code in (an)other template(s).  If what you 
had was more than a single command inside of <mytag/>, then you would 
probably want to move the common code to a named template and only copy the 
<xsl:call-template/> inside <mytag/> and <xsl:otherwise/>.
The final and most despised option is disable-output-escaping.  This is the 
lazy way out, but it follows your idea of telling the processor to treat 
"<mytag>" as text.  You run two risks: (1) you might end up outputting 
not-well-formed XML, and (2) this won't work with all processors or 
installations.
<xsl:if test="something">
  <xsl:text disable-output-escaping="yes"><mytag></xsl:text>
</xsl:if>
<xsl:apply-templates/>
<xsl:if test="something-else">
  <xsl:text disable-output-escaping="yes"></mytag></xsl:text>
</xsl:if>
HTH
- -- 
Peter Davis
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.7 (GNU/Linux)
iD8DBQE9Bd0RNSZCJx7tYycRAn+CAKCW5Ly+RIHWEv3qOL+v6ds5AxvCqACgog7K
MC2DatL184GQhcJBOk7fBQQ=
=IfUy
-----END PGP SIGNATURE-----
 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
| Current Thread | 
|---|
  | 
| <- Previous | Index | Next -> | 
|---|---|---|
| Re: [xsl] Selective output of half , Antonio Fiol | Thread | Re: [xsl] Selective output of half , Graham Ashton | 
| Re: [xsl] Selective output of half , Antonio Fiol | Date | Re: [xsl] XSL special chars output , CAO Tuan Dung | 
| Month |