如何根据用户输入以不同的方式以HTML格式显示XML文件
How to present an XML file in HTML format in different ways, according to user input?
我有一个由图书节点组成的XML文件,每本书包含1-4位作者,1个标题&1年
我还创建了一个与上述XML文件相关的XSL文件,这样每当我在浏览器中打开XML文件时,其内容都会以html表格格式显示,其中包括3行"作者"、"标题"、"年份"
我现在想做的是创建一个HTML文件,它将显示上表,但不是它的所有内容,只有通过用户输入询问的内容(我想用户输入的适当字段也应该在同一个HTML文件上找到。)
例如,用户可以键入作者的姓名、年份、标题、标题中包含的单词或作者的姓名,然后将适当的表格呈现给他。
我是这一切的新手,所以我的问题如下:
-
我是否必须再次处理XML和XSL文件中的内容,还是从现在起保持它们不变,只处理我将要创建的html文件?
-
为了实现我想要的内容,我的html文件应该包含什么?Javascript函数将只显示XML文件的一部分,但始终根据XSL文件?我会再次在html文件中使用XSLT还是只使用javascript?
我需要的是创建smth,它将接受用户的输入(javascript?),然后使用解析器(XSLT?)根据用户的输入解析XML?然后在屏幕上返回通过我创建的XSL模板过滤的结果??
有人能告诉我一步一步应该遵循的流程吗?(不详细,但我应该按照什么顺序处理其中涉及的所有问题。)?
非常感谢您的理解和帮助!我知道有很多关于w3schools的信息,但问题是一切都是零散的,我仍然不知道如何将所有这些结合起来,以何种顺序和方法进行选择!
顺便说一句。我不想使用jquery,只想使用XML、XSLT、XPATH、HTML、Javascript标准。。
您需要将用户想要的处理作为参数传递给转换。
阅读xsl:param
指令。
转换的外部参数可以是任何全局声明的(顶部元素xsl:stylesheet
的子元素)xsl:param
元素。
XSLT转换的调用程序在调用转换时为这些参数指定值的方式取决于实现,并且因XSLT处理器而异。您需要阅读特定XSLT处理器的文档,以了解如何做到这一点的确切信息。
例如,如果XSLT处理器是.NET XslCompiledTransform,则向转换传递参数的方法是通过XsltArgumentList.AddParam()
方法。
您需要将XSL和XML文件加载到javascript,您可以为此使用ajax请求,也可以使用iframe为您加载它们。一旦您在javascript中拥有了它们,您就可以使用XPath和XSLT来做您想要做的事情。
例如,这里有一种简单的方法来加载xml,然后使用iframe方法在其上使用XPath,它使用输入值来查询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加载文件。当然,您可以像我的示例中的XML文件一样加载XSL文件。
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 用DRY方式Javascript/JQuery动态替换HTML
- 通过javascript以编程方式将文件插入HTML输入
- 如何以非编程方式国际化HTML文本
- 当按下箭头键时,我的图像以一种奇怪的方式跳跃(HTML+JS)
- 如何启用Emmet'的选项卡键处理程序(HTML快捷方式)
- 使用相同代码管理多个HTML的最佳方式
- 如何使文本、数字和日期html输入字段以一致的方式支持Ctrl+Z(撤消)
- 如何在使用 UIWebView 编辑 HTML 内容时正确调整输入语言更改 (LTR/RTL) 的文本对齐方式
- HTML + JS:设置文本区域内容样式的最佳方式
- 修改 HTML 的方式使左键应带到下一个 URL
- 使用ajax解析html的最佳方式
- 以非阻塞方式更新HTML画布
- 以类似于谷歌机器人的方式抓取网站html和javascript
- 附加html的不同方式
- 有没有一种方法可以制作一个prezi,然后以某种方式将其转换为html和css类型的代码
- 如果不使用HTML按钮,就无法通过编程方式触发SVG动画
- Javascript-附加大量HTML内容的最佳方式
- 如何更改html中复选框的对齐方式
- 还有什么比编写文档更好的HTML方式呢?用JavaScript编写