转换后,XSLT 属性不包括在输出中



我正在尝试实现一个简单的xslt,在根节点下添加一个节点。

这是我输入.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<root a="a">
    <itemizedlist role="type6" id="ecls_bio_becls_a3_a43205230.SL2392155.512">
        <listitem id="ecls_bio_becls_a3_a43205230.SL6440405.513"><para id="ecls_bio_becls_a3_a43205230.SL35914597.514">Glasform mit Deckel auf dem Rost, Höhe 1</para></listitem>
        <listitem id="ecls_bio_becls_a3_a43205230.SL35935428.515"><para id="ecls_bio_becls_a3_a43205230.SL6441139.516">Mikrowelle 600 Watt</para></listitem>
        <listitem id="ecls_bio_becls_a3_a43205230.SL37145770.517"><para id="ecls_bio_becls_a3_a43205230.SL37145771.518">Schalotten, Lauch: 4 Minuten</para></listitem>
        <listitem id="ecls_bio_becls_a3_a43205230.SL37151364.519"><para id="ecls_bio_becls_a3_a43205230.SL37151365.520">Fleisch, Gemüse, Nudeln: 10-12 Minuten</para></listitem>
        <listitem id="ecls_bio_becls_a3_a43205230.SL42243432.521"><para id="ecls_bio_becls_a3_a43205230.SL42243433.522">danach</para></listitem>
        <listitem id="ecls_bio_becls_a3_a43205230.SL42243434.523"><para id="ecls_bio_becls_a3_a43205230.SL42243435.524">Mikrowelle 1000 Watt</para></listitem>
        <listitem id="ecls_bio_becls_a3_a43205230.SL42243436.525"><para id="ecls_bio_becls_a3_a43205230.SL42243437.526">Bouillon: 5-6 Minuten</para></listitem>
    </itemizedlist>
</root>

我正在实现 xsl 以在所有列表项节点之前放置一个"虚拟"div。

这是 xsl 文件:

<?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"  encoding="UTF-8" omit-xml-declaration="yes" />
    <xsl:template match="@* | node()">
    <xsl:copy>
        <xsl:apply-templates select="@* | node()" />
    </xsl:copy>
</xsl:template>
    <xsl:template match="itemizedlist[@role='type6']">
    <xsl:copy>
        <div class="recipe_placeholder"/>
        <xsl:apply-templates select="@* | node()" />
    </xsl:copy>
</xsl:template>
</xsl:stylesheet>

输出是这样的:

<root a="a">
    <itemizedlist><div class="recipe_placeholder"/>
        <listitem id="ecls_bio_becls_a3_a43205230.SL6440405.513"><para id="ecls_bio_becls_a3_a43205230.SL35914597.514">Glasform mit Deckel auf dem Rost, Höhe 1</para>
</listitem>
        <listitem id="ecls_bio_becls_a3_a43205230.SL35935428.515"><para id="ecls_bio_becls_a3_a43205230.SL6441139.516">Mikrowelle 600 Watt</para>
</listitem>
        <listitem id="ecls_bio_becls_a3_a43205230.SL37145770.517"><para id="ecls_bio_becls_a3_a43205230.SL37145771.518">Schalotten, Lauch: 4 Minuten</para>
</listitem>
        <listitem id="ecls_bio_becls_a3_a43205230.SL37151364.519"><para id="ecls_bio_becls_a3_a43205230.SL37151365.520">Fleisch, Gemüse, Nudeln: 10-12 Minuten</para>
</listitem>
        <listitem id="ecls_bio_becls_a3_a43205230.SL42243432.521"><para id="ecls_bio_becls_a3_a43205230.SL42243433.522">danach</para>
</listitem>
        <listitem id="ecls_bio_becls_a3_a43205230.SL42243434.523"><para id="ecls_bio_becls_a3_a43205230.SL42243435.524">Mikrowelle 1000 Watt</para>
</listitem>
        <listitem id="ecls_bio_becls_a3_a43205230.SL42243436.525"><para id="ecls_bio_becls_a3_a43205230.SL42243437.526">Bouillon: 5-6 Minuten</para>
</listitem>
    </itemizedlist>
</root>

问题是在输出上我看不到逐项列表的属性,我正在添加一个"div"元素,在 xsl 转换上。输出将其显示为

<itemizedlist>

期望的一个是:

<itemizedlist role="type6" id="ecls_bio_becls_a3_a43205230.SL2392155.512">

我做错了什么?是否有其他参数来保护属性值?

非常感谢您的回答!

开始下一个元素之前,必须复制itemizedlist的属性<div>

<xsl:template match="itemizedlist[@role='type6']">
    <xsl:copy>
        <xsl:apply-templates select="@*" />
        <div class="recipe_placeholder"/>
        <xsl:apply-templates select="node()" />
    </xsl:copy>
</xsl:template>

最新更新