xmllintを使ってVisualForceコードを再フォーマットしようとしています。私のコマンドラインは "xmllint --format --recover filename.page"です。誰かがSalesforceのAPEXのXML名前空間を持っていますか?
フォーマット(特にスクリプトセクション)はうまくいきますが、内部に頂点を持つタグはすべて「頂点」をなくすように変更されています。
たとえば、「apex:page」は「page」に置き換えられます。明らかに、これは再フォーマットを役に立たなくする。
処理中、xmllintは名前空間について不平を言います。下の例では、名前空間 "ns"を使用しています。どのように出力が "ns"を削除するかに注目してください。
[email protected]:~/tmp$ xmllint --format --recover a.xml
a.xml:1: namespace error : Namespace prefix ns on a is not defined
<ns:a>
^
<?xml version="1.0"?>
<a>
</a>
すぐに回避策として、apexとcの両方のネームスペースに対して、最も外側のapex:pageタグにxmlns属性を追加することがあります。 – tggagne
これは私が最初に試してみるものです。 –
あなたのファイルのルートxml要素には、 'ns'の名前空間宣言が残っていません。 'xmlns:ns =" http:// whatever_unique_uri_you_wish "' xml属性をファイル 'a.xml'の中に加えて定義してください。あるいは、その宣言を追加するためにファイルを生成するツールチェーンを設定してください。 'apex'要素に関しては、ルート要素に設定されたデフォルトと頂点のネームスペースは同じかもしれません。敬具 – collapsar