这就是 XSLT 和 XPath 1.0 的常见问题解答,输入 XHTML 文档中的元素位于名称空间中,而 XSLT 没有考虑到这一点。您需要将其更改为例如
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xhtml="http://www.w3.org/1999/xhtml"
exclude-result-prefixes="xhtml">
<xsl:template match="/">
<stellenausschreibung>
<hochschule><xsl:value-of select="//xhtml:div[@id='contentText']/xhtml:img/@alt" /></hochschule>
<anbieter><xsl:value-of select="//xhtml:p[@id='ad_employer']" /></anbieter>
<typ><xsl:value-of select="//xhtml:h1" /></typ>
<bewerbungsschluss><xsl:value-of select="//xhtml:span[@id='ad_bewerbungsschluss']" /></bewerbungsschluss>
<erscheinungsdatum><xsl:value-of select="//xhtml:span[@class='job_published_at']" /></erscheinungsdatum>
<inhalt><xsl:value-of select="//xhtml:p[@id='ad_job']" /></inhalt>
</stellenausschreibung>
</xsl:template>
</xsl:stylesheet>
样式表中使用的 XHTML 命名空间的前缀(在我的示例中xhtml
)当然可以自由选择,但必须使用一个前缀,就像 XSLT/XPath 1.0 一样,例如//p
总是选择p
没有命名空间中的元素的路径。