0

如果我将此请求发送到页面:

http://www.server.com/show.xml?color=red&number=two

我可以做这样的事情吗?:

I like the color <xsl:url-param name="color" /> and the number <xsl:url-param name="number" />.

如果您需要澄清问题,请让我知道

感谢您的任何答案,

克雷拉德

4

1 回答 1

1

不; 通常,XSL 引擎不绑定到 Web 服务器。

但是,大多数 XSL 引擎允许您将一些参数与样式表和文档一起传递,因此如果您从支持 Web 的系统调用它,您可以将 GET 参数直接映射到您的 XSL 引擎

例如,如果您使用的是 PHP,您可以执行以下操作:

<?php

$params = array(
    'color' => $_GET['color'],
    'number' => $_GET['number']
);

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

$xml = new DOMDocument;
$xml->load('mydocument.xml');

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

foreach ($params as $key => $val)
    $proc->setParameter('', $key, $val);

echo $proc->transformToXML($xml);

您必须确保对通过的任何东西进行消毒。然后,您可以简单地执行以下操作:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet 
  version="1.0" 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <!-- Remember to pick-up the parameters from the engine -->
  <xsl:param name="color" />
  <xsl:param name="number" />
  <xsl:template match="*">
    I like the color <xsl:value-of select="$color" /> 
    and the number <xsl:value-of select="$number" />.
  </xsl:template>
</xsl:stylesheet>
于 2008-11-20T22:53:11.937 回答