Re: [xsl] Newbie wants comments too . . .

Subject: Re: [xsl] Newbie wants comments too . . .
From: Wendell Piez <wapiez@xxxxxxxxxxxxxxxx>
Date: Wed, 07 May 2008 17:12:35 -0400
Frank,

ps -- any particular reason why you have xsl:preserve-space="*"? In data-centric input this is pretty unusual. It's especially unusual to ask whitespace-only text to be preserved everywhere, as you have it. It's more common than not for such whitespace to be entirely cosmetic, and thus mungeable, so the results of stripping it instead and letting the serializer indent it again (as in my revised code) is often considered cleaner and preferable.

The glaring exception is in documents that have mixed content (runs of text mixed with inline elements), in which it's altogether pernicious to strip space. But your code doesn't appear to work over this sort of stuff (and won't).

Cheers,
Wendell

At 05:05 PM 5/7/2008, you wrote:
Frank,

Comments are ordinarily not copied because they are matched by a built-in template that discards them:

<xsl:template match="comment()"/>

To override this, simply write a template of your own that copies them:

<xsl:template match="comment()">
  <xsl:copy-of select="."/>
</xsl:template>

You could also tighten your code as follows:

<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>

<xsl:output method="xml" indent="yes"/>
<!-- indent 'yes' asks your serializer to indent so you don't have to -->

<xsl:preserve-space elements="*"/>

<xsl:template match="AsiaInfoDb">
  <aitags>
    <xsl:apply-templates/>
  </aitags>
</xsl:template>

<xsl:template match="AsiaInfoDb/*">
  <aitag id="{name()}">
    <xsl:copy-of select="@*"/>
    <xsl:value-of select="."/>
  </aitag>
</xsl:template>

</xsl:stylesheet>

This isn't much different (and it should create the same output), but you'll find this approach scales better to more complex sorts of problems.

Enjoy --
Wendell


====================================================================== Wendell Piez mailto:wapiez@xxxxxxxxxxxxxxxx Mulberry Technologies, Inc. http://www.mulberrytech.com 17 West Jefferson Street Direct Phone: 301/315-9635 Suite 207 Phone: 301/315-9631 Rockville, MD 20850 Fax: 301/315-8285 ---------------------------------------------------------------------- Mulberry Technologies: A Consultancy Specializing in SGML and XML ======================================================================


======================================================================
Wendell Piez                            mailto:wapiez@xxxxxxxxxxxxxxxx
Mulberry Technologies, Inc.                http://www.mulberrytech.com
17 West Jefferson Street                    Direct Phone: 301/315-9635
Suite 207                                          Phone: 301/315-9631
Rockville, MD  20850                                 Fax: 301/315-8285
----------------------------------------------------------------------
  Mulberry Technologies: A Consultancy Specializing in SGML and XML
======================================================================

Current Thread