Я разрабатываю веб-приложение для Firefox, в котором есть кнопка, запускающая XSLT-преобразование DOM документа на стороне клиента, с таблицей стилей, получаемой через AJAX.
Вот часть XHTML, которая будет преобразована:
<html>
<head>
<title>Static Javascript-based XMR Form Creator</title>
</head>
<body>
<h1 id="title">Static Javascript-based XMR Form Creator</h1>
<div class="opt_block" id="main_opts">
Form name <input type="text" id="form_name" />
Form cols <input type="text" id="form_cols" size="3" maxlength="3" />
</div>
<button id="generate">Generate source</button>
<textarea rows="20" cols="50" id="xmr_source" ></textarea>
</body>
Внутри таблицы стилей я хочу получить доступ к атрибуту value
первого поля ввода с идентификатором form_name
.
XSLT выглядит так:
<xsl:template match="/html/body/div[@id = 'main_opts']" >
<form>
<xsl:attribute name="fname">
<xsl:value-of select="input[@id = 'form_name']/@value" />
</xsl:attribute>
</form>
</xsl:template>
Я применяю XSLT к току document
, вот так:
var processor = new XSLTProcessor();
processor.importStylesheet(data); // data received via AJAX request
// document is obviously the object representing the current DOM
var result = processor.transformToDocument(document);
Проблема в том, что XPath должен выполнять эту работу:
<xsl:value-of select="input[@id = 'form_name']/@value" />
ничего не возвращает, тогда как проверка DOM через Firebug показывает, что свойство value
элемента input
имеет значение.
Может кто-нибудь помочь?
РЕДАКТИРОВАТЬ: ясно, что XSLT применяется к текущему документу