|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Intra-document transclusion in IE5
Thanks, the id() thing did the trick, with some minor adjustments. For the sake
of posterity, here is the final stylesheet I used in IE5.
<xsl:template xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<html>
<title>Tales from the bar side</title>
<body>
<xsl:apply-templates select="drink.doc/*"/>
</body>
</html>
<xsl:define-template-set>
<xsl:template match = "drink.doc">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match = "beverage">
<xsl:value-of/>
</xsl:template>
<xsl:template match = "drink.body">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match = "bar.quote">
<p>
<xsl:apply-templates select="node()">
<xsl:template match="textnode()"><xsl:value-of/></xsl:template>
</xsl:apply-templates>
</p>
</xsl:template>
<xsl:template match = "drink.link">
<xsl:apply-templates select="id(@bev.ref)" />
</xsl:template>
</xsl:define-template-set>
</xsl:template>
Rick Geimer
National Semiconductor
rick.geimer@xxxxxxx
"Blanchette, Larry" wrote:
> I came up with this. Use the id() method to select matching elements.
> There seems to sketchy support for id in current xsl implementations. XSL:P
> does handle it fine, i don't know about ie5. May someone can comment on the
> lack of mention of atrribute to attribute compares in the WD (see commented
> out code in my example.
>
> <?xml version="1.0"?>
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
>
> <xsl:id element="beverage" attribute="bev.id"/>
>
> <xsl:template match = "drink.doc">
> <html>
> <title>Tales from the bar side</title>
> <body>
> <xsl:apply-templates select="drink.body"/>
> </body>
> </html>
> </xsl:template>
>
> <xsl:template match = "bar.quote">
> <p>
> <xsl:apply-templates/>
> </p>
> </xsl:template>
>
> <xsl:template match = "drink.link">
>
> <xsl:text> </xsl:text>
> <xsl:apply-templates select="id(@bev.ref)" />
>
> <!-- I don't know why the spec ommited this contruct. This might be useful
> if the id
> isn't unique and there are multiple matches (like drinks with
> whiskey). This syntax
> is probably off but you get the idea.
>
> <xsl:apply-templates select="[@bev.refs =
> /drink.doc/beverage.list/beverage@xxxxxx]" />
> -->
>
> <xsl:text> </xsl:text>
>
> </xsl:template>
>
> </xsl:stylesheet>
>
> -----Original Message-----
> From: Rick Geimer [mailto:rick.geimer@xxxxxxx]
> Sent: Sunday, March 14, 1999 9:15 AM
> To: XSL-List@xxxxxxxxxxxxxxxx
> Subject: Intra-document transclusion in IE5
>
> Hello all,
>
> This is my first posting to this list. I've been using XSL for about two
> weeks now,
> and have run into a stumbling block with IE5's implementation. I'm
> trying to perform
> a "transclusion" (also called source and reflection for those who speak
> Pinnacles),
> where I take the contents of one element and and display it in the
> location of another
> element that references it. I've thought of several ways to do this with
> the full XSL
> spec, but IE5 barfs on all my ideas. Basically, I would like to take
> something like
> the following instance:
>
> <?xml version="1.0"?>
> <?xml-stylesheet href="drinkdoc.xsl" type="text/xsl"?>
> <!DOCTYPE drink.doc [
> <!ELEMENT drink.doc ( beverage.list, drink.body )>
> <!ELEMENT beverage.list ( beverage+ ) >
> <!ELEMENT beverage ( #PCDATA ) >
> <!ATTLIST beverage bev.id ID #REQUIRED>
> <!ELEMENT drink.body ( bar.quote+ ) >
> <!ELEMENT bar.quote ( #PCDATA | drink.link )* >
> <!ELEMENT drink.link EMPTY >
> <!ATTLIST drink.link bev.ref IDREF #REQUIRED>
> ]>
> <drink.doc>
> <beverage.list>
> <beverage bev.id="drink1">beer</beverage>
> </beverage.list>
> <drink.body>
> <bar.quote>I could really use a <drink.link bev.ref="drink1"/> right
> now.</bar.quote>
> </drink.body>
> </drink.doc>
>
> And transform it into the following HTML for display:
>
> <html>
> <title>Tales from the bar side</title>
> <body>
> <p>I could really use a beer right now</p>
> </body>
> </html>
>
> Here is my straw-man XSL template as it stands:
>
> <xsl:template xmlns:xsl="http://www.w3.org/TR/WD-xsl"
> xmlns:qxsl="quote:http://www.w3.org/TR/WD-xsl">
> <html>
> <title>Tales from the bar side</title>
> <body>
> <xsl:apply-templates select="drink.doc/*"/>
> </body>
> </html>
> <xsl:define-template-set>
> <xsl:template match = "drink.doc">
> <xsl:apply-templates/>
> </xsl:template>
> <xsl:template match = "drink.body">
> <xsl:apply-templates/>
> </xsl:template>
> <xsl:template match = "bar.quote">
> <p>
> <xsl:apply-templates select="node()">
> <xsl:template match="textnode()"><xsl:value-of/></xsl:template>
> </xsl:apply-templates>
> </p>
> </xsl:template>
> <xsl:template match = "drink.link">
> <!--
> What the heck do I put here to get the content of the
> beverage element whose bev.id attribute is equal to the current
> drink.link's bev.ref attribute?
> -->
> </xsl:template>
> </xsl:define-template-set>
> </xsl:template>
>
> I need to find some way to refer to the contents of the beverage element
>
> whose bev.id attribute matches the bev.ref attribute of the drink.link
> element.
>
> Any ideas how to make this work in IE5?
>
> Sincerely,
>
> Rick Geimer
> National Semiconductor
> rick.geimer@xxxxxxx
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
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
|

Cart








