我想使用XSL在我的XML文件中获取值。 我试图获得这个价值:
<publication id="1708" name="Jimmy" xmlns:dc="http://purl.org/dc/elements/1.1/">
<dc:title>MY TITLE</dc:title>
</publication>
我尝试了很多解决方案,但它不起作用。 这是我的xsl代码:
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:dc="http://purl.org/dc/elements/1.1/">
<xsl:template match="/">
<html>
<title>
<xsl:template match="dc:title">
<xsl:copy-of select="." />
</xsl:template>
</title>
<body>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
谢谢我回答
麦
答案 0 :(得分:1)
您的主要问题是您已嵌套了两个模板。模板不是嵌套的。相反,你应用它们。下面的样式表可以解决您的问题:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<xsl:template match="publication">
<html>
<head>
<xsl:apply-templates select="dc:title"/>
</head>
<body>
</body>
</html>
</xsl:template>
<xsl:template match="dc:title">
<title>
<xsl:apply-templates />
</title>
</xsl:template>
</xsl:stylesheet>
我做了其他一些修改 - 如果您希望代码易于维护,请使用xsl:apply-templates
使用xsl:value-of
。我还修复了你的html标题部分。我还修改了您的模板以匹配根元素而不是文档节点(publication
而不是/
)
要使用此样式表,您需要将其保存到文件中(假设为style.xsl
,我们将其保存到与xml文件相同的目录中)。然后,您需要修改XML文件,如下所示:
<?xml-stylesheet type="text/xsl" href="style.xsl"?>
<publication id="1708" name="Jimmy" xmlns:dc="http://purl.org/dc/elements/1.1/">
<dc:title>MY TITLE</dc:title>
</publication>