isXPS 一致性工具

更新:2007 年 11 月

isXPS 合规性工具 (isXPS.exe) 测试文件是否符合 XML 纸张规范 (XPS) 和开放式打包约定 (OPC) 规范。

您可以从 XPS: Specification and License Downloads(XPS:规范和许可证下载)中下载 XPS 和OPC 规范。

功能

  • 生成它所执行测试的详细报告。

  • 可以在一个批处理作业中测试多个文件。

  • 提供测试的每个文件中的每个故障的说明。

  • 智能地指明发现的每个故障可能违反了哪些规则。

  • 支持允许自定义测试的开关;例如,只测试 OPC 合规性。

语法

isXPS/f=file_name_or_pattern [options]
说明:

在所有开关中,您都可以使用连字符(“-”)替代正斜杠(“/”),并使用冒号(“:”)替代等号(“=”)。

开关

开关

说明

/?

工具的帮助显示在 cmd.exe 窗口中。此开关阻止所有测试运行。(此开关还会使工具报告故障。这是为了确保:在 Windows Driver Kit 的测试基础结构中运行测试时,不会有意外的“通过”报告。)

/BadDir=路径

指定要将未通过合规性测试的文件复制或移动到其中的目录。如果使用了 /DelBad 开关,则会移动这些文件。如果不使用该开关,则会复制文件。

/DelBad

指定将未通过合规性测试的文件从其当前目录中删除。(与 /BadDir 开关一起使用时,会将文件移动到后面的开关指定的目录中。如果未使用 /BadDir 开关,则会删除这些文件。)

/device="设备字符串"

指定用于 Windows Test Technologies (WTT) 记录器的自定义设备字符串,该记录器随 Windows Driver Kit 一起提供。(参见 /logger。)

/doc=Doc_XSD_file

指定自定义 XML 架构定义 (XSD) 文件,用于验证 XPS 文件的 <DocumentStructure> 部分。建议您让工具使用其内置的默认 XSD 文件,而不是自定义文件。

/f

必需。指定要测试的一个或多个文件。可以在“文件名或模式”中使用标准命令行通配符“?”和“*”。如果路径或文件名中有任何空格,请用引号将整个路径或文件名引起来。XPS 文件的文件扩展名通常为“xps”,但不一定是这样。

/logfile=文件名

指定日志文件的路径和文件名。除非 /logger 开关设置为 File,否则将忽略此开关。如果未使用 /logfile 开关,并且 /logger 开关设置为 File,则日志文件为当前目录中的 isXPSLog.txt。如果将 /logsplit 开关与大于 0 的值一起使用,则用 /logfile 指定的日志文件将只包含安装测试。其他测试将包含在一个或多个其他日志文件中。请参见此表后面的 /logprefix/logsplit 了解更多信息,并参见本主题后面的内容以查看所有测试的说明。

/logger=日志类型

指定要生成哪种输出。可以是以下任意值:

  • Console(默认值)— 输出以流式方式显示在 cmd.exe 窗口中。

  • File — 除非用 /logfile 开关指定了另一个路径或文件名,否则将输出保存到当前目录中一个名为 isXPSLog.txt 的文本文件。

  • WTT — 将输出保存到当前目录中一个名为 isXPSLog.wtl 的 Windows Test Technologies 日志文件。只有在 Windows Driver Kit 的测试基础结构中运行测试时,此选项才可用。

/logprefix=前缀

指定将添加到日志文件的文件名开头的前缀,这些日志文件是在使用了 /logsplit 开关时生成的。

如果在没有显式的 /logsplit 开关(或者在有显式的 /logsplit=0)的情况下使用此开关,则工具的行为方式就好像 /logsplit=1 一样(请参见此表中后面的 /logsplit)。

/logsplit=数量

指定是否以及如何将日志拆分为多个文件。

如果此开关不存在,或者此开关存在但设置为默认值 0,则不进行拆分(除非以任何方式使用了 /logprefix,这种情况下将会进行拆分,并且工具的行为方式就好像 /logsplit=1 一样,即使有显式的 /logsplit=0 开关)。

如果此开关设置为 1,则 isXPSlog.txt 文件(或者用 /logfile 开关指定的任何文件)中只会报告安装测试。每个文件测试(请参见本主题中后面的“II. <文件名> 测试”)将在一个名为 _文件名.log 的单独日志文件中报告,其中 文件名 是所测试的 XPS 文件的名称。如果使用了 /logprefix 参数,下划线前将有一个前缀。

如果此开关设置为大于 1 的任何值,则它指示在每个日志文件中包括多少个文件测试。将只会在 isXPSlog.txt 文件(或者用 /logfile 开关指定的任何文件)中报告安装测试。将在名为 _NtoM.log 的单独日志文件中报告其他测试,其中 NtoM 指定包括在日志文件中的文件的范围。例如,如果有 5 个文件与用 /f 参数指定的模式匹配,并且 /logsplit 设置为 2,则工具将生成名为 _1to2.log、_3to4.log 和 _5to5.log 的文件。如果使用了 /logprefix 参数,下划线前将有一个前缀。

除非 /logger 开关设置为 File,否则将忽略此开关。有关所有测试的说明,请参见本主题后面的内容。

/NoInterleave

此开关阻止交错测试。有关所有测试的说明,请参见本主题后面的内容。

/OnlyOPC

指定只测试输入文件的 OPC 合规性,而不同时测试 XPS 合规性。将测试特定于 OPC 的部分的内部标记。此开关阻止运行 XPS 包结构测试。有关所有测试的说明,请参见本主题后面的内容。

/OnlyPkg

指定只会测试文件的某些部分以确保它们正确地存储在包中、具有正确的内容类型,并且互相之间具有正确的关系。将不会测试各部分(包括特定于 OPC 的部分)的内部标记。此开关阻止运行 OPC 验证测试的关系标记测试部分。它还会阻止运行 XPS 包结构测试的固定文档序列测试、固定文档测试或固定页测试部分。最后,它会阻止运行独立资源验证测试。有关所有测试的说明,请参见本主题后面的内容。

/r=Rsc_XSD_file

指定自定义 XML 架构定义 (XSD),用于验证 XPS 文件的 <ResourceDictionary> 部分。建议您让工具使用其内置的默认 XSD 文件,而不是自定义文件。

/s

指定在搜索与 /f 开关所指定模式相匹配的文件时包括子目录。如果不使用此开关,则不包括子目录。除非用 /f 开关指定了其他目录,否则父目录将是当前目录。

/SkipResParts

指定不测试独立资源(字体和图像)。此开关会阻止运行独立资源验证测试。有关所有测试的说明,请参见本主题后面的内容。

/x=S0_XSD_file

指定一个自定义 XML 架构定义 (XSD) 文件,用于验证 XPS 文件的 <FixedDocumentSequence>、<FixedDocument> 和 <FixedPage> 部分。建议您让工具使用其内置的默认 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”是一种特殊的故障状态,该状态未用于工具的当前版本。)

最后一行中将重复显示总体结果。

根测试有两种子测试:

  • 安装 — 每个日志中仅有一个安装测试。

  • <文件名> — 与用 /f 开关所指定模式匹配的每个文件都有一个测试。

安装测试

安装测试用于确定工具是否能够运行、分析工具的命令行,并且加载和编译 XSD 文件。它有五种子测试:

  1. 记录器初始化 — 只有其中的一个。它始终被记录为“Pass”,因为如果它失败,将无论如何都不会生成日志。

  2. 命令行分析 — 只有其中的一个。如果它失败,将不会报告详细信息,但会在控制台中以流式方式显示有关工具语法的帮助。

  3. 加载和注册自定义 XSD 文件 — 将有零个到三个此类子测试;每个针对下面所使用的开关中的每一个:/doc/r/x。XSD 文件加载后,工具将注册该文件。如果与 XSD 关联的命名空间应用于 XPS 标记的多个部分,则将为它所应用的每个部分单独注册该命名空间。例如,将为 <DocumentStructure> 和 <StoryFragments> 部分同时注册 <DocumentStructure>XSD。请参见下面的示例。

    说明:

    如果自定义 XSD 文件无法加载,则工具将不会加载任何其余的 XSD。其中包括所有内置的 XSD。因此,大多数后续的测试将不会运行。

  4. 加载和注册内置的 XSD 文件 — 除非自定义 XSD 无法加载,否则将至少有九个这样的测试。对于未使用的每个 /doc/r/x 开关,将有一个额外的此类测试。在上一项目符号中所指出有关自定义 XSD 注册的要点同样也适用于内置 XSD。

  5. XSD 编译 — 假设加载了所有 XSD 文件,如果任何一个 XSD 文件无法编译,则会有一个编译测试,并且该测试将失败。如果任何 XSD 文件无法加载,此测试将不会运行。

下面是安装测试结果的一个示例。在本例中,使用了 /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> 部分(包根中的关系除外)。每个这样的部分都有一个子测试。例如,假设有一个名为 1.fpage.rels 的 <Relationships> 部分,如下所示。

    <?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 开关,关系标记测试的日志项将只是发出未进行任何验证的警告。

  2. 包关系标记测试 — 工具将验证位于 XML 纸张规范 (XPS) 包根位置处的 <Relationships> 部分(如果有)。例如,假设有一个名为 .rels 的 <Relationships> 部分,如下所示。

    <?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
    

    如果根位置中的关系针对的是具有内部标记的对象(比如 <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. 固定文档序列测试 — 将验证 *.fdseq 文件中的 <FixedDocumentSequence> 标记。下面的示例演示测试通过时的日志报告。

    +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. 固定文档测试 — 将验证 *.fdoc 文件中的 <FixedDocument> 标记。下面的示例演示测试通过时的日志报告。

    +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: Specification and License Downloads(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. 固定页测试 — 将验证 *.fpage 文件中的 <FixedPage> 标记。下面的示例演示测试通过时的日志报告。

    +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: Specification and License Downloads(XPS:规范和许可证下载)处下载。

  5. 页关系测试 — 此测试将检测对 <FixedPage> 标记(XPS 包的 页名称.fpage 组成部分)中每个资源部分(字体、图像、远程资源字典或国际色彩联合会 [ICC] 配置文件)的引用,并验证(页名称.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. 测试在 <FixedDocumentSequence> 部分中引用的第一个(或下一个)<FixedDocument> 部分。

  3. 测试在 <FixedDocument> 部分中引用的第一个(或下一个)<FixedPage> 部分。

  4. 测试 <FixedPage> 部分中的自定义标记(如果有)。

  5. 测试 <FixedPage> 部分的 <Relationships> 部分(如果有)。此测试具有以下子测试。

    1. 测试在 <Relationships> 部分中的第一个(或下一个)<Relationship> 部分。关系可能是与字体、图像、远程资源字典和国际色彩联合会 (ICC) 配置文件的关系。

    2. 为每个关系重复步骤 a。

  6. 为文档中的每一页重复步骤 3 到 5。

  7. 为序列中的每个文档重复步骤 2 到 6。

  8. 针对未引用部分的测试。

下面的示例演示针对一个包的完整 XPS 包结构测试结果,该包中有一个(两页的)文档,其中每一页上有一个字体,第二页上有一幅图像。请注意,在第二个文档的第二页上,<FixedPage> 部分引用了未在 XPS 规范中声明的“Stretch”属性。出于此原因,工具对于此页和包将失败。

+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:规范和许可证下载)

XPS and Windows Vista(XPS 和 Windows Vista)

Programming XPS Documents Lab and Extending the XPS Document Viewing Experience Lab(编程 XPS 文档实验和扩展 XPS 文档查看体验实验)