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


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

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

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

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

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

Определение типа контента по идентификатору типа контента

Средство синтаксического анализа ищет инструкцию по обработке, в которой определяется тип контента документа по идентификатору типа контента. Местоположение этой инструкции по обработке включено в определение шаблона столбца идентификатора типа контента. Инструкция по обработке называется MicrosoftWindowsSharePointServices и содержит атрибут с именем ContentTypeID, который представляет идентификатор типа контента документа.

<FieldRef

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

Name="Content Type ID"

PITarget="MicrosoftWindowsSharePointServices"

PIAttribute="ContentTypeID"/>

По умолчанию, все шаблоны списков библиотеки включают столбец, представляющий идентификатор типа контента.

Добавьте эту инструкцию по обработке к вашему XML-документу. Назначьте атрибуту ContentTypeID значение идентификатора типа контента документа.

Например:

<?MicrosoftWindowsSharePointServices ContentTypeID=”0x010101003D7907A1908011d082BD08005AA74F5E00A557E10DA69DBF4C8BE1E21071B08163”/>

В следующих ситуациях средство синтаксического анализа не может определить тип контента:

  • В документе отсутствует инструкция по обработке MicrosoftWindowsSharePointServices.

  • В инструкции по обработке не определен тип контента.

  • Указанный тип контента не связан с библиотекой документов.

  • Никакой родительский или дочерний элемент указанного типа контента не связан с библиотекой документов.

Если средство синтаксического анализа не может определить тип контента по соответствующему идентификатору, оно выполняет вторую проверку, описанную в следующем разделе.

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

Средство синтаксического анализа ищет идентификатор типа контента во всех местоположениях документов, которые указываются в определении поля для столбца идентификатора типа контента в библиотеке документов. Столбец идентификатора типа контента можно сопоставить любой инструкции по обработке или выражению XPath по вашему выбору. Однако рекомендуется придерживаться сопоставления по умолчанию, включенного в определение шаблона столбца идентификатора типа контента, чтобы свести к минимуму вероятность столкнуться с такими типами контента, которые определяют для данного свойства документа иное местоположение, чем библиотека документов, с которой они связаны. Такая ситуация приведет к тому, что XML-анализатор будет искать идентификатор типа контента в неверном местоположении.

Определение типа контента по шаблону документа

Если средство синтаксического анализа не может определить подходящий тип контента для документа на основе идентификатора типа контента, оно ищет инструкцию по обработке, содержащую URL-адрес шаблона документа, по которому сделан документ. Инструкция по обработке называется mso-infoPathSolution, она содержит атрибут под названием href, представляющий URL-адрес шаблона документа.

<FieldRef

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

Name="DocumentTemplate"

PITarget="mso-infoPathSolution"

PIAttribute="href"/>

Этот столбец включен в тип контента "Форма" и добавляется к библиотеке во всех случаях, когда этот тип контента добавляется к библиотеке.

Таким образом, вместо того, чтобы включать идентификатор типа контента, можно добавить эту инструкцию по обработке к XML-документу. Назначьте атрибуту href URI-код шаблона, на котором основан данный документ.

Например:

<?mso-infoPathSolution href=”http://www.adventureworks.com/templates/myTemplate.XML”?>

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

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

Средство синтаксического анализа ищет URL-адрес шаблона документа во всех местоположениях документов, которые указываются в определении поля для столбца шаблона документа в библиотеке документов. Столбец шаблона документа можно сопоставить любой инструкции по обработке или выражению XPath по вашему выбору. Однако рекомендуется придерживаться сопоставления по умолчанию, включенного в определение шаблона столбца шаблона документа. Это сводит к минимуму вероятность столкнуться с такими типами контента, которые определяют для данного свойства документа иное местоположение, чем библиотека документов, с которой они связаны. Такая ситуация может привести к тому, что XML-анализатор будет искать шаблон документа в неверном местоположении.

См. также

Концепции

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

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

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

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