Как найти ключевое слово в XML и прокрутить окно вниз к нему? - PullRequest
2 голосов
/ 06 января 2010

Благодаря Bishiboosh и fmsf . Как предложил, мы собираемся сделать это через XSL, который выглядит более очевидным ответ на проблему (подробно пожалуйста, прочитайте вопрос ниже).

Нам нужно создать XSL, который будет поиск по ключевому слову и сопоставление с узлом имя / значение, имя атрибута / значение и т. д. все в XML.

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

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

У меня проблема с завершением XSL. Мы хотели бы получить некоторую помощь сделай это.

Спасибо.

Привет

Мне нужно добавить функцию в справочную систему продукта. Внешний вид и функциональные возможности почти такие же, как в справке по программному обеспечению для настольных компьютеров, которая появляется при нажатии клавиши F1.

Функция, которую я должен добавить, - это функция поиска, при которой пользователь вводит текст, вызывается Ajax и запрос направляется на сервер, где он составляет ответ в виде XML, который будет содержать список. схем XML. Это было сделано! За исключением.

Позвольте мне сначала поцарапать интерфейс приложения. Таким образом, у вас будет лучшая идея, когда мы будем обсуждать это с техническими деталями.

            _________________________________________________ 
            | 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, и браузер прокручивает поисковое ключевое слово.

Еще одна важная вещь, которую необходимо упомянуть в случае, если вам нужно знать, XML-схема будет напрямую указываться в кадре B. Т.е.

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

Во-первых, давайте предположим, что почти вся начальная работа была выполнена, как поиск, обработка, ссылки на результаты верстки и, щелкая по ним, мы получаем правильную схему в правильном кадре (кадр B).

Проблема заключается в том, что при загрузке XML-схемы в нужный кадр она также должна прокручиваться и выделять первое искомое ключевое слово.

Я не думаю, что выделение будет возможным, поскольку документ представлен в формате XML, и, как я сказал, в кадре B есть прямая ссылка на файл XML. Но, поиск и прокрутка имеет большую вероятность? Да? Нет

Знаете ли вы, как я могу прокрутить до искомого ключевого слова в файле XML?

Спасибо.

P.S .: Если у вас есть какие-либо вопросы, пожалуйста, прокомментируйте.

Ответы [ 5 ]

2 голосов
/ 06 января 2010

Попробуйте использовать XSL, чтобы превратить XML во что-то видимое.

Ответ на комментарий для запроса дополнительной информации:

XSL преобразует XML в HTML. После этого для прокрутки вы можете использовать javascript для прокрутки до места, которое вы хотите.

2 голосов
/ 06 января 2010

Вы не должны загружать непосредственно XML в B-кадре. Отображение XML сильно отличается в зависимости от браузера, например, в Chrome будет отображаться только текстовое содержимое.

Существуют различные возможные способы отображения XML в красивой форме:

  • простейший: отобразить XML в виде текста и предварительно подтвердить его. Вы помещаете свой код в теги и используете, например, google-code-prettify , чтобы получить симпатичную печать.
  • немного сложнее, но гораздо проще делать то, что вы хотите: используйте XSLT . Концепция проста: вы определяете XSL-страницу, которая расскажет, как вы преобразуете свою XML-страницу в HTML-страницу. Я не знаю, как это сделать на стороне клиента, но в Интернете есть множество учебных пособий, и использование xsl может стать еще одним SO вопросом.

Для прокрутки вы можете использовать window.scrollTo

1 голос
/ 06 января 2010

Как уже упоминалось Pulse и Bishiboosh, это было бы невозможно, и способ представления XML сильно варьируется от браузера к браузеру.

Например, пример XML из w3schools отображается следующим образом на Safari : альтернативный текст http://img63.imageshack.us/img63/830/picture1hw.png

Это на Chrome : альтернативный текст http://img9.imageshack.us/img9/9057/picture2kr.png

И наконец Firefox : альтернативный текст http://img109.imageshack.us/img109/8941/picture3hm.png

Вам будет намного лучше, если вы покажете XML самостоятельно.

1 голос
/ 06 января 2010

AFAIK, вы не сможете этого сделать. Вам нужно будет указать точку в вашем документе, где вы можете перейти к. Но в вашем случае вы используете файл XML в качестве источника iframe. XML предназначен только для хранения данных и не содержит никаких атрибутов позиционирования.

0 голосов
/ 16 января 2010

Вы можете использовать xmlverbatim для преобразования вашего XML в HTML с отступом, окрашиванием синтаксиса и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...