2

XML Powertools 2.2 の NormalizeXml 関数を使用して、次のコードで docx ドキュメントを正規化しています。

SimplifyMarkupSettings settings = new SimplifyMarkupSettings{
           NormalizeXml = true,
};

私の目標は、変数を検索して置換することですが、変数は常に同じ「実行プロパティ」にあるとは限らず、結果として置換されません。また、Office で校正を無効にしたくありません。

プログラムを実行した後、docx ファイルが破損しており、開こうとするとスタイルに関するエラーが表示されます (NormalizeXml 関数が機能しないか終了しませんでした)。

スキーマによると、XML データは無効です。Part:/word/styles.xml,1行目0列目

OpenXml 2.5には.Net 4.5が必要なので、OpenXml 2.0を使用しています

Office2013も使っています。

OpenXml 2.0 Productivity Tool を使用すると、次のようなエラーが表示されます。

エラー ノード タイプ: Styles エラー部分: /word/styles/xml エラー ノード パス: /w:styles 1 説明: 無視できる属性が無効です - 値 'w14 w15' には、定義されていない無効なプレフィックスが含まれています。

styles.xml を開くと、次のように表示されます。

<?xml version="1.0" encoding="utf-8"?><w:styles mc:Ignorable="w14 w15" xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:wpg="http://schemas.microsoft.com/office/word/2010/wordprocessingGroup" xmlns:wpi="http://schemas.microsoft.com/office/word/2010/wordprocessingInk" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml" xmlns:wps="http://schemas.microsoft.com/office/word/2010/wordprocessingShape">

Office 2007/2010/2013 間でドキュメントの互換性を維持したいと考えています。

この段階で、この "mc:Ignorable="w14 w15" 属性を検索して空の置換を行うことを検討していますが、これを行うためのより良い方法があるはずです。

アドバイスをありがとう。

4

3 に答える 3