Subject: RE: XSL : template for attribute From: Kay Michael <Michael.Kay@xxxxxxx> Date: Thu, 29 Apr 1999 10:52:41 +0100 |
> > 2. If I tried to write template for this attribute , > it doesn't work correctly - it each time goes to the " > otherwise" case . > What wrong here ? > > > <xsl:template match="@colr"> > <xsl:attribute name="STYLE">color: > <xsl:choose> > <xsl:when test="@colr[.='2']">white</xsl:when > > <xsl:when test="@colr[.='0']">green</xsl:when > > <xsl:otherwise >black</xsl:otherwise > > </xsl:choose> > </xsl:attribute> > </xsl:template> > There's a lot of differences as to the exact form of the condition in <xsl:when>. In the Dec 1998 standard it's a select-pattern (returning true if any nodes are selected), but other options are suggested in editorial notes. In Apr 99 it's a boolean-expression. In SAXON 4.2 it's a match pattern (true if the current node matches). Your test fails as a select-expression because it's asking to find an @colr attribute of the @colr attribute, and attributes don't have attributes. It would work in SAXON, I think. In the April 99 spec you should write: test=".='2'" (Incidentally, I can't see an easy way in the April 99 spec to test in a boolean expression whether the current node matches a match-pattern. I would have thought it would be useful to allow something like: <xsl:if test="matches(CHAPTER[TITLE]//PARA)"> to test whether the node is a PARA with a CHAPTER ancestor that has a TITLE child. In SAXON I made the test a match pattern because a match pattern can refer to a select pattern but not the other way round.); Mike Kay XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: XSL : template for attribute, David Schach | Thread | Re: XSL : template for attribute, James Clark |
text() Pattern, Mark Owens | Date | RE: How do you this XML document to, Francois_Deza |
Month |