XSL副本拷贝外部节点

时间:2011-09-17 07:50:26

标签: xslt mathml

我正在尝试处理以下XML代码段:

        <inlineequation><mml:math>
            <!-- eqn: [-1,1]:-->
            <mml:mfenced open="[" close="]">
                <mml:mn>-1</mml:mn>
                <mml:mn>1</mml:mn>
            </mml:mfenced>
        </mml:math></inlineequation>

我得到的最好结果是使用 copy-of 函数复制整个标记:

<xsl:template match="para/inlineequation">
    <xsl:copy-of select="."/>
</xsl:template>

但是,转换后的XML也会有 inlineequation 节点,而我想将其删除。实际上,正确的输出应为:

        <mml:math><mml:mfenced open="[" close="]">
            <mml:mn>-1</mml:mn>
            <mml:mn>1</mml:mn>
        </mml:mfenced></mml:math>

如何实现上述结果?我现在得到的结果是:

        <inlineequation><mml:math>
        <mml:mfenced open="[" close="]">
            <mml:mn>-1</mml:mn>
            <mml:mn>1</mml:mn>
        </mml:mfenced>
        </mml:math></inlineequation>

1 个答案:

答案 0 :(得分:1)

只需使用:

<xsl:template match="para/inlineequation">
    <xsl:copy-of select="*"/>
</xsl:template>

或者,如果您已正确声明命名空间:

<xsl:template match="para/inlineequation">
    <xsl:copy-of select="mml:math"/>
</xsl:template>

<xsl:template match="mml:math">
    <xsl:copy-of select="."/>
</xsl:template>