标签名称在XSLT上作为文本和表格标签重复

时间:2019-04-08 00:54:42

标签: xml xslt

从此代码中,我想提取两个查询作为XSLT结果,如下所示:

This one is the first one

This is the second one

<lenguajes fuente="http://www.wikipedia.org" fecha="2012">
<lenguaje>
    <nombre>C</nombre>
    <creador>Dennis Ritchie</creador>
    <fecha>1973</fecha>
    <compilado />
</lenguaje>
<lenguaje>
    <nombre>Python</nombre>
    <creador>Guido van Rossum</creador>
    <fecha>1991</fecha>
    <interpretado />
</lenguaje>
<lenguaje>
    <nombre>PHP</nombre>
    <creador>Rasmus Lerdorf</creador>
    <fecha>1995</fecha>
    <interpretado />
</lenguaje>
<lenguaje>
    <nombre>XSLT</nombre>
    <creador>James Clark</creador>
    <fecha>1998</fecha>
    <interpretado />
</lenguaje>

这就是我到目前为止所拥有的:

第一个:

   <xsl:template match="lenguaje">
    <html>
        <table border="1">
            <tr>
                <th>Lenguaje</th>
                <th>Creador</th>
            </tr>
            <tr>
                <td><xsl:value-of select="nombre"/></td>
                <td><xsl:value-of select="creador"/></td>
            </tr>                
        </table>
    </html>
</xsl:template>

第二个:

   <xsl:template match="lenguaje">
        <html>
            <p>El lenguaje <xsl:value-of select="nombre"/> es </p>
        </html>
</xsl:template>
<xsl:template match="lenguajes">
    <html>
        <p>Información obtenida de <xsl:value-of select="@fuente" /> en el año <xsl:value-of select="@fecha" /></p>
    </html>
</xsl:template>

但是它并不完全适合。在我自己研究这类事情时,我没有找到任何人需要的帮助。 这是XML代码。任何帮助都将真正有用。

1 个答案:

答案 0 :(得分:0)

使用此代码
表1:

    <?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="xs"
    version="2.0">
    <xsl:output method="html" omit-xml-declaration="yes"/>
    <xsl:template match="lenguajes">
        <html>
            <head>
                <title></title>
            </head>
            <body>
                <table border="1">
                    <tr>
                        <th>Lenguaje</th>
                        <th>Creador</th>
                    </tr>
                    <xsl:for-each select="lenguaje">
                        <tr>
                            <td><xsl:value-of select="child::nombre"/></td>
                            <td><xsl:value-of select="child::creador"/></td>
                        </tr>
                    </xsl:for-each>
                </table>
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>

表2:

    <?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="xs"
    version="2.0">
    <xsl:character-map name="ST">
        <xsl:output-character character="ó" string="&amp;#x00F3;"/>
        <xsl:output-character character="ñ" string="&amp;#x00F1;"/>
    </xsl:character-map>
    <xsl:output method="html" omit-xml-declaration="yes" use-character-maps="ST"/>
    <xsl:template match="lenguajes">
        <html>
            <xsl:for-each select="lenguaje">
                <p>EL <xsl:value-of select="local-name()"/><xsl:text> </xsl:text> <xsl:value-of select="child::nombre"/> es <xsl:value-of select="child::*[last()]/local-name()"/>.</p>
            </xsl:for-each>
            <p>Información obtenida de <xsl:value-of select="@fuente"/> en el año <xsl:value-of select="@fecha"/></p>
        </html>
    </xsl:template>
</xsl:stylesheet>