2009-02-28 22 views
0

Kullanıcı veritabanını bir XML dosyasına depolayan bir uygulamam var ve seçtiğim alanları Filemaker'a aktarmam gerekiyor, böylece müşterim ve Filemaker'daki verilerim. XSLT dosyasını XML öğelerini içe aktarmayı başardım, ancak herhangi bir öğeyi içe aktarmanın bir yolunu bulamıyorum. Bu sorunu çözmede işaretçiler büyük bir olasılıkla beklenmektedir. XML dosyasınınÖzellikler ve öğeler XML'den Filemaker'a nasıl alınır?

Örnek: Şimdiye kadar bu siteden talimatı izleyerek unsurları içe başardınız

<?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> 

: Burada http://edoshin.skeletonkey.com/2005/10/use_modular_xsl.html

Ve bu öğeleri ancak ithal XSLT olduğunu özellikleri:

<?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> 

cevap

2

Burada neye ihtiyacınız olduğunu anladığımdan emin değilim. Bu durumda daha sonra MADDE/@ gibi Kayıtlı kullanmayı deneyin ise
: - Anlıyorum olmadıysa
Eğer

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


Düzenleme kullanarak

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

değerini almıyorsanız öyleyse:

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

: Bu durumda daha sonra MADDE/@ şöyle Kayıtlı kullanmayı deneyin ise

: adı özniteliği ile MADDE elemanın değeri nitelik ... her kullanıcı altında PropertyBag elemanı altında Orijinal


Kayıtlı eşittir
<xsl:call-template name="COL"> 
    <xsl:with-param name="DATA" select="ITEM/@Registered"/> 
</xsl:call-template> 

her kullanıcı altında MADDE ...

+0

Maalesef bu nedenle, ya sorunumu çalışmıyor istiyorum. – Raynet

+0

Yanıltıcı cevap için özür dilerim - düzeltin, bunun işe yarayıp yaramadığını görün. – Dror

+0

Teşekkürler, 'PROPERTYBAG/ITEM [@ NAME =' Kayıtlı ']/@ VALUE' hile yaptı. * içtenlik * Filemaker'ın XML içe aktarma konusunda XSLT kullanıyoruz, dokümantasyon için W3c'ye bakınız ' – Raynet