2016-02-24 27 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