value-of不返回任何值

时间:2011-10-31 14:12:29

标签: xml xslt

嗨,我有一个我正在创建的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中获取任何值。 Element Devise存在属性code = eur我很确定,但我无法弄清楚为什么我没有从源XML中收到任何东西。

请帮助我。

1 个答案:

答案 0 :(得分: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文件。