为什么XSLT默认输出所有文本?

为什么XSLT默认输出所有文本?

嗨我已经执行了一个转换,如果它是null,则删除一个标记。

我想检查我的转换是否正常工作,所以不是手动检查,而是编写了一个XSLT代码,只检查OUTPUT XML中是否存在该特定标记,如果它为null,则第二个XSLT应该输出一个文字“发现”。(我实际上并不需要一些XML类型的输出,但我只是使用XSLT进行搜索。)

当我尝试使用这个XSL代码::

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/SiebelMessage//SuppressCalendar[.!='']">
      FOUND  </xsl:template></xsl:stylesheet>

它输出XML文件中存在的所有TEXT DATA,

为了避免这种情况,我不得不写下这段代码::

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/SiebelMessage//SuppressCalendar[.!='']">
      FOUND  </xsl:template>
  <xsl:template match="text()"/></xsl:stylesheet>

为什么以前的代码输出TEXT,为什么我要坚持XSL忽略所有其他文本?是所有XML解析器的行为或仅我自己的行为(我正在使用msxml解析器)。


幕布斯6054654
浏览 497回答 2
2回答

拉莫斯之舞

XSL中有几个内置的模板规则,其中之一是:<xsl:template&nbsp;match="text()|@*"> &nbsp;&nbsp;<xsl:value-of&nbsp;select="."/></xsl:template>它输出文字。
打开App,查看更多内容
随时随地看视频慕课网APP