Отображение блока XML — тегов/узлов и его содержимого — с помощью XSLT (для подсветки синтаксиса)

Есть ли способ отобразить блок XML - узлы и все остальное - с помощью XSLT? Мы создаем сайт, который позволяет нам отображать необработанный код с помощью Syntax Highlighter. Единственная проблема заключается в том, что наша CMS генерирует XML, а часть кода, помещаемого в CMS для этого веб-сайта, является XML, поэтому он объединяет то, что должно быть необработанным XML, с сгенерированным сайтом XML.

Вот фрагмент XML:

<custom-xml>
    <menu-item>
        <title>Home</title>
        <link-type>Cascade Page</link-type>
        <page type="page">
            <content/>
        </page>
        <external-url/>
        <new-window/>
        <alignment>left</alignment>
    </menu-item>
    <menu-item>
        <title>Twitter</title>
        <link-type>External URL</link-type>
        <page>
            <path>/</path>
        </page>
        <external-url>http://twitter.com</external-url>
        <new-window/>
        <alignment>right</alignment>
    </menu-item>
</custom-xml>

Все, что находится внутри (но не включая) тегов <custom-xml>, должно быть напечатано.

Вот XSLT, который я пробовал:

<xsl:when test="text-type = 'XML'">
    <div>
        <pre class="brush: xml;">
                <xsl:value-of select="custom-xml"/>
        </pre>
    </div>
</xsl:when>

Я даже попытался проявить изобретательность:

<xsl:when test="text-type = 'XML'">
    <div>
        <pre class="brush: xml;">
                &lt;<xsl:text>![CDATA</xsl:text><xsl:text>[</xsl:text><xsl:value-of select="custom-xml"/><xsl:text>]]</xsl:text>&gt;
        </pre>
    </div>
</xsl:when>

... и это результат, который я хочу:

<div>
    <pre class="brush: xml;">
        <menu-item>
            <title>Home</title>
            <link-type>Cascade Page</link-type>
            <page type="page">
                <content/>
            </page>
            <external-url/>
            <new-window/>
            <alignment>left</alignment>
        </menu-item>
        <menu-item>
            <title>Twitter</title>
            <link-type>External URL</link-type>
            <page>
                <path>/</path>
            </page>
            <external-url>http://twitter.com</external-url>
            <new-window/>
            <alignment>right</alignment>
        </menu-item>
    </pre>
</div>

person Brittany Layne Rapheal    schedule 19.02.2015    source источник


Ответы (1)


Смог понять это... увидел это сообщение: https://stackoverflow.com/questions/25258717/how-can-i-output-raw-xml-data-if-my-xsloutput-method-html-in-a-xslt-file?rq=1

Я заменил <xsl:value-of select="custom-xml"/> на <xsl:copy-of select="custom-xml/node()"/>, и все заработало. :)

person Brittany Layne Rapheal    schedule 19.02.2015