非常基本的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
答案 0 :(得分:0)
发生这种情况的原因是您的唯一模板匹配title
,让built-in templates处理letter
节点及其他后代。这样做的效果是复制所有文本节点。
要解决此问题,请将模板更改为:
<xsl:template match="/letter">
<xsl:value-of select="title"/>
</xsl:template>