2011-10-31 83 views
1

您好我有我創建一個XSL,它看起來像這樣:價值的不返回任何值

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="xml" encoding="UTF-8" indent="yes"/> 
<xsl:template match="/"> 
    <datum><xsl:value-of select="/wechselkurse/datum[1]" /></datum> 
    <kurs><xsl:value-of select="/wechselkurse/devise[@code='eur']/kurs" /></kurs> 
</xsl:template> 

輸入如下:

<wechselkurse xmlns="http://www.afd.admin.ch/publicdb/newdb/mwst_kurse" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.afd.admin.ch/publicdb/newdb/mwst_kurse http://www.afd.admin.ch/publicdb/newdb/mwst_kurse/tageskurse.xsd"> 
<datum>2011-10-25</datum> 
<zeit>04:30:39</zeit> 
<devise code="egp"> 
    <land_de>Ägypten</land_de> 
    <land_fr>Egypte</land_fr> 
    <land_it>Egitto</land_it> 
    <land_en>Egypt</land_en> 
    <waehrung>100 EGP</waehrung> 
    <kurs>14.90711</kurs> 
</devise> 
<devise code="all"> 
    <land_de>Albanien</land_de> 
    <land_fr>Albanie</land_fr> 
    <land_it>Albania</land_it> 
    <land_en>Albania</land_en> 
    <waehrung>100 ALL</waehrung> 
    <kurs>0.88044</kurs> 
</devise> 

等。我得到的唯一的輸出是這樣的:

<?xml version="1.0" encoding="UTF-8"?> 
<datum/> 
<kurs/> 

所以我基本上只是沒有從源XML獲得任何價值。元素設計存在的屬性代碼= eur我敢肯定,但我只是無法弄清楚爲什麼我沒有從源XML接收任何東西。

請幫助我。

+0

這是一個XML命名空間問題。對不起,沒有足夠的時間。讓我建議你這個:http://de.wikipedia.org/wiki/Namensraum_%28XML%29 – Boldewyn

回答

2

您的.xsl大約有一百萬個錯誤,但最重要的是您沒有使用名稱空間。

你的.xml包含此命名空間:xmlns="http://www.afd.admin.ch/publicdb/newdb/mwst_kurse"

但是你不要在你的.xsl文件中使用它。要做到這一點首先聲明,然後用它來訪問你想要的元素:

<xsl:stylesheet version="1.0" 
       xml:space="preserve" 
       xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
       xmlns:n="http://www.afd.admin.ch/publicdb/newdb/mwst_kurse"> 

    <xsl:output method='xml'/> 

    <xsl:template match="/"> 
     <datum><xsl:value-of select="n:wechselkurse/n:datum" /> 

     </datum> 
    </xsl:template> 
</xsl:stylesheet> 

此外,.xml文件只能有一個根元素。所以你必須改變你的.xsl文件。