XSLT для динамического вложения XML - PullRequest
2 голосов
/ 13 сентября 2011

У меня есть скрипт, который динамически создает XML-документы. Это означает, что глубина детей неизвестна. Можно ли создать XSLT для динамически XML-документа, когда дочерний уровень неизвестен?

Пример № 1:

<root>
    <object type="set">
        <name>Test1</name>
        <object type="set">
            <name>Test11</name>
        </object>
    </object>

    <object type="set">
        <name>Test2</name>
    </object>
</root>

Выход # 1:

<html>
    <body>
        <div>Test1
            <div>Test11</div>
        </div>
        <div>Test2</div>
    </body>
</html>

Пример №2 (дети меняются):

<root>
    <object type="set">
        <name>Test1</name>
        <object type="set">
            <name>Test11</name>
            <object type="set">
                <name>Test111</name>
            </object>
        </object>
    </object>

    <object type="set">
        <name>Test2</name>
        <object type="set">
            <name>Test22</name>
        </object>
    </object>
</root>

Выход # 2:

<html>
    <body>
        <div>Test1
            <div>Test11
                <div>Test111</div>
            </div>
        </div>
        <div>Test2
            <div>Test22</div>
        </div>
    </body>
</html>

1 Ответ

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

Это должно дать вам желаемые результаты:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" indent="yes"/>

    <xsl:template match="/">
        <html>
            <body>
                <xsl:apply-templates />
            </body>
        </html>
    </xsl:template>

    <xsl:template match="object">
        <div>
            <xsl:value-of select="./name"/>
            <xsl:apply-templates />
        </div>
    </xsl:template>

    <xsl:template match="name" />

</xsl:stylesheet>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...