我有一个XSLT文件
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
exclude-result-prefixes="msxsl">
<xsl:template match="/RESULTS">
</xsl:template>
</xsl:stylesheet>
和示例XML文件
<?xml version="1.0" encoding="utf-8"?>
<Report>
<RESULTS>
SOME DATA
</RESULTS>
</Report>
当我运行转换时,我得到了
<?xml version="1.0" encoding="UTF-8"?>
SOME DATA
模板匹配子句正在寻找/ RESULTS并且数据中的根元素是Report,因此模板永远不会匹配任何内容,那么为什么它会返回源文件中的所有文本,尽管没有匹配任何模板?
我用Saxon和.Net的XSLT 1.0引擎进行了测试,结果是一样的,所以我猜它是故意的,但我找不到任何描述这种行为的东西。
答案 0 :(得分:1)
此处的核心问题是,您的match="/RESULTS"
模板规则仅匹配文档最外层的RESULTS
元素(没有前导/
,它会匹配任何地方)。因此,模板规则不匹配任何内容,这意味着源中的所有元素都由内置模板规则处理,包括文本节点,它们只是复制到结果中。