【问题标题】:Filemaker xml output via xslt with column namesFilemaker xml 通过带有列名的 xslt 输出
【发布时间】:2013-07-15 15:39:04
【问题描述】:

我是 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>

【问题讨论】:

    标签: xslt filemaker


    【解决方案1】:

    如果没有输入 xml,很难提出建议。但乍一看,这个&lt;xsl:element name="colno"&gt; 说“输出一个元素&lt;colno&gt;”。我认为你应该使用类似&lt;xsl:element name="{xpath/to/columnName}"&gt;

    编辑:

    根据您的输入 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>
    

    【讨论】:

    • 输出看起来像: - - RichardKatz 大卫1/1/2001先生CSEA (02,03,04) b - DavidNortondi1/1/2011先生 UUP (08) 等等。我希望 成为字段名称,例如名字、姓氏、中间名等。它们是变量字段。谢谢你的帮助。
    • 你输入的 xml 是什么?
    • 输入数据集如下所示: - Richard - Katz - 大卫 - 1/1/2001 - 先生 - CSEA (02,03,04) - b
    • 我们已经很接近了,但还没有。现在,问题似乎是从 Filemaker 读取数据。当我将 fmp:Col 用于选择和模板时,我得到以下输出: - RichardKatzDavid1/1/2001MrCSEA (02,03 ,04)b 列名(字段)消失了。没有 fmp,记录是空的。感谢您的帮助。
    • 这里是整个输入xml:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-29
    • 2013-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    相关资源
    最近更新 更多