1

我想用一个通用的 xslt 显示我的 xslt,以便生成有关如何构建 xslt 的文档。我在 stackoverflow 上得到了一些帮助,但仍有一些细节我认为我自己设法做到了,但不幸的是没有。

上一篇:生成xsl文档

这就是我希望它的工作方式:

我的 xslt:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html"/> 
    <xsl:template match="/">
        <head>
        <title>My sample</title>
    </head>
    <body>
        My sample element: <xsl:value-of select="root/element1"/>     
    </body>
    </xsl:template>
</xsl:stylesheet>

请求的输出:

<html>
    <head>
        <title>My sample</title>
    </head>
    <body>
        My sample element: root/element1
    </body>
</html>

如果可能的话,我还想显示 for-each 循环和 if 语句。有没有人这样做并且可以与我分享一些代码?

4

1 回答 1

1

我做了一些更改,我认为它可以帮助您,请检查代码并在您的输入 XSLT 上运行它:

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

    <xsl:template match="node()|@*">
           <xsl:copy>
               <xsl:copy-of select="@*"/>
               <xsl:apply-templates select="node()|@*"/>
           </xsl:copy> 
    </xsl:template>

    <xsl:template match="*">
        <xsl:value-of select="concat('&lt;', name())" />
        <xsl:apply-templates select="@*" />
        <xsl:value-of select="'&gt;'" />
        <xsl:apply-templates/>
        <xsl:value-of select="concat('&lt;/', name(), '&gt;')" />
    </xsl:template>


    <xsl:template match="@*">
        <xsl:value-of select="concat(' ', name(), '=&quot;', ., '&quot;')" />
    </xsl:template>


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

    <xsl:template match="xsl:value-of">
        <xsl:value-of select="@select" />
    </xsl:template>

    <!-- add appropriate templates for the other XSLT elements -->
</xsl:stylesheet>
于 2018-04-17T10:15:42.843 回答