XML:
<?xml version="1.0" encoding="utf-8"?>
<NewDataSet>
<inc_incident>
<inc_assessmentvitalsigns>
<DateVitalSignsTaken>2013-10-06T20:23:36</DateVitalSignsTaken>
<SBP>10</SBP>
<DBP>20</DBP>
<inc_cardiacrhythm>
<CardiacRhythm></CardiacRhythm>
</inc_cardiacrhythm>
</inc_assessmentvitalsigns>
<inc_assessmentvitalsigns>
<DateVitalSignsTaken>2013-10-06T20:24:36</DateVitalSignsTaken>
<SBP>0</SBP>
<DBP>0</DBP>
<inc_cardiacrhythm>
<CardiacRhythm>Asystole</CardiacRhythm>
</inc_cardiacrhythm>
</inc_assessmentvitalsigns>
<inc_assessmentvitalsigns>
<DateVitalSignsTaken>2013-10-06T20:25:36</DateVitalSignsTaken>
<SBP>0</SBP>
<DBP>0</DBP>
<inc_cardiacrhythm>
<CardiacRhythm>Sinus Tachycardia</CardiacRhythm>
</inc_cardiacrhythm>
</inc_assessmentvitalsigns>
</inc_incident>
</NewDataSet>
XSL :(仅限代码段)
<fo:table-row>
<fo:block>
<xsl:for-each select="inc_assessmentvitalsigns">
<xsl:if test="inc_cardiacrhythm/cardiacRhythm !=''">
<xsl:for-each select="inc_cardiacrhythm/CardiacRhythm">
<fo:inline font-family="Verdana, Arial, sans-serif" font-size="9pt">
<xsl:apply-templates />
</fo:inline>
</xsl:for-each>
</xsl:if>
</xsl:for-each>
</fo:block>
</fo:table-row>
.......
<fo:table-row>
</fo:table-row>
我使用APACHE FOP生成包含表格和行的PDF文档。
问题是如何仅返回CardiacRhythm的第一个非空元素?如果我使用
xsl:value-of
select
然后该表的下一行被截断。我无法解决这个问题。谢谢你的帮助。
xsl:
的结果AsystoleSinus Tachycardia
答案 0 :(得分:1)
要获取其中包含一些字符数据的第一个子元素CardiacRhythm
,我更喜欢像CardiacRhythm[text()[string-length(.) gt 0]][1]
这样的XPath表达式。这意味着:转到所有名为CardiacRhythm
的孩子,这些孩子至少有一个文本节点,其字符串长度大于零。然后从这些中选择第一个。
答案 1 :(得分:0)
会这样做:
<xsl:for-each select="inc_assessmentvitalsigns[inc_cardiacrhythm/cardiacRhythm !=''][1]">
<fo:inline font-family="Verdana, Arial, sans-serif" font-size="9pt">
<xsl:apply-templates select="inc_cardiacrhythm/cardiacRhythm" />
</fo:inline>
</xsl:for-each>
答案 2 :(得分:0)
您可以使用以下XPath选择器仅获取第一个非空<cardiacRhythm>
元素:
(inc_cardiacrhythm/cardiacRhythm[normalize-space()])[1]
请注意,包含空格的元素也仅被视为空元素,上述XPath不会选择这些元素。