0

今、私は、MODS XML から FilemakerPro への変換のための XSLT で質問したよりも複雑な状況にあります。パラメーターを使用して 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には と の 2 つのパラメーターがauthorityありcodeます。

結果の XML では、「家族」と「与えられた」名前、およびroleTerm.

<name>...</name>また、場合によっては、そのようなエンティティが 2 つ以上存在することもあります。ターゲット 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 の項目ごとに 1 つずつ、より多くの行が存在するため、さらに重要なことに、フォームに複数のフィールドがある場合に結果がどのように表示されるかがわからないため、「次のような」と言います。<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 に答える