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: Applying Templates to document loaded with document() function


Hi Kunal,

> I wish to try to match a template in my stylesheet to the nodes
> selected from the 'document("Author.xml")'.

When you match nodes, you can't specifically say that they come from
one document or another document. However, there are two ways that you
could approach this problem.

First, when you apply templates to the Author elements from
Author.xml, you could apply templates in a mode that you only use when
applying templates to Author elements from that document. For example:

<xsl:variable name="authors" select="document('Author.xml')" />
<xsl:key name="authors" match="Author" use="@ID" />

<!-- template for Author elements in source document -->
<xsl:template match="Author">
  <xsl:variable name="ID" select="@ID" />
  <xsl:for-each select="$authors">
    <xsl:apply-templates select="key('authors', $ID)"
                         mode="Author.xml" />
  </xsl:for-each>
</xsl:template>

<!-- template for Author elements in Author.xml -->
<xsl:template match="Author" mode="Author.xml">
  ...
</xsl:template>


Alternatively, you have a situation where the Author elements in
Author.xml have a different kind of structure to the Author elements
in the source document. So you could devise a match pattern that would
only match those Author elements from Author.xml since (for example)
only those Author elements have element children:

<!-- template for Author elements in Author.xml -->
<xsl:template match="Author[*]">
  ...
</xsl:template>


The first is the more general solution.

Cheers,

Jeni

---
Jeni Tennison
http://www.jenitennison.com/


 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]