使用 XML 和 XPath 构建简单的数据库搜索网站
Posted
技术标签:
【中文标题】使用 XML 和 XPath 构建简单的数据库搜索网站【英文标题】:Build simple database search website with XML and XPath 【发布时间】:2021-06-30 14:56:22 【问题描述】:我需要为大学做一个 XML 项目,并且我已经构建了一个包含很多汽车及其规格的 XML 文件。我最初的想法是最终使用 XSLT 和 XPath 创建一个汽车搜索网站。用户给出一个输入(例如,最小 200 马力、敞篷车、4 个座位等),然后将输入转换为找到这些汽车的 XPath 表达式。这是否仅适用于 XML/XSLT/XPath?这一切都发生在客户端,我很确定我至少需要一些 javascript(我什至需要 XSLT 吗?)。有没有简单的方法来做到这一点?
【问题讨论】:
当然可以使用 XSLT 和 XPath 完成大部分工作,如果 XML 的大小小于 1Mb,它可能会执行得相当充分。如果您想避免编写任何 Javascript,您可以使用 Saxon-JS [免责声明:我公司的产品]。 【参考方案1】:如果您的源需要是 XML,并且您了解 Xslt/Xpath 的原理,那么它非常适合转换 XML。 IE。用于构建您的搜索表单或显示搜索结果。 对于搜索,您也可以使用 Xslt,但可能像 Solr 这样的引擎会更合适。
即如果您确实需要使用 xslt 进行搜索并假设您在 xslt 中仅定义了 2 个参数: xslt 1.0 可能看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:param name="searchName" />
<xsl:param name="searchPhrase"/>
<xsl:template match="*">
<xsl:choose>
<xsl:when test="name()=$searchName and contains(text(),$searchPhrase)" >
<!-- Do something with the result that matches both the element-name and the search-phrase of only the current textnodes-->
</xsl:when>
<xsl:when test="contains(text(),$searchPhrase)" >
<!-- Do something with the result that matches only the search-phrase-->
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
【讨论】:
谢谢。如何使用 Xslt 进行搜索?我不知道如何将用户输入转换为 xpath 表达式以上是关于使用 XML 和 XPath 构建简单的数据库搜索网站的主要内容,如果未能解决你的问题,请参考以下文章