2012-01-06 20 views
3

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

すぐに回避策として、apexとcの両方のネームスペースに対して、最も外側のapex:pageタグにxmlns属性を追加することがあります。 – tggagne

+1

これは私が最初に試してみるものです。 –

+2

あなたのファイルのルートxml要素には、 'ns'の名前空間宣言が残っていません。 'xmlns:ns =" http:// whatever_unique_uri_you_wish "' xml属性をファイル 'a.xml'の中に加えて定義してください。あるいは、その宣言を追加するためにファイルを生成するツールチェーンを設定してください。 'apex'要素に関しては、ルート要素に設定されたデフォルトと頂点のネームスペースは同じかもしれません。敬具 – collapsar

答えて

1

作らcollapsar答えに追加するには、ここでのSalesforceのEnterprise WSDLで使用されている名前空間の一部です。これらから始めたり、公開している他のWSDLを見たりすることをお勧めします。 (詳細はhttp://www.salesforce.com/us/developer/docs/api/Content/sforce_api_partner.htmを参照してください)

のxmlns:TNSは= "壷:enterprise.soap.sforce.com"

のxmlns:FNS = "壷:fault.enterprise.soap.sforce.com"

のxmlns:ENS =「壷:sobject.enterprise.soap.sforce.com」

編集:ちょうどに有用であるかもしれない、私たちのApexクラスのメタデータで見ていたし、この名前空間を見つけました:

xmlns = "http://soap.sforce.com/2006/04/metadata"

関連する問題