Javascript 如何在XML中搜索关键字并向下滚动到它?
多亏了Bishiboosh和fmsf。作为 建议,我们要去做 通过看起来更明显的XSL 问题的答案(详细信息) 请阅读下面的问题) 我们必须创建一个XSL,它将 搜索关键字并与节点匹配 名称/值、属性名称/值等。 XML中的所有内容 XMLJavascript 如何在XML中搜索关键字并向下滚动到它?,javascript,xml,xslt,Javascript,Xml,Xslt,多亏了Bishiboosh和fmsf。作为 建议,我们要去做 通过看起来更明显的XSL 问题的答案(详细信息) 请阅读下面的问题) 我们必须创建一个XSL,它将 搜索关键字并与节点匹配 名称/值、属性名称/值等。 XML中的所有内容 XML <?xml version="1.0"?> <CustomerList> <Customer> <CustomerID>1111</CustomerID> <Company
<?xml version="1.0"?>
<CustomerList>
<Customer>
<CustomerID>1111</CustomerID>
<CompanyName>Sean Chai</CompanyName>
<City>New York</City>
<NewCustomer>N</NewCustomer>
</Customer>
<Customer>
<CustomerID>1112</CustomerID>
<CompanyName>Tom Johnston</CompanyName>
<City>Los Angeles</City>
<NewCustomer>N</NewCustomer>
</Customer>
<Customer>
<CustomerID>1113</CustomerID>
<CompanyName>Institute of Art</CompanyName>
<City>Chicago</City>
<NewCustomer>Y</NewCustomer>
</Customer>
</CustomerList>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:choose>
<!--
// We'll match the node/attribute name/values
// with search text. If it is match to node
// name/value we have to put a div/b tag around
// it or it is match to attribute then the div/b
// tag will be around it's node.
-->
<xsl:when test="">
<xsl:value-of select="" />
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="@* | node()"/>
</xsl:otherwise>
</xsl:choose>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
它是如何工作的?搜索结果将显示为超链接(如上面的结果链接1…3所示)。当用户单击其中一个链接时,架构将加载到框架B中,浏览器将滚动到搜索的关键字
如果您需要知道的话,还有一件更重要的事情需要提及,XML模式将在框架B中直接引用
$(iframe).src=“XMLSchema.xml”
首先,让我们假设几乎所有的初始工作都已完成,如搜索、处理、合成结果链接,然后单击它们,我们将在正确的框架(框架B)中获得正确的模式
问题是,当XML模式加载到正确的框架中时,它还应该滚动并突出显示第一个搜索的关键字
我认为突出显示不可能出现在那里,因为文档是XML格式的,而且正如我所说的,框架B直接引用了XML文件。但是,搜索和滚动有一个公平的可能性?对没有
您知道如何滚动到XML文件中搜索的关键字吗
谢谢
p.S:如果您有任何疑问,请发表评论。AFAIK您将无法这样做。您必须在文档中确定一个可以滚动到的点。但在本例中,您使用的是XML文件作为iframe的源。XML仅用于存储数据,不包含任何定位属性。不应直接在B帧中加载XML。XML显示因浏览器而异,例如在Chrome中,它只显示文本内容 有多种可能的方式以一种漂亮的方式显示XML:
- 最简单的方法是:将XML显示为文本,并对其进行修饰。您将代码放在标记中,并使用例如来进行漂亮的打印
- 更复杂一点,但做你想做的事情要容易得多:使用。概念很简单:定义一个XSL页面,它将告诉您如何将xml页面转换为html页面。我不知道如何在客户端实现,但互联网上有很多教程,xsl的使用可能是另一个问题
要滚动,您可以使用pulse和Bishiboosh已经提到的,这是不可能的,而且不同浏览器显示XML的方式有很大差异 例如,W3XML的一个示例在Safari上显示如下: 这一个在Chrome上: 最后,Firefox:
如果您自己显示XML,您的情况会好得多。尝试使用XSL将XML转换为可查看的内容 Answer发表评论,请求更多信息:
XSL将XML转换为HTML。之后,对于滚动部分,您可以使用javascript滚动到您想要的位置。您可以使用缩进、语法着色等将XML转换为HTML。谢谢。我还认为我必须把它放在一个盒子里,而不是直接引用它。我们如何通过XSL实现它?我们如何通过XSL实现它?你能解释一下吗?谢谢。您有通过XSL与XML节点和属性名称/值匹配的漂亮代码吗?我已经更新了一个问题,在这里我展示了一个示例XSL,它可以做到这一点,但是我在给它一个条件,然后在find项周围增加粗体标记时遇到了一个问题。谢谢。我一定要调查一下。
_________________________________________________
| Search |
|__________________| XML SCHEMA OPEN HERE ...
(1) FRAME A | Type here... | (2) FRAME B
|__________________|
| |
| . RESULT LINK 1 |
| . RESULT LINK 2 |
| . RESULT LINK 3 |
| |
| |
| |
| |
| |