Subject: Re: [xsl] processing different nodes From: Jeni Tennison <mail@xxxxxxxxxxxxxxxx> Date: Thu, 29 Mar 2001 14:06:55 +0100 |
Hi Sony, > I had posted a similar question before. I am afraid the XML I had > did not reflect the complexity and was wrong. Am I right that the only real difference is that the 'def' attribute points to a pardef element, and it's whether the pardef element has a list attribute that indicates whether it should be a bulleted list or not? The first thing to do is to set up a key so that you can quickly get from a 'def' attribute value to the relevant pardef element: <xsl:key name="pardef-by-id" match="pardef" use="id" /> With that key in place, you can get the pardef element associated with a particular id with: key('pardef-by-id', $def) >From there, you can find out whether it's supposed to be a list with: key('pardef-by-id', $def)/@list = 'bullet' As I discussed last time, given a particular par element, you can find the relevant definition by looking at its own 'def' attribute or, if it doesn't have one, the nearest preceding sibling par element that has a 'def' attribute. You can get this 'def' attribute with: @def | preceding-sibling::par[@def][1]/@def[not(current()/@def)] or: (@def | preceding-sibling::par[@def][1]/@def)[last()] this gets the last 'def' attribute in document order. So within a template that matches a par element, you can assign that 'def' attribute to a variable, and then use it to get the relevant pardef element, check whether it's supposed to be a list, and give a * if it is: <xsl:template match="par"> <xsl:variable name="def" select="(@def | preceding-sibling::par[@def][1]/@def)[last()]" /> <xsl:variable name="bullet" select="key('pardef-by-id', $def)/@list = 'bullet'" /> <xsl:if test="$bullet">*</xsl:if> <xsl:apply-templates /> </xsl:template> Or you can still walk through the list one par element at a time, as I described in the last email. Again, use the key to find the relevant pardef to work out what to do. I hope that helps, Jeni --- Jeni Tennison http://www.jenitennison.com/ XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] processing different node, Michael Kay | Thread | RE: [xsl] Parameter in "xsl:include, Joshua . Kuswadi |
Re: [xsl] indenting text with <dl> , Jeni Tennison | Date | Re: [xsl] Passing XML in parameter , Cristobal Galiano Fe |
Month |