对于精通 XSLT 的作者来说,这个问题可能很容易回答。
我有以下示例 XML 文档:
<?xml version="1.0" encoding="UTF-8"?>
<students>
<student num="12345678">
<name>Dona Diller</name>
<dob>1970-07-21</dob>
<education>BSc</education>
<education>MSc</education>
<status>Married</status>
</student>
<!-- more student elements to follow... -->
</students>
以及以下 XSL:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="html"/>
<xsl:template match="/">
<html>
<title>Test</title>
<body>
<h1>Personal details</h1>
<xsl:apply-templates select="students/student"/>
</body>
</html>
</xsl:template>
<xsl:template match="student">
<p>
Student number:
<xsl:value-of select="@num"/>
</p>
<p>Full name:
<xsl:value-of select="name"/>
</p>
<p>Date of birth
<xsl:value-of select="dob"/>
</p>
<!-- TODO: text of 'education' elements must be separated by a space -->
<p>Degrees:
<xsl:apply-templates select="education"/>
</p>
<p>Status:
<xsl:value-of select="status"/>
</p>
</xsl:template>
</xsl:stylesheet>
当应用于本文开头包含的 XML 文档时,它会产生以下 XHTML 输出:
<html>
<title>Test</title>
<body>
<h1>Personal details</h1>
<p>
Student number:
12345678
</p>
<p>Full name:
Dona Diller
</p>
<p>Date of birth
1970-07-21
</p>
<p>Degrees:
BScMSc
</p>
<p>Status:
Married
</p>
</body>
</html>
我的问题是学位名称合并为一个字符串(教育元素的文本)。因此,我不想在输出中获得“BScMSc”,而是想在前面的示例中显示“BSc MSc”。有什么想法吗?