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
<b>test</b> of the line break formatting<br />. 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 <b>test</b> of the
line break formatting<br />. Did it work?
--- On Mon, 6/30/08, G. Ken Holman <gkholman(_at_)CraneSoftwrights(_dot_)com>
wrote:
From: G. Ken Holman <gkholman(_at_)CraneSoftwrights(_dot_)com>
Subject: Re: [xsl] applying templates to attribute value
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
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
<b>test</b> of the line
break formatting<br />.
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(_at_)CraneSoftwrights(_dot_)com
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
--~------------------------------------------------------------------
XSL-List info and archive:
http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to:
http://lists.mulberrytech.com/xsl-list/
or e-mail:
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--