Difference between revisions of "API:EPrints/Plugin/Export/XSLT"

From EPrints Documentation
Jump to: navigation, search
(Created page with '<!-- Pod2Wiki=_preamble_ This page has been automatically generated from the EPrints 3.2 source. Any wiki changes made between the 'Pod2Wiki=*' and 'Edit below this comment' com…')
 
Line 28: Line 28:
 
     ept:advertise="1"
 
     ept:advertise="1"
 
     ept:accept="list/eprint dataobj/eprint"
 
     ept:accept="list/eprint dataobj/eprint"
     ept:mime_type="text/xml; charset=UTF-8"
+
     ept:mime_type="application/xml; charset=utf-8"
 
     ept:qs="0.1"
 
     ept:qs="0.1"
 
     xmlns:ept="http://eprints.org/ep2/xslt/1.0"
 
     xmlns:ept="http://eprints.org/ep2/xslt/1.0"
Line 58: Line 58:
 
<!-- Pod2Wiki=head_description -->
 
<!-- Pod2Wiki=head_description -->
 
==DESCRIPTION==
 
==DESCRIPTION==
The stylesheet will be called with a document containing this:
+
This export plugin allows you to use XSL Transforms to export data from EPrints. The plugin is fed EPrints XML and can output any resulting data supported by XSLT.
  
  &lt;?xml version='1.0'?&gt;
+
This is the inverse process of [[API:EPrints/Plugin/Import/XSLT|EPrints::Plugin::Import::XSLT]].
  &lt;template xmlns="http://eprints.org/ep2/xslt/1.0" /&gt;
+
 
 
+
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
If the resulting document contains the value of the $result parameter it will be treated as a template for output. The value of $result will be replaced with the output from the following step.
+
<span style='display:none'>User Comments</span>
 +
<!-- Edit below this comment -->
  
The stylesheet is called once for every item with the full XML record:
 
  
   &lt;?xml version='1.0'?&gt;
+
<!-- Pod2Wiki= -->
  &lt;eprints xmlns="http://eprints.org/ep2/data/2.0"&gt;
+
</div>
  &lt;eprint&gt;
+
<!-- Pod2Wiki=head_headers_and_footers -->
  &lt;title&gt;The eprint title&lt;/title&gt;
+
===Headers and Footers===
  ...
+
You can specify a template to use for your output:
  &lt;/eprint&gt;
+
 
   &lt;/eprints&gt;
+
   &lt;xsl:template match="ept:template"&gt;
 +
    &lt;html&gt;
 +
      &lt;body&gt;
 +
        &lt;xsl:value-of select="$results"/&gt;
 +
      &lt;/body&gt;
 +
    &lt;/html&gt;
 +
   &lt;/xsl:template&gt;
 
    
 
    
Each result document is appended to $result.
+
Note: you can output unbalanced XML by using disable-output-escaping:
 
 
If your export format does not require any header or footer wrapping you do not need to implement ept:template - $result will be output as-is.
 
  
 +
  &lt;xsl:template match="ept:template"&gt;
 +
    &lt;xsl:text disable-output-escaping="yes"&gt;
 +
      &amp;lt;html&amp;gt;
 +
        &amp;lt;body&amp;gt;
 +
    &lt;/xsl:text&gt;
 +
    &lt;xsl:value-of select="$results"/&gt;
 +
  &lt;/xsl:template&gt;
 +
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<span style='display:none'>User Comments</span>
Line 113: Line 125:
  
 
   prefix
 
   prefix
     Value is printed before any content.
+
     Value is printed before any content (defaults to XML decl.)
 
   postfix
 
   postfix
 
     Value is printed after any content.
 
     Value is printed after any content.
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=head_template_parameters -->
 
==TEMPLATE PARAMETERS==
 
The following parameters are passed to the transform for the template:
 
 
  results
 
    Key-value to be replaced by item results.
 
 
    
 
    
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>

Revision as of 10:47, 25 August 2011

EPrints 3 Reference: Directory Structure - Metadata Fields - Repository Configuration - XML Config Files - XML Export Format - EPrints data structure - Core API - Data Objects


API: Core API

Latest Source Code (3.4, 3.3) | Revision Log | Before editing this page please read Pod2Wiki


NAME

EPrints::Plugin::Export::XSLT - XSLT-based exports

User Comments


SYNOPSIS

Create a file in Plugins/Export/XSLT/ called 'Title.xsl' containing:

 <?xml version="1.0"?> 
 
 <xsl:stylesheet
   version="1.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   ept:name="Titles"
   ept:visible="all"
   ept:advertise="1"
   ept:accept="list/eprint dataobj/eprint"
   ept:mime_type="application/xml; charset=utf-8"
   ept:qs="0.1"
   xmlns:ept="http://eprints.org/ep2/xslt/1.0"
   xmlns:ep="http://eprints.org/ep2/data/2.0"
   exclude-result-prefixes="ept ep"
 >
 
 <xsl:param name="results" />
 
 <xsl:template match="text()" />
 
 <xsl:template match="/ept:template">
 <titles><xsl:value-of select="$results"/></titles>
 </xsl:template>
 
 <xsl:template match="/ep:eprints/ep:eprint">
   <title><xsl:value-of select="ep:title"/></title>
 </xsl:template>
 
 </xsl:stylesheet>
 

User Comments


DESCRIPTION

This export plugin allows you to use XSL Transforms to export data from EPrints. The plugin is fed EPrints XML and can output any resulting data supported by XSLT.

This is the inverse process of EPrints::Plugin::Import::XSLT.

User Comments


Headers and Footers

You can specify a template to use for your output:

 <xsl:template match="ept:template">
   <html>
     <body>
       <xsl:value-of select="$results"/>
     </body>
   </html>
 </xsl:template>
 

Note: you can output unbalanced XML by using disable-output-escaping:

 <xsl:template match="ept:template">
   <xsl:text disable-output-escaping="yes">
     &lt;html&gt;
       &lt;body&gt;
   </xsl:text>
   <xsl:value-of select="$results"/>
 </xsl:template>
 

User Comments


Controlling XML Declarations

If your stylesheet outputs XML (the default):

 <xsl:output method="xml"/>
 

The XML declaration will only be outputted once at the start of the export, regardless of how many records there are.

To output as XML and suppress the XML declaration entirely define an empty prefix:

 <xsl:stylesheet
   xmlns:ept="http://eprints.org/ep2/xslt/1.0"
   ept:prefix=""
 >
 

User Comments


PLUGIN OPTIONS

All attributes on <xsl:stylesheet> that are in the EPT namespace are treated as plugin parameters. In addition to those parameters used by all EPrints::Plugin::Export plugins XSLT uses:

 prefix
   Value is printed before any content (defaults to XML decl.)
 postfix
   Value is printed after any content.
 

User Comments


STYLESHEET PARAMETERS

The following parameters are passed to the transform for each item:

 total
   Total items in result set.
 position
   1-indexed position in result set.
 dataset
   Base id of the item's dataset (e.g. "eprint").
 

User Comments


EXTENDED FUNCTIONS

The standard EPrints global extended XPath functions are supported, see EPrints::XSLT.

User Comments


SEE ALSO

EPrints::Plugin::Export

User Comments


COPYRIGHT

User Comments