Используя ключевое слово Content при создании таблицы с столбцом XML из коллекции XML Schema

StackOverflow https://stackoverflow.com/questions/5416382

Вопрос

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

Согласно видеоурокбированию content хранит данные xml в фрагментах .

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

Я хотел бы знать, как фрагменты создаются и управляются, и как и как их можно запрашивать индивидуально.Кроме того, как фрагменты коррелируют.Далее, когда я вправу коллекцию схемы XML, какое влияние.

Нет правильного решения

Другие советы

На самом деле я думаю sqlserver 2005 xml довольно хорошо документирован.
Содержание - это значение по умолчанию и позволяет любому действительному XML. Документ более конкретнее и означает, что данные XML-данных, которые вы можете хранить, разрешено иметь только один узел верхнего уровня.

Создание:

CREATE TABLE XmlCatalog ( 
   ID INT PRIMARY KEY, 
   Document XML(CONTENT myCollection))
.

Вставка:

INSERT INTO XmlCatalog VALUES (2, 
'<doc id="123">
    <sections>
   <section num="1"><title>XML Schema</title></section>
   <section num="3"><title>Benefits</title></section>
   <section num="4"><title>Features</title></section>
    </sections>
</doc>')
.

Выбрать:

SELECT xCol.query('/doc[@id = 123]//section')   
FROM XmlCatalog   
WHERE  xCol.exist ('/doc[@id = 123]') = 1
.

... и так далее. Язык запроса превышает более или менее в подмножестве XPate 1.0.

Если вы изменяете XSD, он проверяется на вставках и обновлениях и сохраняется в XML каждого элемента. Насколько я понимаю, док также разрешено добавлять несколько схем для одного столбца, чтобы записи могли ссылаться на разные схемы.

Редактировать:

Хорошо, после прочтения конкретных частей документации, я думаю, я понимаю, какова ваша проблема. Ссылка не очень понятна в этой точке, но, насколько я понимаю, только записи с одним узлом верхнего уровня могут быть связаны с XSD Schemas.
Благодаря тому, что XSD-схемы требуют единого узла верхнего уровня, определяющего используемый файл XSD, его невозможно проверить фрагменты, содержащие более одного элемента верхнего уровня. Я не пробовал, но я думаю, что это не может быть сделано.
Однако, похоже, это, кажется, действует, чтобы определить столбец контента, изменить XSD и хранить оба, XML с одним узлом верхнего уровня, ссылающийся на XSD, а также XML-фрагменты, которые будут проверены только для ствола помощи. Фрагменты могут быть доступны с использованием выставки языка запросов XPath в выборе выше.
Я не могу вам больше рассказать о последствиях производительности. Ссылка упоминается, что XSDS хранится встроенным, поэтому потребуется дополнительное пространство в рамках БД. Запросы XPath должны быть выполнены тоже. Несмотря на то, что XPath обычно довольно быстро, я думаю, это может уменьшить то, что он должен быть выполнен на каждой строке, чтобы получить результат. Чтобы убедиться, что я думаю, что вы должны проверить план выполнения для вашего конкретного запроса в зависимости от размера и сложности хранимого XML, а также выражения XPath.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top