AnsweredAssumed Answered

FMPXMLRESULT文法(DTD)における繰り返しフィールドの扱い

Question asked by hikarusasaki on Nov 10, 2017
Latest reply on Nov 13, 2017 by shinsplash

お世話になります。

 

外部システムからエクスポートされるXMLのインポートに取り組んでいまして、Filemakerのテーブルにレコードとしてデータを取り込めるよう、オリジナルのXSLTを噛ませています。

 

繰り返し数が「1」の通常フィールドへの変換は問題ないのですが、繰り返しフィールドの2番目以降のフィールドにデータを格納する方法がよくわかりません。

 

FMPXMLRESULT文法のDTDによると、「COL エレメントには繰り返しフィールドおよびポータルフィールドの複数の DATA エレメントを入れることができます。」とあります。これを解釈した「ValidなXML」は、

 

   <ROW>

        <COL>

             <DATA>内容</DATA><!-- 繰り返しフィールドX[1] へ格納-->

             <DATA>内容</DATA><!-- 繰り返しフィールドX[2] へ格納?-->

        </COL>

   </ROW>

 

のようになるはずだと思ってXSLTを組んでいますが、この認識であっていますか?

もし上記の解釈で間違いないのだとすると、単にXSLTでの<xsl:for-each select="">のXpathの指定が間違っているだけということになりますので、解決に一歩近づきますが…実際のところどうなのでしょうか。

 

(補足:Filemaker側のフィールドの定義でも、繰り返しフィールドは繰り返しフィールドとして設定しています。)

 

ちなみに変換する前の整形式XMLは、下記のような構造です。

 

<A>

   <B>

       <C>

          <C-1>...</C-1>

          <C-2>...</C-2>

       </C>

<D>

<D-1>2008-11-01</D-1>

<D-2>...</D-2>

</D>

<D>

<D-1>2008-11-02</D-1>

<D-2>...</D-2>

</D>

 

このうち、2つ存在する「D-1」という要素の内容を、繰り返しフィールドX[1]とX[2]に格納したい、ということです。その後、「D-2」にも同様の処理を適用させ、繰り返しフィールドY[1]とY[2]へ格納する、というように処理していきます。

 

インターネットを探しても、FMPXMLRESULTに関する参考記事がなかなか見つからず・・・よろしくお願いします。

Outcomes