我的代码的一般目的是生成一个html文档,显示我的xml文档中的一些信息。 我想根据他们的身份得到医生的名字。 这是我的xml文档的样子:
<hospital>
<doctors>
<doctor>
<name>john</name>
<id>1</id>
...
</doctor>
<doctor>
<name>steve</name>
<id>2</id>
...
</doctor>
</doctors>
<records>
<record>
<doctor id="1" />
<date>...</date>
<patient>
...
</patient>
</record>
</records>
</hospital>
这是我的xslt代码:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="ids" match="doctor" use="id" />
<xsl:template match="/">
...
<xsl:apply-templates select="hospital/records/record"/>
...
</xsl:template>
<xsl:template match="record">
...
Doctor identification : <xsl:value-of select="doctor/@id" />
<xsl:variable name="docId" select="/doctor/@id" />
<xsl:value-of select="key('ids',$docId)/hospital/doctors/doctor/name"/>
...
</xsl:template>
</xsl:stylesheet>
在我的HTML中,我可以阅读:
&#34;医生鉴定:医生的身份&#34;
我希望能够得到:
&#34;医生鉴定:医生的医生姓名&#34;
所以我花了几个小时试图找出为什么我的xslt代码不起作用。 这是一项任务,我必须使用xpath&#34; hospital / records / record&#34;。 我希望我的问题很清楚。 谢谢你的帮助!!!
答案 0 :(得分:1)
首先,改变一下:
<xsl:variable name="docId" select="/doctor/@id" />
为:
<xsl:variable name="docId" select="doctor/@id" />
然后改变这个:
<xsl:value-of select="key('ids',$docId)/hospital/doctors/doctor/name"/>
为:
<xsl:value-of select="key('ids', $docId)/name"/>
希望这些变化不言自明。请注意,变量不是必需的:您可以简单地执行:
<xsl:value-of select="key('ids', doctor/@id)/name"/>