Как представить файл XML в формате HTML по-разному, в зависимости от ввода пользователя? - PullRequest
1 голос
/ 27 февраля 2012

У меня есть XML-файл, состоящий из узлов книги, и каждая книга содержит 1-4 авторов, 1 заголовок и 1 год

Я также создал XSL-файл, относящийся к указанному выше XML-файлу, чтобы всякий раз, когдаЯ открываю файл XML в браузере, его содержимое представлено в виде таблицы html, состоящей из 3 строк: «Автор», «Заголовок», «Год»

Теперь я хочу создать файл HTML.которая представит приведенную выше таблицу, но не все ее содержимое, а только те, которые были заданы посредством пользовательского ввода (соответствующие поля для пользовательского ввода также должны быть найдены в том же html-файле, я полагаю ..)

например, пользовательможете ввести имя автора, год, название или слово, содержащееся в названии или имени автора, а затем предоставить ему соответствующую таблицу.

Я новичокко всему этому, поэтому у меня следующие вопросы:

  1. Придется ли мне снова связываться с содержимым файлов XML и XSL или я должен оставить их нетронутыми с этого момента и заниматься толькоHTML-файлЯ буду создавать?

  2. Чтобы добиться того, что я хочу, что должен содержать мой html-файл?Функции Javascript, которые будут представлять только части файла XML, но всегда в соответствии с файлом XSL?Буду ли я снова использовать XSLT в html-файле или просто javascript?

Что мне нужно, это создать что-то, что будет принимать ввод от пользователя (javascript?), А затем использовать синтаксический анализатор (XSLT?) Для анализа XML в соответствии с вводом пользователя?а затем вернуть результат на экран, отфильтрованный через созданный мной шаблон XSL ??

Может ли кто-нибудь указать мне процесс, которому я должен следовать шаг за шагом (не подробно, но в каком порядке я должен решать все проблемы?)участвует в этом ..)?

Большое спасибо за понимание и помощь!Я знаю, что есть много информации о w3schools, но проблема в том, что все фрагментировано, и я до сих пор не знаю, как объединить все это, в каком порядке и какой метод выбрать!

кстати.Я не хочу использовать jquery для этого, только стандарты XML, XSLT, XPATH, HTML, Javascript ..

Ответы [ 2 ]

1 голос
/ 28 февраля 2012

Вам необходимо передать требуемую пользовательскую обработку в качестве параметра (ов) для преобразования .

Прочитать инструкцию xsl:param.

Внешние параметры впреобразование может быть любым объявленным глобально (дочерние элементы верхнего элемента xsl:stylesheet) xsl:param элементов.

Способ, которым инициатор преобразования XSLT указывает значения для этих параметров при вызове преобразования,зависит от реализации и варьируется от одного XSLT-процессора к другому.Вам нужно прочитать документацию конкретного процессора XSLT для точной информации, как это сделать.

Например , если XSLT-процессор - это .NET XslCompiledTransform, способ передачи параметровпреобразование осуществляется с помощью метода XsltArgumentList.AddParam().

0 голосов
/ 27 февраля 2012

Вам нужно загрузить файлы XSL и XML в javascript, вы можете использовать ajax-запросы для этого, и вы можете использовать iframe, чтобы загрузить их для вас. Если у вас есть их в javascript, вы можете использовать XPath и XSLT, чтобы делать именно то, что вы хотите.

Например, вот простой способ загрузить xml, а затем использовать XPath на нем, используя способ iframe, он использует входное значение для запроса xml:

<html>
<head>
    <title> xml test </title>
    <script type="text/javascript">
        var xml = null;

        function getXml(path) {
            document.getElementById("loader").src = path;
        }

        function loaded(frm) {
            if (frm.contentWindow) {
                xml = frm.contentWindow.document;
            }
        }

        function query() {
            var value = document.getElementById("query").value;
            var evaluator = new XPathEvaluator();
                var result = evaluator.evaluate("//" + value, 
                    xml, 
                    null, 
                    XPathResult.FIRST_ORDERED_NODE_TYPE, 
                    null);

                console.log(result.singleNodeValue);
        }
    </script>
</head>
<body>
    Query the xml: <input type="text" id="query" />
    <input type="button" value="Go" onclick="query()" />
    <iframe style="width: 0px; height: 0px; display: none;" id="loader" onload="loaded(this)"></iframe>
    <script type="text/javascript">
        getXml("index.xml");
    </script>
</body>

Что касается части XSLT, вот руководство для того, как это сделать: XSLT - на клиенте . В этом уроке они также показывают, как загружать файлы, используя ajax. Конечно, вы можете загрузить XSL-файл, как XML-файл в моем примере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...