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

RE: Fine tuning a template match

Subject: RE: Fine tuning a template match
From: "Trevor Nicholls" <trevor@xxxxxxxxxxxxxxxxxx>
Date: Mon, 31 Jul 2006 17:15:08 +1200
framemaker to docbook
Hi Jay

> If I understand correctly, you want to narrow the XRefs within tables.
> If so, could you add [ancestor::TABLE]:
> 
> <!-- hyperlink targets in rows -->
> <xsl:template match="A[ ancestor::TABLE ][ @ID ][
>      not(@CLASS='XRef') ][ not(ancestor::FOOTNOTES) ]">
> 
> That would ensure that this template matches only A elements
> that somewhere within tables.

I've tried this: the problem is that it still matches the A elements that
have already been matched by the moded template.

1. My various table templates call apply-templates on all A elements that
appear at any level within the "titles" (which is under CAPTION if the rows
are separate, or under CAPTION/TableTitleList if the rows are also under
CAPTION, or non-existent if this table has no CAPTION at all). This call to
apply-templates has a mode (tblhd).

2. Various templates (those inside rows, but also those inside "title"
elements) call apply-templates on their own child A elements. These calls to
apply-templates are modeless, but unfortunately they include all the A
elements that were processed by [1] as well.

Cheers
Trevor

-----Original Message-----
From: Jay Bryant [mailto:jay@xxxxxxxxxxxx] 
Sent: Monday, 31 July 2006 5:00 p.m.
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re:  Fine tuning a template match

Hi, Trevor,

I sympathize, as I am doing FrameMaker-to-DocBook for my current client.

If I understand correctly, you want to narrow the XRefs within tables. If
so, could you add [ancstor::TABLE]:

<!-- hyperlink targets in rows -->
<xsl:template
match="A[ancestor::TABLE][@ID][not(@CLASS='XRef')][not(ancestor::FOOTNOTES)]
">

That would ensure that this template matches only A elements that somewhere
within tables.

Jay Bryant
Bryant Communication Services

----- Original Message ----- 
From: "Trevor Nicholls" <trevor@xxxxxxxxxxxxxxxxxx>
To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
Sent: Sunday, July 30, 2006 10:56 PM
Subject:  Fine tuning a template match


> Hi
>
> I am trying to transform some FrameMaker-generated XML that contains lots
of
> tables. The tables optionally include a set of titles, and these titles
are
> usually wrapped in a caption element - but sometimes the caption element
> also includes all the table rows :-(
>
> Scattered "randomly" through the tables we have <A id=> elements and my
> requirement is to process all title-related <A> elements before the table,
> and all row-related <A> elements within their row. There are <A id=>
> elements elsewhere in the document, hence some of the conditions in the
> template which is designed to process them.
>
> The following extract successfully identifies the table types and the <A>
> elements to be processed at the head of the tables:
> ==============
> <!-- tables -->
> <!-- some tables have one caption child and multiple row children-->
> <xsl:template match="TABLE[CAPTION and ROW]">
> <xsl:apply-templates select="CAPTION//A[@ID]" mode="tblhd"/>
> <xsl:element name="table">...</xsl:element>
> </xsl:template>
>
> <!-- others have all the rows inside the caption -->
> <!-- in this case the title is wrapped in a titlelist -->
> <xsl:template match="TABLE[CAPTION/ROW]">
> <xsl:apply-templates select="CAPTION/TableTitleList//A[@ID]" mode="tblhd"
/>
> <xsl:element name="table">...</xsl:element>
> </xsl:template>
>
> <!-- and others have no caption at all -->
> <xsl:template match="TABLE">
> <xsl:element name="table">...</xsl:element>
> </xsl:template>
>
> ...
>
> <!-- hyperlink targets in headings -->
> <xsl:template match="A[@ID]" mode="tblhd">
> ...
> </xsl:template>
>
> <!-- hyperlink targets in rows -->
> <xsl:template
match="A[@ID][not(@CLASS='XRef')][not(ancestor::FOOTNOTES)]">
> ...
> </xsl:template>
> ==============
>
> As it stands this last template which matches all ID'ed "A" elements in
> tables causes these elements to be processed twice - once by the moded
> template and once by the standard template, so that the XML generated for
a
> hyperlink target appears both before the <table> element and once again
> inside it. So I need to fine tune the final template somehow: I need to
> exclude the pre-table context from the un-moded template. Does that make
> sense?
>
> Cheers
> Trevor

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.