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

From EPrints Documentation
Jump to: navigation, search
Line 8: Line 8:
 
EPrints::Plugin::Export::XSLT - XSLT-based exports
 
EPrints::Plugin::Export::XSLT - XSLT-based exports
  
<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 -->
 
<!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
 
 
<!-- Pod2Wiki=head_synopsis -->
 
<!-- Pod2Wiki=head_synopsis -->
 
==SYNOPSIS==
 
==SYNOPSIS==
Create a file in <tt>Plugins/Export/XSLT/</tt> called 'Title.xsl' containing:
+
Create a file in <code>Plugins/Export/XSLT/</code> called 'Title.xsl' containing:
 +
 
 +
<source lang="perl"><?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></source>
  
  &lt;?xml version="1.0"?&gt;
 
 
 
  &lt;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"
 
  &gt;
 
 
 
  &lt;xsl:param name="results" /&gt;
 
 
 
  &lt;xsl:template match="text()" /&gt;
 
 
 
  &lt;xsl:template match="/ept:template"&gt;
 
  &lt;titles&gt;&lt;xsl:value-of select="$results"/&gt;&lt;/titles&gt;
 
  &lt;/xsl:template&gt;
 
 
 
  &lt;xsl:template match="/ep:eprints/ep:eprint"&gt;
 
    &lt;title&gt;&lt;xsl:value-of select="ep:title"/&gt;&lt;/title&gt;
 
  &lt;/xsl:template&gt;
 
 
 
  &lt;/xsl:stylesheet&gt;
 
 
 
<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 -->
 
<!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
 
 
<!-- Pod2Wiki=head_description -->
 
<!-- Pod2Wiki=head_description -->
 
==DESCRIPTION==
 
==DESCRIPTION==
Line 62: Line 56:
 
This is the inverse process of [[API:EPrints/Plugin/Import/XSLT|EPrints::Plugin::Import::XSLT]].
 
This is the inverse process of [[API:EPrints/Plugin/Import/XSLT|EPrints::Plugin::Import::XSLT]].
  
<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 -->
 
<!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
 
 
<!-- Pod2Wiki=head_headers_and_footers -->
 
<!-- Pod2Wiki=head_headers_and_footers -->
 
===Headers and Footers===
 
===Headers and Footers===
 
You can specify a template to use for your output:
 
You can specify a template to use for your output:
  
  &lt;xsl:template match="ept:template"&gt;
+
<pre>  &lt;xsl:template match="ept:template"&gt;
 
     &lt;html&gt;
 
     &lt;html&gt;
 
       &lt;body&gt;
 
       &lt;body&gt;
Line 79: Line 70:
 
       &lt;/body&gt;
 
       &lt;/body&gt;
 
     &lt;/html&gt;
 
     &lt;/html&gt;
   &lt;/xsl:template&gt;
+
   &lt;/xsl:template&gt;</pre>
 
+
 
 
Note: you can output unbalanced XML by using disable-output-escaping:
 
Note: you can output unbalanced XML by using disable-output-escaping:
  
  &lt;xsl:template match="ept:template"&gt;
+
<pre>  &lt;xsl:template match="ept:template"&gt;
 
     &lt;xsl:text disable-output-escaping="yes"&gt;
 
     &lt;xsl:text disable-output-escaping="yes"&gt;
 
       &amp;lt;html&amp;gt;
 
       &amp;lt;html&amp;gt;
Line 89: Line 80:
 
     &lt;/xsl:text&gt;
 
     &lt;/xsl:text&gt;
 
     &lt;xsl:value-of select="$results"/&gt;
 
     &lt;xsl:value-of select="$results"/&gt;
   &lt;/xsl:template&gt;
+
   &lt;/xsl:template&gt;</pre>
 
+
 
<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 -->
 
<!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
 
 
<!-- Pod2Wiki=head_controlling_xml_declarations -->
 
<!-- Pod2Wiki=head_controlling_xml_declarations -->
 
===Controlling XML Declarations===
 
===Controlling XML Declarations===
 
If your stylesheet outputs XML (the default):
 
If your stylesheet outputs XML (the default):
  
  &lt;xsl:output method="xml"/&gt;
+
<pre>  &lt;xsl:output method="xml"/&gt;</pre>
 
+
 
 
The XML declaration will only be outputted once at the start of the export, regardless of how many records there are.
 
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:
 
To output as XML and suppress the XML declaration entirely define an empty prefix:
  
  &lt;xsl:stylesheet
+
<pre>  &lt;xsl:stylesheet
 
     xmlns:ept="http://eprints.org/ep2/xslt/1.0"
 
     xmlns:ept="http://eprints.org/ep2/xslt/1.0"
 
     ept:prefix=""
 
     ept:prefix=""
   &gt;
+
   &gt;</pre>
 
+
 
<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 -->
 
<!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
 
 
<!-- Pod2Wiki=head_plugin_options -->
 
<!-- Pod2Wiki=head_plugin_options -->
 
==PLUGIN OPTIONS==
 
==PLUGIN OPTIONS==
 
All attributes on &lt;xsl:stylesheet&gt; that are in the EPT namespace are treated as plugin parameters. In addition to those parameters used by all [[API:EPrints/Plugin/Export|EPrints::Plugin::Export]] plugins XSLT uses:
 
All attributes on &lt;xsl:stylesheet&gt; that are in the EPT namespace are treated as plugin parameters. In addition to those parameters used by all [[API:EPrints/Plugin/Export|EPrints::Plugin::Export]] plugins XSLT uses:
  
  prefix
+
<pre>  prefix
 
     Value is printed before any content (defaults to XML decl.)
 
     Value is printed before any content (defaults to XML decl.)
 
   postfix
 
   postfix
     Value is printed after any content.
+
     Value is printed after any content.</pre>
 
+
 
<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 -->
 
<!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
 
 
<!-- Pod2Wiki=head_stylesheet_parameters -->
 
<!-- Pod2Wiki=head_stylesheet_parameters -->
 
==STYLESHEET PARAMETERS==
 
==STYLESHEET PARAMETERS==
 
The following parameters are passed to the transform for each item:
 
The following parameters are passed to the transform for each item:
  
  total
+
<pre>  total
 
     Total items in result set.
 
     Total items in result set.
 
   position
 
   position
 
     1-indexed position in result set.
 
     1-indexed position in result set.
 
   dataset
 
   dataset
     Base id of the item's dataset (e.g. "eprint").
+
     Base id of the item's dataset (e.g. "eprint").</pre>
 
+
 
<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 -->
 
<!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
 
 
<!-- Pod2Wiki=head_extended_functions -->
 
<!-- Pod2Wiki=head_extended_functions -->
 
==EXTENDED FUNCTIONS==
 
==EXTENDED FUNCTIONS==
 
The standard EPrints global extended XPath functions are supported, see [[API:EPrints/XSLT|EPrints::XSLT]].
 
The standard EPrints global extended XPath functions are supported, see [[API:EPrints/XSLT|EPrints::XSLT]].
  
<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 -->
 
<!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
 
 
<!-- Pod2Wiki=head_see_also -->
 
<!-- Pod2Wiki=head_see_also -->
 
==SEE ALSO==
 
==SEE ALSO==
 
[[API:EPrints/Plugin/Export|EPrints::Plugin::Export]]
 
[[API:EPrints/Plugin/Export|EPrints::Plugin::Export]]
  
<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 -->
 
<!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
 
 
<!-- Pod2Wiki=head_copyright -->
 
<!-- Pod2Wiki=head_copyright -->
 
==COPYRIGHT==
 
==COPYRIGHT==
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #ccepadding: 0em 1em 0em 1em; font-size: 80%; '>
+
Copyright 2000-2011 University of Southampton.
<span style='display:none'>User Comments</span>
+
 
 +
This file is part of EPrints http://www.eprints.org/.
 +
 
 +
EPrints is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
 +
 
 +
EPrints is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
 +
 
 +
You should have received a copy of the GNU Lesser General Public License along with EPrints.  If not, see http://www.gnu.org/licenses/.
 +
 
 
<!-- Edit below this comment -->
 
<!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
+
<!-- Pod2Wiki=_postamble_ -->
<!-- Pod2Wiki=_postamble_ --><!-- Edit below this comment -->
+
<!-- Edit below this comment -->

Revision as of 09:56, 22 January 2013

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.3, 3.2) | Revision Log | Before editing this page please read Pod2Wiki


NAME

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


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>


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.


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>


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=""
  >


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.


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").


EXTENDED FUNCTIONS

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


SEE ALSO

EPrints::Plugin::Export


COPYRIGHT

Copyright 2000-2011 University of Southampton.

This file is part of EPrints http://www.eprints.org/.

EPrints is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

EPrints is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with EPrints. If not, see http://www.gnu.org/licenses/.