This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: XSL problem for newbie!


Hi Mark,

At 04:18 PM 5/10/00 +0100, you wrote:
>so firstly, can someone give me a minimal script that will take a file of
>XML and replicate it unchanged as output. i guess you need a template to
>override each default rule for how each input element is handled (including
>comments, processing instructions etc.)

Not quite: you can override all default rules together. An identity
transform is given in the XSL spec, section 7.5:

<xsl:template match="@*|node()">
  <xsl:copy>
    <xsl:apply-templates select="@*|node()"/>
  </xsl:copy>
</xsl:template>

>secondly, can you modify this to show a test for the presence of a named
>child element which inserts it if it is not present

Rather than modify it, supplement it with a template specifically for that
element where you want the test and possible new child:

<xsl:template match="yourelement">
  <xsl:copy>
    <xsl:apply-templates select="@*"/>
    <xsl:if test="not(child)">
      <child><!-- whatever you like --></child>
    </xsl:if>
    <xsl:apply-templates select="node()"/>
  </xsl:copy>
</xsl:template>

>and finally, can you modify this to show testing the presence of an
>attribute and inserting a default if it is not present

<xsl:template match="yourelement">
  <xsl:copy>
    <xsl:if test="not(@yourattribute)">
      <xsl:attribute name="yourattribute">
        <xsl:text>yourdefaultvalue</xsl:text>
      </xsl:attribute>
    </xsl:if>
    <xsl:apply-templates select="@*|node()"/>
  </xsl:copy>
</xsl:template>

Note that I haven't tested this stuff, but I think it'll do what you want.

Cheers,
Wendell


======================================================================
Wendell Piez                            mailto:wapiez@mulberrytech.com
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
======================================================================


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]