代码之家  ›  专栏  ›  技术社区  ›  Ramiz Uddin

如何在XML中搜索关键字并向下滚动到它?

  •  2
  • Ramiz Uddin  · 技术社区  · 16 年前

    Bishiboosh和fmsf 建议,我们要去做 通过看起来更明显的XSL 问题的答案(详细信息) 请阅读下面的问题)。

    我们必须创建一个XSL,它将 名称/值、属性名称/值等。 XML中的所有内容。

    <?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>
    

    我在完成任务时遇到了问题

    谢谢

    你好

    我必须在基于web的产品帮助系统中添加一项功能。其外观和功能与我们在桌面软件帮助中看到的几乎相同,按F1键会弹出该帮助。

    我必须添加的特性是一个搜索特性,用户输入文本,调用Ajax,请求将直接发送到服务器,在服务器上,它将作为包含XML模式列表的XML组成响应。这已经完成了!除了

    首先让我来描述一下应用程序UI。所以,当我们讨论技术细节时,您会有更好的想法。

                _________________________________________________ 
                | Search           |
                |__________________|    XML SCHEMA OPEN HERE ...
    (1) FRAME A | Type here...     |       (2) FRAME B
                |__________________|
                |                  |
                | . RESULT LINK 1  |
                | . RESULT LINK 2  |
                | . RESULT LINK 3  |
                |                  |
                |                  |
                |                  |
                |                  |
                |                  |
    

    它是如何工作的?搜索结果将显示为超链接(如上面的结果链接1…3所示)。当用户单击其中一个链接时,架构将加载到框架B中,浏览器将滚动到搜索的关键字。

    $(iframe).src = "XMLSchema.xml"

    首先,让我们假设几乎所有的初始工作都已完成,如搜索、处理、合成结果链接,然后单击它们,我们将在正确的框架(框架B)中获得正确的模式。

    我认为突出显示不可能出现在那里,因为文档是XML格式的,而且正如我所说的,框架B直接引用了XML文件。但是,搜索和滚动有一个公平的可能性?对不

    附笔:

    5 回复  |  直到 16 年前
        1
  •  2
  •   fmsf    16 年前

    尝试使用XSL将XML转换为可查看的内容。

    Answer发表评论,请求更多信息:

    XSL将XML转换为HTML。之后,对于滚动部分,您可以使用javascript滚动到您想要的位置。

        2
  •  2
  •   Valentin Rocher    16 年前

    有多种可能的方式以一种漂亮的方式显示XML:

    • 最简单的方法是:将XML显示为文本,并对其进行修饰。您将代码放入标记中并使用 google-code-prettify 例如,有漂亮的印刷品。
    • 稍微复杂一点,但做你想做的事情要容易得多:使用 XSLT . 概念很简单:定义一个XSL页面,它将告诉您如何将xml页面转换为html页面。我不知道如何在客户端实现,但互联网上有很多教程,xsl的使用可能是另一个问题。

    window.scrollTo

        3
  •  1
  •   rahul    16 年前

    恐怕你做不到。您必须在文档中确定一个可以滚动到的点。但在本例中,您使用的是XML文件作为iframe的源。XML仅用于存储数据,不包含任何定位属性。

        4
  •  1
  •   Anurag    16 年前

    正如pulse和Bishiboosh已经提到的那样,这是不可能的,而且不同浏览器的XML表示方式也有很大差异。

    例如,w3schools的一个示例XML在 : alt text http://img63.imageshack.us/img63/830/picture1hw.png

    这一个是开着的 : alt text http://img9.imageshack.us/img9/9057/picture2kr.png

    最后 火狐 alt text http://img109.imageshack.us/img109/8941/picture3hm.png

        5
  •  0
  •   Igor Nadj    16 年前

    你可以用 xmlverbatim 使用缩进、语法着色等将XML转换为HTML。