XSLT正在转储所有源XML。为什么?

时间:2015-08-02 00:29:05

标签: xml xslt

非常基本的xslt问题。我试图让xslt格式化源xml的一个子集但是所有的xml都显示出来了,我不明白为什么。

这里是xml:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="XSLTDC.xsl"?>
<letter xmlns:xlink="http://www.w3.org/1999/xlink">   
    <title>Letter from Lionel Cary to Loretta Cary</title>  
    <date>07-05-1906</date> 
    <source>        
        <university>UCLA</university>       
        <library>Powell Library</library>       
        <department>Special Collections and University Archives</department>        
    </source>           
</letter>

这是xslt:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet 
    xmlns:xlink="http://www.w3.org/1999/xlink"    
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    version="2.0">
    <xsl:output method="xml"/>
    <xsl:template match="letter/title">
        <xsl:value-of select="."/>
    </xsl:template>
</xsl:stylesheet>

我得到了这个:

Letter from Lionel Cary to Loretta Cary 07-05-1906 
UCLA Powell Library Special Collections and University Archives

但我希望的结果是:

Letter from Lionel Cary to Loretta Cary

1 个答案:

答案 0 :(得分:0)

发生这种情况的原因是您的唯一模板匹配title,让built-in templates处理letter节点及其他后代。这样做的效果是复制所有文本节点。

要解决此问题,请将模板更改为:

<xsl:template match="/letter">
    <xsl:value-of select="title"/>
</xsl:template>