2014-03-31 32 views
0

我使用XSLT 2.0創建電子表格,並且無法正確分離序列。我試圖匹配斯洛伐克的子字段(代碼= 2的值是SNKPH)並輸出它的兄弟子字段(代碼= a)的文本值。用於序列不分離的XSLT分隔符

我的理想輸出是「照片; 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

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

+0

非常感謝!它完美的作品。 – Sandy