[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Possible to use attribute value in pattern ??
[Caleb Drake] > Suppose the source document has: > <book title="All About Foo" author="Dr. Quux"/> > and I want to place the title in one part of the result tree and the author > in another. To do so, I might have > <xsl:apply-templates select="book[@title]"/> > in one place, and > <xsl:apply-templates select="book[@author]"/> > in the other. The problem is that both apply-templates "calls" match the > same > source element so only one of them gets generated. In addition, the > template > rule triggered by these two apply-templates tags cannot distinguish which > apply-templates "call" triggered the rule, so it doesn't know which > attribute to style I'm not sure I have understood your problem correctly, but my interpretation is that your two apply-templates elements here are selecting (respectively) the book element which has a title attribute and the book element which has an author attribute - which in your case turn out to be the same element, and so the same (match="book"?) template is instantiated. But it sounds like what you want is to select _separately_ the author attribute of the book element and the title attribute of the book element (rather than the book element itself). This requires a different pair of patterns: <xsl:apply-templates select="book/@title"/> <xsl:apply-templates select="book/@author"/> I think this is the point David Carlisle was illustrating with his three examples yesterday. For example with this document <?xml version="1.0" ?> <list> <book title="Neuromancer" author="William Gibson">some content about Neuromancer</book> <book title="Snow Crash" author="Neal Stephenson">some content about Snow Crash</book> </list> the stylesheet <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/XSL/Transform/1.0" result-ns=""> <xsl:template match="list"> <xsl:apply-templates select="book[@title]"/> <xsl:apply-templates select="book[@author]"/> </xsl:template> <xsl:template match="@*"> <xsl:value-of select="."/> </xsl:template> </xsl:stylesheet> produces a rather different result from <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/XSL/Transform/1.0" result-ns=""> <xsl:template match="list"> <xsl:apply-templates select="book/@title"/> <xsl:apply-templates select="book/@author"/> </xsl:template> <xsl:template match="@*"> <xsl:value-of select="."/> </xsl:template> </xsl:stylesheet> Many apologies if I'm missing the point you are making! Pete Johnston University of Glasgow 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
|