我有一个用于转换数据的 xslt 模板,我现在拥有的一个选择语句带有一堆 when 子句用于每个可能性,给出的输出是它似乎忽略了所有的 when 并直接进入除此以外。
我删除了几个 when 语句以缩短它
一步一步经历过,把select语句改成直接看code=a。
我的时间有问题,但我似乎看不到
<xsl:for-each select="datafield[@tag='300']">
<xsl:choose>
<xsl:when test="./subfield[@code='a'] !='' and ./subfield[@code='e'] !='' and ./subfield[@code='c'] !=''">
<xsl:element name="PhysicalDescription">
<xsl:value-of select="./subfield[@code='a']" />
</xsl:element>
<xsl:element name="CoverColour">
<xsl:value-of select="./subfield[@code='c']" /> - <xsl:value-of select="./subfield[@code='e']" />
</xsl:element>
</xsl:when>
<xsl:when test="./subfield[@code='a'] !='' and ./subfield[@code='c'] !='' and ./subfield[@code='e'] =''">
<xsl:element name="PhysicalDescription">
<xsl:value-of select="./subfield[@code='a']" />
</xsl:element>
<xsl:element name="CoverColour">
<xsl:value-of select="./subfield[@code='c']" />
</xsl:element>
</xsl:when>
<xsl:otherwise>
<xsl:element name="PhysicalDescription">
<xsl:value-of select="./subfield[@code='a']" />
</xsl:element>
</xsl:otherwise>
</xsl:choose>
XML 数据
<datafield tag="300" ind1="0" ind2="0">
<subfield code="a">1-914pp (vol.1)</subfield>
</datafield>
<datafield tag="300" ind1="0" ind2="0">
<subfield code="a">915-2385pp (vol.2)</subfield>
</datafield>
<datafield tag="300" ind1="0" ind2="0">
<subfield code="a">cli, 835p (supp)</subfield>
<subfield code="e">Pbk</subfield>
</datafield>
<datafield tag="300" ind1="0" ind2="0">
<subfield code="c">navy cover</subfield>
<subfield code="e">Hbk</subfield>
</datafield>
它应该循环遍历 datafield[@tag='300'] 节点,并为它找到的每个节点输出一个基于 xsl:when 的值。
它只输出 else 语句