2009-02-28 2 views
0

Ich habe eine Anwendung, die ihre Benutzerdatenbank in einer XML-Datei speichert, und ich muss ausgewählte Felder zu Filemaker exportieren, damit mein Client und die Daten auf Filemaker minen. Ich habe es geschafft, eine XSLT-Datei zum Importieren von XML-Elementen zu erstellen, aber ich finde keine Möglichkeit, Elemente zu importieren. Zeiger zur Lösung dieses Problems werden stark erwartet.Wie können Attribute und Elemente aus XML in Filemaker importiert werden?

Beispiel für die XML-Datei:

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

Bisher habe ich es geschafft haben, Elemente zu importieren, indem Anweisung folgende von dieser Seite: http://edoshin.skeletonkey.com/2005/10/use_modular_xsl.html

Und hier ist die XSLT, die die Elemente importiert, aber nicht Attribute:

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

Antwort

2

ich habe ich nicht sicher zu sagen, bin ich verstanden, was Sie hier benötigen.
Wenn ich verstanden habe - Sie sind nicht den Wert von

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

von

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


bearbeiten mit:
Wenn dies der Fall ist, dann versuchen, wie mit ITEM/@ Schreibt also:

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

wollen Sie die Wert Attribut mit Attribut name ITEM-Element entspricht Registriert unter PropertyBag Element, das unter jedem Benutzer ist ...


Original:
Wenn dies der Fall ist, dann versuchen Sie es mit ITEM/@ Hier wie so:

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

wollen Sie das Element, das unter jedem Benutzer ist ...

+0

Leider, dass funktioniert auch nicht, also mein Problem. – Raynet

+0

Sorry für die irreführende Antwort - behoben, sehen, ob das überhaupt hilft. – Dror

+0

Danke, 'PROPERTYBAG/ITEM [@ NAME =' Registriert ']/@ VALUE' hat den Trick gemacht. * seufz * Ich wünschte, Filemaker hätte eine bessere Dokumentation zum XML-Import als 'wir verwenden XSLT, siehe W3c für die Dokumentation' – Raynet

Verwandte Themen