Используя SQL Server XQuery 2005 выбирают все узлы с определенным значением атрибута, или с тем отсутствием атрибута

Вы можете попробовать следующее:

$.ajax({
  url: "test.html",
  cache: false,
  success: function(html){
    $("#results").append(html);
  }
});

Этот код добавит содержимое файла test.html в элемент #results

. Вы можете найти дополнительную информацию на странице jQuery website .

Обновление:

Используйте этот код для отправки данных POST и вывода.

var menuId = $("ul.nav").first().attr("id");
var request = $.ajax({
  url: "script.php",
  type: "POST",
  data: {id : menuId},
  dataType: "html"
});

request.done(function(msg) {
  $("#log").html( msg );
});

request.fail(function(jqXHR, textStatus) {
  alert( "Request failed: " + textStatus );
});

7
задан jh314 29 July 2013 в 22:29
поделиться

2 ответа

Не ясно для меня из Вашего примера, чего Вы на самом деле пытаетесь достигнуть. Вы хотите возвратить новый XML со всеми узлами, разделенными кроме тех, которые выполняют условие? Если да, то это похоже на задание для XSLT, преобразовывают, который я не думаю, что это встроено в 2005 MSSQL (может быть добавлен как UDF: http://www.topxml.com/rbnews/SQLXML/re-23872_Performing-XSLT-Transforms-on-XML-Data-Stored-in-SQL-Server-2005.aspx).

Если просто необходимо возвратить список узлов затем, можно использовать это выражение:

//Book[not(@ID) or @ID = 5]

но я получаю впечатление, что это не то, в чем Вы нуждаетесь. Помогло бы, можно ли обеспечить более ясный пример.

Править: Этот пример действительно более ясен. Лучшее, которое я мог найти, является этим:

SET @Xml.modify('delete(//*[@category!=1])')
SELECT @Xml

Идея состоит в том, чтобы удалить из XML все узлы, в которых Вы не нуждаетесь, таким образом, Вы остаетесь с исходной структурой и необходимыми узлами. Я протестировал с Вашими двумя примерами, и это привело к требуемому результату.

Однако измените, имеет некоторые ограничения - кажется, что Вы не можете использовать его в избранном операторе, это должно изменить данные на месте. Если необходимо возвратить такие данные с выбором, Вы могли бы использовать временную таблицу, в которой можно скопировать исходные данные и затем обновить ту таблицу. Что-то вроде этого:

INSERT INTO #temp VALUES(@Xml)
UPDATE #temp SET data.modify('delete(//*[@category!=2])')

Надежда, которая помогает.

4
ответ дан 7 December 2019 в 12:27
поделиться

Вопрос не действительно ясен, но является этим, что Вы ищете?

DECLARE @Xml AS XML
        SET @Xml =
        N'
        <Books>
                <Book ID="1">Book1</Book>
                <Book ID="2">Book2</Book>
                <Book ID="3">Book3</Book>
                <Book>Book4</Book>
                <Book ID="5">Book5</Book>
                <Book ID="6">Book6</Book>
                <Book>Book7</Book>
                <Book ID="8">Book8</Book>
        </Books>
        '
DECLARE @BookID AS INT
SET @BookID = 5
DECLARE @Result AS XML

SET @result = (SELECT @xml.query('//Book[not(@ID) or @ID = sql:variable("@BookID")]'))
SELECT @result
1
ответ дан 7 December 2019 в 12:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: