[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: Implementing a (fairly) complex business rule
Ah! Misplaced parenthesis. I have it right everywhere else. However I need to address the other problems you raise ... First, there's the context. Here is a fragment that should give you enough (if not please say): ... <xsl:for-each select="s0:EntryProfile"> <EntryProfile> <DOMICILE> <xsl:attribute name="codeListAgencyName"> <xsl:text>HESA</xsl:text> </xsl:attribute> <xsl:attribute name="codeListName"> <xsl:text>DOMICILE</xsl:text> </xsl:attribute> <xsl:attribute name="languageID"> <xsl:text>en</xsl:text> </xsl:attribute> <xsl:value-of select="s0:DOMICILE/text()"/> </DOMICILE> <!-- NULL is valid for a postcode --> <xsl:if test="/s0:HesaSqlExplicit_Response/s0:Institution/s0:Student/s0:Instance /s0:REDUCEDI = '00'"> <xsl:if test="s0:DOMICILE='XF' or s0:DOMICILE='XG' or s0:DOMICILE='XH' or s0:DOMICILE='XI' or s0:DOMICILE='XK' or s0:DOMICILE='XL' or s0:DOMICILE='GG' or s0:DOMICILE='JE' or s0:DOMICILE='IM'"> <POSTCODE> <xsl:if test="string-length(s0:POSTCODE/text()) = 0"> <xsl:attribute name="ReasonForNull"> <xsl:text>1</xsl:text> </xsl:attribute> </xsl:if> <xsl:if test="string-length(s0:POSTCODE/text()) > 0"> <xsl:value-of select="s0:POSTCODE/text()"/> </xsl:if> </POSTCODE> </xsl:if> </xsl:if> ... The input file is highly data-oriented (it comes from a set of database tables). Am I right in thinking, from what you say, that I need to test for non-empty node by doing: <xsl:if test="s0:POSTCODE/text()"> <xsl:value-of select="s0:POSTCODE/text()"/> </xsl:if> Presumably the test for an empty node in the other xsl:if statement should be: <xsl:if test="not(s0:POSTCODE/text())"> ... I'm guessing the logical not from the fact that 'and' and 'or' are used. I can check that for myself if you're getting exasperated with my ignorance :( I do apologise for my obvious lack of sophistication in matters xslt. I've rather had this dumped on me, having not looked at xslt for over three years and even then at a very basic level. I am enjoying it, though. Many thanks Peter -----Original Message----- From: David Carlisle [mailto:davidc@xxxxxxxxx] Sent: 30 September 2008 14:35 To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: Re: Implementing a (fairly) complex business rule > I just cannot see how this can happen. test="string-length(s0:POSTCODE/text() = 0)" is always true as it is taking the value returned by string-length as a boolean, which is true if it is non zero the string being passed to string-length is either "true" or "false" depending on whether s0:POSTCODE/text() = 0 is true or not, which is true just if one of the text node children of s0:POSTCODE is "0". but neither "true" nor "false" have zero length, so the test is always true. David ________________________________________________________________________ The Numerical Algorithms Group Ltd is a company registered in England and Wales with company number 1249803. The registered office is: Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom. This e-mail has been scanned for all viruses by Star. The service is powered by MessageLabs. ________________________________________________________________________
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|