在 Wordpress 中使用 XSLT 解析 XML

Posted

技术标签:

【中文标题】在 Wordpress 中使用 XSLT 解析 XML【英文标题】:Parsing XML with XSLT in Wordpress 【发布时间】:2012-10-14 08:07:53 【问题描述】:

我目前正在尝试加载外部 XML 文件并使用 XSL 样式表文件将它们解析为 html。我正在使用插件 XData Toolkit 来实现这一点,它工作正常。但是,该插件要求我为每个 XML 文件创建一个新查询并使用简码加载内容。由于我有很多 XML 文件,这种方法可能不太适合我。

我有没有办法通过传递参数(即 XML 文件名)在页面中加载 XML 内容并使用 XSLT 动态解析它?

我可以用 php 脚本 XSLTProcessor 来做吗?我可以从 WordPress 的页面调用 PHP 脚本吗?如果是,我在哪里保存 PHP 脚本?也许是这样的?

<?php

    // Load the XML source
    $xml = new DOMDocument;
    $xml->load('file.xml');

    $xsl = new DOMDocument;
    $xsl->load('stylesheet.xsl');

    // Configure the transformer
    $proc = new XSLTProcessor;
    $proc->importStyleSheet($xsl); // attach the xsl rules

    echo $proc->transformToXML($xml);

?>

我对 WordPress 和 PHP 不是很熟悉,因此欢迎任何建议。 附加信息:使用 Pagelines 主题和 WordPress 3.4.1

【问题讨论】:

【参考方案1】:

Wordpress has a built-in XML processor 如果您的最终目标是显示内容,使用起来可能会更简单。

如果包含您为转换提要或导入库而编写的 PHP 脚本更容易,您可以将脚本放在主题的文件夹中(即 /wp-content/themes/pagelines/)并使用 @987654322 调用它@:

include_once(get_template_directory().'/FILENAME.php');

【讨论】:

【参考方案2】:

要在 php 脚本中使用参数(get),请使用:

$xmlFile = $_GET['xml-file'];

然后只需将您的代码更改为以下内容:

<?php

$xmlFile = $_GET['xml-file'];
$xmlDir  ='dirWithXmlFiles/';
$xmlUri  = $xmlDir . $xmlFile;

if(! file_exists($xmlUri))
   echo 'some error';
   return;


// Load the XML source
$xml = new DOMDocument;
$xml->load($xmlUri);

$xsl = new DOMDocument;
$xsl->load('stylesheet.xsl');

// Configure the transformer
$proc = new XSLTProcessor;
$proc->importStyleSheet($xsl); // attach the xsl rules

echo $proc->transformToXML($xml);

如果您需要添加一些动态内容,您可以通过以下方式传递参数:

$proc->setParam('someNameOfParameter', $someValueOfParameter); 

并在 xslt 中使用它,或者构建一个内容为 $xmlUri 和动态内容为 xml 的 xml 文件。

【讨论】:

以上是关于在 Wordpress 中使用 XSLT 解析 XML的主要内容,如果未能解决你的问题,请参考以下文章

XSLT:如何解析嵌入在 XML 标记中的 HTML

Xslt在通过xsl文件解析时为负值添加括号'()'作为响应

如何在 xslt 2.0 中将字符串解析为日期

使用DOMParser解析XSLT

XSLT:如何将一个元素解析为多个变量

将XSLT属性解析为一个数组。