嗨,我有一个我正在创建的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中获得任何值。元素Devise存在,属性为code=eur我很确定,但是我就是不明白为什么我没有从源XML接收到任何东西。
请帮帮我。
发布于 2011-10-31 22:27:45
您的.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文件。
https://stackoverflow.com/questions/7954868
复制相似问题