tes*_*123 8 xml xslt transform
我看过很多帖子都做了这样的事情,这让我觉得这是可能的,我只是做错了什么.我尽可能简化了它,试图弄清楚为什么会发生这种情况:
继承人我的xml(没什么好激动的):
<?xml version="1.0" encoding="UTF-8"?>
<REPORT>
</REPORT>
Run Code Online (Sandbox Code Playgroud)
这是我的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>
Run Code Online (Sandbox Code Playgroud)
这是我的结果:
<?xml version="1.0" encoding="utf-8"?>
<TEST1>
<MY_NODE desc="my description"/>
</TEST1>
<TEST2></TEST2>
<TEST3></TEST3>
Run Code Online (Sandbox Code Playgroud)
这是我的问题:为什么TEST2和TEST3不起作用.$ tryThisTemplate变量似乎为空.我在这里误解了什么.我应该以不同的方式做这件事吗?
Dim*_*hev 16
这是执行此操作的正确方法(请注意,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>
Run Code Online (Sandbox Code Playgroud)
当此转换应用于提供的XML文档时:
<REPORT>
</REPORT>
Run Code Online (Sandbox Code Playgroud)
产生了想要的结果:
<TEST1>
<MY_NODE desc="my description"/>
</TEST1>
<TEST2>
<MY_NODE desc="my description"/>
</TEST2>
<TEST3>
<MY_NODE desc="my description"/>
</TEST3>
Run Code Online (Sandbox Code Playgroud)
说明: <xsl:copy-of>
副本(如其名称所示)节点.<xsl:value-of>
输出其select
属性中的任何内容的字符串值.元素的字符串值是其所有文本节点后代的串联(按文档顺序).在您的情况下,元素没有文本节点后代,因此不<xsl:value-of>
输出任何内容.
归档时间: |
|
查看次数: |
27210 次 |
最近记录: |