如何使用XSLT提取两个相同XML字段的内容?

时间:2017-05-29 11:32:44

标签: arrays xml xslt

我在XML中有以下字段:

<datafield tag="004R"><subfield code="0">10900/69470</subfield></datafield>

<datafield tag="004R"><subfield code="0">10419/140630</subfield></datafield>

所以标签是相同的&#34; 004R&#34;以及subfiledcode&#34; 0&#34;,但值不同。

我尝试用我的XSLT提取这两个字段,但我只得到第一次重复两次。那是我的XSLT: 首先,我定义变量

<xsl:variable name="handle004R" 
                        select="recordData/record/datafield[@tag='004R']/subfield[@code='0']" />

然后尝试提取所有值:

 <xsl:choose>
                        <xsl:when test="string($handle004R)">
                            <xsl:for-each select="$handle004R">
                                <identifier xmlns="http://purl.org/dc/elements/1.1/">
                                    <xsl:value-of select="$handle004R" />
                                </identifier>
                            </xsl:for-each>
                        </xsl:when>
                        <xsl:otherwise />
                    </xsl:choose>

输出结果为:

<identifier xmlns="http://purl.org/dc/elements/1.1/">10900/69470</identifier>
<identifier xmlns="http://purl.org/dc/elements/1.1/">10900/69470</identifier>

但它应该是:

<identifier xmlns="http://purl.org/dc/elements/1.1/">10900/69470</identifier>
<identifier xmlns="http://purl.org/dc/elements/1.1/">10419/140630</identifier>

1 个答案:

答案 0 :(得分:1)

<xsl:value-of select="$handle004R" />更改为<xsl:value-of select="."/>