XSL-копия-копирование внешнего узла - PullRequest
1 голос
/ 17 сентября 2011

Я пытаюсь обработать следующий фрагмент 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 Ответ

1 голос
/ 17 сентября 2011

Просто используйте:

<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>
...