Important:
This is retired content. This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This content may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.
A version of this page is also available for
4/8/2010

Provides a way to retrieve other XML resources from within the XSL Transformations (XSLT) style sheet beyond the initial data provided by the input stream.

Syntax

		
node-set document(
object, 
node-set?)

Parameters

object

String or node-set.

node-set

[optional] Causes the function to return a base URL for the node.

Return Value

The document() function is versatile. Its effects vary, depending on the type and number of arguments that are used as shown in the following list:

  • If only one argument is provided and that argument is a string, then document()treats the string as a URL and retrieves the document as a set of nodes.

  • If only one argument is provided and that argument is a node set, then each node in that node set is treated as a URL and the function returns the union of all of the documents referenced.

  • If there are two arguments, the first argument can be either a string or a node set while the second argument must be a node set. The second argument, when supplied, indicates the base URL to which the contents of the first argument are relative.

  • If an empty string is passed to the document()function, the result is the source XML of the XSLT document itself, unless the second argument is given and is not null. In the latter case, the URL of the document is the base URL of the node contained in the second element.

Example

For the given XML document:

Copy Code
<employeeRefs>
   <employeeDoc
href="http://www.example.microsoft.com/employees/employeeList.xml"/>
   <employeeDoc href="localEmployees1.xml"/>
   <employeeDoc href="localEmployees2.xml"/>
</employeeRefs>

The following style sheet generates a document containing the employee nodes in all of the referenced documents.

Copy Code
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="/">
	<employees>
		<xsl:apply-templates select="//employeeDoc"/>
	</employees>
</xsl:template>
<xsl:template match="employeeDoc">
	<xsl:copy-of select="document(@href)//employee"/>
</xsl:template>
</xsl:stylesheet>

See Also