2016-05-25 19 views
1

現在の作業プロジェクトでは、Microsoft PowerPointファイル(.pptx形式)を開き、テキストとグラフの値を変更してから、ユーザー。Open XML SDK 2.5ドキュメントの検証: 'smtClean'属性が宣言されていません

これまでのところうまくいきましたが、後でドキュメントを検証しようとすると何が起こるのか疑問です。 DocumentFormat.OpenXml.Validation.OpenXmlValidatorクラスを使用して、唯一のパラメータとして渡されたPresentationDocumentでValidate関数を実行します。

Dim document As PresentationDocument = PresentationDocument.Open(templateFilePath, True) 
Dim validator As OpenXmlValidator = New OpenXmlValidator() 
Dim errors = validator.Validate(document) 

For Each errInfo As ValidationErrorInfo In errors 
    Debug.Print("Error: """ & errInfo .Description & """") 
    Debug.Print("XPath: " & errInfo .Path.XPath) 
Next 

Validate()は、ValidationErrorInfoのインスタンスで埋められた配列を返します。デバッグ時にちょうど約これらのすべては、同じエラーの説明を与える:

各エラーのXPathは次のようになり

The 'smtClean' attribute is not declared. 
(数字は変わる;テキストの一部につき1つの誤りがあるように見える):

/p:sldLayout[1]/p:cSld[1]/p:spTree[1]/p:sp[4]/p:txBody[1]/a:p[1]/a:fld[1]/a:rPr[1] 

すべてのTableCellには段落があり、子要素はRunです。このRunには子要素RunPropertiesとTextがあります。私はスクリプト内のテキストを変更しますが、私は他のものには触れません。

'smtClean'を検索すると、設定可能な値の1つとして「smtClean」を表示するRunPropertiesのMSDNエントリが表示されましたが、DocumentFormat.OpenXml.Presentation.Drawing.RunPropertiesの新しいインスタンスを作成すると、 smtClean '属性は使用できません。

周囲を見渡すと、文書がマージされたと言われているスレッドが考えられる原因が考えられますが、これらのエラーは、スライドとテーブルが1つのみの変更されていないプレゼンテーションでも発生します。 Open XML SDK 2.5 Productivity Toolを使用してベースドキュメントを検証すると、同じ結果が得られます。

エラーは、どのような形式の検証ツールに依頼して行っても、PowerPoint形式の2007年、2010年、および2013バージョンの両方で同じ量のエラーが返されます。

最終的には、ファイル自体が変更された後でも、PowerPointで正常に動作します。しかし、なぜバリデータが非常に多くのエラーを返すのか不思議です。

ご協力いただきありがとうございます。

答えて

0

スマートタグはOffice 2010では推奨されず、SDK v2.5検証ツールはスマートタグ要素をサポートしていないため、無効とマークされています。

詳細については、this MSDN articleを参照してください。

生産性向上ツールの現在の開発者は、this threadでsmtClean検証エラーがいくつかの状況ではバグであり、ツールのv3で修正されていると言います。

v3(Office 2016生産性ツール)はhereですが、以前のバージョンのOfficeとの互換性はわかりません。

関連する問題