我试图使用XSLT在html上打印一些XML代码,但它无法正常工作。我还是新手,而且我没有看到这个问题。
这是我的XSLT代码:
<xsl:output method="html" encoding="UTF-8" />
<xsl:template match="/">
<div class="form-horizontal">
<xsl:for-each select="elements/element">
<xsl:sort data-type="number" select="order" />
<xsl:if test="@type='OUTPUT'">
<div class="row">
<div class="form-group">
<div class="{class}">
<xsl:value-of select="value"/>
</div>
</div>
</div>
</xsl:if>
</xsl:for-each>
</div>
</xsl:template>
<xsl:template match="i">
<i>
<xsl:apply-templates />
</i>
</xsl:template>
<xsl:template match="b">
<b>
<xsl:apply-templates />
</b>
</xsl:template>
<xsl:template match="u">
<u>
<xsl:apply-templates />
</u>
</xsl:template>
<xsl:template match="del">
<del>
<xsl:apply-templates />
</del>
</xsl:template>
这是我的XML示例代码:
<elements>
<element type='OUTPUT'>
<value>
<b>
<u>Personal information</u>
</b>
</value>
<class>col-md-12 output</class>
<order>2</order>
</element>
</elements>
除<b>
和<u>
标记外,所有工作正常。
这就是我所获得的:
我的预期输出:
<div class="row">
<div class="form-group">
<div class="col-md-12 output">
<b>
<u>Personal information</u>
</b>
</div>
</div>
</div>
有人知道哪里出错了?
提前致谢。
答案 0 :(得分:3)
如果您希望应用模板,则必须使用xsl:apply-templates
,例如而不是
<xsl:value-of select="value"/>
使用
<xsl:apply-templates select="value"/>
答案 1 :(得分:1)
您的第一个模板中缺少xsl:apply-templates
将其更改为
<div class="{class}">
<xsl:apply-templates />
<xsl:value-of select="value"/>
</div>