如何将属性和元素从XML导入Filemaker?
我有一个将其用户数据库存储到XML文件的应用程序,我需要将所选字段导出到Filemaker,以便我的客户机和我在Filemaker上挖掘数据。我设法使XSLT文件导入XML元素,但似乎找不到导入任何元素的方法。解决这个问题的指针是非常值得期待的 XML文件的示例:如何将属性和元素从XML导入Filemaker?,xml,xslt,xpath,filemaker,Xml,Xslt,Xpath,Filemaker,我有一个将其用户数据库存储到XML文件的应用程序,我需要将所选字段导出到Filemaker,以便我的客户机和我在Filemaker上挖掘数据。我设法使XSLT文件导入XML元素,但似乎找不到导入任何元素的方法。解决这个问题的指针是非常值得期待的 XML文件的示例: <?xml version="1.0" encoding="utf-8"?> <APPLICATION_NAME> <USERS> <USER> <ID&g
<?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>
下面是导入这些元素而不是属性的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>
我不得不说,我不确定我是否理解您在这里需要什么。
如果我真的理解的话——你没有得到
<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>
编辑:
如果是这种情况,请尝试使用ITEM/@registed,如下所示:
<xsl:call-template name="COL">
<xsl:with-param name="DATA" select="PROPERTYBAG/ITEM[@NAME='Registered']/@VALUE"/>
</xsl:call-template>
您希望在每个用户下的propertybag元素下注册name属性等于的ITEM元素的value属性
原件:
如果是这种情况,请尝试使用ITEM/@registed,如下所示:
<xsl:call-template name="COL">
<xsl:with-param name="DATA" select="ITEM/@Registered"/>
</xsl:call-template>
您需要每个用户下的项目…很抱歉回答有误-修复了它,看看这是否有帮助。谢谢,'PROPERTYBAG/ITEM[@NAME='Registered']/@VALUE'完成了此操作。唉,我希望Filemaker在XML导入方面有一个比“我们使用XSLT,请参阅W3c获取文档”更好的文档@Raynet:很乐意提供帮助。我不同意您对文档的评论,我认为告诉我们他们使用标准XSLT就足够了(我可以帮助您,但我甚至不知道filemaker是什么)。