Title: Ten&amp;Two XSLT Processor
Author: Ken McCabe
Published: <strong>6 marca, 2024</strong>
Last modified: 27 avgusta, 2024

---

Search plugins

This plugin **hasn’t been tested with the latest 3 major releases of WordPress**.
It may no longer be maintained or supported and may have compatibility issues when
used with more recent versions of WordPress.

![](https://s.w.org/plugins/geopattern-icon/tenandtwo-xslt-processor.svg)

# Ten&Two XSLT Processor

 By [Ken McCabe](https://profiles.wordpress.org/tenandtwo/)

[Download](https://downloads.wordpress.org/plugin/tenandtwo-xslt-processor.1.0.7.zip)

 * [Details](https://sl.wordpress.org/plugins/tenandtwo-xslt-processor/#description)
 * [Reviews](https://sl.wordpress.org/plugins/tenandtwo-xslt-processor/#reviews)
 *  [Installation](https://sl.wordpress.org/plugins/tenandtwo-xslt-processor/#installation)
 * [Development](https://sl.wordpress.org/plugins/tenandtwo-xslt-processor/#developers)

 [Support](https://wordpress.org/support/plugin/tenandtwo-xslt-processor/)

## Description

The Ten&Two XSLT Processor plugin brings the power of PHP’s XSL extension to WordPress.
Once enabled, the plugin creates three (3) shortcodes – `[xslt_transform_xml/]`,`[
xslt_select_xml/]`, and `[xslt_select_csv/]` – which can be used separately or in
tandem to enrich your site with content from XML and CSV sources. The plugin also
enables two (2) custom post types – `XSL Stylesheets` and `XML Documents` – for 
managing and validating sources within WP Admin.

Detailed documentation and sample code can be found at https://plugins.tenandtwo.
com/

### Custom Post Types

The XSLT Processor plugin provides two (2) custom post types for managing sources
within WordPress – `XSL Stylesheets` and `XML Documents`. Both types include basic
syntax validation. XML Documents can be validated further using DTD, XSD, or RNG.
Both types are enabled in Settings > XSLT Processor Settings > Activate Content 
Types.

### Shortcode : [xslt_transform_xml/]

    ```
    [xslt_transform_xml/] is the plugin's primary function.  This shortcode processes XML data using an XSL stylesheet, and then outputs the result as HTML, more XML, or as simple TEXT.
    ```

 * `[xslt_transform_xml xsl="{file|url|id|slug}" xml="{file|url|id|slug}" /]`
 * `[xslt_transform_xml xsl="{file|url|id|slug}"]<DATA>...</DATA>[/xslt_transform_xml]`

If either the `xsl` or `xml` parameter is left unspecified, defaults are used. The
default XML value is `<NODATA/>`. The default XSL stylesheet prints all of the incoming
data as HTML. If extra attributes are specified in the shortcode – eg, `mykey="myval"`–
those keys/values are passed along as parameters to the stylesheet – `<xsl:param
name="mykey"/>`.

### Shortcode : [xslt_select_xml/]

    ```
    [xslt_select_xml/] is a helper function.  It reads XML and returns a selection of the data, based on a supplied XPath expression.  There are two (2) options for specifying the XPath.  First, using the `select` attribute or, second, using the body of the shortcode.  Complex select statements with quotes, square brackets or other special syntax, should use the second pattern :
    ```

 * `[xslt_select_xml xml="{file|url|id|slug}" select="{XPath}" /]`
 * `[xslt_select_xml xml="{file|url|id|slug}"]{XPath}[/xslt_select_xml]`

If the XPath select parameter is left unspecified, the default `/` is used, which
returns the entire document. The default output is `format="xml"`. If `format="json"`
is specified, the result is encoded as a JSON string.

### Shortcode : [xslt_select_csv/]

    ```
    [xslt_select_csv/] is a helper function for converting CSV file data to XML.  The result can be output directly as an HTML `<table>`, or the result can be passed to `[xslt_transform_xml/]` for further processing.
    ```

 * `[xslt_select_csv csv="{file|url}" /]`
 * `[xslt_select_csv]{csv,data}[/xslt_select_csv]`

Three (3) parameters – `separator`, `enclosure`, `escape` – control reading the 
input. See PHP’s `fgetcsv()` function for details.

 * `[xslt_select_csv separator="," enclosure="\"" escape="\\" /]`

Two (2) parameters – `key_row`, `col` – control writing columns to the output. The`
key_row` attribute is optional, but allows labels from that row to be used in `col`
and `key_col`.

 * `[xslt_select_csv key_row="{num}" col="{num|letter|label}+" /]`

Three (3) parameters – `row`, `key_col`, `key` – control writing rows to the output.

 * `[xslt_select_csv row="{num}+" /]`
 * `[xslt_select_csv key_col="{num|letter|label}" key="{val}+" /]`

### Nested Shortcodes

Combine `[xslt_transform_xml]` with `[xslt_select_xml]` :

 * `[xslt_transform_xml][xslt_select_xml/][/xslt_transform_xml]`

Combine `[xslt_transform_xml]` with `[xslt_select_csv]` :

 * `[xslt_transform_xml][xslt_select_csv/][/xslt_transform_xml]`

Combine `[xslt_transform_xml]` with itself using `[/xslt_transform_alias]` (WP does
not support nested shortcodes with identical names) :

 * `[xslt_transform_alias][xslt_transform_xml/][/xslt_transform_alias]`

Combine multiple shortcodes/sources to create a single `XML Document` (see Custom
Post Types above) :

 * `<DATA><PART1>[xslt_select_xml xml="f1.xml" /]</PART1><PART2>[xslt_select_xml
   xml="f2.xml" /]</PART2></DATA>`

### Cache Parameters

When a shortcode specifies a remote file – `xml="{url}"` or `csv="{url}"` – that
source is cached locally using WP Transients. The default cache duration is set 
in the XSLT Processor Settings. To override the default, add `cache="{minutes}"`
to the shortcode.

 * `[xslt_transform_xml xml="{url}" cache="{minutes}" /]`
 * `[xslt_select_xml xml="{url}" cache="{minutes}" /]`
 * `[xslt_select_csv csv="{url}" cache="{minutes}" /]`

### Namespace Parameters

Within `[xslt_select_xml/]` the plugin provides two (2) methods for handling XML
containing namespaces. The first is to add `strip-namespaces` to the shortcode. 
The second method is to add the needed prefixes and namespace URIs using `xslns`.

 * `[xslt_select_xml xml="{file}" strip-namespaces="yes" select="//node" /]`
 * `[xslt_select_xml xml="{file}" xmlns="ns1" ns1="{namespace-uri-1}" select="//
   ns1:node" /]`
 * `[xslt_select_xml xml="{file}" xmlns="ns1 ns2" ns1="{namespace-uri-1}" ns2="{
   namespace-uri-2}" select="//ns1:node/ns2:node" /]`

### WP-CLI

All three (3) shortcodes have command-line equivalents. They can be used, for instance,
to run quick tests. Or they can be used, by piping the outputs into files, to pre-
generate results.

 *     ```
       wp xslt transform_xml
           --xsl='{file|url|id|slug}'
           --xml='{file|url|id|slug}'
           --cache='{minutes, if xsl|xml={url}}'
           --tidy='{yes|html}' or tidy or --tidy='xml'
           --{myparam}='{myvalue}'
           --outfile='{filepath}'
           --htmlentities or --htmlentities='yes'
       ```
   
 *     ```
       wp xslt select_xml
           --xml='{file|url|id|slug}'
           --cache='{minutes, if xml={url}}'
           --select='{xpath}'
           --root='{nodename|empty}'
           --tidy='{yes|html}' or tidy or --tidy='xml'
           --strip-namespaces='yes' or strip-namespaces
           --strip-declaration='no'
           --format='{xml|json}'
           --htmlentities or --htmlentities='yes'
       ```
   
 *     ```
       wp xslt select_csv
           --csv='{file|url}'
           --cache='{minutes, if csv={url}}'
           --separator=','
           --enclosure='\"'
           --escape='\\'
           --key_row='{row number for column labels}'
           --col='{return column number(s), letter(s), or label(s)}'
           --key_col='{col number, letter, or label for key matching}'
           --key='{value(s) for key_col matching}'
           --row='{return row number(s)}'
           --class='{css classname(s) for result table}'
           --htmlentities or --htmlentities='yes'
       ```
   

### XSL Stylesheets

The XSLT Processor plugin includes a number of useful XSL templates that you can
include and use in your own projects. They are grouped into five files.

 * date.xsl : `date-format`, `date-microtime`
 * file.xsl : `file-exists-local`, `file-exists-remote`
 * string.xsl : `string-replace`, `string-upper`, `string-lower`, `string-title-
   case`, `string-trim`, `string-rtrim`, `string-ltrim`, `string-maxlength`, `string-
   maxwords`, `string-add-slashes`, `string-urlencode`, `string-strip-tags`, `string-
   nl2br`, `string-entity-decode`, `string-to-nodeset`
 * util.xsl : `util-bytsize`, `util-hash-data`, `util-print-nodes`, `util-print-
   node-names`, `util-super-global`
 * wp.xsl : `wp-select-xml`, `wp-select-csv`, `wp-post-item`, `wp-post-meta`, `wp-
   sanitize-title`, `wp-size-format`

### Requirements

The Ten&Two XSLT Processor plugin relies upon PHP’s XSL extension. If the extension
is installed, the XSLT Processor Settings screen will display a message similar 
to the first message below. If `LIBXSLT_VERSION` is undefined, all plugin options
are disabled automatically and the second message is displayed.

 * `PHP's XSL extension is available : XSLT v1.1.32, EXSLT v1.1.32, LIBXML v2.9.4`
 * `PHP's XSL extension is NOT available`

The XSL extension’s requirements are detailed at php.net – https://www.php.net/manual/
en/book.xsl.php

> “This extension requires the libxml PHP extension. This means passing the –with-
> libxml,
>  or prior to PHP 7.4 the –enable-libxml, configuration flag, although 
> this is implicitly accomplished because libxml is enabled by default.
> This extension uses libxslt which can be found at » http://xmlsoft.org/XSLT/. 
> libxslt
>  version 1.1.0 or greater is required.”

## Screenshots

 * [[
 * XSLT Processor Settings

## Installation

### WordPress installation

 1. Go to Plugins > Add New > Search for “tenandtwo-xslt-processor”
 2. Press “Install Now” for the “Ten&Two XSLT Processor” plugin
 3. Press “Activate Plugin”

### WP-CLI installation

 1. `wp plugin install tenandtwo-xslt-processor --activate`

### Manual installation

 1. Download the latest archive from the Plugin Homepage : https://wordpress.org/plugins/
    tenandtwo-xslt-processor
 2. Upload the `tenandtwo-xslt-processor` directory to your `/wp-content/plugins/` 
    directory
 3. Activate the plugin through the “Plugins” menu in WordPress

For more details on installation options, see Manage Plugins at wordpress.org – 
https://wordpress.org/documentation/article/manage-plugins/

## FAQ

### Where are the plugin options?

In WordPress, go to Settings > XSLT Processor Settings. There are four (4) sections:

 * Activate Content Types
 * Activate Shortcodes
 * Cache Lifetime
 * Local File Search Paths

### Where is the documentation?

For a quick reference to the shortcodes and their main parameters, go to Settings
> XSLT Processor Settings. The samples for each shortcode show common usage.

Full documentation and working examples are available at https://plugins.tenandtwo.
com/. There are four (4) main sections :

 * Getting Started : https://plugins.tenandtwo.com/xslt-processor/getting-started
 * Shortcodes : https://plugins.tenandtwo.com/xslt-processor/shortcodes
 * Stylesheets : https://plugins.tenandtwo.com/xslt-processor/stylsheets
 * How To : https://plugins.tenandtwo.com/xslt-processor/how-to

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Ten&Two XSLT Processor” is open source software. The following people have contributed
to this plugin.

Contributors

 *   [ Ken McCabe ](https://profiles.wordpress.org/tenandtwo/)

[Translate “Ten&Two XSLT Processor” into your language.](https://translate.wordpress.org/projects/wp-plugins/tenandtwo-xslt-processor)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/tenandtwo-xslt-processor/),
check out the [SVN repository](https://plugins.svn.wordpress.org/tenandtwo-xslt-processor/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/tenandtwo-xslt-processor/)
by [RSS](https://plugins.trac.wordpress.org/log/tenandtwo-xslt-processor/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.0.x

 * Initial Release
 * Add WP-CLI commands
 * Test with WP 6.5

## Meta

 *  Version **1.0.7**
 *  Last updated **2 leta ago**
 *  Active installations **10+**
 *  WordPress version ** 5.2 or higher **
 *  Tested up to **6.5.8**
 *  PHP version ** 7.4 or higher **
 *  Language
 * [English (US)](https://wordpress.org/plugins/tenandtwo-xslt-processor/)
 * Tags
 * [csv](https://sl.wordpress.org/plugins/tags/csv/)[shortcode](https://sl.wordpress.org/plugins/tags/shortcode/)
   [xml](https://sl.wordpress.org/plugins/tags/xml/)[xsl](https://sl.wordpress.org/plugins/tags/xsl/)
   [xslt](https://sl.wordpress.org/plugins/tags/xslt/)
 *  [Advanced View](https://sl.wordpress.org/plugins/tenandtwo-xslt-processor/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/tenandtwo-xslt-processor/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/tenandtwo-xslt-processor/reviews/)

## Contributors

 *   [ Ken McCabe ](https://profiles.wordpress.org/tenandtwo/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/tenandtwo-xslt-processor/)