Freigeben über


isXPS.exe (isXPS-Tool für Übereinstimmungstests)

Das isXPS-Tool für Übereinstimmungstests (isXPS.exe) testet, ob eine Datei der XML Paper Specification (XPS)-Spezifikation und der Open Packaging Conventions (OPC)-Spezifikation entspricht.

Sie können die XPS-Spezifikation und die OPC-Spezifikation unter XPS: Downloads der Spezifikation und der Lizenz herunterladen.

Features

  • Generiert einen detaillierten Bericht zu den durchgeführten Tests.

  • Mehrere Dateien können in einem Stapelauftrag getestet werden.

  • Stellt eine Beschreibung der einzelnen Fehler in den getesteten Dateien bereit.

  • Unterbreitet intelligente Vorschläge, welche Regeln durch die einzelnen gefundenen Fehler verletzt wurden.

  • Unterstützt Schalter, die benutzerdefinierte Tests ermöglichen, beispielsweise Tests ausschließlich auf Übereinstimmung mit OPC.

Syntax

isXPS /f=file_name_or_pattern [options]
HinweisHinweis

Sie können in allen Schaltern einen Bindestrich ("-") anstelle des normalen Schrägstrichs ("/") und einen Doppelpunkt (":") anstelle des Gleichheitszeichens ("=") verwenden.

Schalter

Schalter

Beschreibung

/?

Hilfe für das Tool wird im Fenster von cmd.exe angezeigt. Dieser Schalter blockiert die Ausführung sämtlicher Tests. (Der Schalter bewirkt auch, dass das Tool einen Fehler meldet. Damit wird sichergestellt, dass nicht versehentlich Berichte ohne Fehler ausgegeben werden, wenn der Test in der Testinfrastruktur des Windows Driver Kit ausgeführt wird.)

/BadDir=Pfad

Gibt ein Verzeichnis an, in das Dateien kopiert oder verschoben werden, die den Übereinstimmungstest nicht bestanden haben. Diese werden verschoben, wenn der /DelBad-Schalter verwendet wird. Sie werden kopiert, wenn er nicht verwendet wird.

/DelBad

Gibt an, dass Dateien, die den Übereinstimmungstest nicht bestehen, aus ihrem aktuellen Verzeichnis gelöscht werden. (Wenn der /BadDir-Schalter verwendet wird, werden die Dateien in das Verzeichnis verschoben, das durch diesen angegeben wird. Wenn der /BadDir-Schalter nicht verwendet wird, werden sie gelöscht.)

/device="Gerätezeichenfolge"

Gibt eine benutzerdefinierte Gerätezeichenfolge an, die mit der WTT (Windows Test Technologies)-Protokollierung verwendet wird, die im Windows Driver Kit verfügbar ist. (Siehe /logger.)

/doc=DOC-XSD-Datei

Gibt eine benutzerdefinierte XML Schema Definition (XSD)-Datei für die Validierung der <DocumentStructure>-Teile der XPS-Datei an. Es wird empfohlen, dass Sie keine benutzerdefinierte Datei, sondern die integrierte XSD-Standarddatei des Tools verwenden.

/f

Erforderlich. Gibt die zu überprüfenden Dateien an. Die Standardplatzhalterzeichen für die Befehlszeile "?" und "*" können in Dateiname oder -muster verwendet werden. Wenn Leerzeichen im Pfad oder im Dateinamen enthalten sind, schließen Sie den gesamten Pfad bzw. Dateinamen in Anführungszeichen ein. Die Dateinamenerweiterung für XPS-Dateien ist normalerweise 'xps'. Dies ist jedoch nicht immer der Fall.

/logfile=Dateiname

Gibt den Pfad und den Dateinamen für die Protokolldatei an. Dieser Schalter wird ignoriert, es sei denn, der /logger-Schalter ist auf File festgelegt. Wenn der /logfile-Schalter nicht verwendet wird und der /logger-Schalter auf File festgelegt ist, wird als Protokolldatei isXPSLog.txt im aktuellen Verzeichnis verwendet. Wenn der /logsplit-Schalter mit einem Wert größer 0 (null) verwendet wird, enthält die /logfile angegebene Protokolldatei lediglich den Setuptest. Die anderen Tests sind in einer oder mehreren anderen Protokolldateien enthalten. Weitere Informationen finden Sie unter /logprefix und /logsplit im Folgenden in dieser Tabelle. Eine Beschreibung sämtlicher Tests finden Sie weiter unten im vorliegenden Thema.

/logger=Protokolltyp

Gibt an, welche Art von Ausgabe generiert werden soll. Die folgenden Werte sind möglich:

  • Console (Standard) - Die Ausgabe erfolgt als Stream in das Fenster von cmd.exe.

  • File - Die Ausgabe wird in einer Textdatei mit dem Namen isXPSLog.txt im aktuellen Verzeichnis gespeichert, es sei denn, mit dem /logfile-Schalter wird ein anderer Pfad bzw. Dateiname angegeben.

  • WTT - Die Ausgabe wird in einer WTT (Windows Test Technologies)-Protokolldatei mit dem Namen isXPSLog.wtl im aktuellen Verzeichnis gespeichert. Diese Option kann nur verwendet werden, wenn der Test in der Testinfrastruktur des Windows Driver Kit ausgeführt wird.

/logprefix=Präfix

Gibt an, welches Präfix den Dateinamen der Protokolldateien vorangestellt werden soll, die bei Verwendung des /logsplit-Schalters generiert werden.

Wenn dieser Schalter ohne einen expliziten /logsplit-Schalter (oder mit einem expliziten /logsplit=0) verwendet wird, weist das Tool ein Verhalten auf wie bei /logsplit=1 (siehe /logsplit im Folgenden in dieser Tabelle).

/logsplit=Zahl

Gibt an, ob und auf welche Weise das Protokoll auf mehrere Dateien aufgeteilt wird.

Wenn dieser Schalter nicht vorhanden ist, oder wenn er vorhanden, jedoch auf den Standardwert 0 (null) festgelegt ist, erfolgt keine Aufteilung (es sei denn, /logprefix wird ohnehin verwendet; in diesem Fall erfolgt eine Aufteilung, und das Tool weist ein Verhalten auf wie bei /logsplit=1, selbst wenn ein expliziter /logsplit=0-Schalter vorhanden ist).

Wenn dieser Schalter auf 1 festgelegt ist, wird nur der Setuptest in der Datei isXPSlog.txt ausgegeben (bzw. in der Datei, die mit dem /logfile-Schalter angegeben wurde). Jeder Dateitest (siehe "II. Test für <Dateiname>" weiter unten in diesem Thema) wird in einer separaten Protokolldatei mit dem Namen _Dateiname.log ausgegeben, wobei Dateiname der Name der überprüften XPS-Datei ist. Dem Unterstrich wird ein Präfix vorangestellt, wenn der /logprefix-Parameter verwendet wird.

Wenn dieser Schalter auf Wert größer 1 festgelegt ist, wird damit angegeben, wie viele Dateitests in den einzelnen Protokolldateien enthalten sind. In der Datei isXPSlog.txt wird nur der Setuptest ausgegeben (bzw. in der Datei, die mit dem /logfile-Schalter angegeben wurde). Die anderen Tests werden in separaten Protokolldateien mit dem Namen _NtoM.log ausgegeben, wobei NtoM den Dateibereich angibt, der in der Protokolldatei erfasst ist. Wenn beispielsweise fünf Dateien dem mit dem /f-Parameter angegebenen Muster entsprechen und /logsplit auf 2 festgelegt ist, generiert das Tool die Dateien _1to2.log, _3to4.log und _5to5.log. Dem Unterstrich wird ein Präfix vorangestellt, wenn der /logprefix-Parameter verwendet wird.

Dieser Schalter wird ignoriert, es sei denn, der /logger-Schalter ist auf File festgelegt. Eine Beschreibung sämtlicher Tests finden Sie weiter unten in diesem Thema.

/NoInterleave

Dieser Schalter blockiert den Verschachtelungstest. Eine Beschreibung sämtlicher Tests finden Sie weiter unten in diesem Thema.

/OnlyOPC

Gibt an, dass die Eingabedatei nur auf Übereinstimmung mit OPC überprüft werden soll, jedoch nicht auf Übereinstimmung mit XPS. Das interne Markup von OPC-spezifischen Teilen wird überprüft. Dieser Schalter verhindert, dass der XPS-Paketstrukturtest ausgeführt wird. Eine Beschreibung sämtlicher Tests finden Sie weiter unten in diesem Thema.

/OnlyPkg

Gibt an, dass die Teile der Datei nur in Bezug darauf überprüft werden sollen, ob sie im Paket ordnungsgemäß gespeichert sind, den richtigen Inhaltstyp enthalten und zwischen ihnen die richtigen Beziehungen vorhanden sind. Das interne Markup der Teile, einschließlich der OPC-spezifischen Teile, wird nicht überprüft. Dieser Schalter blockiert die Ausführung des Tests des Beziehungsmarkups im Rahmen des OPC-Validierungstests. Zudem blockiert er die Ausführung des Tests der Sequenz der fixierten Dokumente, des Tests der einheitlich dargestellten Dokumente sowie des Tests der einheitlich dargestellten Seiten im Rahmen des XPS-Paketstrukturtests. Schließlich blockiert er die Ausführung der Validierungstests für unabhängige Ressourcen. Eine Beschreibung sämtlicher Tests finden Sie weiter unten in diesem Thema.

/r=RSC-XSD-Datei

Gibt eine benutzerdefinierte XML Schema Definition (XSD)-Datei für die Validierung der <ResourceDictionary>-Teile der XPS-Datei an. Es wird empfohlen, dass Sie keine benutzerdefinierte Datei, sondern die integrierte XSD-Standarddatei des Tools verwenden.

/s

Gibt an, dass bei der Suche nach Dateien, die dem mit dem /f-Schalter angegebenen Muster entsprechen, auch Unterverzeichnisse berücksichtigt werden. Wenn dieser Schalter nicht verwendet wird, werden keine Unterverzeichnisse berücksichtigt. Das übergeordnete Verzeichnis ist das aktuelle Verzeichnis, es sei denn, mit dem /f-Schalter wurde ein anderes Verzeichnis angegeben.

/SkipResParts

Gibt an, dass unabhängige Ressourcen (Schriftarten und Bilder) nicht überprüft werden. Dieser Schalter blockiert die Ausführung der Validierungstests für unabhängige Ressourcen. Eine Beschreibung sämtlicher Tests finden Sie weiter unten in diesem Thema.

/x=S0-XSD-Datei

Gibt eine benutzerdefinierte XML Schema Definition (XSD)-Datei für die Validierung der Teile <FixedDocumentSequence>, <FixedDocument> und <FixedPage> der XPS-Datei an. Es wird empfohlen, dass Sie keine benutzerdefinierte Datei, sondern die integrierte XSD-Standarddatei des Tools verwenden.

Interpretieren der Protokolldatei

Die Ausgabe besteht aus einer Reihe von geschachtelten Testergebnissen. Der Beginn jedes Tests wird mit einer Zeile "+Start Test" markiert, während das Ende jedes Tests durch die Zeile "-End Test" gekennzeichnet ist. Der Stammtest ist die Gesamtmenge der Tests für alle Dateien, die mit dem /f-Schalter angegeben wurden. Wenn der /f-Schalter z. B. "s*.xps" angibt, entspricht der Stammtest dem folgenden Beispiel.

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

Beachten Sie, dass die Zeile "- ENDE Test" das Gesamtergebnis angibt. Wenn eine Datei den Test nicht besteht, wird der Test in seiner Gesamtheit mit "Fail" markiert.

Im Abschnitt "Log Rollup" wird der gesamte Test zusammengefasst. Die "PassRate" ist der Prozentsatz der Tests ohne Fehler. " "Pass", "Warning" und "Fail" geben die Anzahl der Tests an, die bestanden bzw. mit Warnungen bestanden wurden oder Fehler enthalten. ("Block" ist ein spezieller Fehlerzustand, der mit der aktuellen Version des Tools nicht verwendet wird.)

Das Gesamtergebnis wird in der letzten Zeile wiederholt.

Es gibt zwei Formen von untergeordneten Tests des Stammtests:

  • Setup - In jedem Protokoll ist genau ein Setuptest enthalten.

  • <Dateiname> - Es ist ein Test für jede Datei enthalten, die dem mit dem /f-Schalter angegebenen Muster entspricht.

Setuptest

Mit dem Setuptest wird bestimmt, ob das Tool ausgeführt werden kann, ob die Befehlszeile analysiert werden kann und ob die XSD-Dateien geladen und kompiliert werden können. Er verfügt über fünf untergeordnete Tests:

  1. Protokollierungsinitialisierung - Es ist genau ein solcher Test vorhanden. Er wird immer als "Pass" protokolliert, da das Protokoll bei einem Fehler nicht generiert werden würde.

  2. Befehlszeilenanalyse - Es ist genau ein solcher Test vorhanden. Bei einem Fehler werden keine Details protokolliert. Stattdessen wird Hilfe zur Syntax des Tools in einem Stream an die Konsole übertragen.

  3. Laden und Registrieren von benutzerdefinierten XSD-Dateien - Es sind null bis drei solcher untergeordneten Tests vorhanden, jeweils einer für jeden der folgenden verwendeten Schalter: /doc, /r und /x. Nach dem Laden einer XSD-Datei wird sie vom Tool registriert. Wenn der dem XSD zugeordnete Namespace sich auf mehrere Teile des XPS-Markups bezieht, wird sie separat für jeden Teil registriert, auf die sie sich bezieht. Das <DocumentStructure>-XSD wird z. B. für den <DocumentStructure>-Teil und den <StoryFragments>-Teil registriert. Nachfolgend finden Sie ein Beispiel hierzu.

    HinweisHinweis

    Wenn eine benutzerdefinierte XSD-Datei nicht geladen werden kann, werden die übrigen XSDs vom Tool nicht geladen.Dies beinhaltet alle integrierten XSDs. Die meisten nachfolgenden Tests werden daher nicht ausgeführt.

  4. Laden und Registrieren der integrierten XSD-Dateien - Sofern kein benutzerdefiniertes XSD geladen wird, sind mindestens neun dieser Tests vorhanden. Es wird ein zusätzlicher Test dieses Typs für jeden der Schalter /doc, /r und /x ausgeführt, der nicht verwendet wird. Die Ausführungen im vorhergehenden Aufzählungspunkt in Bezug auf die Registrierung von benutzerdefinierten XSDs gelten auch für die integrierten XSDs.

  5. XSD-Kompilierung - Unter der Voraussetzung, dass alle XSD-Dateien geladen wurden, ist ein Kompilierungstest vorhanden. Für diesen tritt ein Fehler auf, wenn eine der XSD-Dateien nicht kompiliert werden kann. Wenn eine XSD-Datei nicht geladen werden kann, wird dieser Test nicht ausgeführt.

Im Folgenden finden Sie ein Beispiel für das Ergebnis eines Setuptests. In diesem Beispiel wurde mit dem /x-Schalter ein alternatives S0-Schema angegeben.

+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

Informationen zu den in diesem Beispiel erwähnten Dublin-Schemas finden Sie unter The Dublin Core Metadata Initiative (auf Englisch).

Test für <Dateiname>

Jeder Test einer bestimmten Datei besteht aus folgenden untergeordneten Tests:

  • Verschachtelungstest.

  • Validierungstest für unabhängige Ressourcen.

  • OPC-Validierungstest.

  • XPS-Paketstrukturtest.

Verschachtelungstest

Das Tool meldet, ob die Datei verschachtelt ist, und, wenn dies zutrifft, ob die Datei ordnungsgemäß verschachtelt ist. (Dieser Test wird bei Verwendung des /NoInterleave-Schalters nicht ausgeführt.) Es sind zwei untergeordnete Tests verfügbar:

  1. Test der Bestandteilerfassung - Das Tool erfasst alle eingebetteten Bestandteile der Datei. Dazu zählen alle Schriftarten- und Bilddateien, die Beziehungsdateien und alle FPAGE-, FDOC-, FDSEQ- und FRAG-Dateien. Unten finden Sie ein Beispiel für einen Protokolleintrag für diesen Test. Das getestete XPS-Paket enthält ein einzelnes einheitlich dargestelltes Dokument mit einer einzelnen einheitlich dargestellten Seite, einer einzelnen Schriftart und einem einzelnen Bild.

    +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. Test der Teilesortierung - Mit diesem Test wird bestimmt, ob die Reihenfolge der Teile der Datei im zentralen ZIP-Verzeichnis mit der im lokalen ZIP-Dateiheader übereinstimmt. Wenn sich die Reihenfolgen unterscheiden, gibt der Test eine "Warnung" aus, da die Microsoft Windows XP-Shell das Bearbeiten von ZIP-Dateien nicht zulässt, bei denen die Reihenfolgen nicht übereinstimmen.

Validierungstest für unabhängige Ressourcen

Mit den Validierungstests für unabhängige Ressourcen wird die gesamte Datei auf XPS-Teile durchsucht, die auf Inhalte vom Typ Schriftart oder Bild zeigen. Außerdem wird überprüft, ob alle Ressourcen den richtigen Inhaltstyp aufweisen. Es wird z. B. überprüft, ob die Ressource, auf die ein Inhalt vom Typ "Schriftart" zeigt, wirklich eine Schriftart ist. (Diese Tests werden nicht ausgeführt, wenn die /SkipResParts-Option oder die /OnlyPkg-Option verwendet wird.)

OPC-Validierungstest

Mit dem OPC-Validierungstest wird die Konformität der XPS-Datei bezüglich der OPC-Spezifikation überprüft.

Für den Test sind zwei untergeordnete Tests verfügbar:

  1. Test des Beziehungsmarkups - Das Tool überprüft alle <Relationships>-Teile im Paket, mit Ausnahme von Beziehungen im Paketstamm. Für jeden Teil dieser Art ist ein untergeordneter Test verfügbar. Angenommen, das <Relationships>-Teil 1.fpage.rels ist vorhanden:

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

    Das Tool gibt dann den folgenden Protokolleintrag zurück.

    +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
    

    Bei Verwendung des /OnlyPkg-Schalters wird in den Protokolleinträgen für den Test des Beziehungsmarkups gewarnt, dass keine Validierung vorgenommen wurde.

  2. Test des Paketbeziehungsmarkups - Das Tool überprüft den <Relationships>-Teil, sofern vorhanden, im Stamm des XML Paper Specification (XPS)-Pakets. Angenommen,  ein <Relationships>-Teil mit dem Namen .rels ist wie folgt vorhanden.

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

    Das Tool gibt dann den folgenden Protokolleintrag zurück.

    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
    

    Wenn die Beziehung zwischen dem Stamm und einem Objekt mit internem Markup besteht, z. B. einem <DigitalSignature>-Teil, wird die Validierung des Zielmarkups in die Validierung des betreffenden <Relationship>-Teils als untergeordneter Test einbezogen. Der zuletzt genannte Test kann eigene untergeordnete Tests enthalten. Im vorherigen Beispiel wies der Test des Teils "Digital Signature Origin" an Stelle von "… matter omitted …" eigentlich den folgenden Teststruktureintrag auf.

    +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-Paketstrukturtest

Der XPS-Paketstrukturtest durchläuft rekursiv die Struktur des XPS-Pakets. Dabei wird das Markup jedes Teils überprüft und sichergestellt, dass für jede Ressource, auf die im Markup verwiesen wird, ein <Relationship>-Teil vorhanden ist. (Dieser Test wird bei Verwendung von /OnlyOPC nicht ausgeführt.)

Die folgenden untergeordneten Tests sind enthalten.

  1. Sequenztest der einheitlich dargestellten Dokumente - Das <FixedDocumentSequence>-Markup in der FDSEQ-Datei wird überprüft. Im folgenden Beispiel wird der Protokollbericht bei bestandenem Test veranschaulicht.

    +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
    

    Im folgenden Beispiel wird der Protokollbericht bei fehlgeschlagenem Test gezeigt. In diesem Fall trat der Fehler auf, weil der XPS-Producer zwischen den Anfangs- und Endtags der <FixedDocumentSequence> fälschlicherweise Text eingefügt hat.

    +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
    

    Bei Verwendung des /OnlyPkg-Schalters wird in den Protokolleinträgen für den Sequenztest der einheitlich dargestellten Dokumente gewarnt, dass keine Validierung vorgenommen wurde.

  2. Test der einheitlich dargestellten Dokumente- Das <FixedDocument>-Markup in einer FDOC-Datei wird überprüft. Im folgenden Beispiel wird der Protokollbericht bei bestandenem Test veranschaulicht.

    +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
    

    Im folgenden Beispiel wird der Protokollbericht bei fehlgeschlagenem Test gezeigt. In diesem Fall trat der Fehler auf, weil der <FixedDocument>-Teil einen Verweis auf eine Seite (<PageContent Source="../Pages/FixedPage_3.fpage" />) enthält, die sich nicht im Paket befindet. Das Protokoll enthält eine Liste von Regeln, gegen die möglicherweise verstoßen wurde. Fehler können Sie in den XPS-Spezifikationen nachschlagen, die unter XPS: Specification and License Downloads heruntergeladen werden können.

    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 
    

    Bei Verwendung des /OnlyPkg-Schalters wird in den Protokolleinträgen für den Test der einheitlich dargestellten Dokumente gewarnt, dass keine Validierung vorgenommen wurde.

  3. Test der einheitlich dargestellten Seiten- Das <FixedPage>-Markup in einer FPAGE-Datei wird überprüft. Im folgenden Beispiel wird der Protokollbericht bei bestandenem Test veranschaulicht.

    +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
    

    Im folgenden Beispiel wird der Protokollbericht bei fehlgeschlagenem Test gezeigt. In diesem Fall trat der Fehler auf, weil der <FixedPage>-Teil ein Attribut enthält, das nicht im XPS-Schema deklariert wurde. Im Protokoll wird die Regel angegeben, gegen die verstoßen wurde, zudem die genaue Zeichenposition, an der das fehlerhafte Markup beginnt.

    +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 
    

    Bei Verwendung des /OnlyPkg-Schalters wird in den Protokolleinträgen für den Test der einheitlich dargestellten Seiten gewarnt, dass keine Validierung vorgenommen wurde.

  4. Test des benutzerdefinierten Markups - Hiermit wird die Konformität mit Regeln getestet, deren Einhaltung nicht von den XSD-Dateien selbst gefordert wird, z. B. M2.74, M3.7 bis M3.14 sowie M4.3. Diese Regeln finden Sie in den XPS-Spezifikationen, die unter XPS: Specification and License Downloads heruntergeladen werden können.

  5. Test der Seitenbeziehungen - Mit diesem Test wird jeder Verweis auf einen Ressourcenteil (Schriftart, Bild, Remoteressourcenwörterbuch oder ICC-Profil [International Color Consortium]) im <FixedPage>-Markup (in der Komponente Seitenname.fpage eines XPS-Pakets) überprüft und sichergestellt, dass mit der betreffenden Ressource (in der Komponente Seitenname.fpage.rels) eine entsprechende Beziehung für erforderliche Ressourcen vorhanden ist und diese auf den richtigen Teiletyp zeigt. Für jede Ressource ist ein untergeordneter Test verfügbar. Im folgenden Beispiel wird ein Protokolleintrag für eine Beziehung mit einer Schriftart veranschaulicht.

    +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. Test auf Teile, auf die nicht verweisen wird - Wenn im Paket Teile gefunden werden, auf die nicht verweisen wird, wird im Protokoll eine Warnung ausgegeben.

In der XPS-Paketstruktur werden die untergeordneten Tests in folgender Reihenfolge ausgeführt.

  1. Test des <FixedDocumentSequence>-Teils.

  2. Test des ersten (oder nächsten ) <FixedDocumentSequence>-Teils, auf den im <FixedDocument>-Teil verweisen wird.

  3. Test des ersten (oder nächsten ) <FixedDocument>-Teils, auf den im <FixedPage>-Teil verweisen wird.

  4. Test des benutzerdefinierten Markups im <FixedPage>-Teil, sofern vorhanden.

  5. Test des <Relationships>-Teils des <FixedPage>-Teils, sofern vorhanden. Dieser Test umfasst die folgenden untergeordneten Tests.

    1. Test des ersten (oder nächsten) <Relationships>-Teils im <Relationship>-Teil. Beziehungen können mit Schriftarten, Bildern, Remoteressourcenwörterbüchern und ICC-Profilen (International Color Consortium) bestehen.

    2. Wiederholen Sie Schritt a für jede Beziehung.

  6. Wiederholen Sie Schritte 3 bis 5 für jede Seite im Dokument.

  7. Wiederholen Sie Schritte 2 bis 6 für jedes Dokument in der Sequenz.

  8. Test auf Teile, auf die nicht verweisen wird.

Im folgenden Beispiel wird ein vollständiges Ergebnis für einen Test der XPS-Paketstruktur für ein Paket mit einem (zweiseitigen) Dokument, einer Schriftart auf jeder Seite und einem Bild auf der zweiten Seite veranschaulicht. Auf der zweiten Seite des zweiten Dokuments enthält der <FixedPage>-Teil einen Verweis auf ein "Stretch"-Attribut, das in der XPS-Spezifikation nicht deklariert wurde. Aus diesem Grund tritt bei dieser Seite und dem Paket ein Fehler auf.

+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

Anforderungen

.NET Framework 3,0

Siehe auch

Weitere Ressourcen

XPS: Downloads der Spezifikation und der Lizenz

XPS und Windows Vista

XPS-Dokumente: Einführung in die APIs zum Erstellen von XML Paper Specification-Dokumenten

Übung für die Programmierung von XPS-Dokumenten und Übung für die Erweiterung der Anzeigeumgebung für XPS-Dokumente