用于序列不分离的XSLT分隔符

时间:2014-03-31 18:48:07

标签: xslt-2.0 xpath-2.0

我正在使用XSLT 2.0来创建电子表格,并且无法正确分离序列。我正在尝试匹配斯洛伐克的子字段(代码= 2值是SNKPH)并输出它的兄弟子字段(代码= a)的文本值。

我的理想输出是“fotografie; ferotypia”。我实际得到的是“fotografieferotypia”。我不确定我做错了什么。

示例数据:

<marc:collection>
   <marc:record>    
      <marc:datafield tag="655" ind1=" " ind2="7">
         <marc:subfield code="a">fotografie</marc:subfield>
         <marc:subfield code="2">SNKPH</marc:subfield>
      </marc:datafield>
      <marc:datafield tag="655" ind1=" " ind2="7">
         <marc:subfield code="a">ferotypia</marc:subfield>
         <marc:subfield code="2">SNKPH</marc:subfield>
      </marc:datafield>
      <marc:datafield tag="655" ind1=" " ind2="7">
         <marc:subfield code="a">Photographs</marc:subfield>
         <marc:subfield code="2">SNKPHeng</marc:subfield>
      </marc:datafield>
      <marc:datafield tag="655" ind1=" " ind2="7">
         <marc:subfield code="a">Ferrotype</marc:subfield>
         <marc:subfield code="2">SNKPHeng</marc:subfield>
      </marc:datafield>
   </marc:record>
</marc:collection>

示例代码

<xsl:template match="/">header
   <xsl:apply-templates/>
</xsl:template>
<xsl:template match="marc:record">
   <xsl:variablename="slk_655">
      <xsl:for-each select="marc:datafield[@tag='655']">
        <xsl:choose>
          <xsl:when test="./marc:subfield[@code='2' and text()='SNKPH']">
            <xsl:value-of select="./marc:subfield[@code='a']"/>
          </xsl:when>
          <xsl:otherwise/>
        </xsl:choose>
      </xsl:for-each>
   </xsl:variable>
   <xsl:value-of select="$slk_655" separator="; "/>
</xsl:template>

1 个答案:

答案 0 :(得分:1)

只需使用<xsl:value-of select="marc:datafield[@tag = '655' and marc:subfield[@code = '2' and . = 'SNKPH]]/marc:subfield[@code = 'a']" separator="; "/>