2010-05-26 3 views
3

Предположим, у меня есть XSL следующим образом:Как передать значение параметра XSL?

<xsl:stylesheet 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    version="1.0"> 
    <xsl:output method="html" encoding="utf-8" omit-xml-declaration="yes" indent="yes"/> 
    <xsl:param name="sortKey" select="'firstname'"/> 
</xsl:stylesheet> 

Тогда в XML следующим образом

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<?xml-stylesheet type="text/xsl" href="XYZ.xsl"?> 
<ABC> 
    <firstname>GREG</firstname> 
</ABC> 

Я хочу, чтобы передать значение параметра XSL ПгвЬЫате из XML. Я могу это сделать? Если да, то как?

Из ответов видно, что это невозможно.

Как насчет чтения значения из того же XML и назначения его параметру. Это можно сделать? Если да, то как?

+1

, но если у вас уже есть данные в XML, зачем использовать параметры? –

ответ

5

Поскольку значение, которое вы хотите как параметр, находится в вашем базовом XML, вы можете просто ввести выражение XPath для параметра, которое задает значение по умолчанию.

<xsl:param name="sortKey" select="/ABC/firstname"/> 

Просто с помощью переменной, также будет здесь справедливо, если значение всегда будет в XML

<xsl:variable name="sortKey" select="/ABC/firstname"/> 

А затем, чтобы использовать этот параметр/переменную, вы бы просто сделать что-то вроде этого

<xsl:template match="/"> 
    <xsl:value-of select="$sortKey" /> 
</xsl:template> 

Это было бы просто вывести значение GREG

1

Предполагая, что вы используете .NET, чтобы сделать преобразование, ответ этого продублируйте вопрос можно найти здесь: Passing parameters to XSLT Stylesheet via .NET

+0

Nop ... Я просто использую XML и XSLT. – Manish

1

В W3C не предложен механизм. Можно определить новую инструкцию обработки, которая может это сделать. Но если вы планируете использовать это в браузере или другом существующем инструменте, это не жизнеспособный вариант для передачи параметров в таблицы стилей, которые вызывается с помощью инструкций по обработке.

Альтернативный вариант - разместить свой «параметр» в альтернативном документе и загрузить его, используя что-то вроде document() function.

+0

Как я могу прочитать значение из того же XML и присвоить значение параметру? это можно сделать? – Manish

Смежные вопросы