[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: applying templates to attribute value

Subject: Re: applying templates to attribute value
From: mark bordelon <markcbordelon@xxxxxxxxx>
Date: Mon, 30 Jun 2008 14:18:24 -0700 (PDT)
Re:  applying templates to attribute value
Ken,

Thanks for your quick reply. In fact, the select statement was what I started out with, but changed it to apply-templates in order to have the content itself match on the <b> and <br />. Doesn't apply templates force further matching of the matched node? Instead I am still getting the attribute value, untransformed.

Here is what I now have with your cyhanges, alongwith the output:
(I am using Altova).

XML: ==================================

<TEAMS_ASSET_FILE>
   <METADATA>
      <UOIS>
         <GT_ASSET_REQUEST_MD COVERLETTER_TEXT="This is a &lt;b&gt;test&lt;/b&gt; of the line break formatting&lt;br /&gt;. Did it work?" />
      </UOIS>
    </METADATA>
</TEAMS_ASSET_FILE>

XSL: ==================================

<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" exclude-result-prefixes="fo">
<xsl:template match="TEAMS_ASSET_FILE">
   <xsl:apply-templates select="METADATA/UOIS/GT_ASSET_REQUEST_MD/@COVERLETTER_TEXT" />
</xsl:template>

<!-- formatting in the block -->
<xsl:template match="GT_ASSET_REQUEST_MD/@COVERLETTER_TEXT">
  <xsl:value-of select="."/>
</xsl:template>
<xsl:template match="br">
  <fo:block> </fo:block>
</xsl:template>
<xsl:template match="b">
  <fo:inline font-weight="bold">
    <xsl:apply-templates />
  </fo:inline>
</xsl:template>

</xsl:stylesheet>

OUTPUT: ===============================

<?xml version="1.0" encoding="UTF-8"?>This is a &lt;b&gt;test&lt;/b&gt; of the line break formatting&lt;br /&gt;. Did it work?





--- On Mon, 6/30/08, G. Ken Holman <gkholman@xxxxxxxxxxxxxxxxxxxx> wrote:

> From: G. Ken Holman <gkholman@xxxxxxxxxxxxxxxxxxxx>
> Subject: Re:  applying templates to attribute value
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Date: Monday, June 30, 2008, 4:24 PM
> At 2008-06-30 12:41 -0700, mark bordelon wrote:
> >Here is the problem in a nutshell, how can I applying a
> template to 
> >string content in an attributes value.
> 
> Attribute nodes are leaves of the tree.  To act on the
> content you 
> act on the node's value, unlike an element where you
> push the 
> children at your stylesheet for processing.
> 
> >My specific digital asset management application has
> HTML formatting 
> >in an attribute value that I have to transform into fo
> formating. I 
> >have the formatting templates, but I cannot seem to
> match them to 
> >the attribute value.
> 
> You are matching the attribute value, you just aren't
> doing anything with it.
> 
> >XML: ==================================
> >
> ><TEAMS_ASSET_FILE>
> >    <METADATA>
> >       <UOIS>
> >          <GT_ASSET_REQUEST_MD
> COVERLETTER_TEXT="This is a 
> > &lt;b&gt;test&lt;/b&gt; of the line
> break formatting&lt;br /&gt;. 
> > Did it work?" />
> >       </UOIS>
> >     </METADATA>
> ></TEAMS_ASSET_FILE>
> >
> >XSL: ==================================
> >
> ><xsl:template match="TEAMS_ASSET_FILE">
> >    <xsl:apply-templates 
> >
> select="./METADATA/UOIS/GT_ASSET_REQUEST_MD/@COVERLETTER_TEXT"
> />
> 
> The "./" is redundant above.
> 
> ></xsl:template>
> >
> ><!-- formatting in the block -->
> ><xsl:template
> match="//GT_ASSET_REQUEST_MD/@COVERLETTER_TEXT">
> 
> The "//" is redundant above.
> 
> >   <xsl:apply-templates />
> 
> That statement "pushes the children of the node"
> ... there are no 
> children of the attribute node because it is a leaf in the
> tree and 
> is attached to an element.  As a result, there is nothing
> added to 
> your result tree.
> 
> You want <xsl:value-of select="."/> to add
> the value of the attribute 
> to the result tree.
> 
> ></xsl:template>
> ><xsl:template match="br">
> >   <fo:block> </fo:block>
> ></xsl:template>
> ><xsl:template match="b">
> >   <fo:inline font-weight="bold">
> >     <xsl:apply-templates
> select="*|text()"/>
> 
> I suspect <xsl:apply-templates/> is sufficient here
> as that is a 
> synonym for <xsl:apply-templates
> select="child::node()"/>  which is a 
> synonym for <xsl:apply-templates 
> select="*|text()|comment()|processing-instruction"/>
> 
> I hope this helps.
> 
> . . . . . . . . . . . Ken
> 
> --
> Upcoming XSLT/XSL-FO hands-on courses:      Wellington, NZ
> 2009-01
> World-wide corporate, govt. & user group XML, XSL and
> UBL training
> RSS feeds:     publicly-available developer resources and
> training
> G. Ken Holman                
> mailto:gkholman@xxxxxxxxxxxxxxxxxxxx
> Crane Softwrights Ltd.         
> http://www.CraneSoftwrights.com/s/
> Box 266, Kars, Ontario CANADA K0A-2E0    +1(613)489-0999
> (F:-0995)
> Male Cancer Awareness Nov'07 
> http://www.CraneSoftwrights.com/s/bc
> Legal business disclaimers: 
> http://www.CraneSoftwrights.com/legal

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.