XML:
<?xml version="1.0" encoding="utf-8"?>
<NewDataSet>
<inc_incident>
<inc_interventionprocedure>
<ProcedureID>CPR</ProcedureID>
</inc_interventionprocedure>
<inc_interventionprocedure>
<ProcedureID>Airway-Endotracheal Intubation</ProcedureID>
</inc_interventionprocedure>
<inc_interventionprocedure>
<ProcedureID>Capnography</ProcedureID>
</inc_interventionprocedure>
</inc_incident>
</NewDataSet>
XSL:
<xsl:if test="starts-with(inc_interventionprocedure/ProcedureID, "Airway")">
<fo:inline>X</fo:inline>
</xsl:if>
<xsl:if test="not(starts-with(inc_interventionprocedure/ProcedureID, "Airway"))">
<fo:inline>X</fo:inline>
</xsl:if>
我想表明,如果任何节点以“Airway”开头,则在“YES”栏中以“X”开头,如果“NO”栏中没有,则标记“X”。使用此xsl:if测试两列都标有Xs。
xsl的结果:如果测试显示:
YES NO
Airway成立X X
答案 0 :(得分:0)
由于引号内嵌有引号,因此您当前的测试格式不正确。但主要问题是starts-with
将字符串作为第一个参数,而不是节点集。在XSLT 1.0中,它将使用第一个节点的值。在XSLT 2.0中,您会收到错误。
你的表达应该看起来像这样
<xsl:if test="inc_interventionprocedure/ProcedureID[starts-with(., 'Airway')]">
理想情况下,您可以在此使用xsl:choose
以避免在not
试试这个:
<xsl:choose>
<xsl:when test="inc_interventionprocedure/ProcedureID[starts-with(., 'Airway')]">
<fo:inline>YES</fo:inline>
</xsl:when>
<xsl:otherwise>
<fo:inline>NO</fo:inline>
</xsl:otherwise>
</xsl:choose>
这假设您位于inc_incident
元素上。
答案 1 :(得分:0)
Tim C提供的解决方案应该稍作改动。
<xsl:choose>
<xsl:when test="inc_interventionprocedure/ProcedureID[starts-with(., 'Airway')]">
<fo:inline>X</fo:inline>
<fo:inline> </fo:inline>
</xsl:when>
<xsl:otherwise>
<fo:inline> </fo:inline>
<fo:inline>X</fo:inline>
</xsl:otherwise>
</xsl:choose>