代码之家  ›  专栏  ›  技术社区  ›  Sandy

不分隔序列的XSLT分隔符

  •  0
  • Sandy  · 技术社区  · 12 年前

    我正在使用XSLT2.0创建一个电子表格,但很难将序列正确分开。我试图匹配斯洛伐克语的子字段(代码=2,值为SNKPH),并输出其兄弟子字段的文本值(代码=a)。

    我的理想输出是“fotografie;ferotypia”。我实际上得到的是“fotografieferotype”。我不知道我做错了什么。

    样本数据:

    <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 回复  |  直到 12 年前
        1
  •  1
  •   Martin Honnen    12 年前

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