Преобразование данных в грамматике FMPXMLRESULT в XML-код, соответствующий стандарту контента для цифровых геопространственных метаданных (CSDGM) - PullRequest
0 голосов
/ 18 апреля 2010

У меня проблема в FileMaker; Я хочу связать атрибут «ИМЯ» элемента METADATA / элемента FIELD с соответствующими данными в элементе RESULTSET / элементе COL.

Однако я также хочу отобразить элементы метаданных элемента METADATA / FIELD «NAME» на элементы метаданных «Стандарт контента для цифровых геопространственных метаданных (CSDGM)»

Пример записи метаданных XML с основными элементами CSDGM

<?xml version="1.0" encoding="ISO-8859-1" ?>
  <metadata>
   <idinfo>
      <citation>
       <citeinfo>
          <origin>Louisiana State University Coastal Studies Institute</origin>
          <pubdate>20010907</pubdate>
          <title>Geomorphology and Processes of Land Loss in Coastal Louisiana, 1932 –
          1990</title>
       </citeinfo>
     </citation>
     <descript>
      <abstract>A raster GIS file that identifies the land loss process and
       geomorphology associated with each 12.5 meter pixel of land loss between
       1932 and 1990. Land loss processes are organized into a hierarchical
       classification system that includes subclasses for erosion, submergence,
       direct removal, and undetermined. Land loss geomorphology is organized
       into a hierarchical classification system that includes subclasses for both
       shoreline and interior loss.</abstract>
     <purpose>The objective of the study was to determine the land loss
      geomorphologies associated with specific processes of land loss in coastal
      Louisiana.</purpose>
    </descript>

1 Ответ

0 голосов
/ 16 мая 2010

Я вижу, это довольно старый пост; тебе все еще нужен ответ? Если да, уточните, что вы подразумеваете под «связать элемент с элементом» и нужно ли вам импортировать этот файл, экспортировать его или и то, и другое.

Обновление: вот базовый XSLT, который преобразует грамматику XML FileMaker в CSDGM. Предполагается, что все данные находятся в одной таблице и экспортируются в указанном порядке. Также предполагается, что грамматика GSDGM имеет один metadata в качестве корневого элемента, а затем повторяет idinfo и дочерние элементы для каждой записи.

Обратите внимание, что он не будет конвертировать даты FileMaker, такие как 5/17/2010 в 20100517; это можно записать в XSLT, но гораздо быстрее будет добавить вычисляемое поле в таблицу, которая создает такую ​​строку, и экспортировать это поле вместо Дата .

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:fm="http://www.filemaker.com/fmpxmlresult"
  exclude-result-prefixes="fm">

  <!-- This transformation converts FileMaker FMPXMLRESULT into CSDGM. 
       The assumed source data structure is that:

    Origin
    Date
    Title
    Abstract
    Purpose -->

  <xsl:variable name="ORIG" select="1" />
  <xsl:variable name="DATE" select="2" />
  <xsl:variable name="TITL" select="3" />
  <xsl:variable name="ABST" select="4" />
  <xsl:variable name="PURP" select="5" />

  <!-- The resulting format is XML, ISO-8859-1 -->
  <xsl:output method="xml" encoding="ISO-8859-1" />

  <!-- Main -->
  <xsl:template match="/">
    <metadata>
      <xsl:for-each select="//fm:ROW">
        <idinfo>
          <citation>
            <citeinfo>
              <origin>
                <xsl:value-of select="fm:COL[$ORIG]" />
              </origin>
              <pubdate>
                <xsl:value-of select="fm:COL[$DATE]" />
              </pubdate>
              <title>
                <xsl:value-of select="fm:COL[$TITL]" />
              </title>
            </citeinfo>
          </citation>
          <descript>
            <abstract>
              <xsl:value-of select="fm:COL[$ABST]" />
            </abstract>
            <purpose>
              <xsl:value-of select="fm:COL[$PURP]" />
            </purpose>
          </descript>
        </idinfo>
      </xsl:for-each>
    </metadata>
  </xsl:template>

</xsl:stylesheet>
...