This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: linkdiff template


Hello Guy,

I can't see an error in your code, maybe somebody else? Did you exactly use the code below? Line 12 is the key() - no error with parantheses, commas or apostrophes?

What it does:
<xsl:key/> creates one index for each input XML. With key() you can easily access these indexed elements, here your <a/>s.
With <xsl:for-each select="document($previous)"> you do not work through the whole tree, you only switch the context to the other file, because you want to have the indexed <a/>s from there and not from your current file. With "document($previous)" you only access the root node '/', so there is only one iteration. For multiple iterations you can write "document($previous)//a", but as you said it, it's completely useless when using keys.

Regards,

Joerg



Guy McArthur wrote:

I thought I understood, but I get an "unknown error in XPath" on line 12.
Here is the xsl I'm using: (also tried putting wrapping the key() method with a boolean() method.
--
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>

<xsl:param name="previous"/>

<xsl:key name="links" match="a" use="@href"/>

<xsl:output method="text"/>

<xsl:template match="a">
<xsl:variable name="href" select="@href"/>
<xsl:for-each select="document($previous)">
<xsl:if test="not(key('links', $href))">
<xsl:value-of select="$href"/>
</xsl:if>
</xsl:for-each>
</xsl:template>

</xsl:stylesheet>
--

Also, it would seem by looking at it, that it would walk through all the elements of document($previous) for every matching "a" element. Shouldn't building a key eleminate the need to walk through the tree each time?

Guy

XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]