xml – 使用xsl变量捕获调用模板的输出,为我返回空白
发布时间:2020-12-16 07:51:09 所属栏目:百科 来源:网络整理
导读:我看过很多帖子都是这样做的,这让我觉得这是可能的,我只是做错了什么.我尽可能地简化了它,试图弄清楚为什么会这样: 继承人我的xml(没什么好激动的): ?xml version="1.0" encoding="UTF-8"?REPORT/REPORT 这是我的xsl: ?xml version="1.0" encoding="utf-8
我看过很多帖子都是这样做的,这让我觉得这是可能的,我只是做错了什么.我尽可能地简化了它,试图弄清楚为什么会这样:
继承人我的xml(没什么好激动的): <?xml version="1.0" encoding="UTF-8"?> <REPORT> </REPORT> 这是我的xsl: <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> <xsl:template match="REPORT"> <xsl:variable name="tryThisTemplate"> <xsl:call-template name="TRY_THIS"/> </xsl:variable> <TEST1> <xsl:call-template name="TRY_THIS"/> </TEST1> <TEST2> <xsl:value-of disable-output-escaping="yes" select="$tryThisTemplate" /> </TEST2> <TEST3> <xsl:value-of select="$tryThisTemplate" /> </TEST3> </xsl:template> <xsl:template name="TRY_THIS"> <MY_NODE desc="my description" /> </xsl:template> </xsl:stylesheet> 这是我的结果: <?xml version="1.0" encoding="utf-8"?> <TEST1> <MY_NODE desc="my description"/> </TEST1> <TEST2></TEST2> <TEST3></TEST3> 这是我的问题:
这是执行此操作的正确方法(请注意,DOE不是必需的,应该避免):
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> <xsl:output omit-xml-declaration="yes" indent="yes"/> <xsl:template match="REPORT"> <xsl:variable name="tryThisTemplate"> <xsl:call-template name="TRY_THIS"/> </xsl:variable> <TEST1> <xsl:call-template name="TRY_THIS"/> </TEST1> <TEST2> <xsl:copy-of select="$tryThisTemplate" /> </TEST2> <TEST3> <xsl:copy-of select="$tryThisTemplate" /> </TEST3> </xsl:template> <xsl:template name="TRY_THIS"> <MY_NODE desc="my description" /> </xsl:template> </xsl:stylesheet> 当此转换应用于提供的XML文档时: <REPORT> </REPORT> 产生了想要的结果: <TEST1> <MY_NODE desc="my description"/> </TEST1> <TEST2> <MY_NODE desc="my description"/> </TEST2> <TEST3> <MY_NODE desc="my description"/> </TEST3> 说明:< xsl:copy-of>副本(如其名称所示)节点. < XSL:value-of的>输出其select属性中的任何内容的字符串值.元素的字符串值是其所有文本节点后代的串联(按文档顺序).在您的情况下,元素没有文本节点后代,因此< xsl:value-of>没有输出. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |