У меня есть XML-файл, что я хочу, чтобы преобразовать с Saxon-CE XSLT 2.0 Процессор:XSLT 2.0 перебираем массив выбора элементов по атрибуту
<books>
<book name="book1">
<book name="book2">
<book name="book3">
</books>
Я хочу, чтобы фильтровать этот XML-файл с помощью массива. Этот массив является результатом выбранных флажков веб-страницы и передается в XSLT с setParameter:
$("input:checkbox[id='books']").each(function() {
books.push($(this).val());
});
//books: ["book1", "book2"]
xslt = Saxon.requestXML("xsltfile.xsl");
xml = Saxon.requestXML("xmlfile.xml");
var xsltProc = Saxon.newXSLT20Processor(xslt);
xsltProc.setParameter(null, "books", books);
Теперь я хочу, чтобы выбрать все книги, где имя встречается в массиве.
XSLT:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="books"></xsl:param>
<xsl:variable name="mybooks" select="/books/book[@name=$param[1]]"/>
</xsl:stylesheet>
Как я могу цикл по массиву и выбирать только книги с именем массива?
Вы отредактировали образец и использовали имя правого параметра в справочной '$ books', но мне интересно, почему вы сравниваете только $ book [1]', если вы хотите фильтровать на основе всех элементов в вашем массиве. –
Я узнал ошибку, когда прочитал вопрос. Я изменил его, чтобы сохранить правильный ответ :) спасибо! –