嗨,我有一个我正在创建的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中收到任何东西。
请帮助我。
答案 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文件。