StackoverflowからのTomalakのおかげで、「古い」FMPXMLRESULT xml文法から「新しい」FMRESULTSET xml文法への簡単なXSL変換ができました。FMPXMLRESULTからFMRESULTSETへのXSL変換(人気のある2つのFileMaker文法)
これはFMPXMLRESULT文法と元のXMLファイルである:私は完全な「メタデータ」セクションを必要としない:これは私が注意(取得しようとしているFMRESULTSET形式で
<?xml version="1.0" encoding="UTF-8" ?>
<FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult">
<ERRORCODE>0</ERRORCODE>
<PRODUCT BUILD="06-20-2006" NAME="FileMaker Pro" VERSION="8.5v1"/>
<DATABASE DATEFORMAT="M/d/yyyy" LAYOUT="" NAME="pro_page.fp7" RECORDS="2121" TIMEFORMAT="h:mm:ss a"/>
<METADATA>
<FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Ident" TYPE="TEXT"/>
<FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Title" TYPE="TEXT"/>
<FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Content" TYPE="TEXT"/>
<FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Footnotes::Num" TYPE="TEXT"/>
<FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Footnotes::Title" TYPE="TEXT"/>
<FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Images::Num" TYPE="TEXT"/>
<FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Images::FileName" TYPE="TEXT"/>
<FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Images::Title" TYPE="TEXT"/>
</METADATA>
<RESULTSET FOUND="1">
<ROW MODID="135" RECORDID="440">
<COL><DATA>422</DATA></COL>
<COL><DATA>title text here</DATA></COL>
<COL><DATA>some more text here</DATA></COL>
<COL>
<DATA>1</DATA>
<DATA>2</DATA>
<DATA>3</DATA>
<DATA>4</DATA>
</COL>
<COL>
<DATA>footnote 1 text here</DATA>
<DATA>footnote 2 text here</DATA>
<DATA>footnote 3 text here</DATA>
<DATA>footnote 4 text here</DATA>
</COL>
<COL>
<DATA>457</DATA>
<DATA>563</DATA>
</COL>
<COL>
<DATA>image 1 url here</DATA>
<DATA>image 2 url here</DATA>
</COL>
<COL>
<DATA>title for image 1 here</DATA>
<DATA>title for image 2 here</DATA>
</COL>
</ROW>
</RESULTSET>
、)それは空のままにすることができ、私はどちらかの必要はありませんいくつかの属性を削除:
<?xml version="1.0" encoding="UTF-8"?>
<fmresultset version="1.0" xmlns="http://www.filemaker.com/xml/fmresultset">
<error code="0"/>
<product version="8.0.4.128" name="FileMaker Web Publishing Engine" build="06/14/2006"/>
<datasource total-count="2121" timestamp-format="MM/dd/yyyy HH:mm:ss" time-format="HH:mm:ss" table="pro_page" layout="MR_Page_An" date-format="MM/dd/yyyy" database="pro_page.fp7"/>
<metadata></metadata>
<resultset fetch-size="1" count="1">
<record>
<field name="Ident"><data>422</data></field>
<field name="Title"><data>title text here</data></field>
<field name="Content"><data>some more text here</data></field>
<relatedset table="Footnotes" count="4">
<record>
<field name="Footnotes::Num"><data>1</data></field>
<field name="Footnotes::Title"><data>footnote 1 text here</data></field>
</record>
<record>
<field name="Footnotes::Num"><data>2</data></field>
<field name="Footnotes::Title"><data>footnote 2 text here</data></field>
</record>
<record>
<field name="Footnotes::Num"><data>3</data></field>
<field name="Footnotes::Title"><data>footnote 3 text here</data></field>
</record>
<record>
<field name="Footnotes::Num"><data>4</data></field>
<field name="Footnotes::Title"><data>footnote 4 text here</data></field>
</record>
</relatedset>
<relatedset table="Images" count="2">
<record>
<field name="Images::Num"><data>457</data></field>
<field name="Images::FileName"><data>image 1 url here</data></field>
<field name="Images::Title"><data>title for image 1 here</data></field>
</record>
<record>
<field name="Images::Num"><data>563</data></field>
<field name="Images::FileName"><data>image 2 url here</data></field>
<field name="Images::Title"><data>title for image 2 here</data></field>
</record>
</relatedset>
</record>
</resultset>
これは私のXSL変換がこれまでの様子です。それは正常に動作しますが、 "relatedset"セクションでは動作しません。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fmp="http://www.filemaker.com/fmpxmlresult" exclude-result-prefixes="fmp">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:key name="kMetaData" match="fmp:METADATA/fmp:FIELD" use="count(preceding-sibling::fmp:FIELD) + 1" />
<xsl:template match="/fmp:FMPXMLRESULT">
<fmresultset version="1.0">
<error code="0"/>
<product build="01/01/201" name="FileMaker Web Pro" version="8.5"/>
<datasource database="pro_page.fp7" date-format="MM/dd/yyyy" layout="MR_Page_Fr" table="pro_page" time-format="HH:mm:ss" timestamp-format="MM/dd/yyyy HH:mm:ss" total-count="1"/>
<metadata></metadata>
<resultset count="1" fetch-size="1">
<xsl:apply-templates select="fmp:RESULTSET/fmp:ROW" />
</resultset>
</fmresultset>
</xsl:template>
<xsl:template match="fmp:ROW">
<record record-id="0" mod-id="0">
<xsl:apply-templates select="fmp:COL" />
</record>
</xsl:template>
<xsl:template match="fmp:COL">
<field name="{string(key('kMetaData', position())/@NAME)}">
<data><xsl:value-of select="fmp:DATA" /></data>
</field>
</xsl:template>
</xsl:stylesheet>
誰にでも分かりやすいですか?ありがとう!
あなたの目標は何ですか?なぜあなたはこれをやろうとしていますか? –
それは馬鹿だと思いますが、私のファイルメーカーのXMLは "fmresultset"形式のMySqlデータベースに保存されています。このXMLを更新するには、通常のFileMaker Web公開エンジンでphp経由で正常に動作します(WPEは "fmresultset"形式を使用します)。 しかし私のISPはWPEサーバーを解凍しているので、FileMaker ProにXMLエクスポート機能が残っています。fmresultsetオプションはありません。 XSLファイルを使用すると、FmProの "fmpxmlresult"形式を "fmresultset"という形式に1回のクリックで変換することができました...ほとんど... – Ludwig
あなたはそうです、それは馬鹿です:-) - 少なくとも、問題を解決する正しい方法です。 –