У меня есть приложение, которое хранит свою пользовательскую базу данных в файле XML, и мне нужно экспортировать выбранные поля в Filemaker, чтобы мой клиент и мои данные на Filemaker. Мне удалось заставить XSLT-файл импортировать XML-элементы, но не может найти способ импортировать какие-либо элементы. Указатели в решении этой проблемы очень ожидаются.Как импортировать атрибуты и элементы из XML в Filemaker?
Пример XML-файла:
<?xml version="1.0" encoding="utf-8"?>
<APPLICATION_NAME>
<USERS>
<USER>
<ID>15001</ID>
<USERNAME>Administrator</USERNAME>
<!-- other elements -->
<PROPERTYBAG>
<ITEM NAME="LastModifiedDate" VALUE="Fri, 05 Sep 2008 13:13:16 GMT"/>
<ITEM NAME="Registered" VALUE="5.9.2008 16:13:16"/>
<!-- other elements -->
</PROPERTYBAG>
</USER>
<!-- more users -->
</USERS>
</APPLICATION_NAME>
До сих пор мне удалось импортировать элементы, следуя инструкциям с этого сайта: http://edoshin.skeletonkey.com/2005/10/use_modular_xsl.html
А вот XSLT, который импортирует эти элементы, но не атрибуты:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.filemaker.com/fmpxmlresult">
<xsl:include href="FileMaker.xslt"/>
<xsl:template match="/">
<xsl:call-template name="TABLE">
<xsl:with-param name="METADATA-FIELDS">
<xsl:call-template name="FIELD">
<xsl:with-param name="NAME" select="'ID'"/>
</xsl:call-template>
<xsl:call-template name="FIELD">
<xsl:with-param name="NAME" select="'USERNAME'"/>
</xsl:call-template>
<xsl:call-template name="FIELD">
<xsl:with-param name="NAME" select="'ISADMINISTRATOR'"/>
</xsl:call-template>
<xsl:call-template name="FIELD">
<xsl:with-param name="NAME" select="'LastModifiedDate'"/>
</xsl:call-template>
<xsl:call-template name="FIELD">
<xsl:with-param name="NAME" select="'Registered'"/>
</xsl:call-template>
</xsl:with-param>
<xsl:with-param name="RESULTSET-RECORDS">
<xsl:for-each select="//USER">
<xsl:call-template name="ROW">
<xsl:with-param name="COLS">
<xsl:call-template name="COL">
<xsl:with-param name="DATA" select="ID"/>
</xsl:call-template>
<xsl:call-template name="COL">
<xsl:with-param name="DATA" select="USERNAME"/>
</xsl:call-template>
<xsl:call-template name="COL">
<xsl:with-param name="DATA" select="ACCOUNT/ISADMINISTRATOR"/>
</xsl:call-template>
<xsl:call-template name="COL">
<xsl:with-param name="DATA" select="@Registered"/>
</xsl:call-template>
</xsl:with-param>
</xsl:call-template>
</xsl:for-each>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
</xsl:stylesheet>
К сожалению, это не работает, либо, следовательно, моя проблема. – Raynet
Извините за вводящий в заблуждение ответ - исправил его, посмотрел, помогает ли это вообще. – Dror
Спасибо, 'PROPERTYBAG/ITEM [@ NAME =' Registered ']/@ VALUE' сделал трюк. * sigh * Желаю Filemaker иметь лучшую документацию по XML-импорту, чем «мы используем XSLT, см. W3c для документации» – Raynet