4D v19 R2では、テキストファイルのデフォルトのEnd Of Line文字とByte Order Markの使用方法が変更されました。4D v19 R3では、この動作をXMLファイルにも拡張しました。それでは、ご覧ください。
この前のブログでは、テキストファイルのデフォルトのEOL(End Of Line)文字とBOM(Byte Order Mark)使用に関する修正について説明しました。
その中で説明したベストプラクティスに従って、4Dはテキストファイルの動作をDOMと SAXコマンドを使って書かれたXMLファイルにも拡張しました。
新しいビヘイビア
macOSでは、DOMコマンドを使用した場合、XMLファイルはデフォルトでCRをEOLとして、SAXコマンドを使用した場合はCRLFの2文字で記述されていました。新しい動作では、DOMおよびSAXコマンドを使用して、XMLファイルはLFをEOLとして記述されます。これにより、DOMとSAXの動作が標準化され、LFをEOL文字として使用する必要があるGitなどのバージョン管理システムとの互換性が向上します。
Windowsでは、Gitのようなバージョン管理システムではCRLFが正しく管理されているため、EOL文字に関する変更はありません。
すべてのプラットフォームで、XMLファイルはBOMなしで、DOMとSAXコマンドを使用して記述されるようになりました。UTF-8がほぼ標準のテキストファイル形式となったため、BOMはあまり使用されなくなりました。そのため、4Dは現在のベストプラクティスにまだ従っています。
互換性設定
既存のプロジェクトやデータベースを4D v19 R3に移行しても、変更は表示されません。
もし、プロジェクトやデータベースが4D v19 R2より前のバージョンで作成された場合、新しい動作を有効にするために、次の互換性設定が表示されます。
4D v19 R3 で開くと、4D v19 R2 で作成したプロジェクトやデータベースは、デフォルトの EOL 文字とXML 文書のBOM管理に関してのみ、異なる動作になります。テキストファイルでは4D v19 R2以降、新しい動作が有効で互換性オプションも利用できますが、XMLファイルでは4D V19 R3以降、この新しい動作が利用できるようになりました。
コントロールを維持する
DOM や SAX コマンドを使って XML ファイルを書くときに、どの EOL 文字を使うかを自分で定義したい場合には XML SET OPTIONSコマンドは、新しいセレクタXML line ending を認めるようになり、次の値を得ることができます。XML default XML CR,XML LF またはXML CRLF 。
同様に、DOM または SAX コマンドを使用して XML ファイルに BOM を挿入するかどうかを自分で定義するには、新しいセレクタXML BOM を XML SET OPTIONSコマンドで設定します.このセレクタは、3つの値を許容します。XML default XML enabled またはXML disabled 。
もちろん、これら 2 つの新しいセレクタを XML GET OPTIONSコマンドで、これらの2つの新しいセレクタを使用して、現在どの動作が使用されているかを知ることができます。
SAXファイル行は各ステートメントで直接書き込まれるので、もしBOMやEOLオプションを設定する必要がある場合は、最初のSAX書き込みコマンドの前に XML SET OPTIONSコマンドを最初の SAX 書き込みコマンドの前に呼び出す必要があります。