Поделиться через


Использование типов контента для задания свойств документа XML

Дата последнего изменения: 5 октября 2009 г.

Применимо к: SharePoint Foundation 2010

Когда Microsoft SharePoint Foundation 2010 вызывает встроенный синтаксический анализатор XML для анализа XML-файлов, этот анализатор использует тип контента документа, чтобы определить, какие свойства документа сопоставлены со столбцами типа контента, и где эти свойства документа хранятся. Таким образом, чтобы SharePoint Foundation мог использовать встроенный синтаксический анализатор XML для XML-файлов, необходимо сделать следующее.

  • Создать тип контента, включающий необходимые сведения для анализа. Для каждого свойства документа, уровень которого требуется повысить или понизить, следует включить определение поля, содержащее имя свойства документа, сопоставленного со столбцом, представленным определением поля, и место, где это свойство документа хранится в документе.

  • Убедиться, что идентификатор типа контента является свойством документа, которое помещается на уровень ниже в документе. Это гарантирует, что встроенный синтаксический анализатор XML сможет идентифицировать правильный тип контента для документа и получить к нему доступ. Дополнительные сведения см. в статье Указание типа контента документа для анализа XML.

Сведения о типе контента для синтаксического анализа XML

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

ПримечаниеПримечание

Элементы Field представляют столбцы, заданные для сайта или списка. Элементы FieldRef представляют ссылки на столбцы, включенные в тип контента. Элемент FieldRef содержит атрибуты столбцов, которые можно переопределять по мере появления столбцов в этом конкретном типе контента, например отображаемое имя столбца, или является ли он скрытым или обязательным в этом типе контента. В эти сведения также включено расположение свойства документа для сопоставления с данным столбцом по мере его появления в типе контента. Это позволяет указывать разные расположения для свойства документа, сопоставляемого со столбцом в разных типах контента.

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

На следующем рисунке показаны действия, которые выполняет синтаксический анализатор при проверке XML-файла в библиотеке документов. SharePoint Foundation вызывает синтаксический анализатор, который просматривает столбец идентификатора типа контента, чтобы определить расположение, в котором этот идентификатор типа контента хранится в документе. Затем синтаксический анализатор просматривает содержимое документа для поиска его типа контента в соответствующем расположении и проверяет тип контента, чтобы определить, какие элементы FieldRef содержат сведения о свойствах документа. Для каждого элемента FieldRef, сопоставленного со свойством документа, синтаксический анализатор ищет это свойство документа в расположении, указанном в соответствующем элементе FieldRef. Если синтаксический анализатор находит свойство документа в указанном расположении, то поднимает его значение на уровень соответствующего столбца.

Когда документ XML впервые загружается в библиотеку документов, встроенный синтаксический анализатор XML должен определить тип контента этого документа, а также связан ли этот тип контента с библиотекой документов. Дополнительные сведения см. в статье Указание типа контента документа для анализа XML.

Распространение свойств XML

Чтобы сопоставить элемент со свойством документа и указать расположение этого свойства в документе, можно изменить некоторые атрибуты элемента Field или FieldRef.

Для начала элемент Field или FieldRef должен содержать атрибут ID, который задает идентификатор столбца в библиотеке документов. Например:

<FieldRef

ID="{4B1BF6C6-4F39-45ac-ACD5-16FE7A214E5E}"

Name="EmployeeID”/>

Далее следует добавить в элемент Field или FieldRef дополнительные атрибуты, которые задают расположение свойства документа в документе. Свойства документа могут храниться в следующих расположениях:

  • XML-содержимое документа;

  • команды обработки документа.

Атрибуты, добавляемые в элемент Field или FieldRef для задания расположения свойств, зависят от того, сохраняются ли эти свойства как XML-содержимое или как команды обработки. Эти атрибуты взаимоисключающие; если добавляется атрибут, задающий расположение в XML-контенте, то нельзя добавить атрибуты, задающие расположение в командах обработки.

Для изменения схемы определения поля столбца программными средствами используется объект SPField.SchemaXML.

Задание свойств в XML-содержимом документа

Если свойство документа сохраняется в документе как XML-содержимое, то указывается выражение XPath, представляющее расположение свойства в документе. Следует добавить атрибут Node в элемент Field или FieldRef и установить в качестве его значения выражение XPath. Например:

<FieldRef

ID="{4B1BF6C6-4F39-45ac-ACD5-16FE7A214E5E}"

Name="EmployeeID"

node="/my:myFields/my:employee"/>

Коллекции значений свойств документа

Если указано выражение XPath, возвращающее коллекцию значений, можно также включить в элемент Field или FieldRef атрибут агрегации. Атрибут агрегации задает действие, которое следует выполнить с возвращаемым набором значений. Это действие может быть либо статистической функцией, либо указанием конкретного элемента в коллекции.

Возможны следующие значения.

  • sum

  • count

  • average

  • min

  • max

  • merge

  • plaintext   Преобразует текстовый контент сайта в сплошной текст.

  • first   Применяет повышение или понижение уровня свойства к первому элементу в коллекции.

  • last   Применяет повышение или понижение уровня свойства к последнему элементу в коллекции.

Например:

<FieldRef

ID="{4B1BF6C6-4F39-45ac-ACD5-16FE7A214E5E}"

Name="TotalToExpense”

node="/my:myFields/my:expense"

aggregation="sum"/>

Задание свойств в командах обработки документа

Поскольку команды обработки могут содержать не только XML-данные, выражений XPath недостаточно для идентификации свойств документа, хранящихся в командах обработки. В элемент Field или FieldRef следует добавить пару атрибутов, задающих команду обработки и ее атрибут, который требуется использовать в качестве свойства документа.

  • Добавьте атрибут PITarget для указания команды обработки, в которой хранится свойство документа.

  • Добавьте атрибут PIAttribute для указания атрибута команды обработки, который следует использовать в качестве свойства документа.

Например:

<FieldRef

ID="{4B1BF6C6-4F39-45ac-ACD5-16FE7A214E5E}"

Name="columnName"

PITarget="mydocumenttype"

PIAttribute="propertyAttribute"/>

Эти атрибуты указывают синтаксическому анализатору искать значение свойства документа в следующей команде обработки и ее атрибуте:

<?mydocumenttype propertyAttribute="value"?>

Можно также добавить другую пару атрибутов, PrimaryPITarget и PrimaryPIAttribute. Эта пара атрибутов является дополнительной. Аналогично паре атрибутов PITarget и PIAttribute, эта пара работает вместе для определения расположения свойства документа. Однако если эта пара указана, то встроенный синтаксический анализатор XML сначала ищет свойство документа в расположении, заданном этой парой, и игнорирует атрибуты PITarget и PIAttribute. Синтаксический анализатор ищет свойство документа в расположении, заданном парой атрибутов PITarget и PIAttribute только в том случае, если в расположении, указанном парой атрибутов PrimaryPITarget и PrimaryPIAttribute, свойство документа не найдено (возвращено пустое значение).

Если указываются атрибуты PrimaryPITarget и PrimaryPIAttribute, необходимо также указать атрибуты PITarget и PIAttribute. Синтаксический анализатор использует атрибуты PrimaryPITarget и PrimaryPIAttribute, только если атрибут команды обработки, указанный парой PITarget и PIAttribute, не существует в документе, но не в случае, когда этот атрибут существует и является пустым.

См. также

Концепции

Повышение и понижение уровня свойства XML-документа

Процесс синтаксического анализа XML

Определение типа контента документа для синтаксического разбора XML-документа

Указание типа контента документа для анализа XML