如何使用XSL </dc:title>获取XML中的<dc:title>值

时间:2014-07-15 12:48:27

标签: xml xslt

我想使用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>
谢谢我回答 麦

1 个答案:

答案 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>