Автогенерация XSLT - общий / стандартный XSLT - PullRequest
0 голосов
/ 10 сентября 2018

Это не должно быть очень сложно, но я искал по всему Интернету и не смог найти такой инструмент.

Этот инструмент должен взять файл XML или XSD и сгенерировать XSLT , При применении этого XSLT к XML результатом является удобная HTML-страница.

Затем разработчик берет этот сгенерированный программой XSLT и вносит необходимые корректировки в соответствии со своимтребования.

Преимущества очевидны для огромных файлов XML, с которыми вам есть над чем работать, «по умолчанию», чтобы начать работу, вместо того, чтобы начинать с нуля для документа XML с 3000 строками.

1 Ответ

0 голосов
/ 10 сентября 2018

Вероятно, проще всего начать с «преобразования идентификаторов XSLT», которое в исходном виде выглядит так:

<xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

Он в основном создает глубокую копию файла XML, что не очень интересно как таковое, но позволяет вам украшать определенные элементы во время этого.

В зависимости от того, как вы хотите, чтобы исходный HTML выглядел, вы можете украсить его, добавив конкретные шаблоны или изменив базовый рекурсивный шаблон для получения, скажем, вложенных <div> элементов ... или <ul> / <li> или что угодно.

Тогда это может быть простое начало:

<xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <ul>
            <xsl:apply-templates select="*"/>
        </ul>
    </xsl:template>
    <xsl:template match="@*|node()">
        <li>
        <xsl:value-of select="local-name()"/>
        <xsl:if test="*">
            <ul>
               <xsl:apply-templates select="@*|node()"/>
            </ul>
        </xsl:if>
        </li>
    </xsl:template>
</xsl:stylesheet>

Тогда вы можете играть с чем угодно, сначала вам, вероятно, понадобится другой рендеринг для атрибутов, затем для ваших известных элементов и т. Д.

...