0

现在我的情况比我在 XSLT for MODS XML 到 FilemakerPro 转换中询问的情况更复杂,如何处理带有参数的 mod?. 在我尝试转换为 FileMaker Pro 格式的 XML 中,我有:

<name type="personal">
   <namePart type="family">
      Giobbi
   </namePart>
   <namePart type="given">
      Robert
   </namePart>
   <role>
      <roleTerm authority="marcrelator" type="code">
         aut
       </roleTerm>
   </role>
</name>

我在 XSLT 中放了什么<xsl:value-of select="...." />来处理它。新的并发症是:

  1. 源 XML 具有嵌套结构,其中包含多个元素name
  2. 对于 itemroleTerm有两个参数authoritycode

在生成的 XML 中,我想要为“家庭”和“给定”名称以及roleTerm.

此外,在某些情况下,会有两个或更多这样的<name>...</name>实体。我该如何处理——以便在目标 XML 中创建额外的列?是否像MAXREPEAT从更改"1"为更大的值一样简单?

所需的输出应类似于以下内容:

<FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult"    
     xmlns:mod="http://www.loc.gov/mods/v3">
   <ERRORCODE>0</ERRORCODE>
   <PRODUCT NAME="N/A" BUILD="N/A" VERSION="N/A"/>
<DATABASE NAME="N/A" LAYOUT="N/A" RECORDS="1" DATEFORMAT="M/d/yyyy" TIMEFORMAT="h:mm:ss a"/>
<METADATA>
  <FIELD EMPTYOK="YES" MAXREPEAT="1" TYPE="TEXT" NAME="Title"/>
  <FIELD EMPTYOK="YES" MAXREPEAT="1" TYPE="TEXT" NAME="Genre"/>
  <FIELD EMPTYOK="YES" MAXREPEAT="1" TYPE="TEXT" NAME="LastName"/>
  <FIELD EMPTYOK="YES" MAXREPEAT="1" TYPE="TEXT" NAME="FirstName"/>
</METADATA>
<RESULTSET>
  <ROW MODID="1" RECORDID="1">
    <COL>
      <DATA>Roberto Giobbi's Card college. Volume 1</DATA>
    </COL>
    <COL>
      <DATA>book</DATA>
    </COL>
    <COL>
      <DATA>Giobbi</DATA>
    </COL>
    <COL>
      <DATA>Roberto</DATA>
    </COL>
  </ROW>
</RESULTSET>
</FMPXMLRESULT>

我说“类似”是因为当然会有更多的行,源 XML 中的每个项目一个,更重要的是因为我不知道当表单的字段不止一个时结果应该是什么样子<name type="personal">...</name>在源中(即,书目源 xml 文件中的多个作者)。

4

1 回答 1

0

每个文本内容的示例选择:

重复 COL:

<xsl:for-each select="name">
    <ROW MODID="{position()}" RECORDID="{position()}">
        ...
    </ROW>
</xsl:for-each>

选择姓氏:

<xsl:value-of select="namePart[@type='family']"/>

用于生成

<xsl:value-of select="namePart[@type='given']"/>

用于选择 roleTerm

<xsl:value-of select="roleTerm[@authority='marcrelator' and @type='code']"/>
于 2013-03-27T16:39:05.917 回答