2016-02-24 23 views
0

我试图实现一个简单的xslt,在根节点下添加一个节点。XSLT属性未包含在转换后的输出中

这里是我的input.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> 

的问题是,在输出我看不到itemizedlist的属性,我加入了一个“ div“元素,在xsl转换上。输出显示它作为

<itemizedlist> 

期望之一是:

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

什么,我做错了什么?是否有另一个参数来保护属性值?

非常感谢您的回答提前!

回答

1

您必须复制的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> 
+0

Uuups我还没有看到,小小的细节:)你的答案非常感谢! – Hayra