Xml XSLT使用for each来应用模板
所以,我刚才问了一个问题:Xml XSLT使用for each来应用模板,xml,xslt,soap,Xml,Xslt,Soap,所以,我刚才问了一个问题: xxxxxxxx XXX 服务提供商 2014-09-26T13:19:30.534Z 现在我有了样式表 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:cass="http://blahblahblah" xmlns:head="h
xxxxxxxx
XXX
服务提供商
2014-09-26T13:19:30.534Z
现在我有了样式表
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:cass="http://blahblahblah" xmlns:head="http://www/example.com" exclude-result-prefixes="soap cass head">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="soap:Header" />
<xsl:template match="cass:SPD">
<xsl:for-each select=".//cass:SP">
<xsl:apply-templates select="*/cass:SPM"/>
<xsl:apply-templates select="*/cass:RQ"/>
<xsl:apply-templates select="*/cass:SP"/>
</xsl:for-each>
</xsl:template>
<xsl:template match="*/cass:RQ">
<RT>
<xsl:value-of select="@RT"/>
</RT>
<FG>
<xsl:value-of select="@FG"/>
</FG>
<PD>
<xsl:value-of select="@PD"/>
</PD>
</xsl:template>
<xsl:template match="*/cass:SPM">
<MESSAGE_TXT>
<xsl:value-of select="@MessageText"/>
</MESSAGE_TXT>
</xsl:template>
</xsl:stylesheet>
所以,基本上对于每个cass:SP,我想生成单独的EVAPP_SP元素,它有从xml的不同部分选择的节点。我希望这足够清楚,我不擅长阐明这个问题。问题发生在模板匹配
cass:SPD
<xsl:template match="cass:SPD">
<xsl:for-each select=".//cass:SP">
<xsl:apply-templates select="*/cass:SPM"/>
<xsl:apply-templates select="*/cass:RQ"/>
<xsl:apply-templates select="*/cass:SP"/>
</xsl:for-each>
</xsl:template>
这至少会给出一些输出。xsl:template元素必须是顶级元素(xsl:stylesheet的子元素),而
xsl:for each
只能出现在模板内部。好的,我更新了它,但是我仍然得到一个空白的xml输出。xsl:template
元素需要是xsl:stylesheet
的子元素,而不是调用引擎响应的子元素。你确定你的代码没有出错吗?嘿,如果我听不懂你说的话,我真的很抱歉。我更新了问题中的样式表。还是错了吗?我删除了所有其他的附加标记,稍后我会添加它们。样式表现在很好,但仍然不会产生任何输出。请以XML而不是散文形式显示您期望的输出。谢谢
<xsl:template match="cass:SPD">
<xsl:for-each select=".//cass:SP">
<xsl:apply-templates select="*/cass:SPM"/>
<xsl:apply-templates select="*/cass:RQ"/>
<xsl:apply-templates select="*/cass:SP"/>
</xsl:for-each>
</xsl:template>
<xsl:template match="cass:SPD">
<xsl:apply-templates select="*/cass:SPM"/>
<xsl:apply-templates select="*/cass:RQ"/>
<xsl:apply-templates select="*/cass:SP"/>
</xsl:template>