2009-02-28 1 views
0

У меня есть приложение, которое хранит свою пользовательскую базу данных в файле 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> 

ответ

2

Должен сказать, что я не уверен, что понял, что вам нужно здесь.
Если я понимаю - вы не получаете значение

<ITEM NAME="LastModifiedDate" VALUE="Fri, 05 Sep 2008 13:13:16 GMT"/> 

с помощью

<xsl:call-template name="COL"> 
     <xsl:with-param name="DATA" select="@Registered"/> 
</xsl:call-template> 


Edit:
Если это так, то попробуйте использовать ITEM/@ Registered как так:

<xsl:call-template name="COL"> 
    <xsl:with-param name="DATA" select="PROPERTYBAG/ITEM[@NAME='Registered']/@VALUE"/> 
</xsl:call-template> 

Вы хотите, чтобы Атрибут Значение ITEM элемента с атрибутом имя равно Зарегистрирован под PropertyBag элемента, который находится под каждым пользователем ...


Оригинал:
Если это так, то попробуйте использовать ITEM/@ Registered как так:

<xsl:call-template name="COL"> 
    <xsl:with-param name="DATA" select="ITEM/@Registered"/> 
</xsl:call-template> 

вы хотите деталь, которая находится под каждым пользователем ...

+0

К сожалению, это не работает, либо, следовательно, моя проблема. – Raynet

+0

Извините за вводящий в заблуждение ответ - исправил его, посмотрел, помогает ли это вообще. – Dror

+0

Спасибо, 'PROPERTYBAG/ITEM [@ NAME =' Registered ']/@ VALUE' сделал трюк. * sigh * Желаю Filemaker иметь лучшую документацию по XML-импорту, чем «мы используем XSLT, см. W3c для документации» – Raynet

Смежные вопросы