我试图定义最佳的整体策略,将基于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数据。
非常感谢您就这一特殊情况提出的最佳策略建议。
2条答案
按热度按时间e4yzc0pl1#
只有在不使用服务器端逻辑的情况下实现XML的增量加载时才需要预处理。在这种情况下,它应该位于多个单独的文件中。您将生成首先加载的索引文件,以避免一次加载所有数据。
在大多数情况下,加载数据的静态HTML页面(外部)Javascript是更简单的方法。您可以使用查询选择器和/或Xpath表达式从加载的XML中提取数据。数组函数用于过滤/Map/减少数据,DOM方法用于将数据添加到页面中。
在URL/
send()
调用中使用参数仅适用于服务器端逻辑。您可以设置/或实现以JSON或XML形式返回数据的Web服务。例如,使用ElasticSearch。myss37ts2#
您可以考虑使用客户端XSLT 3.0来实现这一点。好处是(a)不需要Javascript,(b)不需要服务器端逻辑。使用SaxonJS,您可以使用XSLT来完成所有客户端事件处理。
我在这里假设XML数据的大小是这样的,你可以下载它而不会有不必要的延迟(比如说1 Mb压缩)。当然,它会被浏览器缓存。如果XML大于这个值,你可能会想增量加载它。但是你可能可以把它分成26个文件,例如,术语A-Z。
警告:SaxonJS是我公司的产品。