是否有类似<xsl:url-param name =“color”>?</xsl:url-param>

时间:2008-11-20 20:09:30

标签: xml ajax xslt params

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

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" />.

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

感谢您的回答,

Chrelad

1 个答案:

答案 0 :(得分:1)

没有;通常,XSL引擎不依赖于Web服务器。

但是,大多数XSL引擎允许您传递一些参数以及样式表和文档,以便您可以做什么,如果您从支持Web的系统调用它,则映射您的直接通过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>