isXPS.exe (средство проверки соответствия isXPS)

Средство проверки соответствия isXPS (isXPS.exe) тестирует соответствие файла спецификациям XML Paper Specification (XPS) и Open Packaging Conventions (OPC).

Спецификации XPS и OPC можно загрузить на веб-сайте XPS: Specification and License Downloads.

Функции

  • Создание подробного отчета о выполняемом тесте.

  • Возможность тестирования нескольких файлов в пакетном задании.

  • Описание всех ошибок, найденных в каждом проверенном файле.

  • Интеллектуальные рекомендации по правилам, которые могли быть нарушены каждой найденной ошибкой.

  • Поддержка параметров пользовательского теста; например, можно выполнять тест только на соответствие спецификации OPC.

Синтаксис

isXPS /f=file_name_or_pattern [options]
ПримечаниеПримечание

Во всех параметрах можно использовать дефис ("-") вместо косой черты ("/") и двоеточие (":") вместо знака равенства ("=").

Переключатели

Параметр

Описание

/?

Отображение справки по данному средству в окне cmd.exe. При использовании этого параметра тесты не выполняются. (В результате указания этого параметра средство сообщает об ошибке. Это делается для того, чтобы предотвратить случайные сообщения об успехе при выполнении тестов в тестовой инфраструктуре пакета Windows Driver Kit.)

/BadDir=путь

Каталог, в который копируются или перемещаются файлы, не прошедшие тест на соответствие. Файлы перемещаются при использовании параметра /DelBad. Если этот параметр не используется, файлы копируются.

/DelBad

Указывает, что файлы, не прошедшие тест на соответствие, удаляются из своего текущего каталога. (При использовании вместе с параметром /BadDir файлы перемещаются в каталог, указанный в этом параметре. Если параметр /BadDir не используется, файлы удаляются.)

/device="строка_устройства"

Указывает пользовательскую строку устройства, которая используется со средством ведения журнала технологий тестирования Windows (WTT), входящим в состав пакета Windows Driver Kit. (См. параметр /logger.)

/doc=XSD-файл_документа

Указывает пользовательский файл XML Schema Definition (XSD) для проверки частей <DocumentStructure> файла XPS. Рекомендуется не указывать пользовательский файл, чтобы средство могло использовать встроенный файл XSD по умолчанию.

/f

Обязательный. Указывает файл или файлы для тестирования. В строке шаблон_или_имя_файла можно использовать обычные подстановочные знаки командной строки "?" и "*". Если путь или имя файла содержит пробелы, заключите весь путь или имя файла в кавычки. Расширением файлов XPS обычно является "xps", но это необязательно.

/logfile=имя_файла

Указывает путь и имя файла журнала. Если для параметра /logger не установлено значение File, этот параметр пропускается. Если параметр /logfile не используется, а для параметра /logger установлено значение File, то в текущем каталоге создается файл журнала с именем isXPSLog.txt. Если используется параметр /logsplit и для него установлено значение больше 0, то файл журнала, указанный с помощью параметра /logfile, будет содержать только тест Setup. Другие тесты будут содержаться в одном или нескольких других файлах журнала. Дополнительные сведения см. в описании параметров /logprefix и /logsplit ниже в этой таблице и в описании всех тестов далее в данном разделе.

/logger=тип_журнала

Указывает тип создаваемых выходных данных. Ниже перечислены значения, которые можно задавать для этого параметра.

  • Console (по умолчанию) — выходные данные выводятся в окне cmd.exe.

  • File — если с помощью параметра /logfile не указан другой путь или имя файла, то выходные данные сохраняются в текстовом файле с именем isXPSLog.txt в текущем каталоге.

  • WTT — выходные данные сохраняются в файле журнала технологий тестирования Windows с именем isXPSLog.wtl в текущем каталоге. Этот параметр можно использовать только при тестировании в тестовой инфраструктуре пакета Windows Driver Kit.)

/logprefix=префикс

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

Если этот параметр используется без явного указания параметра /logsplit (или с явным указанием /logsplit=0), то при выполнении тестов средство предполагает, что /logsplit=1 (см. параметр /logsplit далее в этой таблице).

/logsplit=число

Указывает, что журнал разбивается на несколько файлов, и задает количество этих файлов.

Если этот параметр отсутствует или он указывается со значением 0, используемым по умолчанию, то разбиение не производится (за исключением случаев, когда указывается параметр /logprefix; в этом случае разбиение выполняется и средство предполагает, что /logsplit=1, даже если явно указывается параметр /logsplit=0).

Если этому значению присваивается значение 1, то в файле isXPSlog.txt (или любом другом файле, указанном с помощью параметра /logfile) сохраняются выходные данные теста Setup. Результаты каждого теста файла (см. подраздел "II. Тест <имя_файла>" далее в этом разделе) будут содержаться в отдельном файле журнала с именем _имя_файла.log, где имя_файла — это имя тестируемого файла XPS. Если используется параметр /logprefix, то перед знаком подчеркивания добавляется префикс.

Если для этого параметра указывается значение больше 1, это значение указывает количество тестов файлов, помещаемых в каждый файл журнала. В файле isXPSlog.txt (или любом другом файле, указанном с помощью параметра /logfile) сохраняются только выходные данные теста Setup. Результаты остальных тестов помещаются в отдельные файлы журнала с именем _NtoM.log, где NtoM указывает диапазон файлов, включенных в файл журнала. Если, например, шаблону, заданному в параметре /f, соответствует пять файлов и для параметра /logsplit указано значение 2, средство создаст файлы с именами _1to2.log, _3to4.log и _5to5.log. Если используется параметр /logprefix, то перед знаком подчеркивания добавляется префикс.

Если для параметра /logger не установлено значение File, этот параметр пропускается. См. описание всех тестов далее в этом разделе.

/NoInterleave

При использовании этого параметра блокируется тесты чередования. См. описание всех тестов далее в этом разделе.

/OnlyOPC

Указывает, что входной файл проверяется только на соответствие спецификации OPC. Соответствие спецификации XPS не проверяется. Выполняется тестирование внутренней разметки, относящейся к спецификации OPC. При использовании этого параметра блокируется выполнение теста структуры пакета XPS. См. описание всех тестов далее в этом разделе.

/OnlyPkg

Указывает, что тестирование частей файла выполняется с целью проверки того, что они правильно сохранены в пакете, их содержимое является допустимым и связи между ними установлены правильно. Тестирование внутренней разметки частей, в том числе относящихся к спецификации OPC, не выполняется. При использовании этого параметра блокируется выполнение теста разметки Relationships, который является частью теста проверки на соответствие OPC. Также блокируется выполнение тестов последовательности фиксированных документов, фиксированных документов и фиксированных страниц, являющихся частью теста структуры пакета XPS. И наконец, блокируется выполнение тестов проверки независимых ресурсов. См. описание всех тестов далее в этом разделе.

/r=XSD-файл__ресурса

Указывает пользовательский файл XML Schema Definition (XSD) для проверки частей <ResourceDictionary> файла XPS. Рекомендуется не указывать пользовательский файл, чтобы средство могло использовать встроенный файл XSD по умолчанию.

/s

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

/SkipResParts

Указывает, что независимые ресурсы (шрифты и изображения) не тестируются. При использовании этого параметра блокируется выполнение тестов проверки независимых ресурсов. См. описание всех тестов далее в этом разделе.

/x=XSD-файл__S0

Указывает пользовательский файл XML Schema Definition (XSD) для проверки частей <FixedDocumentSequence>, <FixedDocument> и <FixedPage> файла XPS. Рекомендуется не указывать пользовательский файл, чтобы средство могло использовать встроенный файл XSD по умолчанию.

Интерпретация данных файла журнала

Выходные данные представляют собой последовательности вложенных результатов тестов. Начало каждого теста помечается строкой "+Start Test", а конец каждого теста помечается строкой "-End Test". Корневым тестом называется полный набор тестов для всех файлов, указанных с помощью параметра /f. Например, если в параметре /f указано "s*.xps", то корневой тест будет выглядеть следующим образом:

Beginning Test ******************************************
+Start Test: isXPS s*.xps

       … matter omitted … 

-End Test: isXPS s*.xps Result: Fail
*********Log Rollup**************************************
TestName: isXPS s*.xps
PassRate: 77% Pass: 63 Warn: 0 Fail: 18 Block: 0
*********************************************************
Result: Fail

Обратите внимание, что в строке "-End Test" показан общий результат. При сбое любого файла тест в целом помечается как "Fail".

Сводные данные о тесте в целом приводятся в разделе "Log Rollup". Значение "PassRate" указывает процент успешно выполненных тестов. " Значения Pass, Warning и Fail означают количество успешно выполненных, выполненных с предупреждением и неудачных тестов соответственно. ("Block" — это особое состояние сбоя, которое не используется в текущей версии средства).

Общий результат повторяется в последней строке.

В корневом тесте существует два вида дочерних тестов:

  • Setup — в каждом журнале имеется ровно один тест Setup.

  • <имя_файла> — тест для каждого файла, совпадающего с шаблоном, который указан посредством параметра /f.

Тест Setup

В тесте Setup проверяется возможность запуска средства, синтаксического анализа командной строки, а также загрузки и компиляции файлов XSD. Он содержит пять видов дочерних тестов:

  1. Инициализация средства ведения журнала — в журнале присутствует ровно один такой тест. Он всегда помечается как "Pass", поскольку если этот тест завершается сбоем, то журнал просто не создается.

  2. Синтаксический анализ командной строки — в журнале присутствует ровно один такой тест. Если он завершается неудачей, то остальные сведения не регистрируются, а на консоль выводится справка по синтаксису средства.

  3. Загрузка и регистрация пользовательских XSD-файлов. В журнале присутствует от нуля до трех таких тестов, по одному для каждого из следующих параметров: /doc, /r и**/x**. После загрузки файла XSD средство выполняет его регистрацию. Если пространство имен, связанное с XSD, применяется к нескольким частям разметки XPS, оно будет зарегистрировано отдельно для каждой части, к которой применяется. Например, пространство имен <DocumentStructure> XSD будет зарегистрировано для частей <DocumentStructure> и <StoryFragments>. См. пример ниже.

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

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

  4. Загрузка и регистрация встроенных XSD-файлов. Пока не удастся загрузить пользовательский файл XSD, в журнале будет присутствует по крайней мере девять таких тестов. Также добавляется один такой тест для каждого неиспользуемого параметра /doc, /r и /x. Замечания, приведенные в предыдущем пункте о регистрации пользовательских файлов XSDs, применяются также и ко встроенным файлам XSDs.

  5. Компиляция схемы XSD — если все файлы XSD загружены, выполняется один тест компиляции. Он завершается неудачей, если не удается скомпилировать хотя бы один из файлов XSD. Если не удается загрузить хотя бы один файл XSD, данный тест не выполняется.

Ниже приведен пример выходных данных теста Setup. В данном примере используется параметр /x для указания альтернативной схемы S0.

+Start Test: Setup
  Pass: Logger Initialized successfully
  Pass: Command line parameters parsed successfully
  Info: Reading stream for S0 schema from .\alternatexsds\s0schema.xsd
  Info: Registering Schema for namespace https://schemas.microsoft.com/xps/2005/06 
    and ContentType application/vnd.ms-package.xps-fixedpage+xml from provided stream
  Info: Registering Schema for namespace https://schemas.microsoft.com/xps/2005/06 
    and ContentType application/vnd.ms-package.xps-fixeddocument+xml from provided stream
  Info: Registering Schema for namespace https://schemas.microsoft.com/xps/2005/06 
    and ContentType application/vnd.ms-package.xps-fixeddocumentsequence+xml from provided stream
  Info: Registering Schema for namespace https://schemas.microsoft.com/xps/2005/06 
    and ContentType application/vnd.ms-package.xps-resourcedictionary+xml from provided stream
  Info: No filename specified for Resource Dictionary Key schema. Using default
  Info: No filename specified for Document Structure schema. Using default
  Info: Loading default Schema for Resource Dictionary key. (rdkey.xsd)
  Info: Registering Schema for namespace https://schemas.microsoft.com/xps/2005/06/resourcedictionary-key 
    and ContentType application/vnd.ms-package.xps-fixedpage+xml from provided stream
  Info: Registering Schema for namespace https://schemas.microsoft.com/xps/2005/06/resourcedictionary-key 
    and ContentType application/vnd.ms-package.xps-fixeddocument+xml from provided stream
  Info: Registering Schema for namespace https://schemas.microsoft.com/xps/2005/06/resourcedictionary-key 
    and ContentType application/vnd.ms-package.xps-fixeddocumentsequence+xml from provided stream
  Info: Registering Schema for namespace https://schemas.microsoft.com/xps/2005/06/resourcedictionary-key 
    and ContentType application/vnd.ms-package.xps-resourcedictionary+xml from provided stream
  Info: Loading default Schema for Document structure (DocStructure.xsd)
  Info: Registering Schema for namespace https://schemas.microsoft.com/xps/2005/06/documentstructure 
    and ContentType application/vnd.ms-package.xps-documentstructure+xml from provided stream
  Info: Registering Schema for namespace https://schemas.microsoft.com/xps/2005/06/documentstructure 
    and ContentType application/vnd.ms-package.xps-storyfragments+xml from provided stream
  Info: Loading default Schema for Relationship markup (Relationships.xsd)
  Info: Registering Schema for namespace https://schemas.openxmlformats.org/package/2006/relationships 
    and ContentType application/vnd.openxmlformats-package.relationships+xml from provided stream
  Info: Loading default Schema for Package properties (CoreProperties.xsd)
  Info: Registering Schema for namespace https://schemas.openxmlformats.org/package/2006/metadata/core-properties 
    and ContentType application/vnd.openxmlformats-package.core-properties+xml from provided stream
  Info: Loading default Dublin Schema for Package properties (dc.xsd)
  Info: Registering Schema for namespace http://purl.org/dc/elements/1.1/ 
    and ContentType application/vnd.openxmlformats-package.core-properties+xml 
    from provided stream
  Info: Loading default Dublin terms Schema for Package properties (dcterms.xsd)
  Info: Registering Schema for namespace http://purl.org/dc/terms/ 
    and ContentType application/vnd.openxmlformats-package.core-properties+xml 
    from provided stream
  Info: Loading default Dublin type Schema for Package properties (dcmitype.xsd)
  Info: Registering Schema for namespace http://purl.org/dc/dcmitype/ 
    and ContentType application/vnd.openxmlformats-package.core-properties+xml 
    from provided stream
  Info: Loading the OPC Digital Signature Schema (OPC_DigSig.xsd)
  Info: Registering Schema for namespace https://schemas.openxmlformats.org/package/2006/digital-signature 
    and ContentType application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml 
    from provided stream
  Info: Loading the XML Digital Signature Core Schema (xmldsig-core-schema.xsd)
  Info: Registering Schema for namespace http://www.w3.org/2000/09/xmldsig# 
    and ContentType application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml 
    from provided stream
  Info: Loading default Schema for Digital Signature Definitions (SignatureDefinitions.xsd)
  Info: Registering Schema for namespace https://schemas.microsoft.com/xps/2005/06/signature-definitions 
    and ContentType CustomSignatureDefinitionTag from provided stream
  Info: Loading default Schema for the Discard Control part (DiscardControl.xsd)
  Info: Registering Schema for namespace https://schemas.microsoft.com/xps/2005/06/discard-control 
    and ContentType application/vnd.ms-package.xps-discard-control+xml from provided stream
  Info: Compiling schemas
-End Test: Setup Result: Pass

Сведения о схемах Dublin, на которые имеются ссылки в данном примере, см. на веб-узле организации The Dublin Core Metadata Initiative.

Тест <имя_файла>

Каждый тест отдельного файла состоит из следующих дочерних тестов.

  • Тест чередования.

  • Проверка независимых ресурсов.

  • Тест на соответствие OPC.

  • Тест структуры пакета XPS.

Тест чередования

Средство сообщает, выполняется ли в файле чередование и, если оно выполняется, не содержит ли оно ошибок (если используется параметр /NoInterleave, данный тест не выполняется). Имеется два дочерних теста.

  1. Тест сбора фрагментов — средство собирает все встроенные фрагменты файла. Сюда входят все файлы шрифтов и изображений, файлы связей и все файлы *.fpage, *.fdoc, *.fdseq и *.frag. Ниже приведен пример записи журнала для этого теста. Пакет XPS тестируется как единый фиксированный документ, содержащий одну фиксированную страницу, один шрифт и одно изображение.

    +Start Test: Collecting pieces from .\MyFile.xps
      Info: _rels/.rels, collected
      Info: Documents/FixedDocument_1.fdoc, collected
      Info: Pages/_rels/FixedPage_1.fpage.rels, collected
      Info: Pages/FixedPage_1.fpage, collected
      Info: Resources/Fonts/33c063c8-1259-4322-acc8-8fc1964cc064.ODTTF, collected
      Info: Resources/Images/Image_1.png, collected
      Info: [Content_Types].xml, collected
      Info: FixedDocumentSequence.fdseq, collected
    -End Test: Collecting pieces from .\MyFile.xps Result: Pass
    
  2. Тест порядка частей — данный тест проверяет совпадение порядка частей файла с порядком в центральном каталоге Zip, указанным в заголовке локального файла Zip. Если порядок отличается, тест выдает значение "Warn", поскольку оболочка Microsoft Windows XP не разрешает редактирование ZIP-файлов с разным порядком.

Тест проверки независимых ресурсов

Во время тестов проверки независимых ресурсов во всем файле выполняется поиск частей XPS, которые указывают на типы содержимого шрифтов или изображений и проверяется правильность этих типов. Например, проверяется, что ресурс, на который указывает тип контента "шрифт", действительно является шрифтом. (Эти тесты не выполняются, если используется переключатель /SkipResParts или /OnlyPkg.)

Тест на соответствие OPC

Во время теста проверки на соответствие OPC проверяется соответствие файла XPS спецификации OPC.

Он имеет два дочерних теста.

  1. Тест разметки Relationships — средство проверяет каждую часть <Relationships> пакета за исключением частей Relationships из корня пакета. Дочерний тест выполняется для каждой такой части. Предположим, например, что имеется часть <Relationships>, называемая 1.fpage.rels:

    <?xml version="1.0" encoding="utf-8"?>
    <Relationships xmlns="https://schemas.openxmlformats.org/package/2006/relationships">
      <Relationship 
        Type="https://schemas.microsoft.com/xps/2005/06/required-resource" 
        Target="../../../Resources/7c1549d5-8780-4db6-8831-19bfe6d8f88d.ttf" 
        Id="Rf50d8565978247c5" />
      <Relationship 
        Type="https://schemas.microsoft.com/xps/2005/06/required-resource" 
        Target="../../../Resources/2884eaa8-9d38-4506-adf8-977a24ff9faa.jpg" 
        Id="R3643335530274b5f" />
    </Relationships>
    

    Средство возвращает следующую запись журнала.

    +Start Test: /Documents/1/Pages/_rels/1.fpage.rels Markup
      Info: Validating Markup of Part /Documents/1/Pages/_rels/1.fpage.rels 
        using target namespace "https://schemas.openxmlformats.org/package/2006/relationships"
      Pass: Markup of Part is Compliant according to the XSD supplied
    -End Test: /Documents/1/Pages/_rels/1.fpage.rels Markup Result: Pass
    

    Если используется параметр /OnlyPkg, в записях журнала для теста разметки Relationships указывается лишь предупреждение о том, что проверка не выполнялась.

  2. Тест разметки части Relationships пакета — средство проверяет часть <Relationships> в корне пакета XML Paper Specification (XPS) (если таковая имеется). Предположим, что имеется часть <Relationships>, называемая .rels.

    <?xml version="1.0" encoding="utf-8"?>
    <Relationships xmlns="https://schemas.openxmlformats.org/package/2006/relationships">
      <Relationship Type="https://schemas.microsoft.com/xps/2005/06/fixedrepresentation"
        Target="/FixedDocumentSequence.fdseq" Id="Ra1bd31ccb7f04267" />
      <Relationship 
        Type="https://schemas.openxmlformats.org/package/2006/relationships/digital-signature/origin"
        Target="/package/services/digital-signature/origin.psdsor" Id="R290472945f4248d7" />
    </Relationships>
    

    Средство возвращает следующую запись журнала.

    Info: Found a https://schemas.microsoft.com/xps/2005/06/fixedrepresentation 
      relationship, validating...
    Pass: Valid Relationship to /FixedDocumentSequence.fdseq from a PackageRoot part. 
      RelationshipType: https://schemas.microsoft.com/xps/2005/06/fixedrepresentation
    Info: Found a https://schemas.openxmlformats.org/package/2006/relationships/digital-signature/origin
      relationship, validating...
    Info: Digital Signature Origin part /package/services/digital-signature/origin.psdsor 
      found, validating...
    
        … matter omitted … 
    
    Pass: Valid Relationship to /package/services/digital-signature/origin.psdsor 
      from a PackageRoot part. RelationshipType: 
      https://schemas.openxmlformats.org/package/2006/relationships/digital-signature/origin
    

    Если часть Relationships корня связана с объектом, содержащем внутреннюю разметку, например частью <DigitalSignature>, проверка данной части <Relationship> будет включать дочерний тест проверки разметки целевого объекта. Последний текст также может иметь дочерние тесты. В предыдущем примере тест "Digital Signature Origin part" вместо строки "… matter omitted …" содержит следующую запись дерева тестов:

    +Start Test: Digital Signature Valdiation
      Info: Found a https://schemas.openxmlformats.org/package/2006/relationships/digital-signature/signature 
        relationship, validating...
      Info: Found Digital Signature part 
        /package/services/digital-signature/xml-signature/c613c04b58cb4d619c92bab230c4b0c6.psdsxs, 
        validating...
      +Start Test: /package/services/digital-signature/xml-signature/c613c04b58cb4d619c92bab230c4b0c6.psdsxs Markup
        Info: Validating Markup of Part 
          /package/services/digital-signature/xml-signature/c613c04b58cb4d619c92bab230c4b0c6.psdsxs 
          using target namespace "http://www.w3.org/2000/09/xmldsig#"
        Pass: Markup of Part is Compliant according to the XSD supplied
      -End Test: /package/services/digital-signature/xml-signature/c613c04b58cb4d619c92bab230c4b0c6.psdsxs 
        Markup Result: Pass
      Info: Found a https://schemas.openxmlformats.org/package/2006/relationships/digital-signature/certificate
        relationship, validating...
      Pass: Valid Relationship to 
        /package/services/digital-signature/certificate/715364A10002007DBA0C.cer from a
        application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml part. 
        RelationshipType: https://schemas.openxmlformats.org/package/2006/relationships/digital-signature/certificate
      Pass: Valid Relationship to 
        /package/services/digital-signature/xml-signature/c613c04b58cb4d619c92bab230c4b0c6.psdsxs from a 
        application/vnd.openxmlformats-package.digital-signature-origin part. 
        RelationshipType: https://schemas.openxmlformats.org/package/2006/relationships/digital-signature/signature
    -End Test: Digital Signature Valdiation Result: Pass
    

Тест структуры пакета XPS

Тест структуры пакета XPS выполняет рекурсивный обход дерева пакета XPS. При этом проверяется разметка каждой части и наличие части <Relationship> для каждого ресурса, на который имеется ссылка в разметке. (Если используется /OnlyOPC, данный тест не выполняется.)

В состав этого теста входят следующие дочерние тесты.

  1. Тест последовательности фиксированных документов — проверяется разметка <FixedDocumentSequence> в файле *.fdseq. В следующем примере показана запись журнала после успешного выполнения этого теста.

    +Start Test: /FixedDocumentSequence.fdseq Markup
      Info: Validating Markup of Part /FixedDocumentSequence.fdseq using 
        target namespace "https://schemas.microsoft.com/xps/2005/06"
      Pass: Markup of Part is Compliant according to the XSD supplied
    -End Test: /FixedDocumentSequence.fdseq Markup Result: Pass
    

    В следующем примере показана запись журнала при сбое теста, который произошел из-за того, что производитель XPS ошибочно добавил текст между открывающим и закрывающим тегами <FixedDocumentSequence>.

    +Start Test: /FixedDocumentSequence.fdseq Markup
      Info: Validating Markup of Part /FixedDocumentSequence.fdseq using 
        target namespace https://schemas.microsoft.com/xps/2005/06
      Fail: Markup is not Compliant:  Number of errors: 1
      Info: XPSRule: M2.72
      Info: Error #1: At position (1,134) Message: The element 'FixedDocumentSequence' 
        in namespace 'https://schemas.microsoft.com/xps/2005/06' 
        cannot contain text. List of possible elements expected: 
        'DocumentReference' in namespace 'https://schemas.microsoft.com/xps/2005/06'.
    -End Test: /FixedDocumentSequence.fdseq Markup Result: Fail
    

    Если используется параметр /OnlyPkg, в записях журнала для теста последовательности фиксированных документов указывается лишь предупреждение о том, что проверка не выполнялась.

  2. Тест фиксированных документов — проверяется разметка <FixedDocument> в файле *.fdoc. В следующем примере показана запись журнала после успешного выполнения этого теста.

    +Start Test: /Documents/FixedDocument_1.fdoc Markup
      Info: Validating Markup of Part /Documents/FixedDocument_1.fdoc 
        using target namespace "https://schemas.microsoft.com/xps/2005/06"
      Pass: Markup of Part is Compliant according to the XSD supplied
    -End Test: /Documents/FixedDocument_1.fdoc Markup Result: Pass
    

    В следующем примере показана запись журнала при сбое теста, который произошел из-за того, что часть <FixedDocument> содержит ссылку на страницу (<PageContent Source="../Pages/FixedPage_3.fpage" />), которая находится за пределами пакета. Обратите внимание, что в журнале представлен список правил, которые могли быть нарушены. Эти ошибки можно найти в спецификациях XPS, которые доступны для загрузки на веб-узле XPS: загрузка спецификаций и лицензий.

    Fail: Error getting part: /Pages/FixedPage_3.fpage Message: 
      Specified part does not exist in the package.
    Fail: Reference to non-existant or corrupted part: 
      /Pages/FixedPage_3.fpage from /Documents/FixedDocument_1.fdoc
    Info: Possible violation of OPC rules M1.1, M1.2, M1.5, M1.6, M1.7,
      M1.8, M1.10, MB.2 
    

    Если используется параметр /OnlyPkg, в записях журнала для теста фиксированных документов указывается лишь предупреждение о том, что проверка не выполнялась.

  3. Тест фиксированных страниц — проверяется разметка <FixedPage> в файле *.fpage. В следующем примере показана запись журнала после успешного выполнения этого теста.

    +Start Test: /Pages/FixedPage_1.fpage Markup
      Info: Validating Markup of Part /Pages/FixedPage_1.fpage using 
        target namespace "https://schemas.microsoft.com/xps/2005/06"
      Pass: Markup of Part is Compliant according to the XSD supplied
    -End Test: /Pages/FixedPage_1.fpage Markup Result: Pass
    

    В следующем примере показана запись журнала при сбое теста, который произошел из-за того, что часть <FixedPage> содержит атрибут, не объявленный в схеме XPS. Журнал указывает нарушенное правило и точную позицию знака, с которого начинается ошибочная разметка.

    +Start Test: /Pages/FixedPage_2.fpage Markup
      Info: Validating Markup of Part /Pages/FixedPage_2.fpage using 
        target namespace "https://schemas.microsoft.com/xps/2005/06"
      Fail: Markup is not Compliant:  Number of errors: 1
      Info: XPSRule: M2.72
      Info: Error #1: At position (4,55) Message: The 'Stretch' 
        attribute is not declared.
    -End Test: /Pages/FixedPage_2.fpage Markup Result: Fail 
    

    Если используется параметр /OnlyPkg, в записях журнала для теста фиксированных страниц указывается лишь предупреждение о том, что проверка не выполнялась.

  4. Тест пользовательской разметки — в данном тесте проверяется соответствие правилам, которые не накладываются самими файлами XSD, например M2.74, M3.7-M3.14 и M4.3. Эти правила можно найти в спецификациях XPS, которые доступны для загрузки на веб-узле XPS: загрузка спецификаций и лицензий.

  5. Тест связей страниц — в этом тесте проверяется каждая ссылка на часть ресурсов (шрифт, изображение, удаленный словарь ресурсов или профиль ICC) в разметке <FixedPage> (компоненте имя_страницы.fpage пакета XPS) с целью убедиться, что для этого ресурса существует соответствующая связь "required-resource" (в компоненте имя_страницы.fpage.rels) и что эта связь указывает на правильный тип части. Дочерний тест выполняется для каждого ресурса. В следующем примере показана запись журнала для связи со шрифтом.

    +Start Test: /Documents/1/Pages/3.fpage Relationships
      Info: Validating Relationships of Part /Documents/1/Pages/3.fpage
      Info: Validating Font part: /Resources/86e01f8d-dfc9-438e-9d02-830e7076a3f8.ODTTF 
        ContentType: application/vnd.ms-package.obfuscated-opentype
      Info: Name:Verdana, Embedding rights:Installable, Glyphs count:62
      Pass: Found relationship to resource Part: 
        /Resources/86e01f8d-dfc9-438e-9d02-830e7076a3f8.ODTTF
    -End Test: /Documents/1/Pages/3.fpage Relationships Result: Pass
    
  6. Тест частей без ссылок — если в пакете обнаруживаются части, на которые отсутствуют ссылки, в журнал заносится предупреждение.

Ниже представлен порядок выполнения дочерних тестов теста структуры пакета XPS.

  1. Тест части <FixedDocumentSequence>.

  2. Тест первой (или следующей) части <FixedDocument>, на которую имеется ссылка в части <FixedDocumentSequence>.

  3. Тест первой (или следующей) части <FixedPage>, на которую имеется ссылка в части <FixedDocument>.

  4. Тест пользовательской разметки (если таковая имеется) в части <FixedPage>.

  5. Тест части <Relationships> (если таковая имеется), содержащейся в части <FixedPage>. Данный тест состоит из следующих дочерних тестов.

    1. Тест первой (или следующей) части <Relationship>, содержащейся в части <Relationships>. Связями могут быть шрифты, изображения, удаленные словари ресурсов и профили ICC.

    2. Повторение этого шага для каждой связи.

  6. Повторение шагов 3-5 для каждой страницы в документе.

  7. Повторение шагов 2-6 для каждого документа в последовательности.

  8. Тест частей, на которые отсутствуют ссылки.

В следующем примере полностью показан результат теста структуры пакета XPS для пакета с одним (двухстраничным) документом, одним шрифтом на каждой странице и изображением на второй странице. Обратите внимание, что на второй странице второго документа часть <FixedPage> содержит ссылку на атрибут Stretch, который не объявлен в спецификации XPS. По этой причине средству не удается выполнить тестирование этой страницы и пакета.

+Start Test: Validating XPS Package structure: .\Spec.xps
  Info: Validating XPSRule M2.14
  Info: Found a https://schemas.microsoft.com/xps/2005/06/fixedrepresentation 
    relationship, validating...
  Pass: Valid Relationship to /FixedDocumentSequence.fdseq 
    from a PackageRoot part. RelationshipType: 
    https://schemas.microsoft.com/xps/2005/06/fixedrepresentation
  Pass: Found a Valid StartPart with ContentType: 
    application/vnd.ms-package.xps-fixeddocumentsequence+xml
  +Start Test: /FixedDocumentSequence.fdseq Markup
    Info: Validating Markup of Part /FixedDocumentSequence.fdseq using 
      target namespace "https://schemas.microsoft.com/xps/2005/06"
    Pass: Markup of Part is Compliant according to the XSD supplied
  -End Test: /FixedDocumentSequence.fdseq Markup Result: Pass
  Pass: Found markup reference to Valid Part with expected ContentType. 
    TargetURI: /Documents/FixedDocument_1.fdoc ContentType: 
    application/vnd.ms-package.xps-fixeddocument+xml
  +Start Test: /Documents/FixedDocument_1.fdoc Markup
    Info: Validating Markup of Part /Documents/FixedDocument_1.fdoc 
      using target namespace "https://schemas.microsoft.com/xps/2005/06"
    Pass: Markup of Part is Compliant according to the XSD supplied
  -End Test: /Documents/FixedDocument_1.fdoc Markup Result: Pass
  Pass: Found markup reference to Valid Part with expected ContentType. 
    TargetURI: /Pages/FixedPage_1.fpage ContentType: 
    application/vnd.ms-package.xps-fixedpage+xml
  +Start Test: /Pages/FixedPage_1.fpage Markup
    Info: Validating Markup of Part /Pages/FixedPage_1.fpage using 
      target namespace "https://schemas.microsoft.com/xps/2005/06"
    Pass: Markup of Part is Compliant according to the XSD supplied
  -End Test: /Pages/FixedPage_1.fpage Markup Result: Pass
  +Start Test: /Pages/FixedPage_1.fpage Custom Markup validation
  -End Test: /Pages/FixedPage_1.fpage Custom Markup validation Result: Pass
  +Start Test: /Pages/FixedPage_1.fpage Relationships
    Info: Validating Relationships of Part /Pages/FixedPage_1.fpage
    Info: Validating Font part: 
      /Resources/Fonts/9aa4ea89-755c-4331-be84-0cd43ff87195.ODTTF 
      ContentType: application/vnd.ms-package.obfuscated-opentype
    Info: Name:Verdana, Embedding rights:Installable, Glyphs count:35
    Pass: Found relationship to resource Part: 
      /Resources/Fonts/9aa4ea89-755c-4331-be84-0cd43ff87195.ODTTF
  -End Test: /Pages/FixedPage_1.fpage Relationships Result: Pass
  Pass: Found markup reference to Valid Part with expected ContentType. 
    TargetURI: /Pages/FixedPage_2.fpage 
    ContentType: application/vnd.ms-package.xps-fixedpage+xml
  +Start Test: /Pages/FixedPage_2.fpage Markup
    Info: Validating Markup of Part /Pages/FixedPage_2.fpage using 
      target namespace "https://schemas.microsoft.com/xps/2005/06"
    Fail: Markup is not Compliant:  Number of errors: 1
    Info: XPSRule: M2.72
    Info: Error #1: At position (4,55) Message: The 'Stretch' attribute 
      is not declared.
  -End Test: /Pages/FixedPage_2.fpage Markup Result: Fail
  +Start Test: /Pages/FixedPage_2.fpage Custom Markup validation
  -End Test: /Pages/FixedPage_2.fpage Custom Markup validation Result: Pass
  +Start Test: /Pages/FixedPage_2.fpage Relationships
    Info: Validating Relationships of Part /Pages/FixedPage_2.fpage
    Pass: Found relationship to resource Part: /Resources/Images/Image_1.png
    Info: Validating Font part: 
      /Resources/Fonts/3b85141b-0969-4d9e-b9c8-e705bb7e6543.ODTTF 
      ContentType: application/vnd.ms-package.obfuscated-opentype
    Info: Name:Times New Roman, Embedding rights:Installable, Glyphs count:4
    Pass: Found relationship to resource Part: 
      /Resources/Fonts/3b85141b-0969-4d9e-b9c8-e705bb7e6543.ODTTF
  -End Test: /Pages/FixedPage_2.fpage Relationships Result: Pass
  Pass: No un-referenced parts found
-End Test: Validating XPS Package structure: .\Spec.xps Result: Fail

Требования

.NET Framework 3.0

См. также

Другие ресурсы

XPS: Specification and License Downloads

XPS and Windows Vista

XPS Documents: A First Look at APIs For Creating XML Paper Specification Documents

Programming XPS Documents Lab and Extending the XPS Document Viewing Experience Lab