 |
| XSLT General questions and answers about XSLT. For issues strictly specific to the book XSLT 1.1 Programmers Reference, please post to that forum instead. |
Welcome to the p2p.wrox.com Forums.
You are currently viewing the XSLT section of the Wrox Programmer to Programmer discussions. This is a community of software programmers and website developers including Wrox book authors and readers. New member registration was closed in 2019. New posts were shut off and the site was archived into this static format as of October 1, 2020. If you require technical support for a Wrox book please contact http://hub.wiley.com
|
|
|
|

May 11th, 2009, 03:54 PM
|
|
Authorized User
|
|
Join Date: Oct 2008
Posts: 26
Thanks: 2
Thanked 0 Times in 0 Posts
|
|
Quick workaround for sort, group by program & date?
New problem. The set up is that I have several project pages which have meetings. Sometimes different projects have meetings on the same day. When this happens, the code I had no longer works properly and all the meeting display on one page but not the other. (Still not sure why they don't show at all on the other page. ) I've tried altering the key to take in the program id as well as the docdate (but being a noob probably did it wrong), tried adding another "for-each" statement, and haven't been able to come up with a fix.
Is there a quick work around patch other than recrafting the rather large XML at this point? Thanks in advance for any help you can give.
FWIW, this is a client-side transformation via a simple javascript
shortened XML (still has same problems):
Code:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<downloads>
<item category="agenda">
<program id="rtcc">RTCC</program>
<docdate>20090219</docdate>
<title>agenda</title>
<desc>meeting agenda</desc>
<xref>ftp://ftp.tjcog.org/pub/tarpo/agendas/agd20090219_rtcc.pdf</xref>
<docformat>PDF</docformat>
<docsize>
<mb></mb>
<kb>91</kb>
</docsize>
<comment></comment>
<postdate>20090219</postdate>
</item>
<item category="summary">
<program id="rtcc">RTCC</program>
<docdate>20090219</docdate>
<title>summary</title>
<desc>meeting summary</desc>
<xref>ftp://ftp.tjcog.org/pub/tarpo/minutes/mm20090219_rtcc.pdf</xref>
<docformat>PDF</docformat>
<docsize>
<mb></mb>
<kb>91</kb>
</docsize>
<comment></comment>
<postdate>20090219</postdate>
</item>
<item category="meeting">
<program id="rtcc">RTCC</program>
<docdate>20090219</docdate>
<title>Item 4.1 - TARPO RTAC Resolution - Pittsboro 2009 CMAQ Project</title>
<desc>Item 4.1 - TARPO RTAC Resolution - Pittsboro 2009 CMAQ Project</desc>
<xref>ftp://ftp.tjcog.org/pub/tarpo/mtgmat/rtcc20090219_item4_1.pdf</xref>
<docformat>PDF</docformat>
<docsize>
<mb></mb>
<kb>91</kb>
</docsize>
<comment></comment>
<postdate>20090219</postdate>
</item>
<item category="agenda">
<program id="rtac">RTAC</program>
<docdate>20090219</docdate>
<title>agenda</title>
<desc>meeting agenda</desc>
<xref>ftp://ftp.tjcog.org/pub/tarpo/agendas/agd20090219.pdf</xref>
<docformat>PDF</docformat>
<docsize>
<mb></mb>
<kb>91</kb>
</docsize>
<comment></comment>
<postdate>20090219</postdate>
</item>
<item category="summary">
<program id="rtac">RTAC</program>
<docdate>20090219</docdate>
<title>summary</title>
<desc>meeting summary</desc>
<xref>ftp://ftp.tjcog.org/pub/tarpo/minutes/mm20090219.pdf</xref>
<docformat>PDF</docformat>
<docsize>
<mb></mb>
<kb>91</kb>
</docsize>
<comment></comment>
<postdate>20090219</postdate>
</item>
<item category="meeting">
<program id="rtac">RTAC</program>
<docdate>20090219</docdate>
<title>Item 5.1.1 - TARPO RTAC Resolution - Pittsboro 2009 CMAQ Project 2-19-09</title>
<desc>Item 5.1.1 - TARPO RTAC Resolution - Pittsboro 2009 CMAQ Project 2-19-09</desc>
<xref>ftp://ftp.tjcog.org/pub/tarpo/mtgmat/rtac20090219_item5_1_1.pdf</xref>
<docformat>PDF</docformat>
<docsize>
<mb></mb>
<kb>91</kb>
</docsize>
<comment></comment>
<postdate>20090219</postdate>
</item>
</downloads>
The XSLT:
Code:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xdt="http://www.w3.org/2005/02/xpath-datatypes">
<xsl:key name="sortdate" match="item" use="docdate"/>
<xsl:param name="project"></xsl:param>
<xsl:if test="//downloads/item[@category='meeting' or @category='agenda' or @category='summary']/program[@id=$project]">
<xsl:element name="h3">
<xsl:attribute name="class">sidebar</xsl:attribute>
Meeting Information
</xsl:element>
<xsl:element name="p">
<xsl:attribute name="style">margin: -8px 0 0 0; font-size: .9em; font-style: italic; color: #887</xsl:attribute>
(click on date to view documents)
</xsl:element>
<xsl:for-each select="//downloads/item[@category='meeting' or @category='agenda' or @category='summary']/program[@id=$project][generate-id(..)=generate-id(key('sortdate', ../docdate)[1])]">
<xsl:sort select="../docdate" order="descending" data-type="number" />
<xsl:variable name="myid" select="../docdate" />
<xsl:element name="a">
<xsl:attribute name="style">font-weight: bold</xsl:attribute>
<xsl:attribute name="href">javascript:toggleDiv('<xsl:value-of select="$myid" />')</xsl:attribute>
<xsl:element name="h4">
<xsl:call-template name="format-date" />
</xsl:element>
</xsl:element>
<xsl:element name="div">
<xsl:attribute name="id"><xsl:value-of select="$myid" /></xsl:attribute>
<xsl:attribute name="style">display:none; margin-bottom: 10px</xsl:attribute>
<xsl:element name="table">
<xsl:for-each select="key('sortdate', ../docdate)">
<xsl:if test="position() mod 2 = 1">
<xsl:element name="tr">
<xsl:attribute name="style">background-color: #fff; border: 0</xsl:attribute>
<xsl:element name="td">
<xsl:attribute name="style">padding: 3px</xsl:attribute>
<xsl:element name="a">
<xsl:attribute name="href"><xsl:value-of select="xref" /></xsl:attribute>
<xsl:value-of select="title" />
</xsl:element>
<xsl:if test="docsize/mb != ''">
<xsl:element name="small">
<xsl:value-of select="docsize/mb" />.<xsl:value-of select="docsize/kb" />Mb
</xsl:element>
</xsl:if>
<xsl:call-template name="otrfmt" />
<xsl:if test="comment != ''">
<xsl:element name="br" />
<xsl:element name="small">
<xsl:value-of select="comment" />
</xsl:element>
</xsl:if>
</xsl:element>
</xsl:element>
</xsl:if>
<xsl:if test="position() mod 2 = 0">
<xsl:element name="tr">
<xsl:attribute name="style">background-color: #ede5df; border: 0</xsl:attribute>
<xsl:element name="td">
<xsl:attribute name="style">padding: 3px</xsl:attribute>
<xsl:element name="a">
<xsl:attribute name="href"><xsl:value-of select="xref" /></xsl:attribute>
<xsl:value-of select="title" />
</xsl:element>
<xsl:if test="docsize/mb != ''">
<xsl:element name="small">
<xsl:value-of select="docsize/mb" />.<xsl:value-of select="docsize/kb" />Mb
</xsl:element>
</xsl:if>
<xsl:call-template name="otrfmt" />
<xsl:if test="comment != ''">
<xsl:element name="br" />
<xsl:element name="small">
<xsl:value-of select="comment" />
</xsl:element>
</xsl:if>
</xsl:element>
</xsl:element>
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:element>
</xsl:for-each>
</xsl:if>
<xsl:template name="format-date">
<xsl:variable name="d"><xsl:value-of select="../docdate" /></xsl:variable>
<xsl:call-template name="long_date"><xsl:with-param name="date" select="$d" /></xsl:call-template>
</xsl:template>
<xsl:template name="long_date">
<xsl:param name="date" />
<xsl:variable name="day" select="substring($date, 7, 2)" />
<xsl:choose>
<xsl:when test="$day=00"></xsl:when>
<xsl:when test="$day<32"><xsl:value-of select="substring($date, 7, 2)" /> </xsl:when>
<xsl:otherwise>INVALID DAY </xsl:otherwise>
</xsl:choose>
<xsl:variable name="month" select="substring($date, 5, 2)" />
<xsl:choose>
<xsl:when test="$month=01">January</xsl:when>
<xsl:when test="$month=02">February</xsl:when>
<xsl:when test="$month=03">March</xsl:when>
<xsl:when test="$month=04">April</xsl:when>
<xsl:when test="$month=05">May</xsl:when>
<xsl:when test="$month=06">June</xsl:when>
<xsl:when test="$month=07">July</xsl:when>
<xsl:when test="$month=08">August</xsl:when>
<xsl:when test="$month=09">September</xsl:when>
<xsl:when test="$month=10">October</xsl:when>
<xsl:when test="$month=11">November</xsl:when>
<xsl:when test="$month=12">December</xsl:when>
<xsl:otherwise>INVALID MONTH</xsl:otherwise>
</xsl:choose>
<xsl:value-of select="substring($date, 1, 4)" />
</xsl:template>
<xsl:template name="otrfmt">
<xsl:choose>
<xsl:when test="docformat='PDF'">
<xsl:element name="a">
<xsl:attribute name="href">http://www.adobe.com/products/acrobat/readstep2.html</xsl:attribute>
<xsl:element name="img">
<xsl:attribute name="src">images/pdf_ico.jpg</xsl:attribute>
<xsl:attribute name="title">Click here to download/install Adobe PDF Reader</xsl:attribute>
<xsl:attribute name="alt">Click here to download/install Adobe PDF Reader</xsl:attribute>
<xsl:attribute name="class">dwnldimg</xsl:attribute>
</xsl:element>
</xsl:element>
</xsl:when>
<xsl:when test="docformat='DOC'">
<xsl:element name="a">
<xsl:attribute name="href">http://www.microsoft.com/downloads/details.aspx?FamilyID=3657ce88-7cfa-457a-9aec-f4f827f20cac&DisplayLang=en</xsl:attribute>
<xsl:element name="img">
<xsl:attribute name="src">images/word_ico.jpg</xsl:attribute>
<xsl:attribute name="title">Click here to download/install MS Word Reader</xsl:attribute>
<xsl:attribute name="alt">Click here to download/install MS Word Reader</xsl:attribute>
<xsl:attribute name="class">dwnldimg</xsl:attribute>
</xsl:element>
</xsl:element>
</xsl:when>
<xsl:when test="docformat='XLS'">
<xsl:element name="a">
<xsl:attribute name="href">http://www.microsoft.com/downloads/details.aspx?FamilyID=1cd6acf9-ce06-4e1c-8dcf-f33f669dbc3a&DisplayLang=en</xsl:attribute>
<xsl:element name="img">
<xsl:attribute name="src">images/xls_ico.jpg</xsl:attribute>
<xsl:attribute name="title">Click here to download/install MS Excel Reader</xsl:attribute>
<xsl:attribute name="alt">Click here to download/install MS Excel Reader</xsl:attribute>
<xsl:attribute name="class">dwnldimg</xsl:attribute>
</xsl:element>
</xsl:element>
</xsl:when>
<xsl:when test="docformat='ZIP'">
<xsl:element name="a">
<xsl:attribute name="href">http://www.winzip.com/downwz.htm</xsl:attribute>
<xsl:element name="img">
<xsl:attribute name="src">images/zip_ico.jpg</xsl:attribute>
<xsl:attribute name="title">Click here to download/install WinZip</xsl:attribute>
<xsl:attribute name="alt">Click here to download/install WinZip</xsl:attribute>
<xsl:attribute name="class">dwnldimg</xsl:attribute>
</xsl:element>
</xsl:element>
</xsl:when>
<xsl:when test="docformat='PPT'">
<xsl:element name="a">
<xsl:attribute name="href">http://www.microsoft.com/downloads/details.aspx?FamilyID=048dc840-14e1-467d-8dca-19d2a8fd7485&DisplayLang=en</xsl:attribute>
<xsl:element name="img">
<xsl:attribute name="src">images/ppt_ico.jpg</xsl:attribute>
<xsl:attribute name="title">Click here to install MS Powerpoint Reader</xsl:attribute>
<xsl:attribute name="alt">Click here to install MS Powerpoint Reader</xsl:attribute>
<xsl:attribute name="class">dwnldimg</xsl:attribute>
</xsl:element>
</xsl:element>
</xsl:when>
<xsl:when test="docformat='JPG'">
<xsl:element name="img">
<xsl:attribute name="src">images/jpg_ico.jpg</xsl:attribute>
<xsl:attribute name="alt"></xsl:attribute>
<xsl:attribute name="class">dwnldimg</xsl:attribute>
</xsl:element>
</xsl:when>
<xsl:when test="docformat='MPG'">
<xsl:element name="img">
<xsl:attribute name="src">images/mpg_ico.jpg</xsl:attribute>
<xsl:attribute name="title">This is a MPEG/MPG multimedia file</xsl:attribute>
<xsl:attribute name="alt">This is a MPEG/MPG multimedia file</xsl:attribute>
<xsl:attribute name="class">dwnldimg</xsl:attribute>
</xsl:element>
</xsl:when>
<xsl:when test="docformat='WMV'">
<xsl:element name="img">
<xsl:attribute name="src">images/wmv_ico.jpg</xsl:attribute>
<xsl:attribute name="title">This is a WMV multimedia file</xsl:attribute>
<xsl:attribute name="alt">This is a WMV multimedia file</xsl:attribute>
<xsl:attribute name="class">dwnldimg</xsl:attribute>
</xsl:element>
</xsl:when>
<xsl:when test="docformat='TXT'">
<xsl:element name="img">
<xsl:attribute name="src">images/txt2_ico.jpg</xsl:attribute>
<xsl:attribute name="title">This is a Plain Text Format file</xsl:attribute>
<xsl:attribute name="alt">This is a Plain Text Format file</xsl:attribute>
<xsl:attribute name="class">dwnldimg</xsl:attribute>
</xsl:element>
</xsl:when>
<xsl:when test="docformat='RTF'">
<xsl:element name="img">
<xsl:attribute name="src">images/txt_ico.jpg</xsl:attribute>
<xsl:attribute name="title">This is a Rich Text Format file</xsl:attribute>
<xsl:attribute name="alt">This is a Rich Text Format file</xsl:attribute>
<xsl:attribute name="class">dwnldimg</xsl:attribute>
</xsl:element>
</xsl:when>
<xsl:when test="docformat='MDB'">
<xsl:element name="img">
<xsl:attribute name="src">images/mdb_ico.jpg</xsl:attribute>
<xsl:attribute name="title">This is a MS Access Database</xsl:attribute>
<xsl:attribute name="alt">This is a MS Access Database</xsl:attribute>
<xsl:attribute name="class">dwnldimg</xsl:attribute>
</xsl:element>
</xsl:when>
<xsl:otherwise>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
|
|

May 11th, 2009, 05:00 PM
|
 |
Wrox Author
|
|
Join Date: Apr 2004
Posts: 4,962
Thanks: 0
Thanked 292 Times in 287 Posts
|
|
Your code is hideously verbose. Why do you write this:
Code:
<xsl:element name="a">
<xsl:attribute name="style">font-weight: bold</xsl:attribute>
<xsl:attribute name="href">javascript:toggleDiv('<xsl:value-of select="$myid" />')</xsl:attribute>
<xsl:element name="h4">
<xsl:call-template name="format-date" />
</xsl:element>
</xsl:element>
when you could write:
Code:
<a style="font-weight: bold"
href="javascript:toggleDiv('{$myid}')">
<h4>
<xsl:call-template name="format-date" />
</h4>
</a>
I'm sorry, but there's just too much stuff in here for me to wade through. Try to simplify the problem - we're all busy people.
__________________
Michael Kay
http://www.saxonica.com/
Author, XSLT 2.0 and XPath 2.0 Programmer\'s Reference
|
|

May 13th, 2009, 10:52 AM
|
|
Authorized User
|
|
Join Date: Oct 2008
Posts: 26
Thanks: 2
Thanked 0 Times in 0 Posts
|
|
To answer your question about the code. The books that I originally had access to mostly said to write things this way. Mind you, they probably came from the paleozoic era, but it's what I had to work with. There's more, but it is pointless to explain.
The problem again: two committees, same date. Right now, everything for items with the same date display on the RTAC page (including the RTCC stuff), and nothing displays on the RTCC page. I think I know what's wrong, I just can't figure out how to fix it. I've tried working in the 'program[@id=$project]' In various places around the 'for-each statement that governs the plucking out of the appropriate items, but with no joy.
Here's the slimmer version of the XSL...once again client-side transformation (no PHP on our host)
Code:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xdt="http://www.w3.org/2005/02/xpath-datatypes">
<xsl:key name="sortdate" match="item" use="docdate"/>
<xsl:param name="project"></xsl:param>
<xsl:template match="/" name="main">
<xsl:if test="//downloads/item[@category='meeting' or @category='agenda' or @category='summary']/program[@id=$project]">
<h3 class="sidebar">Meeting Information</h3>
<p style="margin: -8px 0 0 0; font-size: .8em; font-style: italic; color: #887">
(click on date to view documents)
</p>
<xsl:for-each select="//downloads/item[@category='meeting' or @category='agenda' or @category='summary']/program[@id=$project][generate-id(..)=generate-id(key('sortdate', ../docdate)[1])]">
<xsl:sort select="../docdate" order="descending" data-type="number"/>
<xsl:variable name="myid" select="../docdate"/>
<a style="font-weight: bold" href="javascript:toggleDiv('{$myid}')">
<h4><xsl:call-template name="format-date"/></h4>
</a>
<div style="display:none; margin-bottom: 10px" id="{$myid}">
<table>
<xsl:for-each select="key('sortdate', ../docdate)">
<xsl:if test="position() mod 2 = 1">
<tr style="background-color: #fff; border: 0">
<td style="padding: 3px">
<a>
<xsl:attribute name="href"><xsl:value-of select="xref"/></xsl:attribute>
<xsl:value-of select="title"/>
</a>
<xsl:if test="docsize/mb != ''">
<small>
<xsl:value-of select="docsize/mb"/>.<xsl:value-of select="docsize/kb"/>Mb
</small>
</xsl:if>
<xsl:call-template name="otrfmt"/>
<xsl:if test="comment != ''">
<br/>
<small>
<xsl:value-of select="comment"/>
</small>
</xsl:if>
</td>
</tr>
</xsl:if>
<xsl:if test="position() mod 2 = 0">
<tr style="background-color: #ede5df; border: 0">
<td style="padding: 3px">
<a>
<xsl:attribute name="href"><xsl:value-of select="xref"/></xsl:attribute>
<xsl:value-of select="title"/>
</a>
<xsl:if test="docsize/mb != ''">
<small>
<xsl:value-of select="docsize/mb"/>.<xsl:value-of select="docsize/kb"/>Mb
</small>
</xsl:if>
<xsl:call-template name="otrfmt"/>
<xsl:if test="comment != ''">
<br/>
<small>
<xsl:value-of select="comment"/>
</small>
</xsl:if>
</td>
</tr>
</xsl:if>
</xsl:for-each>
</table>
</div>
</xsl:for-each>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
(There are subroutines for date format and population of the individual items that I posted in the previous XSL. The subroutines work everywhere else on the site. If you want me to repost them, I will. Ditto for the XML. )
|
|

May 13th, 2009, 11:26 AM
|
 |
Wrox Author
|
|
Join Date: Apr 2004
Posts: 4,962
Thanks: 0
Thanked 292 Times in 287 Posts
|
|
Your code is certainly a lot clearer now. My only problem is that I don't understand what you are trying to achieve. You talk of "the RTAC page" and "the RTCC" page, but I don't know what these "pages" are, and I can't see anything in your code that appears to put projects in different "pages" based on their ID value.
I wonder if there's a problem with the way you are passing the project ID parameter from the Javascript?
__________________
Michael Kay
http://www.saxonica.com/
Author, XSLT 2.0 and XPath 2.0 Programmer\'s Reference
|
|

May 13th, 2009, 05:41 PM
|
|
Authorized User
|
|
Join Date: Oct 2008
Posts: 26
Thanks: 2
Thanked 0 Times in 0 Posts
|
|
Yes, I'm passing 'rtcc' and 'rtac' as arguments from the javascript call to the javascript, and as parameters from the javascript to the XSL(program[@id=$project]) to select the correct information out of the XML. It's a straight pass through from argument to parameter to XSL param.
Code:
function transformXML(xmlDocURL, xslDocURL, divID, proj1)
var proj = proj1;
AND
docProcessor.addParameter("project", proj, "");
It has worked fine for all other pages. Just this the instances where there are events in two separate projects on simultaneous dates. What is even more confusing to me is that one project page has nothing on it from those dates and the other page has all the info from both projects. I'd expect that both projects' info might display on both pages, but not the exclusivity, since it's an on-the-fly call. If it were a parameter info passing problem, I'd expect it not to work ever. It looks like it's selecting everything that has that date and printing it to one page and not the other and not filtering projects at all.
I'll look deeper at the javascript. It sucks I can't use PHP. It would be less like doing retina surgery via the rectum.
|
|

May 13th, 2009, 05:45 PM
|
|
Authorized User
|
|
Join Date: Oct 2008
Posts: 26
Thanks: 2
Thanked 0 Times in 0 Posts
|
|
Oh, and FWIW, if I change the date by one day everything separates back out like it should on to the appropriate pages.
|
|

May 13th, 2009, 06:14 PM
|
 |
Wrox Author
|
|
Join Date: Apr 2004
Posts: 4,962
Thanks: 0
Thanked 292 Times in 287 Posts
|
|
It's starting to become clearer what you are doing.
When I run this with $program='rtac' I get no output at all. That's because this expression selects nothing:
Code:
<xsl:for-each select="//downloads/item[@category='meeting' or @category='agenda' or @category='summary']/program[@id=$project][generate-id(..)=generate-id(key('sortdate', ../docdate)[1])]">
To understand it, it's easiest first to simplify it to the equivalent
Code:
<xsl:for-each select="/downloads/item[@category='meeting' or @category='agenda' or @category='summary'][generate-id(.)=generate-id(key('sortdate', .docdate)[1])]/program[@id=$project]">
What this does is to select every item of an appropriate category that is the first item on its chosen date, and then to select its program child provided it has id='rtac'. Well the first item on the chosen date does not have program id 'rtac', so nothing is selected.
The easy answer would be to change the key definition to
<xsl:key name="sortdate" match="item[program/@id=$program]" use="docdate"/>
but I don't remember offhand whether XSLT 1.0 allows that. The alternative is to do the selection here:
Code:
<xsl:for-each select="/downloads/item[@category='meeting' or @category='agenda' or @category='summary'][generate-id(.)=generate-id(key('sortdate', .docdate)[program/@id=$project][1])]/program[@id=$project]">
That appears to produce something useful.
__________________
Michael Kay
http://www.saxonica.com/
Author, XSLT 2.0 and XPath 2.0 Programmer\'s Reference
|
|
The Following User Says Thank You to mhkay For This Useful Post:
|
|
|

May 13th, 2009, 06:20 PM
|
|
Authorized User
|
|
Join Date: Oct 2008
Posts: 26
Thanks: 2
Thanked 0 Times in 0 Posts
|
|
Thanks so much. That really helps. I had tried simply putting program[@id=$project], but this makes sense.
|
|

May 13th, 2009, 06:23 PM
|
 |
Wrox Author
|
|
Join Date: Apr 2004
Posts: 4,962
Thanks: 0
Thanked 292 Times in 287 Posts
|
|
The final [@id=$project] in that code is of course redundant, the project is already known to have this id.
__________________
Michael Kay
http://www.saxonica.com/
Author, XSLT 2.0 and XPath 2.0 Programmer\'s Reference
|
|

May 14th, 2009, 04:00 PM
|
|
Authorized User
|
|
Join Date: Oct 2008
Posts: 26
Thanks: 2
Thanked 0 Times in 0 Posts
|
|
In my haste, I spoke too soon. For some reason, it's not working. Changing the key definition does nothing and the 1.0 workaround produces an "invalid XPath expression" error in Altova. I tried making a few adjustments to the code you gave, but everything I did, didn't work. Either nothing happened, or I got various 'invalid expression' responses.
|
|
 |