2017-01-25 8 views
0

は、私には、例えば、このXMLを返すAPIを開発した:FileMakerでフィールドと配列を結合する方法は?

<ApiResult xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> 
    <ErrorCode>0</ErrorCode> 
    <IsSuccess>true</IsSuccess> 
    <Message>ok</Message> 
    <Data xmlns:d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> 
     <d2p1:string>Standard</d2p1:string> 
     <d2p1:string>50%</d2p1:string> 
     <d2p1:string>Großkunden</d2p1:string> 
     <d2p1:string>100%</d2p1:string> 
     <d2p1:string>Basis 7,-</d2p1:string> 
     <d2p1:string>Großladebonus</d2p1:string> 
     <d2p1:string>Neu</d2p1:string> 
     <d2p1:string>test</d2p1:string> 
     <d2p1:string>Test</d2p1:string> 
    </Data> 
</ApiResult> 

私の仕事は、輸入のためのXML変換を作成することです。それはこれまでのところ、私のXSLTです:

<?xml version='1.0' encoding='utf-8'?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="/"> 
    <FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult"> 
     <METADATA> 
     <FIELD NAME="ErrorCode" TYPE="NUMBER"/> 
     <FIELD NAME="IsSuccess" TYPE="TEXT"/> 
     <FIELD NAME="Message" TYPE="TEXT"/> 
     </METADATA> 
     <RESULTSET> 
     <ROW> 
      <COL> 
      <DATA> 
       <xsl:value-of select="ApiResult/ErrorCode"/> 
      </DATA> 
      </COL> 
      <COL> 
      <DATA> 
       <xsl:value-of select="ApiResult/IsSuccess"/> 
      </DATA> 
      </COL> 
      <COL> 
      <DATA> 
       <xsl:value-of select="ApiResult/Message"/> 
      </DATA> 
      </COL> 
     </ROW> 
     </RESULTSET> 
    </FMPXMLRESULT> 
    </xsl:template> 
</xsl:stylesheet> 

私はタイプstringの私のData -array含むで立ち往生しています。どのように含めることができますか?

答えて

2

タイプ文字列のデータ配列を含めるのが遅れています。どうすれば を含めることができますか?

どのくらい正確にインポートしたいのですか。 METADATAセクションにはフィールドがありません。また、それらが表すものを手がかりにするためのラベルはありません。配列全体が単一のレコードで、配列の構造が一定であることを、あなたはこのような何かしたと仮定すると

:上記

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" 
exclude-result-prefixes="d2p1"> 
<xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/> 

<xsl:template match="/ApiResult"> 
    <FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult"> 
     <METADATA> 
      <FIELD NAME="ErrorCode" TYPE="NUMBER"/> 
      <FIELD NAME="IsSuccess" TYPE="TEXT"/> 
      <FIELD NAME="Message" TYPE="TEXT"/> 
      <FIELD NAME="Field1" TYPE="TEXT"/> 
      <FIELD NAME="Field2" TYPE="TEXT"/> 
      <FIELD NAME="Field3" TYPE="TEXT"/> 
      <!-- ADD MORE FIELDS AS NEEDED --> 
     </METADATA> 
     <RESULTSET> 
      <ROW> 
       <COL><DATA><xsl:value-of select="ErrorCode"/></DATA></COL> 
       <COL><DATA><xsl:value-of select="IsSuccess"/></DATA></COL> 
       <COL><DATA><xsl:value-of select="Message"/></DATA></COL> 
       <COL><DATA><xsl:value-of select="Data/d2p1:string[1]"/></DATA></COL> 
       <COL><DATA><xsl:value-of select="Data/d2p1:string[2]"/></DATA></COL> 
       <COL><DATA><xsl:value-of select="Data/d2p1:string[3]"/></DATA></COL> 
       <!-- ADD MORE DATA STRINGS AS NEEDED --> 
      </ROW> 
     </RESULTSET> 
    </FMPXMLRESULT> 
</xsl:template> 

</xsl:stylesheet> 

は、最初の3つのデータ列をインポートすることが可能になります。 [レコードのインポート]ダイアログの左ペインにフィールド名Field1Field2Field3が表示されます(もちろん、これらの名前はスタイルシートで変更してターゲットフィールド名と一致させることができます)。

+0

お返事ありがとうございます。よりダイナミックな方法がありますか?これは3つの文字列にすることもできますが、999文字列にすることもできます。 –

+0

または他の公式化された:2つの 'RESULTSET'sを持つことは可能ですか? 1つは操作のステータス用、もう1つは実際の結果用です。 –

+1

XSLTには動的な方法がありますが、FileMakerでは動的な方法はありません。インポート中にソリューションに999のフィールドを追加することはできません。妥当な唯一の解決策は、各文字列を別々のレコードとしてインポートすることです。私はあなたがこのフォーマットで彼らと何をするのかはわかりません。ラベルがなければ無意味に見える。 –

関連する問題