Есть что-то вроде <xsl: url-param name = "color" />? - PullRequest
0 голосов
/ 20 ноября 2008

Если я отправлю этот запрос на страницу:

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 Ответ

1 голос
/ 21 ноября 2008

Нет; в общем, движки XSL не привязаны к веб-серверу.

Тем не менее, большинство механизмов XSL позволяют вам передавать некоторые параметры вместе с таблицей стилей и документом, поэтому то, что вы можете сделать, если вы вызываете его из системы с веб-поддержкой, это сопоставить ваш 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>
...