通过xslt i标签中的x标签将xml转换为html

时间:2019-11-19 15:15:44

标签: html xml xslt type-conversion

首先,对不起我的英语,这有点生锈。 我是这里的新手,花了一天的时间找到解决方案后,终于在这里提出了我的问题。 我必须使用XSLT将XML文件转换为HTML文件。 我从匹配“ body”节点的模板开始,然后显示html。

我的问题是在我的XML中,我在html标记中添加了html标记+文本内容,例如:

<text1>
     <p>*content*<i>*content*</i>*content*</p>
</text1>

由于可能有多个<text1>节点,因此我有一个<xsl: for-each select="text1>,我添加了另一个xsl:for-each以显示<p>标签。 此方法有效,但是我的<i>中没有<p>标记。 再次这是我的第一个问题,我希望我的问题清楚。 谢谢。

编辑:我尝试使用模板,但现在输出未显示html特殊字符:“ Sbastien”应显示“Sébastien”。 dtd可用于XML解析器。我正在使用libxslt。

我的XML:

    <?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE article SYSTEM "wk-presse.dtd">
<article id="BC102400301">
    <head>
        ...
    </head>
    <body>
        <titre>
            Un r&ocirc;le &agrave; jouer durant le quinquennat
        </titre>
        <texte1>
            <p>
                La France a donc un nouveau pr&eacute;sident en la personne d&rsquo;Emmanuel Macron. Un pr&eacute;sident jeune, entreprenant, &eacute;conomiste et r&eacute;solument europ&eacute;en...
            </p>
            <p>
                Plus que jamais le transport sera donc la cl&eacute; du succ&egrave;s &eacute;conomique, pourvu que les transporteurs s&rsquo;appliquent &agrave; eux-m&ecirc;mes ces principes d&rsquo;innovation et de remise en question. Les pistes sont nombreuses: digitalisation, services, interconnexions, &eacute;nergies durables, accessibilit&eacute;s&hellip; Pourvu qu&rsquo;il s&rsquo;&eacute;loigne de l&rsquo;image surann&eacute;e du transport collectif du XX
                <sup>
                    <sup>
                        e
                    </sup>
                    si&egrave;cle
                </sup>
                , le transport routier de voyageurs moderne a donc un beau r&ocirc;le &agrave; jouer durant les cinq prochaines ann&eacute;es.
            </p>
        </texte1>
    </body>
</article>

我的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"
        encoding="UTF-8"
        indent="yes" 
    />
    <xsl:template match="@* | node()">
        <xsl:copy>
        <xsl:apply-templates select="@* | node()"/>
        </xsl:copy>
    </xsl:template>
    <xsl:template match="titre">
        <div class="titre">
            <xsl:apply-templates select="@* | node()"/>
        </div>
    </xsl:template>
    <xsl:template match="texte1">
        <div class="texte1">
            <xsl:apply-templates select="@* | node()"/>
        </div>
    </xsl:template>
    <xsl:template match="p">
        <div class="al">
            <xsl:apply-templates select="@* | node()"/>
        </div>
    </xsl:template>
    <xsl:template match="i">
        <div class="italique">
            <xsl:apply-templates select="@* | node()"/>
        </div>
    </xsl:template>
    <xsl:template match="sup">
        <div class="sup">
            <xsl:apply-templates select="@* | node()"/>
        </div>
    </xsl:template>
<xsl:template match="article">
        <html xmlns="http://www.w3.org/1999/xhtml">
            <head>
                <title>Titre du document</title>
                <link rel="stylesheet" type="text/css" href="common.css" />
                <link rel="stylesheet" type="text/css" href="presseCommerciale.css" />
                <script type="text/javascript" src="jquery.min.js"></script>
                <script type="text/javascript" src="functions.js"></script>
            </head>
            <body>
             <!-- START CONTENT -->
                <div class="ud-presseCommerciale">
                    <div class="article">
                        <div class="head">
                            <div class="pub">Bus &amp; Car</div>
                            <div class="rub">
                                <div class="inserted-text">Rubrique : </div>
                            <xsl:value-of select="head/rub"/></div>
                            <div class="auteur">
                                <div class="inserted-text">Auteur(s) : </div>
                                <div class="fonction default"><xsl:value-of select="head/auteur/fonction"/></div>
                                <div class="aut"><xsl:value-of select="head/auteur/aut"/></div>
                            </div>
                        </div>
                        <div class="body">
                            <xsl:apply-templates/>
                        </div>
                    </div>
                </div>
            <!-- END CONTENT -->
            </body>
        </html> 
    </xsl:template>

我现在遇到的问题是在输出中删除了HTML特殊字符。 希望我的代码更清楚。

0 个答案:

没有答案