[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
Multiple ifs (Was: RE: Simplified production for FilterExpr in XPath spec?)
Subject: Multiple ifs (Was: RE: Simplified production for FilterExpr in XPath spec?) From: Jeni Tennison <Jeni.Tennison@xxxxxxxxxxxxxxxx> Date: Tue, 18 Jul 2000 11:25:42 +0100 |
Jukka, >But that "sem[@role='user']" doesnt work, am I away from right answer ?? There are two problems with your XSLT template. The first lies in the XPaths that you're using. Your xsl:ifs appear within a template that matches a 'sem' element. Within the template, the 'sem' element is the current node. The XPaths in the xsl:if tests are of the form sem[@role='user'], which looks for a 'sem' element child of the current node with a 'role' attribute with a value of 'user'. You're actually interested in the @role attribute of the current node, the 'sem' element, rather than any 'sem' child, so you should try using the XPath "@role='user'" and "@role='error'" instead. The second lies in the use of multiple xsl:if elements within the xsl:attribute. Whenever an xsl:if tests true, then the contents of that xsl:if is processed. This means that, given <sem role="error" />, the XSLT processor evaluates: - @role='user' = false - @role='error' = true - @role = true As both @role='error' and @role are true, you get an output of: <sem type="parameterdoesnt work" /> which isn't what you wanted. Instead, use the xsl:choose element with xsl:when: <xsl:template match="sem"> <sem> <xsl:attribute name="type"> <xsl:choose> <xsl:when test="@role='user'">state</xsl:when> <xsl:when test="@role='error'">parameter</xsl:when> <xsl:when test="@role">doesnt work</xsl:when> </xsl:choose> </xsl:attribute> <xsl:apply-templates/> </sem> </xsl:template> or, possibly: <xsl:template match="sem"> <sem> <xsl:attribute name="type"> <xsl:choose> <xsl:when test="@role='user'">state</xsl:when> <xsl:when test="@role='error'">parameter</xsl:when> <xsl:otherwise>doesnt work</xsl:otherwise> </xsl:choose> </xsl:attribute> <xsl:apply-templates/> </sem> </xsl:template> This is tested and works with SAXON. I hope that helps, Jeni Dr Jeni Tennison Epistemics Ltd, Strelley Hall, Nottingham, NG8 6PE Telephone 0115 9061301 ? Fax 0115 9061304 ? Email jeni.tennison@xxxxxxxxxxxxxxxx XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: Simplified production for Filte, Jukka . T . Lehtinen | Thread | RE: problem generating dynamic name, Kay Michael |
Re: problem generating dynamic name, David Carlisle | Date | Re: Preloading Images, Dan Morrison |
Month |