javascript 将XML数据作为HTML表显示和搜索的最佳策略

ogq8wdun  于 2023-03-11  发布在  Java
关注(0)|答案(2)|浏览(123)

我试图定义最佳的整体策略,将基于XML的术语表条目显示为HTML页面中的可搜索表。
重要的是,所选择的战略能够:

  • 重新生成属性及其关联样式(例如,值"unattested"应使关联术语变灰,或者属性part应在术语后以斜体重新生成其值);
  • 允许用户随后根据他们键入搜索字段(或每列顶部的搜索字段)的查询来过滤条目;
  • 包括同义术语(即,相同语言中相同概念的多于一个术语)。

下面是一个条目的示例(每个条目都封装在<concept>中):

<concept>
    <expression>
        <OE>
            <term>efes</term>
            <term status="unattested">æfesc</term>
        </OE>
        <ME>
            <term>eaves/term>
        </ME>
    </expression>
    <classification>
        <characteristic part="noun">section of a roof overhanging the lower structure of a building</characteristic>
    </classification>
</concept>

我知道两种可能的策略。

战略A:使用XSLT将XML转换为HTML页面,然后将其上载到服务器。将JavaScript集成到HTML中,可以根据用户的查询显示/隐藏条目。
战略B:上传XML(作为数据源)和一个HTML页面。将XMLHttpRequest对象集成到HTML中以加载XML数据并构建一个表来包含它。我尝试过这种策略的模型,但无法访问更深层次的元素,如<term>。我知道XMLHttpRequest有一个send()函数,但不确定这是否可以用于根据用户的查询过滤XML数据。

非常感谢您就这一特殊情况提出的最佳策略建议。

e4yzc0pl

e4yzc0pl1#

只有在不使用服务器端逻辑的情况下实现XML的增量加载时才需要预处理。在这种情况下,它应该位于多个单独的文件中。您将生成首先加载的索引文件,以避免一次加载所有数据。
在大多数情况下,加载数据的静态HTML页面(外部)Javascript是更简单的方法。您可以使用查询选择器和/或Xpath表达式从加载的XML中提取数据。数组函数用于过滤/Map/减少数据,DOM方法用于将数据添加到页面中。
在URL/send()调用中使用参数仅适用于服务器端逻辑。您可以设置/或实现以JSON或XML形式返回数据的Web服务。例如,使用ElasticSearch。

myss37ts

myss37ts2#

您可以考虑使用客户端XSLT 3.0来实现这一点。好处是(a)不需要Javascript,(b)不需要服务器端逻辑。使用SaxonJS,您可以使用XSLT来完成所有客户端事件处理。
我在这里假设XML数据的大小是这样的,你可以下载它而不会有不必要的延迟(比如说1 Mb压缩)。当然,它会被浏览器缓存。如果XML大于这个值,你可能会想增量加载它。但是你可能可以把它分成26个文件,例如,术语A-Z。
警告:SaxonJS是我公司的产品。

相关问题