我有一个像这样的样本xml:
<?xml version="1.0" encoding="UTF-8"?>
<collection>
<cd>
<title>Boys for Pele</title>
<artist>Tori Amos</artist>
<tracks>
<track type="vocal">
<name>Horses</name>
<length>3.5</length>
</track>
<track type="instrumental">
<name>Blood roses</name>
<length>3.2</length>
</track>
<track type="vocal">
<name>Father lucifer</name>
<length>3.8</length>
</track>
<track type="instrumental">
<name>Professional widow</name>
<length>4.1</length>
</track>
<track type="vocal">
<name>Mr. Zebra</name>
<length>3.6</length>
</track>
</tracks>
</cd>
</collection>
我使用示例xsl进行测试:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/"/>
</xsl:stylesheet>
问题是&#39; <xsl:template match="/"/>
&#39;码。
当我测试它时,没有任何结果
当我用&{39; <xsl:template match="collection/cd"/>
替换它时,仍然没有任何结果
但是当我用&#39; <xsl:template match="collection/cd/tracks"/>
&#39;替换它时,
出现以下结果: -
Pele Tori Amos的男孩寻找Crash TestDummies的幽灵
但是这个值不在xml的元素内,在它之外。
有人可以提供一些帮助吗?非常感谢!
答案 0 :(得分:0)
您的空模板会覆盖默认模板by default copies all text。模板的操作是 nothing ,因此省略了它匹配的任何内容,不匹配的任何内容都会回退到默认值。
匹配= “/”
处理引擎到达您的root用户模板并应用它,导致空输出。
匹配= “收集/ CD”
处理引擎在复制节点中的所有(缺少)文本后到达您的模板,导致空输出。
匹配= “收集/ CD /磁道”
处理引擎在复制了<title>
和<artist>
标记中的所有文字后到达您的模板,然后将“不执行任何操作”规则应用于<tracks>
,从而产生标题 - text artist-text title-text artist-text ... result。