7

我目前正在尝试加载外部 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

4

2 回答 2

0

Wordpress 有一个内置的 XML 处理器,如果您的最终目标是显示内容,它可能更易于使用。

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

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

于 2012-11-19T05:59:59.217 回答
0

要在 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 文件。

于 2021-06-04T07:46:06.807 回答