通过具有列名的xslt输出Filemaker xml

通过具有列名的xslt输出Filemaker xml,xslt,filemaker,Xslt,Filemaker,我不熟悉xslt编程和xlm。我已经创建了下面的代码,它工作得很好,只是每个列的变量名都显示为“colno”,如何将列名输入到输出中 <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fmp="http://www.filemaker.com/fmpxmlresult" exc

我不熟悉xslt编程和xlm。我已经创建了下面的代码,它工作得很好,只是每个列的变量名都显示为“colno”,如何将列名输入到输出中

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fmp="http://www.filemaker.com/fmpxmlresult"
  exclude-result-prefixes="fmp"
>
<xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/>

  <xsl:variable name="kMetaData" select="fmp:METADATA/fmp:FIELD"/>
  <xsl:variable name="colno"   
    select="count($kMetaData[following-sibling::fmp:FIELD/@NAME]) + 1" />

  <xsl:template match="/fmp:FMPXMLRESULT">
    <PERSON>
      <xsl:apply-templates select="fmp:RESULTSET/fmp:ROW" />
    </PERSON>
  </xsl:template>

  <xsl:template match="fmp:ROW">
    <ELEMENTS>
      <xsl:apply-templates select="fmp:COL" />
     </ELEMENTS>
  </xsl:template>

  <xsl:template match="fmp:COL">

    <xsl:element name="colno">
      <xsl:value-of select="fmp:DATA" />
    </xsl:element>
  </xsl:template>
</xsl:stylesheet>

没有输入xml,很难提出一些建议。但乍一看,这个
表示“输出一个元素
”。我认为您应该使用类似

编辑:

根据您的输入xml,“COL”元素的模板应该如下所示

<xsl:template match="COL">
    <xsl:variable name="colPosition" select="position()" />
    <!-- Prevent spaces in NAME attribute of FIELD element -->
    <xsl:variable name="colName" select="translate($kMetaData[$colPosition]/@NAME, ' ', '_')" />
    <xsl:element name="{$colName}">
        <xsl:value-of select="DATA"/>
    </xsl:element>
</xsl:template>

然后输出看起来像

<?xml version="1.0" encoding="utf-8"?>
<PERSON>
    <ELEMENTS>
        <FIRSTNAME>Richard</FIRSTNAME>
        <LASTNAME>Katz</LASTNAME>
        <MIDDLENAME>David</MIDDLENAME>
        <REQUESTDT>1/1/2001</REQUESTDT>
        <salutation>Mr</salutation>
        <Bargaining_Unit>CSEA (02,03,04)</Bargaining_Unit>
        <Field_134>b</Field_134>
    </ELEMENTS>
</PERSON>

理查德
卡茨
大卫
1/1/2001
先生
CSEA(02,03,04)
B

输出如下:-Richard Katz David 1/1/2001 Mr CSEA(02,03,04)b-David Norton di 1/1/2011 Mr UUP(08)等,。我希望是字段名,如firstname、lastname、middlename等。它们是变量字段。谢谢您的帮助。您的输入xml是什么?输入数据集如下所示:-Richard-Katz-David-1/1/2001-Mr-CSEA(02,03,04)-B我们很接近,但仍然不存在。现在,问题似乎是从Filemaker读取数据。当我使用fmp:Col作为select和template时,我得到以下输出:-RichardKatzDavid1/1/2001MrCSEA(02,03,04)b列名(字段)消失了。没有fmp,记录为空。感谢您的帮助。以下是完整的输入xml: