XSLT - 不应用模板

时间:2017-09-14 09:31:38

标签: xml xslt

我试图使用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>标记外,所有工作正常。

这就是我所获得的:

enter image description here

我的预期输出:

<div class="row">
    <div class="form-group">
        <div class="col-md-12 output">
            <b>
                <u>Personal information</u>
            </b>
        </div>
    </div>
</div>

有人知道哪里出错了?

提前致谢。

2 个答案:

答案 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>