Thanks Michael, that works great. I just needed a fresh pair of eyes to
see the obvious.
Mark Miller
-----Original Message-----
From: Michael Kay [mailto:mike(_at_)saxonica(_dot_)com]
Sent: Tuesday, November 24, 2009 1:49 PM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: RE: [xsl] getting stuck in context when using substring-before
as test
I suspect you should simply substitute "starts-with" for
"substring-before".
If X starts with Y, then substring-before(X,Y) is a zero-length string,
which equates to false, which seems to be exactly the opposite of what
you
intended.
Regards,
Michael Kay
http://www.saxonica.com/
http://twitter.com/michaelhkay
-----Original Message-----
From: Miller, Mark
[mailto:Mark(_dot_)Miller(_at_)us(_dot_)meadsintl(_dot_)com]
Sent: 24 November 2009 18:41
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] getting stuck in context when using
substring-before as test
I have the following simplified xml file that I am
transforming into an HTML table. In the table I have a cell
where I am placing three date values in an embedded table. I
am having trouble using the substring-before as a test to
find the specific element that matches and then getting that
elements data. This case is very simple, there will be many
Objects with 0 to 5 bObjRef elements, each of which will have
its own cell with 3 date values displayed.
Any guidance is greatly appreciated,
Start Simple.xml...........................
<ematrix>
<creationProperties>
<datetime>2009-11-24T07:12:50Z</datetime>
</creationProperties>
<Object>
<oname>Name001 (some text here)</oname>
<desc>description</desc>
<aList>
<attr>
<name>Due Customer</name>
<datetime>2009-08-10T00:00:00Z</datetime>
</attr>
<attr>
<name>Submitted Date</name>
<datetime>2009-08-10T00:00:00Z</datetime>
</attr>
<attr>
<name>POC</name>
<string>lastname</string>
</attr>
<attr>
<name>Submittal Revision</name>
<string>-</string>
</attr>
<attr>
<name>Comments</name>
<string>comments</string>
</attr>
</aList>
<fRelList>
<rel>
<rRefDef>Subordinate Submittal</rRefDef>
<rObj>
<bObjRef>
<oType>Submittal</oType>
<oName>BMC4I-DD-04-06k-2010-08</oName>
</bObjRef>
</rObj>
<attrList>
<attr>
<name>Due Customer</name>
<datetime>2010-08-08T00:00:00Z</datetime>
</attr>
<attr>
<name>Promised</name>
<datetime>2010-08-08T00:00:00Z</datetime>
</attr>
<attr>
<name>Submitted</name>
<datetime>2010-08-07T00:00:00Z</datetime>
</attr>
</attrList>
</rel>
<rel>
<rRefDef>Subordinate Submittal</rRefDef>
<rObj>
<bObjRef>
<oType>Submittal</oType>
<oName>CMR-DD-04-06k-2010-08</oName>
</bObjRef>
</rObj>
<attrList>
<attr>
<name>Due Customer</name>
<datetime>2009-08-10T00:00:00Z</datetime>
</attr>
<attr>
<name>Promised</name>
<datetime/>
</attr>
<attr>
<name>Submitted</name>
<datetime>2009-08-11T00:00:00Z</datetime>
</attr>
</attrList>
</rel>
<rel>
<rRefDef>Subordinate Submittal</rRefDef>
<rObj>
<bObjRef>
<oType>Submittal</oType>
<oName>DD-LR-IPT-GE-04-06k-2010-08</oName>
</bObjRef>
</rObj>
<attrList>
<attr>
<name>Due Customer</name>
<datetime>2010-08-09T00:00:00Z</datetime>
</attr>
<attr>
<name>Promised</name>
<datetime/>
</attr>
<attr>
<name>Submitted</name>
<datetime>2010-08-12T00:00:00Z</datetime>
</attr>
</attrList>
</rel>
</fRelList>
</Object>
</ematrix>
End simple.xml...............................
Start simple.xsl...............................
<?xml version=3D"1.0" encoding=3D"iso-8859-1"?> <!DOCTYPE
xsl:stylesheet [
<!ENTITY nbsp " ">
]>
<xsl:stylesheet version=3D"1.0"
xmlns:xsl=3D"http://www.w3.org/1999/XSL/Transform">
<xsl:output method=3D"html" encoding=3D"iso-8859-1"/>
<xsl:template match=3D"/">
=20
<html>
<head> </head>
<body> =20
<table border=3D"1">
<tr>
<th><div align=3D'center'>BMC4I</div></th>
</tr>
<tr>
<xsl:for-each select=3D"ematrix/Object">
<xsl:if
test=3D"substring-before(fRelList/rel/rObj/bObjRef/oName,'BMC4I-')">
<td>
<table border=3D"0">
<tr>
<td><xsl:value-of
select=3D"substring(aList/attr[name=3D'Due
Customer']/datetime,1,10)"/> </td>
</tr>
<tr>
<td><xsl:value-of
select=3D"substring(aList/attr[name=3D'Promised']/datetime,1,1
0)"/> 
;=
</t
d>
</tr>
<tr>
<td><xsl:value-of
select=3D"substring(aList/attr[name=3D'Submitted']/datetime,1,
10)"/>&nbs
p=
;</
td>
</tr>
</table>
</td>
</xsl:if>
</xsl:for-each>
</tr>
</table>
</body>
</html> =20
</xsl:template>
</xsl:stylesheet>
End simple.xsl............................
Start simple.htm..........................
<html>
<head>
<table border=3D"1">
<tr >
<th>
<div align=3D"center">BMC4I</div>
</th>
</tr>
<tr>
<td>
<table border=3D"0" >
<tr>
<td>2010-08-08</td>
</tr>
<tr>
<td>2010-08-08</td>
</tr>
<tr>
<td>2010-08-07</td>
</tr>
</table>
</td>
</tr>
</table>
<body>
End simple.htm....................................
Mark J. Miller
--~------------------------------------------------------------------
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>
--~--
--~------------------------------------------------------------------
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>
--~--