将PHP变量作为参数传递给XSL


Pass PHP variable as a parameter to XSL

我有一个PHP页面,它通过更改标题类型并使用RSS提要的XSL样式表输出XML来输出XML:

<?php
header('Content-Type: text/xml; charset=utf-8');
echo "<?xml version='"1.0'" encoding='"utf-8'"?>'n";
echo '<?xml-stylesheet title="XSL_formatting" type="text/xsl" href="/path/feed.xsl"?>' . "'n";
?>
<channel>
    <item>...</item>...
</channel>

我想将一些PHP变量从原始页面传递到XSL,我该怎么做?

的例子:我有变量。

$header = "This is a cool page";
$description = "This is a description";

…我想传递给XSL页面并在其中使用的内容,这意味着可以通过PHP更改标题,并在XSL中动态更改标题,而不是对其进行硬编码。

不能通过XML传递,因为我使用XSL作为回退,因此当浏览器支持RSS时不应该显示标题。此外,它必须来自该页面,而不是使用该变量引用另一个文件。

比如

<?xml-stylesheet title="XSL_formatting" type="text/xsl" param-header="<?=$header?>' param-description="<?=$description?>' href="/path/feed.xsl"?>
请告诉我是否有更好的方法来实现这个目标。

*UPDATE -这不起作用,因为额外的标记不验证,因为它们不是名称空间的一部分。


实际上忘记把rss标签放入问题中,但是当我在rss和通道标签之间添加XML来存储PHP变量时,我可以在XSL文件中动态地使用它们,并且用于存储它们的XML在rss阅读器中查看时不会呈现,例如

<rss>
    <extraInfo>
        <heading>...</heading>
        <description>...</description>
    </extraInfo>
    <channel>
        ...
    </channel>
</rss>